摘要:
上两篇用分析JSON的例子讲完了词法分析与语法分析的整个过程,本篇再谈谈自己的一些认识。 词法分析与语法分析的理论基础都是自动机原理。或许会有人认为理论比较难学难用,其实我们也不必拘泥于它的理论,我们只要知道在一个大的循环里,我们要使用大量的if语句来进行判断,根据要分析的对象的边界条件来产生相应的对象也就可以了。对词法或语法的解析,最难的地方是要怎么才能知道这样的词法或语法是行得通的,而需要证... 阅读全文
摘要:
上两篇用分析JSON的例子讲完了词法分析与语法分析的整个过程,本篇再谈谈自己的一些认识。 词法分析与语法分析的理论基础都是自动机原理。或许会有人认为理论比较难学难用,其实我们也不必拘泥于它的理论,我们只要知道在一个大的循环里,我们要使用大量的if语句来进行判断,根据要分析的对象的边界条件来产生相应的对象也就可以了。对词法或语法的解析,最难的地方是要怎么才能知道这样的词法或语法是行得通的,而需要证... 阅读全文
摘要:
上一篇谈到了词法分析,并且给了一小段词法分析上的代码。如果大家对着代码看,可能就会发现我构造了一个对象来对字符串进行读取。具体代码是:CharReadersrc=newCharReader(chars);这样子写是为了减少在后面的while语句对字符串数组末尾的判断,起到简化代码的作用;这样的小技巧在写一些比较复杂的算法的时候特别的重要。实现完词法分析之后我们就要进行到下一步的语法分析了。教科书的... 阅读全文
摘要:
计算机相关专业的差不多都有学过编译原理吧?今天我班门弄刀,也谈谈我自己对编译原理的认识和理解。当然啦,我主要要谈的是编译器的前端的实现,后端的代码生成我目前还没有研究过。 实现一个编译器有两大步骤:一是词法分析,二是语法分析。应对这两块有很多的工具是可以帮助我们进行这样的工作的(例如:flex、yacc等),但我要说的是怎么完全手工去实现它。语法分析的主要目的是把一个个的字符和字母之类的东西给识别... 阅读全文
|