1
我在寫一個簡單的lambda微積分語法(如下所示)。我遇到的問題是,函數應用程序似乎被視爲正確的聯想而不是左聯想,例如, (f(1 2))而不是(f 1)2,將「f 1 2」解析爲(f(1 2))。 ANTLR有一個關於令牌的assoc選項,但我不明白這有什麼用處,因爲沒有函數應用的操作符。有沒有人看到解決方案?Antlr4功能應用語法
LAMBDA : '\\';
DOT : '.';
OPEN_PAREN : '(';
CLOSE_PAREN : ')';
fragment ID_START : [A-Za-z+\-*/_];
fragment ID_BODY : ID_START | DIGIT;
fragment DIGIT : [0-9];
ID : ID_START ID_BODY*;
NUMBER : DIGIT+ (DOT DIGIT+)?;
WS : [ \t\r\n]+ -> skip;
parse : expr EOF;
expr : variable #VariableExpr
| number #ConstantExpr
| function_def #FunctionDefinition
| expr expr #FunctionApplication
| OPEN_PAREN expr CLOSE_PAREN #ParenExpr
;
function_def : LAMBDA ID DOT expr;
number : NUMBER;
variable : ID;
謝謝!
這個問題在v4.2.2中仍然存在。這裏還有其他問題嗎? –
我認爲expr expr是個問題。沒有操作員。也許會造成一個問題。 –