Здравствуйте, бьюсь уже несколько дней, надеюсь на помощь. Задача состоит в реализации синтаксического анализатора. Краткая суть такая: есть текстовый файл, в котором записан какой-то код программы, согласно моей грамматике. Он проверяется лексическим анализатором, который выделяет лексемы. А затем уже синтаксическим на наличие ошибок. Если ошибок нет, то всё хорошо. А если есть (например, в конце строки не стоит ";"), то выводится сообщение, в котором указано, где ошибка, и что это за ошибка, как в компиляторе. Вот у меня есть такой код, но не для моей грамматики. У меня не получается заставить его корректно работать. Дальше лексического анализа он не уходит.
<Программа> ::= <Объявление переменных> <Описание вычислений>
<Описание вычислений> ::= Begin <Список присваиваний> End
<О6ъявление переменных>::= <Тип переменных> <Список переменных>
<Тип переменных> ::= Integer|Long Integer
<Список переменных> ::= <Идент>| <Идент>,<Список переменных>
<Список присваиваний>::= <Присваивание>|<Присваивание> <Список присваиваний>
<Присваивание> ::= <Идент> = <Выражение> ;
<Выражение> ::= <Ун.оп.> <Подвыражение> | <Подвыражение>
<Подвыражение> :: = ( <Выражение> ) | <Операнд> |
<Подвыражение> <Бин.оп.> <Подвыражение>
<Ун.оп.> ::= "-"
<Бин.оп.> ::= "-" | "+" | "*" | "/"
<Операнд> ::= <Идент> | <Константа>
<Идент> ::= <Буква> <Идент> | <Буква>
<Константа> ::= <Цифра> <Константа> | <Цифра>
Код программы приведу в комментарии, так как он сюда не влезет.