Hi, And I created a small program to test some small fundamentals and found that there is a lot of difference between the below 2 rules.
sentence: /* empty */ | sentence line optional_comma '$' { printf("\nInput line: >>>%s ::: %s <<<\n", $2, $3); } ; sentence: sentence line optional_comma '$' { printf("\nInput line: >>>%s ::: %s <<<\n", $2, $3); } ; I am using scanf in yylex (my own yylex), which always accepts some string. And now I am confused as to why is "/* empty */" necessary even when empty cannot be returned by yylex. When I checked the states generated by the parser, I found that there is a difference in the way $default and $end are created for some states. Can someone please tell me basic principle behind $end and $default terminal symbols. : Samkit Jain _______________________________________________ help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison