[antlr-interest] Multiline comments in ANTLR grammar

Ivan Brezina ibre5041 at ibrezina.net
Wed Mar 7 05:01:17 PST 2012


Hi,
I spotted curious issue, there must not be any multiline comment  
between the grammar name
and the options clause.
see:
--- begin snap ---
lexer grammar abc;

/** (note two asterisks here)
  * some fancy header
  */

@lexer::members
{
bool x;
}

A: 'A';
--- end snap ---

This fails with:
error(100): abc.g:7:1: syntax error: antlr: NoViableAltException(53@[])
error(100): abc.g:7:2: syntax error: antlr: NoViableAltException(4@[])
error(100): abc.g:7:7: syntax error: antlr:  
MissingTokenException(inserted [@-1,0:0='<missing ACTION>',<50>,7:6]  
at :)
error(100): abc.g:7:8: syntax error: antlr: NoViableAltException(54@[])
error(100): abc.g:7:9: syntax error: antlr: NoViableAltException(75@[])
error(100): abc.g:7:9: syntax error: antlr: NoViableAltException(75@[])
error(100): abc.g:12:1: syntax error: antlr:  
MissingTokenException(inserted [@-1,0:0='<missing SEMI>',<52>,12:0] at  
A)
error(100): abc.g:0:1: syntax error: assign.types:  
MismatchedTreeNodeException(0!=30)
error(100): abc.g:0:1: syntax error: assign.types:  
MismatchedTreeNodeException(42!=3)
error(100): abc.g:0:1: syntax error: assign.types:  
MismatchedTreeNodeException(42!=3)
org\antlr\grammar\v3\DefineGrammarItemsWalker.g: node from line 3:0  
mismatched tree node: <unexpected: [@11,56:56='@',<53>,7:0], resync=@>  
expecting ID
error(10):  internal error: abc.g : java.lang.NullPointerException
org.antlr.tool.Grammar.generateMethodForRule(Grammar.java:1718)
org.antlr.grammar.v3.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:1468)
org.antlr.grammar.v3.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:1441)
org.antlr.grammar.v3.CodeGenTreeWalker.grammar_(CodeGenTreeWalker.java:461)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:421)
org.antlr.Tool.generateRecognizer(Tool.java:655)
org.antlr.Tool.process(Tool.java:468)
org.antlr.Tool.main(Tool.java:93)

While this compiles successfully:
---------------------
lexer grammar abc;

//
// some fancy header
//

@lexer::members
{
bool x;
}

A: 'A';
---------------------
/**
   * some fancy header
   */

lexer grammar abc;

@lexer::members
{
bool x;
}

A: 'A';
---------------------


Ivan


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



More information about the antlr-interest mailing list