目标组件:
可配置的词法分析器
可配置的LR-Parser
Ray: 类C的中间语言
汇编器
相关设计,测试工具
已完成组件:
可配置的词法分析器
可配置的LR-Parser,支持SLR(1),LALR(1)
文法设计工具
BNF Compiler,生成SLR(1),LALR(1)分析表
内建错误处理
实时观测语法及其分析树
实时报告分析表,冲突,First Follow集合以及左递归,左因子
目录结构:
./Arsenal/Lex : 词法分析器;
./Arsenal/Parser : 语法分析器.
./Arsenal/Common : 公共库函数.
./Arsenal/Tools : 一些必要的工具,例如读取语法分析配置文件的工具等等.
./Tools/GrammarDesigner : 基于MFC的文法设计工具.
./Prj : 各种编译器的工程(除了VS2K8之外的工程仅是为了测试代码的兼容性)
./misc 一些测试用的文法以及工具和一部分语言的yacc版.
./binary/x86/dll/release : 编译后,生成的x86平台下的dll release版,其余binary下结构与其类似,
./temp/ 编译器生成的临时文件,例如obj等.
其中,./Arsenal/可支持所有目标平台,./Tools下的GrammarDesigner,仅支持win x86 X64.本工程所有生成的二进制文件都放在./Arsenal/binary下。所有引用到MFC的DLL版本都需要安装vs2k8发行包:VS2008_Redistributable_Package
用法:
在Grammar Designer中,选项Tools->Generate->Template会根据当前词法和语法规则,自动生成一份调用Arsenal库的.c模板.
词法分析部分:
例子 :请参考./misc/grammar/中的例子.
技 术细节: 基于NFA的Pseudo-Parallel正则表达式引擎,支持正向预搜索,逆向预搜索,贪婪,非贪婪,循环等操作,支持SINGLELINE IGNORECASE模式,不支持MULTILINE,"^" "$"永远匹配整个输入的首尾,但是扩展了关键字"\B" "\E"以便匹配行首尾,"."在默认不匹配"\n",SINGLELINE下匹配所有字符。
项目主页:http://code.google.com/p/arsenalcomp/
下载地址:http://code.google.com/p/arsenalcomp/downloads/list
来自:开源中国社区

