用于处理错误的伪代码程序

时间:2015-01-14 10:27:29

标签: c syntax-error

我想用伪代码编写一个程序,它将识别C / C ++源文件中“#”或“%”的错误用法。 这听起来很简单,但我不确定如何在“伪代码”中写入/描述该符号出现的位置,例如,无论是否在变量名之前/之后。

我应该使用类似的东西:

  If "#" after var_a
       then "Error!"
    elseif before ";"
        .... and so on 

或者我应该使用#_ASCII_code is_after“symbol”....

之类的东西

我真的无法想象如何在伪代码中描述这些特殊情况。

我必须提到我在互联网上阅读有关伪代码的内容。(我使用了搜索按钮)

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您的方法不起作用,因为它是too simple。该解决方案是一个名为“parsing”的多步骤流程,直到您最终得到AST

  • 首先,您需要将源文件中的字符流转换为标记(b = a ++ - > ID ASSIGN ID INCREMENT)。
  • 然后您需要LL parser将这些转换为更高级别的规则。整个源文件的规则通常称为AST - Abstract Syntax Tree

该树现在允许您编写伪代码:

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 ++中对其进行编码。

由于伪代码没有很好地定义,它可能导致在这个伪实现中描述的要求很少。从糟糕的伪实现到实际实现,导致实现不佳(另请参见:错误)。

也许最好不要使用伪代码。