方案一:
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个字符,右括号应该放在下一行
}