您能否将 Tatsu 语法中的终结点指定为任意函数而不是实际的 BNF 规则?这可以在 peginator 语法中完成。您可以指定在生成 PEG 解析器时,当它需要实现给定终端时,它将调用外部函数而不是实际规则。我希望能够在 Tatsu 语法中利用这一点。
我做你想要的方法是在语法中定义一个空规则,然后编写一个返回所需值的语义动作:
use_special_func = () ;
class MySemantics:
def use_special_func(self, ast):
return str(random.random())