python - 语义异常后是否可以继续用其他规则进行解析?

标签 python tatsu

在语义操作中引发异常后是否可以回退到其他规则?就像下面的(人为的)场景:

var = /[a-zA-Z]+/;
keyword = 'for' | 'in';
a = var:var | keyword:keyword;

def a(ast):
    if (ast.var not in symbolTable):
        raise Exception()

当引发异常时,解析将继续使用“关键字”规则。我知道 @@keyword 功能,但我想在运行时声明关键字(我的解析器适用于具有用户定义运算符的编程语言)。

最佳答案

如果语义代码引发 tatsu.exceptions.FailedSemantics,异常将被完全视为 ParseException,因此将恢复正常的解析控制流。

关于python - 语义异常后是否可以继续用其他规则进行解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649531/

相关文章:

python - 我如何将切比雪夫不等式应用于这种情况?

python - 如何以不区分大小写的方式匹配 Tatsu 中的模式

error-handling - 如何从grako/TatSu获取简洁的语法错误消息

python - 如何在 Python 中生成独立的解析器?

python - 双击运行Python文件

python - 在 python 中抓取页面时保留非拉丁字符

python - 对象的描述符不适用于对象,使用 __slots__

python - 使用 Python 从 DLL 中提取程序集版本

python - 如何处理 PEG 语法中的负数?