我想用伪代码编写一个程序,它将识别C / C ++源文件中“#”或“%”的错误用法。 这听起来很简单,但我不确定如何在“伪代码”中写入/描述该符号出现的位置,例如,无论是否在变量名之前/之后。
我应该使用类似的东西:
If "#" after var_a
then "Error!"
elseif before ";"
.... and so on
或者我应该使用#_ASCII_code is_after“symbol”....
之类的东西我真的无法想象如何在伪代码中描述这些特殊情况。
我必须提到我在互联网上阅读有关伪代码的内容。(我使用了搜索按钮)
提前谢谢。
答案 0 :(得分:2)
您的方法不起作用,因为它是too simple。该解决方案是一个名为“parsing”的多步骤流程,直到您最终得到AST:
b = a ++
- > ID ASSIGN ID INCREMENT
)。该树现在允许您编写伪代码:
For all AST nodes with the text representation "#"
if the previous sibling is a variable
...
else if the next sibling is ";"
...
答案 1 :(得分:0)
伪代码是一种规范形式。如果用伪代码编写这个规范太难了,那么首先用自然语言编写它,例如"所有变量都应该用'#'。"。从中自动跟随一个没有前缀为'#'的变量。是一个错误。
编写规范可以确保问题得到很好的描述。在此之后,您可以从伪代码开始,这是一种设计形式,您最终可以编写真实的程序,可以使用任何语言或机制。例如,您可以决定解决方案是否适用于yacc脚本,或者它很简单,您可以直接在C或C ++中对其进行编码。
由于伪代码没有很好地定义,它可能导致在这个伪实现中描述的要求很少。从糟糕的伪实现到实际实现,导致实现不佳(另请参见:错误)。
也许最好不要使用伪代码。