<div>I have been playing around with making a lexer/parser for Erlang using boost::spirit and using the YRL from lib\stdlib-1.17.5\src\erl_parse.yrl as my grammar.  It isn't specifically called out there (or anywhere else I can find), but I assume that newlines are significant and implied as input terminators?  </div>
<div> </div><div>For instance the following is accepted by the compiler (ignore the meaninglessness/infinite recursion of blah)</div><div> </div><div>-module .foo.</div><div>blah(F)->blah(F-1).</div><div> </div><div>However, if I put it all on one line, like so:</div>
<div> </div><div><div>-module .foo.blah(F)->blah(F-1).</div><div> </div><div>it is not accepted. It seems to be because .foo.blah is being parsed as a single instance of expr_900, which is defined as</div><div><font face="Consolas"><font face="Consolas"> </font></font></div>
<font face="Consolas"><font face="Consolas"><div><p>expr_900 -> '.' atom<br>expr_900 -> expr_900 '.' atom<br>expr_900 -> expr_max</p>
</div></font><div></div></font><div>  </div><div>I am fine treating newlines as input terminators but it isn't clear which non-terminals require the presence of a newline and which don't.</div><div> </div><div>Ryan</div>
</div>