LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2572|回复: 11

括号匹配查错程序--for C语言

[复制链接]
发表于 2006-4-27 10:41:46 | 显示全部楼层 |阅读模式
正在学数据结构,学到栈,写了这个查错程序,检查 (), [], {} 是否匹配,忽略注释和引号里的括号,给出有用的错误提示(第几行的什么括号出错)。

实际用起来很不错,如果一个C源文件里有括号匹配错误,用gcc编译时会给出一大堆错误信息,看着有点晕,这时可以用这个程序查一下。但是括号以外的错误本程序就无能为力了,等我以后学了编译原理再改进一下让它能查更多错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-4-27 12:53:49 | 显示全部楼层
作为练手是不错
但是这种功能好的编辑器都有这个功能,例如VIM
回复 支持 反对

使用道具 举报

发表于 2006-4-27 13:19:51 | 显示全部楼层
一个建议: 用形式语法来做, 就不需要堆栈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-27 19:12:53 | 显示全部楼层
Post by pupilzeng
作为练手是不错
但是这种功能好的编辑器都有这个功能,例如VIM


我也在想应该有软件可以用来查错,不过没想到Vim就可以,但是不知道具体要怎样操作?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-27 19:20:10 | 显示全部楼层
Post by pointer
一个建议: 用形式语法来做, 就不需要堆栈


我能用栈写出来已经很高兴了,呵呵!
还没听说过形式语法,是什么好用的东西?
我现在能提示第几行出错,但有时不准确,也许以后学了形式语法可以解决这个问题。
回复 支持 反对

使用道具 举报

发表于 2006-4-27 20:58:25 | 显示全部楼层
Post by kikiwarm
我也在想应该有软件可以用来查错,不过没想到Vim就可以,但是不知道具体要怎样操作?

在普通模式下,将光标置于[,(,{;],),}上,按%,就会光标就会跳到匹配的括号上。
还可以使用fold来查看
:h c.vim一下看看怎么设置C语言的折叠。
回复 支持 反对

使用道具 举报

发表于 2006-4-27 21:16:36 | 显示全部楼层
You should find out the error yourself.
or you can ask a specific problem.
This is you good chance to study.
回复 支持 反对

使用道具 举报

发表于 2006-4-27 21:54:19 | 显示全部楼层
形式语言也不是什么具体的东西, 就是编译原理里面的
将C语言的语法结构分析一下, 分别写对应该处理函数, 要用到递归---也相当于是用了堆栈.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-27 23:10:05 | 显示全部楼层
像我这个小程序都有差不多一百对括号,一个个找不是很好。

不过这个程序的确用处不大。

如果能写个好用的查错程序,我认为那比自己找错误有意思多了。

我现在先学数据结构,然后学点汇编,之后才能学编译原理呀,路漫漫其修远舍兮。我正在写中缀计算器,四则运算加括号,好难写啊,写不出来
回复 支持 反对

使用道具 举报

发表于 2006-4-29 16:07:51 | 显示全部楼层
呵呵,如果是结构很好的C/C++ 代码,不会有太深的括号嵌套

很多编辑器已经内置了这样的功能,比如括号不匹配时会用特殊颜色显示
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表