你可以指定任意函数作为 Tatsu 语法的终端吗

问题描述 投票:0回答:1

您能否将 Tatsu 语法中的终结点指定为任意函数而不是实际的 BNF 规则?这可以在 peginator 语法中完成。您可以指定在生成 PEG 解析器时,当它需要实现给定终端时,它将调用外部函数而不是实际规则。我希望能够在 Tatsu 语法中利用这一点。

parsing tatsu
1个回答
0
投票

我做你想要的方法是在语法中定义一个空规则,然后编写一个返回所需值的语义动作:

use_special_func = () ;
class MySemantics:
    def use_special_func(self, ast):
        return str(random.random())

https://tatsu.readthedocs.io/en/stable/semantics.html

© www.soinside.com 2019 - 2024. All rights reserved.