Python 3.x 如何解析带括号的表达式?
我想用textx解析python中带括号的表达式 例如,以下DSL:Python 3.x 如何解析带括号的表达式?,python-3.x,textx,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 |
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 ));
要分析这些示例,您的语法需要更改为:
模型
s(我创建了一个脚本
规则,该规则采用分号分隔的模型)SetBaseExpr
规则的second
属性为ID或SetParExprIdentifier
更改为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 ')'
;
我希望这能回答你的问题,或者给你一个处理插入式表达的提示。你看过这些例子了吗。特别地