lex yacc

最近接触到一个解析的任务,使用python的PLY模块写的。

不过要想学会PLY,首先要知道什么是lex,什么是yacc。

学过编译原理的同学应该记得,编译器的工作过程是这样的

源代码-->词法分析-->单词流-->语法分析-->语法树-->语义分析-->语义分析结果。


源代码通过词法分析变成单词流,单词流通过语法分析变成语法树,语法树通过语义分析得到结果。

其中lex就是用来生成词法分析器的,而yacc是用来生成语法分析器的。(那么语义分析呢?我现在也不清楚)

lex,yacc的介绍参考这里

关于上面链接中的代码在我的github中,你只需要一个make,就可以得到一个具备词法分析和语法分析的程序。


好了,知道了lex,yacc ,那么参考这篇文章学习PLY吧。


ps:

解决问题要思考从哪里入手。

比如这里的PLY,如果一上来就看PLY怎么使用,可能就会觉得不知所云。因为基本的概念都不懂,建立在基础之上的东西学起来还是有点困难的。

所以要先知道什么是lex,yacc。然后再去学习PLY就轻松多了。


保持一颗好奇心,好奇带给你思考,带给你乐趣。

你可能感兴趣的:(yacc,Lex)