首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tatsu语法分析器和codegen产生两种截然不同的结果

Tatsu语法分析器和codegen产生两种截然不同的结果
EN

Stack Overflow用户
提问于 2020-08-25 13:15:42
回答 1查看 58关注 0票数 0

我正在使用TatSu,我从codegen解析器获得的结果与直接构建解析器时得到的结果非常不同。考虑一下骰子符号相当简单的语法:

代码语言:javascript
复制
start = expression $;

int = /-?\d+/ ;

dice = number_of_dice:factor /d|D/ sides:factor;

expression = addition ;

addition
    =
    | left:addition op:('+' | '-') ~ right:addition
    | dice_expr
    ;

dice_expr
    =
    | dice
    | factor
    ;

factor
    =
    | '(' ~ @:expression ')'
    | int
    ;

然后,如果我将1d3提供给通过tatsu.compile生成的解析器,我会得到预期的结果:

代码语言:javascript
复制
{'number_of_dice': '1', 'sides': '3'}

但是,当我使用解析器生成的vita TatSu命令行工具时,我得到:

代码语言:javascript
复制
{'left': None, 'op': None, 'right': None}

我尝试过分离规则、组合规则等,唯一能让它工作的方法就是打破像(1+2)d3 break这样的语句。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 07:50:48

这个问题是在最新版本的TatSu中解决的:https://pypi.org/project/tatsu/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63572442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档