想做一个c词法分析器 ,关键是要实现错误信息的定位,以及在源代码中的具体位置!!

qinxiaolin 2006-02-27 03:03:31
如题
希望朋友们 能够提供一些资料,或者想法,畅所欲言!
关键是后面的 ————————实现错误信息的定位,以及在源代码中的具体位置!
在线等候!!
...全文
231 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸学堂 2006-02-28
  • 打赏
  • 举报
回复
实现错误信息的定位,以及在源代码中的具体位置
~~~~~~~~
编译器中都有_FILE_(文件名的宏),_DATE_(时间的宏),_LINE_(行号的宏)

如果在程序中使用如上宏,会在编译时候把这些宏替换成为相应的值。
这些数据的产生是在编译时候编程的,也就是说,写一个文件编译时,
先把文件读入,保存文件名与宏(_FILE_),时间(_DATE_),并记录
每行代码的行好,在从文件开始,进行语法分析,语义分析等,如果发现错误
返回_FILE_,和_LINE_的值。
qingcairousi 2006-02-28
  • 打赏
  • 举报
回复
可以考虑boost::spirit,它的功能很强大的,几乎就可以直接用EBNF写编译器了。如果需要定位行的话,可以从它的iterator上入手
zquboy 2006-02-27
  • 打赏
  • 举报
回复
词法分析的时候只要检测出 "0DH, 0AH" 就算一个代码行。
rwxybh 2006-02-27
  • 打赏
  • 举报
回复
楼主可以看一下编译原理
rwxybh 2006-02-27
  • 打赏
  • 举报
回复
使用LEX或者ANTLR
上面的LEX限于词法分析
看了一下你的需求,估计需要LEX+YACC或者ANTLR,选择一个就可以了
qinxiaolin 2006-02-27
  • 打赏
  • 举报
回复
写程序哪能加上行号的呀!!那这就不时真正的c词法分析程序了!!
我知道是该在分析的时候记录相应的行号,但是困难时,总觉得比较杂乱,可能是我还没理清楚思路吧!!欢迎大家再一起探讨探讨!!
skyundersun 2006-02-27
  • 打赏
  • 举报
回复
想法是好的,任务艰巨,但是论坛里绝对有这样的高手
du51 2006-02-27
  • 打赏
  • 举报
回复
对了.EDITPLUS里有一个错误定位.你可以参照一下.它用的是正则表达式.
不过,这不是编译层的.它只是读人家的东西.自己简单定位.
du51 2006-02-27
  • 打赏
  • 举报
回复
我觉得这个东西呀.太难了.帮楼主顶吧..
期待中...
bm1408 2006-02-27
  • 打赏
  • 举报
回复
难度不在于这里,你可以写一个程序加上行号,但是这个行星要和编译时时挂钩
wolfskytwl 2006-02-27
  • 打赏
  • 举报
回复
UP!同意楼上的观点。
祝楼主成功
jixingzhong 2006-02-27
  • 打赏
  • 举报
回复
错误定位可以结合在之前的工作中一起进行 ...

定位一般就是定位到行,
那么记录行数就号了 ...
Squall1009 2006-02-27
  • 打赏
  • 举报
回复
对原码解析的话,好象还是要写的变量记录,到了第几行.......

不过感觉你说的东西比较难,假如是记录自己程序哪边出错的话,可以看看__LINE__

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧