纯C语言词法分析器

纯C词法分析器,可以试下多种语言的词法分析功能。
孟关伦只要改一下keywd表就行了。主要是一个自动机。可以实现跨平台,gcc vc均有测试。大家可以自己接语法树生成处理。暴露出一些问题,下划线不能连成标识符。

红线运算符
蓝线关键字
属于Table。c
运算符结构包含运算符优先级等均在tree。h有定义
结构比较清晰,不是太难懂
【需要语法树构建请添加到snana。c】
异常包含于error.c

孟关伦简单说一下原理:
一串字符流送入int SplitScanner(wchar_t* exp)函数
从头开始逐个扫描。各个记号由自动机的状态进行归并。
归并完成后,调用int DiscardToken(void);函数进行进一步处理
比如DiscardToken负责2 8 1016 60进制转换,
浮点数转为有理数送入词素流


自动机状态由InitTokenSwitchFlags函数负责转换并判断
如有异常交给int ReportError(ErrNumber id, int ln, int col)
从reporterr的定义中可以看出:ln col变量保存发生错误的行列信息

注意lxana有一句注释“//Add launcher?”请在此处添加语法分析引擎。。。

mainx是启动器,根据自己的实际情况:
是构建interpreter还是compiler?
平台位于win 是console app/win32app
平台位于osx 根据情况修改之
【【孟关伦提示大家:特别注意以一下】】
该lexical analyzer支持宽字符(如果你想制作易语言),这个lxana是实现卡西欧自然书写的第一步!远离自己推敲!


本博客所有文章如无特别注明均为原创。作者:孟关伦复制或转载请以超链接形式注明转自 孟关伦博客
原文地址《纯C语言词法分析器本文已提交百度!

相关推荐

发表评论

路人甲
Ctrl+Enter快速提交

网友评论(0)