编译及虚拟机技术
文章平均质量分 57
deepfuture
这个作者很懒,什么都没留下…
展开
-
coco/r笔记-扫描器的字符规则定义
扫描器的字符规则定义Scanner SpecificationA scanner has to read source text, skip meaningless characters, recognize tokens andpass them to the parser. This is described in a scanner specification, which consis原创 2010-01-13 21:14:00 · 629 阅读 · 0 评论 -
flex和bison下载地址
bison:http://www.gnu.org/software/bison/flex:http://flex.sourceforge.net/原创 2010-01-01 16:16:00 · 4778 阅读 · 0 评论 -
LR(0)分析器的构造算法
首先,给文法增加一个辅助的开始产生式S->.S$。令T是至今看到的状态集合,E是至今已找到的(移进或转换)边集合。初始化T为{Closure({S->.S$})}初始化E为空repeat for T中的每一个状态I forI中的每一项A->α.Xβ let J是Goto(I,X) T EX-> J}原创 2009-12-29 17:16:00 · 1341 阅读 · 0 评论 -
如何在Windows下面使用bison呢?
1、到Google搜索“bison windows”,应该可以看到这个网站: http://gnuwin32.sourceforge.net/packages/bison.htm 它是专门将GNU的工具移植到windows下的工程。2、下载下面的内容: 执行程序:http://gnuwin32.sourceforge.net/downlinks/bison-bin-zip.php转载 2009-12-29 21:00:00 · 640 阅读 · 0 评论 -
windows下安装和使用flex for windows
1、下载并安装flex for winhttp://gnuwin32.sourceforge.net/packages/flex.htm2、%{与%}之间为定义段,所有内容将拷贝到源C文件中,%%与%%之间为规则段,最后为用户子例程段3、编写第一个超小型的词法分析程序%{%}%option noyywrap%%[/t]+ ;tiantian|TIANTIAN|TianTia原创 2009-12-29 20:59:00 · 879 阅读 · 0 评论 -
Lex正则表达式
字符 解释. 匹配除换行符("/n")以外的任何单个字符* 匹配前面表达式的零个或多个拷贝[] 匹配括号中的任意的字符类^ 作为正则表达式的第一个字符匹配行的开头$ 作为正则表达式的最后一个字符匹配行的结尾{} 当括号中包含一个或2个数字时,指示前面的模式被允许原创 2009-12-29 20:57:00 · 1026 阅读 · 0 评论 -
FLEX正则表达式语法
. 匹配除换行符"/n"外的任意单个字符。[] 匹配括号中字符的任意一个。用"-"指示字符的范围。如果第一个字符是抑扬符号"^",那么它的含义变为匹配括号内字符以外援任意字符。* 匹配前面正则表达式的零次或多次出现。+ 匹配前面正则表达式的一次或多次出现。? 匹配前面正则表达式的零次或多次出现。{}根据括号内的不同而不同。单个数字{n}意味着前面的模式重复n次,如原创 2009-12-29 17:28:00 · 535 阅读 · 0 评论 -
flex细节
1、在flex中,不能重新定义input()或unput(),但是能重新定义YY_INPUT,它是flex调用的从输入文件中读取文本的宏。flex缓冲区,被定义为YY_BUFFER_STATE类型。例程yy_create_buffer(FILE*,size0)生成指定大小的flex缓冲区,通常是YY_BUF_SIZE,用于读取stdioFILE。对yy_swithc_to_buffer(flexb原创 2009-12-29 17:27:00 · 733 阅读 · 0 评论 -
yacc细节
1、嵌入式动作在规则内变成一个符号,所以它的值($$)像任何其他的符号一样对于规则末端的动作都是可以用的。如:thing: A {$$=17;} B C {printf(%d"",$2);}在使用嵌入式动作时,如果正在使用“%union”和有类型的符号值,则在引用动作值时就得将值放入尖括号内,例如将它放入嵌入式动作时的$$,以及在规则末端动作中引用它的$3。2、明确原创 2009-12-29 17:24:00 · 1417 阅读 · 0 评论 -
java虚拟机源代码
本站(openjdk)现在所列出来的就是HotSpot虚拟机的源代码,而HotSpot正是目前世界上java虚拟机的最好的实现。 HotSpot的基础代码是许多人辛勤劳动的结晶,这个过程迄今已持续了超过10年的时间(当然时间长并不意味着一定好,一半一半吧)。所以到现在为止,他的体积是很大的。有将近1500个C/C++头引用和源代码文件,整个虚拟机的代码加起来差不多有25万行。这些源代码中含有转载 2009-12-27 20:39:00 · 888 阅读 · 0 评论 -
GCC剖析
让我们了解一下GCC 4: 在过去的几年中,GNU Compiler Collection (GCC)一直在做GCC 3 到 GCC 4 的主要版本转换。GCC 4是一个重要的版本,GCC 4 新增了很多新的最优化框架(和新的中间代码生成),新的架构和语言支持,多种新属性和选项变化。了解GCC 4新的属性和它们的优点很有必要。 GCC是所有开发的基石,不管是对开源世界和闭源世界。它让操作系统和架构原创 2009-12-27 20:34:00 · 539 阅读 · 0 评论 -
Coco/R快速编译器生成
Coco/R 更Cool些,Coco/R 使用增强的 EBNF 文法建立递归下降分析的分析器(Recursive Descent Parser)和扫描器(Scanner)。Coco/R 除了提供调用分析器的主程序模块之外,还提供语义(semantic )模块在文法之中调用(如,符号表处理和代码生成器),可以直接在grammer 内写语意动作【用你自己喜欢的语言。俺是中意Delphi】。Coco/R转载 2009-12-27 19:35:00 · 859 阅读 · 0 评论 -
coco/r笔记-对unicode支持及EBNF表达式
1、支持unicode2、支持utf-83、例子如下:VarDeclaration (. string name; TypeDesc type; .)= Ident (. Obj x = symTab.Enter(name);int n = 1; .){ , Ident (. Obj y = symTab.Enter(name);x.next = y; x = y;n++; .)}原创 2010-01-11 20:18:00 · 715 阅读 · 0 评论