Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中设置ply的yacc的优先级?_Python_Regex_Abstract Syntax Tree_Yacc_Ply - Fatal编程技术网

如何在python中设置ply的yacc的优先级?

如何在python中设置ply的yacc的优先级?,python,regex,abstract-syntax-tree,yacc,ply,Python,Regex,Abstract Syntax Tree,Yacc,Ply,我需要使用ply从正则表达式生成AST。 例如,如果RE是(a | b*)abc,我想制作一个缩减元组为(':',(':',(':',(':',(';','a',('*,'b'),'a'),'b'),'c')我不能直接回答你的问题。但是,你也许可以考虑使用.< /P> 我认为你可以通过从地图中的决赛状态递归后退来恢复你想要的东西 如果您投票反对,请说明原因。要重新提出这个问题,ply允许您设置包含符号优先级的优先级变量。例如: precedence = ( ('left', 'PLUS'

我需要使用ply从正则表达式生成AST。
例如,如果RE是(a | b*)abc,我想制作一个缩减元组为(':',(':',(':',(':',(';','a',('*,'b'),'a'),'b'),'c')我不能直接回答你的问题。但是,你也许可以考虑使用.< /P> 我认为你可以通过从地图中的决赛状态递归后退来恢复你想要的东西


如果您投票反对,请说明原因。

要重新提出这个问题,ply允许您设置包含符号优先级的优先级变量。例如:

precedence = (
    ('left', 'PLUS', 'MINUS'),
    ('left', 'TIMES', 'DIVIDE'),
)
您可以在此处找到完整的教程和文档: (我必须使用“查找”功能来查找正确的位置)

可能重复的
>>> from greenery.lego import parse
>>> thingy = parse('(a|b*)abc')
>>> thingy.to_fsm()
fsm(alphabet = {'b', 'c', anything_else, 'a'}, states = {0, 1, 2, 3, 4, 5}, initial = 0, finals = {5}, map = {0: {'b': 2, 'a': 1}, 1: {'b': 4, 'a': 3}, 2: {'b': 2, 'a': 3}, 3: {'b': 4}, 4: {'c': 5}, 5: {}})
precedence = (
    ('left', 'PLUS', 'MINUS'),
    ('left', 'TIMES', 'DIVIDE'),
)