【发布时间】:2013-07-16 06:47:15
【问题描述】:
如何使用 awk 解析如下 switch-case 语句?我想用 awk 创建简单的 C 语法检查器。该检查器必须读取代码并返回是否存在语法错误。如果有,awk 应该在上面打印什么错误。
switch(number)
{
case 1 : number = 'a'; break;
case 2 : number = 'b'; break;
default : number = 'x';
}
而对于for()语句,像这样:
for(i=0;i<10;i++)
{
number = 'A';
}
我当前的 switch-case 语句代码是:
#parser_switchcase.awk
{
for(i=1; i<=NF; i++)
{
if($i~/switch\([[:alnum:]]+\)/)
print("switch(VALID_VARIABLE)")
}
}
上面我的第一个 C switch-case 代码的结果:
master@master:~/Dokumen/Root$ awk -f parser_switchcase.awk soalswitch
switch(VALID_VARIABLE)
但它确实需要很多改进。不完整。
我需要 awk 建议来阅读和检查我在上面输入的代码示例。没错,所以我只需要 awk 解析这些代码,而不是附加功能、附加代码等外部可能性,只需要上面代码中提到的。
【问题讨论】:
-
我怀疑 awk 是否是执行此操作的正确工具...
-
不要这样做,使用现有的编译器。
-
您能否更具体地说明您想要完成的任务?对于上述输入,您希望得到什么输出?那么即使我也没有看到这个项目的意义,我也许可以帮助你(但我想你有你的理由)。
标签: c parsing for-loop awk switch-statement