文件名称:Java词法分析生成器
文件大小:652KB
文件格式:TGZ
更新时间:2010-09-24 14:50:49
词法 分析 生成器 Java
一直想拥有一个属于自己的词法分析器(扫描器)生成器,本来想在一些现成的开源项目JLex、JFlex上修改,但感觉它们的代码实在难于下手,于是开始自己写,中间停停改改,也不记得做了多久了,现在算是基本成型了。 因为只是自己做,基本上是有了想法就加进去,因此到了后来,和传统的生成器是看上去是很不相像了,但Rsg确实有能力实现复杂扫描器(在examples中用Rsg实现了一个Java源程序扫描器)。主要的特点有: 简单。 在代码点上支持Unicode。 /** * 这是一个简单的Rsg示例。 */ regexp LineTerminator = "\r" | "\n" | "\r\n" ; regexp WhiteSpace = LineTerminator | [' ', '\t', '\f'] ; regexp Comment = "/*" % "*/" ; regexp Letter = ['a'-'z', 'A'-'Z']; regexp Digit = ['0'-'9'] ; regexp Identifier = Letter (Letter | Digit) * ; regexp Integer = Digit + ; regexp StringCharacter = ~['\r', '\n', '\"'] ; regexp SingleCharacter = ~['\r', '\n', '\''] ; scanner RsgQs { '"' StringCharacter * '"' : return STRING; /* 字符串 */ '\'' SingleCharacter '\'' : return CHARACTER; /* 字符 */ Identifier : return IDENTIFIER; /* 标识符 */ Integer : return INTEGER; /* 整数 */ Comment : skip; /* 注释 */ WhiteSpace :skip; eoi : return EOI; }
【文件预览】:
rsg-1_0B
----COPYRIGHT(63B)
----bin()
--------rsg_bin_1_0B.jar(637KB)
----examples()
--------action()
--------java()
--------filter()
--------quickstart()
----readme.txt(213B)
----doc()
--------RsgQs.in(72B)
--------commandref.html(1KB)
--------RsgQs.rsg(698B)
--------anttask.html(2KB)
--------RsgActHandlerImpl.java(1KB)
--------RsgAct.rsg(787B)
--------RsgActMain.java(1KB)
--------RsgAct.in(72B)
--------reglist.html(4KB)
--------index.html(1KB)
--------manual.html(22KB)
----TODO.txt(11B)