Как написать простой парсер для операторов if и while?

Мне нужно написать простой парсер, который будет преобразовывать токены в дерево парсеров. Я уже написал LexicalAnalyzer, который возвращает токены. Теперь я хочу написать правила для операторов if и while (для начала), чтобы я мог передать эти правила парсеру, и он создаст дерево. Поэтому мне нужно написать парсер таким образом, чтобы я мог написать новые правила.

Можете ли вы посоветовать мне, как я могу реализовать это в C#? Можете привести пример?

1 ответ

Решение

В парсере рекурсивного спуска легко реализовать эти операторы, если у вас есть нормальные парсеры блоков и выражений. В псевдокоде они в основном:

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

а также

void ParseWhile()
{
  Parse("while");
  Parse("(");
  ParseExpression();
  Parse(")");
  ParseBlock();
}
Другие вопросы по тегам