My bad, please read the second PP as -define.<br><br><div class="gmail_quote">On Wed, May 30, 2012 at 3:41 PM, Kannan <span dir="ltr"><<a href="mailto:vasdeveloper@gmail.com" target="_blank">vasdeveloper@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Isn't PP takes place before parsing? Isn't PP is simply a string replacement?<div class="HOEnZb"><div class="h5">
<div><br></div><div><br><br><div class="gmail_quote">On Wed, May 30, 2012 at 3:03 PM, Richard Carlsson <span dir="ltr"><<a href="mailto:carlsson.richard@gmail.com" target="_blank">carlsson.richard@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On 05/30/2012 11:26 AM, Kannan wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi There,<br>
<br>
If -define does just string replacement, why it does not let me do the<br>
following?<br>
<br>
-define(Z, z() -> io:fwrite("z")).<br>
-define(Y, y() -> io:fwrite("y")).<br>
-define(X, ?Y. ?Z.).<br>
</blockquote>
<br></div>
In the last line, you have ?Y. followed by whitespace. This ends the define declaration. Erlang source code is divided into "forms", where each form ends with . followed by whitespace (usually newline, but any whitespace or even a comment can be used). So you have two forms at the end: '-define(X, ?Y.' and '?Z.).' and none of these are syntactically valid. It is not possible to make a single macro expand into two forms.<span><font color="#888888"><br>


<br>
   /Richard<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br>