Как написать простой парсер для операторов if и while?
Мне нужно написать простой парсер, который будет преобразовывать токены в дерево парсеров. Я уже написал LexicalAnalyzer, который возвращает токены. Теперь я хочу написать правила для операторов if и while (для начала), чтобы я мог передать эти правила парсеру, и он создаст дерево. Поэтому мне нужно написать парсер таким образом, чтобы я мог написать новые правила.
Можете ли вы посоветовать мне, как я могу реализовать это в C#? Можете привести пример?
1 ответ
Решение
В парсере рекурсивного спуска легко реализовать эти операторы, если у вас есть нормальные парсеры блоков и выражений. В псевдокоде они в основном:
void ParseIf()
{
Match("if");
Match("(");
ParseExpression();
Match(")");
ParseBlock();
}
а также
void ParseWhile()
{
Parse("while");
Parse("(");
ParseExpression();
Parse(")");
ParseBlock();
}