У меня два вопроса о том, как написать парсер рекурсивного спуска:
Первый: что, когда у вас есть нетерминал, который может соответствовать одному из нескольких разных нетерминалов? Как вы проверяете, какой путь правильный?
Во-вторых, как вы строите AST? Используя YACC, я могу просто написать кусок кода, который будет выполняться для каждого экземпляра нетерминала, и он имеет специальные переменные, которые ссылаются на «значения» правил. Как вы делаете подобное в парсере рекурсивного спуска?