2
我對C#語法有這樣簡單的語法。我找不出任何方法來分隔字段和方法。我見過的用於解析C#的所有示例都將相同規則中的字段和方法組合在一起。我想將它們分開,因爲我的synatx非常簡單。antlr語法多種替代方法
grammar test;
options
{
language =CSharp2;
k = 3;
output = AST;
}
SEMI : ';' ;
LCURLY : '{' ;
RCURLY : '}' ;
LPAREN : '(' ;
RPAREN : ')' ;
DOT :'.';
IDENTIFIER
: ('a'..'z' | 'A'..'Z' | '_')
('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*
;
namespaceName
: IDENTIFIER (DOT IDENTIFIER)*
;
classDecl
: 'class' IDENTIFIER LCURLY (fieldDecl | methodDecl)* RCURLY
;
fieldDecl
: namespaceName IDENTIFIER SEMI;
methodDecl
: namespaceName IDENTIFIER LPAREN RPAREN SEMI;
我總是最後機智這個警告
Decision can match input such as "IDENTIFIER DOT IDENTIFIER" using multiple alternatives: 1, 2
我對C#不太熟悉,而且「C#like syntax」這樣的描述並不是那麼精確。你可以發佈一些你將要解析的示例源代碼嗎? – 2010-04-22 07:25:57