当前位置:孟关伦博客 » 技术交流 »纯C语言词法分析器
纯C语言词法分析器
   作者:孟关伦  2014年9月5日 17:31 星期五  热度:2222°  字号:   评论:0 条
时间:2014-9-5 17:31   热度:2222°  评论:0 条 

纯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语言词法分析器
本文地址:http://www.mengguanlun99.com/post-96.html
版权声明:若无注明,本文皆为“孟关伦博客”原创,转载请保留文章出处。 本文已被百度收录!