功能是对一段C语言代码做一个批注,例如:某一行没有进行正确的缩进,我就加一个批注:该行应该进行缩进;或者某一行没有进行换行,那我就加一个需要换行的批注。要求是批注自动加进去。

zld034 2009-02-24 08:05:35
我想做一个毕业设计,功能是对一段C语言代码做一个批注,例如:某一行没有进行正确的缩进,我就加一个批注:该行应该进行缩进;或者某一行没有进行换行,那我就加一个需要换行的批注。要求是批注自动加进去。
...全文
275 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhy_851221 2009-02-26
  • 打赏
  • 举报
回复
用有限自动机应该可以
zld034 2009-02-24
  • 打赏
  • 举报
回复
非常感谢1楼的回复,看来你对这个问题很感兴趣,并且颇有心得,我把我的想法和要求说得具体一点,希望得到各位网友的指点和帮助,本人非常感谢。
我想做的设计是:
一、问题的背景:现在很多初学C语言的学生一般情况下都不太注意C语言代码的书写格式,该缩进的地方没有进行缩进,改换行的地方,没有换行。如果一个没有规范格式的程序让人难以理解,所以本设计的目的就是培养学生正确书写C语言代码的习惯。
二、具体要求,学生书写的C语言代码作业,格式是文本型的或者是Word格式的,我要做的就是把批注加入到每一行需要加批注的地方。另外一种理解方法,作为一名计算机教师,在批改学生程序作业的时候,原始的方法是:用笔在纸上进行批改,我现在要做的就是把手工批改作业改成自动批改作业。


C语言源代码格式化批注的研究与实现

方案一:
1、学生提交已经通过编译运行的C语言源代码。
2、通过调用indent工具,将学生提交的没有经过规范格式化的源代码进行格式化。
3、通过格式化前后的对比,在学生原有的代码上加入格式化批注信息(此部分是重点也是难点)。
4、例如:如下代码是学生提交的C语言源代码。
int main()
{
int a = 10; int b = 0;
int i;
for ( i=0; i < a; i++ ){
b = b+i;}
}
通过调用格式化工具格式化后的代码如下:
int main()
{
int a = 10;
int b = 0;
int i;
for ( i=0; i < a; i++ )
{
b = b+i;
}
}
加入批注后的代码如下:
int main()
{
int a = 10; int b = 0; 第三行应该相对于左括号向右缩近4个空格,第三行第二条语句应该换行,并向右缩进4个空格,并与第三行对齐
int i; 第四行应该向右缩进4个空格,并与第三行对齐
for ( i=0; i < a; i++ ){ 第五行的左括号应该放在第六行,并与for语句对齐
b = b+i;} 第六行应该相对于左括号向右缩进4个字符,右括号应该放在下一行
}


方案二:
1、学生提交已经通过编译运行的C语言源代码。
2、读文件,输入文件名,读入文件。
3、以行为单位,读入文件,记录每条语句的位置,通过语句位置的比较,判断语句的相对位置正确与否,然后给出相关的批注信息。
4、例如:
int main()
{
int a = 10; int b = 0; 第三行应该相对于左括号向右缩近4个空格,第三行第二条语句应该换行,并向右缩进4个空格,并与第三行对齐
int i; 第四行应该向右缩进4个空格,并与第三行对齐
for ( i=0; i < a; i++ ){ 第五行的左括号应该放在第六行,并与for语句对齐
b = b+i;} 第六行应该相对于左括号向右缩进4个字符,右括号应该放在下一行
}
  • 打赏
  • 举报
回复
想知道你的缩进具体规则是什么样的.
你按照这样一个规则来匹配代码不就可以了.
dongpy 2009-02-24
  • 打赏
  • 举报
回复
主要工作就是对代码缩进和换行的判断,要全面考虑各种情况。
waizqfor 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 zld034 的帖子:]
我想做一个毕业设计,功能是对一段C语言代码做一个批注,例如:某一行没有进行正确的缩进,我就加一个批注:该行应该进行缩进;或者某一行没有进行换行,那我就加一个需要换行的批注。要求是批注自动加进去。
[/Quote]
LZ正常的缩进 应该是什么样
注释分别保存在几个字符数组里 然后跟你自己的判断 代码的情况 来进行添加

70,037

社区成员

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

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