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

Pseudo-code program for handling errors

我想用伪代码编写一个程序来识别 C/C++ 源文件中“#”或“%”的错误使用。 这听起来很简单,但我不确定如何 write/describe in "pseudo code" 该符号出现的位置,例如 before/after 是否是变量名。

我应该使用类似的东西吗:

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

或者我应该使用类似#_ASCII_code is_after "symbol"...

我真的不知道如何用伪代码来描述这些特殊情况。

我不得不提一下,我在互联网上阅读了有关伪代码的信息。(我使用了搜索按钮)

提前致谢。

您的方法无效,因为它是 too simple. The solution is a multi-step process called "parsing" until you end up with an AST:

  • 首先需要将源文件中的字符流转换为token(b = a ++ -> ID ASSIGN ID INCREMENT)。
  • 那么你需要一个LL parser to convert those into higher level rules. The rules for a whole source file are usually called 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 ";"
        ...

伪代码是规范的一种形式。如果用伪代码写这个规范太难,那么先用自然语言写,例如 "All variables shall be perfixed by '#'." 从中自动得出一个没有前缀 '#' 的变量是错误的。

编写规范可以确保问题得到很好的描述。在此之后,您可以从伪代码开始,这是一种设计形式,最后您可以编写真正的程序,可以使用任何语言或机制。例如,您可以决定解决方案适合 yacc 脚本,或者它足够简单,您可以直接用 C 或 C++ 对其进行编码。

由于伪代码定义不当,可能会导致此伪实现中的需求描述不当。从一个糟糕的伪实现到一个真正的实现然后导致一个糟糕的实现(另见:错误)。

最好不要使用伪代码。