如何为if和while语句编写简单的解析器?

时间:2011-09-03 16:10:27

标签: c# parsing lexical-analysis

我需要编写一个简单的解析器,将令牌转换为解析器树。 我已经写过返回令牌的LexicalAnalyzer。现在,我想要 为“if和while”语句(开头)编写规则,所以我可以将这个规则传递给解析器,它将创建一个树。 所以我需要编写解析器,所以我可以编写新的规则。

您能告诉我如何在C#中实现它吗?你能举个例子吗?

1 个答案:

答案 0 :(得分:4)

在递归下降解析器中,如果你有正常的块和表达式解析器,很容易实现这些语句。在伪代码中,它们基本上是:

void ParseIf()
{
  Match("if");
  Match("(");
  ParseExpression();
  Match(")");
  ParseBlock();
}

void ParseWhile()
{
  Parse("while");
  Parse("(");
  ParseExpression();
  Parse(")");
  ParseBlock();
}