我认为这是一个非常简单的语法:
例如:
我试着写这样的语法,但是我无法让它工作:
grammar Common;
/*
* Parser Rules
*/
fact: INITIALFACT instance? ('.' SUBFACT instance?)*;
instance: '[' (LITERAL | NUMERIC) (',' (LITERAL | NUMERIC))* ']';
/*
* Lexer Rules
*/
INITIALFACT: [a-zA-Z][a-zA-Z0-9%_]*;
SUBFACT: [a-zA-Z%_]+;
ASSIGN: ':=';
LITERAL: ('\'' .*? '\'') | ('"' .*? '"');
NUMERIC: ([1-9][0-9]*)?[0-9]('.'[0-9]+)?;
WS: [ \t\r\n]+ -> skip;
例如,如果我尝试解析Foo.Bar
,我会得到:Syntax error line 1 position 4: mismatched input 'Bar' expecting SUBFACT
。
我认为这是因为ANTLR首先发现Bar
匹配INITIALFACT并在此处停止。我该如何解决这个问题?
如果它相关,我使用的是Antlr4cs。