如何在python中设置ply的yacc的优先级?
我需要使用ply从正则表达式生成AST。如何在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'
例如,如果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'),
)