我想验证给定的字符串在
int main() {
double x[3];
<insert code here>;
return EXIT_SUCCESS;
}
实际上,我希望核查
verifyC('x[0]*x[0] + x[1] + 1') // pass
verifyC('x[0]*x[0] + x[1] +') // fail, syntax error
verifyC('x[0]*x[0] + a') // fail, `a` undefined
什么样的核查方式比较好?你知道吗
Tags:
用数值常量替换所有出现的已知变量。在您的代码中,这将是
x[0]
、x[1]
和x[2]
。注意,在C中允许大量中间空格,甚至在变量内部:x [ 1 ]
也是有效的。(同样:x[01]
有效。x[0x01]
有效。如果数组大于8个元素:x[010]
是有效的,实际上是x[8]
。1[x]
有效,等于x[1]
。)数值常量本身必须有效,最好不等于
0
。(只是为了防止解析器声明1/x[0]
无效!)你知道吗替换时,在常量前后插入一个空格。这是为了防止
x[1]2
变为12
。不要使用括号!在这些情况下,sin x[1]
是无效的,但是它的替代物sin(1)
是无效的。你知道吗有了这个,输入字符串
翻译成
可以用常规程序验证;例如Safe expression parser in Python;或者,由于您不需要计算而只需要验证,所以编写自己的。你知道吗
最简单的方法就是尝试编译一个包含要检查的字符串的小示例程序。你知道吗
这样您就可以让真正的C编译器检查代码段。这将比在Python程序中实现所有的C解析和检查要容易得多,也可靠得多。你知道吗
相关问题 更多 >
编程相关推荐