随笔分类 -  编译器之旅

摘要:OK,书接上文,今次这篇博客是准备说语法分析。其实词法分析和语法分析可以说是一体的。词法分析用于分析输入的单词,将其一一分门别类。语法分析分析已经分门别类好的单词,看其组成的句子是否符合语言的文法。首先,先确定一个简单的文法:S -> if ( M ) { N }S -> NM - > P == Pp -> id | digitN -> int id ; | int id = num ; | Q;Q - > id = EE - > E + T | TT - > id | digit| ( E )这是一个非常简单的java风格文法,大家一眼就能看出 阅读全文
posted @ 2013-08-18 20:03 Sorheart 阅读(4175) 评论(0) 推荐(0)
摘要:编译器大致可以分为前端和后端,前端执行分析,后端执行合成。前端又可大致分为词法分析、语法分析和语义分析,本篇文章就是要实现一个简单的词法分析程序。使用语言为python 2.5。1 名词解释 本文不会详细的解释涉及的名词概念,只会大致的描述一下。 词法单词:语言的文法单位,如int、float等等。 正则表达式:一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。 NFA:全名非确定有限自动机,是一种需要从一个状态出发的多条标有相同符号的边进行选择的状态机。 DFA:全名确定有限自动机,与NFA不同的是,不会有从同一状态出发的两条边标有相同的记号。2 大体流程在写词法分析器之前首先 阅读全文
posted @ 2013-07-13 20:34 Sorheart 阅读(1152) 评论(0) 推荐(0)