Что такое пример лексической ошибки, и действительно ли возможно, что язык не имеет никаких лексических ошибок?

для нашего класса теории компилятора для нас определяют задачу с созданием простого интерпретатора для нашего собственного разработанного языка программирования. Я использую jflex и чашку как мои генераторы, но я немного застреваю с тем, какова лексическая ошибка. Кроме того, рекомендуется, чтобы я использовал функцию состояния jflex? это чувствует себя неправильным, поскольку кажется, что синтаксический анализатор лучше подходит для обработки того аспекта. и Вы рекомендуете каким-либо другим инструментам создать язык. Я сожалею, если я нетерпелив, но это должно во вторник.

9
задан cesar 14 August 2010 в 18:57
поделиться

1 ответ

Лексическая ошибка - это любой ввод, который может быть отклонен лексером. Обычно это происходит из-за того, что распознавание токенов выходит за рамки установленных вами правил. Например (без особого синтаксиса):

[0-9]+   ===> NUMBER token
[a-zA-Z] ===> LETTERS token
anything else ===> error!

Если вы думаете о лексере как о конечном автомате, который принимает допустимые входные строки, то ошибками будут любые входные строки, которые не приводят к тому, что конечный автомат достигает принимающего государство.

Остальная часть вашего вопроса была для меня довольно непонятной. Если у вас уже есть какие-то инструменты, которые вы используете, то, возможно, вам лучше узнать, как достичь того, чего вы хотите достичь, используя эти инструменты (у меня нет опыта работы ни с одним из инструментов, о которых вы упомянули).

РЕДАКТИРОВАТЬ: перечитав ваш вопрос, я могу ответить на вторую часть.Возможно, что в языке не может быть лексических ошибок - это язык, на котором любая строка ввода является допустимой.

14
ответ дан 4 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: