如何用括号来解析表达

  • 本文关键字:何用括 python-3.x textx
  • 更新时间 :
  • 英文 :


我想使用textx在python中用括号来解析表达式。

例如以下DSL:

CREATE boby = sacha - ( boby & tralaa) ; 
CREATE boby = sacha & boby - ( david & lucas )

这是我尝试的语法:

Model:
    'CREATE' name=Identifier '=' exp=SetExpr
;
JoinOperator: /-/&/;
SetExpr:SetParExpr | SetBaseExpr 
;
SetBaseExpr:
    first=ID op=JoinOperator second=ID
;
SetParExpr:
    '(' SetExpr ')'

我想我应该在某个地方填写表达式。你有什么建议吗?

我已经稍微更改了您的示例:我添加了一个分号结束,然后在您的第二个示例中放了另一对括号。我根据您在语法中提供的内容推断了这些更改。这是示例:

CREATE boby = sacha - ( boby & tralaa);
CREATE boby = sacha & (boby - ( david & lucas ));

要解析这样的示例,您的语法需要更改为:

  1. 接受多个Model S(我创建了一个Script规则,该规则采用半结肠分离的模型(
  2. 允许SetBaseExpr规则的second属性为ID或SETPAREXPR。
  3. 在模型规则中将Identifier更改为ID(我认为这就是您的意思(。

我进行了这些更改,最终以以下语法解析了我给出的示例:

Script:
    models+=Model[';'] ';'
;
Model:
    'CREATE' name=ID '=' exp=SetExpr
;
JoinOperator: '-' | '&';
SetExpr:
    SetParExpr | SetBaseExpr
;
SetBaseExpr:
    first=ID op=JoinOperator (second=ID | second=SetParExpr)
;
SetParExpr:
    '(' SetExpr ')'
;

我希望能回答您的问题或给您提示处理括号表达式。

最新更新