有人可以告诉我这个问题想问我什么吗?

Can somebody walk me through what this question is trying to ask of me?

下面的编程语言问题似乎很不清楚,它想让我做什么对我来说并不明显,有人可以帮助我理解它吗?

问题:

为一组简单的语言规则实现递归下降解析器的一部分。使用任何编程语言来实现;如果不是通用语言,请在评论中注明是哪种语言。您应该为每个非终结符号实现函数,并使用以下描述类 C 语言的一部分的规则。

<ifblock> --> if(<logic_expr>){<stmts>} [else {<stmts>}]

<logic_expr> --> <value> == <value> | <value> != <value>

您可以承担以下职能:

终端符号应使用以下定义的常量进行编码:

据我所知:要求你编写两个函数

  • ifblock
  • logic_expr

作为递归下降解析器的一部分。

对于其他非终结符号,stmtsvalue 您可以假设存在同名的预写函数。

讲座和教程中应该讨论了如何编写递归下降解析器,所以我假设您知道它是如何工作的。

要从输入流中获取下一个标记,您可以调用 lex() 其中 returns 代码,如终端符号代码中所列。您需要做的是通过调用 lex() 请求令牌代码来实现 ifblock,并根据语言语法评估和匹配所需的令牌。请注意,根据语法,ifblock 中的 else 部分是可选的。

要计算 if 的逻辑表达式,您需要进入一个函数 logic_expr,您也需要编写该函数,该函数计算语法中定义的逻辑表达式。同样,您可以假设非终结符 value 的函数确实已经存在。