gpt4 book ai didi

java - 解析antlr3中的mixfix表达式

转载 作者:行者123 更新时间:2023-11-30 02:30:11 36 4
gpt4 key购买 nike

我需要调整 ANTLR3 语法以支持 let 表达式。运算符(operator)需要非常弱地绑定(bind)。例如,let x=3 in x + 1 读作 let x=3 in (x+1) 而不是 (let x=3 in x) + 1

不幸的是,我的候选语法仍然不明确。是否有一种标准方法可以使规则变得明确?(使用额外的 ( ) 就可以了。)

顺便说一句,它似乎可以与 ANTLR4 一起使用。然而,这对我来说不是一个选择。

grammar Expr;

prog: stat+ ;

stat: expr NEWLINE
| ID '=' expr NEWLINE
| NEWLINE
;

expr: sum ( ('*'|'/') sum )* ;

sum: atom ( ('+'|'-') atom )* ;

atom: INT
| ID
| '(' expr ')'
// | '(' let ')'
| let
;

let: 'let' ID '=' expr 'in' expr ;

ID : ('a' .. 'z')+ ;
INT : ('0' ..'9')+ ;
NEWLINE: '\r'? '\n' ;
WS : ' ' { $channel = HIDDEN; };

最佳答案

没问题。

输入的解析树

let x=3 in x + 1
3 * let x = 2 in x+1

Parsed tree

关于java - 解析antlr3中的mixfix表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44473565/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com