У меня есть грамматика, и я не знаю, какой тип синтаксического анализатора мне нужен для ее анализа, кроме того, что я не верю в грамматику является LL (1). Я думаю, мне нужен синтаксический анализатор с возвратом или какой-то LL (*). Грамматика, которую я придумал (возможно, потребуется переписать):
S: Rules
Rules: Rule | Rule Rules
Rule: id '=' Ids
Ids: id | Ids id
Язык, который я пытаюсь создать, выглядит примерно так:
abc = def g hi jk lm
xy = aaa bbb ccc ddd eee fff jjj kkk
foo = bar ha ha
Ноль или более Правило, которое содержит левый идентификатор, за которым следует знак равенства, за которым следует один или несколько идентификаторов. Часть, для которой, я думаю, у меня возникнут проблемы с написанием синтаксического анализатора, заключается в том, что грамматика допускает любое количество id в правиле и что единственный способ узнать, когда начинается новое правило, - это когда оно находит id =, что потребует обратного отслеживания.
Кто-нибудь знает классификацию этой грамматики и лучший метод синтаксического анализа для рукописного синтаксического анализатора?