PLY是流行的编译器构造工具lex和yacc的纯python实现。
PLY官方文档:http://www.dabeaz.com/ply/
PLY文档翻译:https://qyliang.blog.csdn.net/article/details/97686897
PLY由两个单独的模块组成lex.py和 yacc . py 。都可以在名为ply的Python包中找到。
lex.py模块用于将输入的文本通过正则表达式转化成一系列特定的token。
yacc.py用于识别以上下文无关语法形式指定的语言语法。
lex示例
# ------------------------------------------------------------
# calclex.py
#
# tokenizer for a simple expression evaluator for
# numbers and +,-,*,/
# ------------------------------------------------------------
import ply.lex as lex
# List of token names. This is always required
tokens = (
'NUMBER',
'PLUS',
'MINUS',
'TIMES',
'DIVIDE',
'LPAREN',
'RPAREN',
)
# Regular expression rules for simple tokens
t_PLUS = r'\+'
t_MINUS = r'-'
t_TIMES = r'\*'
t_DIVIDE = r'/'
t_LPAREN = r'\('
t_RPAREN = r'\)'
# A regular expression rule with some action code
def t_NUMBER(t):
r