程序员达达

Tag Archive for Python

pycparser源码阅读笔记(2) – c_lexer.py

lexer

里面整个就定义了一个名为Clexer的类。调用类成员函数input,就能设置好输入的string stream。而每次调用token则可以得到不同的token。 def __init__(self, error_func, on_lbrace_func, on_rbrace_func, type_lookup_func): """ Create a new Lexer. error_func: An error function. Will be called with an error message, line and column as arguments, in case of an error during lexing.   on_lbrace_func, on_rbrace_func: Called when an LBRACE or RBRACE is encountered (likely to push/pop type_lookup_func’s scope)   type_lookup_func: A…

Lex/Yacc的Python实现

lex & yacc

最近在做一些compiler方面的工作,需要对源代码进行一些处理。以前上compiler课程的时候,用的是flex和bison作为C/C++下的前端工具。最近打算试试Python。找来找去,找到一个类似的模块“PLY”,是Python下面的对应实现,可以用来实现词法分析/语法分析。 PLY: http://www.dabeaz.com/ply/ 利用该模块,有人实现了一个简单的C的parser: pycparser: https://github.com/eliben/pycparser (GitHub上有两个,别点错了) 之后打算分析一下pycparser的源代码,好好学习一下怎么用这个模块。