options{ STATIC = false; JAVA_UNICODE_ESCAPE = false; } PARSER_BEGIN(AntLRParser) package tmp.generated_antlr; import java.io.*; import java.util.*; import cide.gast.*; import cide.gparser.*; public class AntLRParser{ } PARSER_END(AntLRParser) /* WHITE SPACE */ SKIP:{ " " | "\t" | "\n" | "\r" | "\f" } /* COMMENTS */ MORE:{ "//":IN_SINGLE_LINE_COMMENT | <"/**"~["/"]>{ input_stream.backup(1); } :IN_FORMAL_COMMENT | "/*":IN_MULTI_LINE_COMMENT } SPECIAL_TOKEN:{ :DEFAULT } SPECIAL_TOKEN:{ :DEFAULT } SPECIAL_TOKEN:{ :DEFAULT } MORE:{ <~[]> } /* RESERVED WORDS AND LITERALS */ //TOKEN:{ //} TOKEN:{ | | | | | | | | | | | | | } /* LITERALS */ TOKEN:{ // (["l", "L"])? // | (["l", "L"])? // | (["l", "L"])?> // | <#DECIMAL_LITERAL:["1"-"9"](["0"-"9"])*> // | <#HEX_LITERAL:"0"["x", "X"](["0"-"9", "a"-"f", "A"-"F"])+> // | <#OCTAL_LITERAL:"0"(["0"-"7"])*> // | )?(["f", "F", "d", "D"])? // | "."(["0"-"9"])+()?(["f", "F", "d", "D"])? // | (["0"-"9"])+(["f", "F", "d", "D"])? // | (["0"-"9"])+()?["f", "F", "d", "D"]> // | <#EXPONENT:["e", "E"](["+", "-"])?(["0"-"9"])+> | | | } GRAMMARSTART Grammar : "grammar" RuleId ";" @!@! // JAVATOKEN(findIntroductionBlock) @! (Rule)* ; Modifier: "protected"|"public"|"private"|"fragment"; Rule: [Modifier] RuleId ["!"] // ( ARG_ACTION )? // ( "returns" ARG_ACTION )? // throwsSpec? optionsSpec? ruleScopeSpec? ruleAction* ":" altList ";" @!@! // exceptionGroup? ; ///** Match stuff like @init {int i;} */ //ruleAction // : "@" id ACTION -> ^("@" id ACTION) // ; // //throwsSpec // : "throws" id ( "," id )* -> ^("throws" id+) // ; // //ruleScopeSpec // : "scope" ACTION -> ^("scope" ACTION) // | "scope" id ("," id)* ";" -> ^("scope" id+) // | "scope" ACTION // "scope" id ("," id)* ";" // -> ^("scope" ACTION id+ ) // ; // block : "(" altList ")" ; altList : &LI altRewrite ( @+! "|" &LI altRewrite @- )* ; altRewrite: (elementNoOptionSpec)+; //rewrite; elementNoOptionSpec: atom [ebnfSuffix] | ebnf // | ACTION // | treeSpec ; atom: terminal | ; /** Matches ENBF blocks (and token sets via block rule) */ ebnf : block [LL(1) blockModifier] ; blockModifier: "?" | "*" | "+" | "^" | "!"; terminal : | | | "." | "!" ; notTerminal : | | ; ebnfSuffix : "?" | "*" | "+" ; RuleId : | ;