随笔分类 -  Parser

介绍一些Parser的相关知识,算法理解,简单实现等
摘要:用到flex和bison,总是会出现一些奇怪的问题,然后网上又查不到直接的解决办法。现在来总结一下遇到的和解决的问题。1. bison的C++接口2. flex的C++接口3. location的使用先说简单一点的,location的使用,在Bison手册里给出的Calculator的例子里面,使用stdin作为输入,在lex文件里定义了# define YY_USER_ACTION yylloc->columns (yyleng);在输出位置信息的时候,行数始终是1,这个对于文件作为输入就需要做些修改了。在http://oreilly.com/linux/excerpts/978059 阅读全文
posted @ 2013-04-10 20:53 Frandy.CH 阅读(5599) 评论(0) 推荐(0) 编辑
摘要:以前尝试阅读《编译原理》,但都没有读下来,现在看《编程语言实现模式》,感觉轻松多了。其实,目前我只对解析感兴趣,只要看这本书的第一部分解析起步就可以了,确实没有必要去啃《编译原理》。下面就是学习的内容了。解析,分为两步,先是进行词发分析,将输入转换成一个一个的Token,然后是进行语法分析。一个一个的Token组成语句,对应一定的语法。根据这些Toke,匹配一定的语法。词法分析器,lexer,是语法分析器,parser,的基础。先来看看词发分析器。例如语句,1024+ 78*pi,一个简单的表达式,词发分析就是要得出上面的语句由这些Token组成,1024, + , 78, * ,pi。Tok 阅读全文
posted @ 2012-10-06 17:57 Frandy.CH 阅读(1709) 评论(0) 推荐(0) 编辑
摘要:开始看《编程语言实现模式》,补习了一下Parser的基础知识。英文是Wiki上的,中文是自己理解翻译的。Wiki LALR parserhttp://en.wikipedia.org/wiki/LALR_parserin 1965, Donald Knuth invented the LR parser (Left to Right, Rightmost derivation). The LR parser can recognize any deterministic context-free language in linear-bounded time. However, rightmo 阅读全文
posted @ 2012-10-05 16:17 Frandy.CH 阅读(2432) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示