для нашего класса теории компилятора для нас определяют задачу с созданием простого интерпретатора для нашего собственного разработанного языка программирования. Я использую jflex и чашку как мои генераторы, но я немного застреваю с тем, какова лексическая ошибка. Кроме того, рекомендуется, чтобы я использовал функцию состояния jflex? это чувствует себя неправильным, поскольку кажется, что синтаксический анализатор лучше подходит для обработки того аспекта. и Вы рекомендуете каким-либо другим инструментам создать язык. Я сожалею, если я нетерпелив, но это должно во вторник.
Лексическая ошибка - это любой ввод, который может быть отклонен лексером. Обычно это происходит из-за того, что распознавание токенов выходит за рамки установленных вами правил. Например (без особого синтаксиса):
[0-9]+ ===> NUMBER token
[a-zA-Z] ===> LETTERS token
anything else ===> error!
Если вы думаете о лексере как о конечном автомате, который принимает допустимые входные строки, то ошибками будут любые входные строки, которые не приводят к тому, что конечный автомат достигает принимающего государство.
Остальная часть вашего вопроса была для меня довольно непонятной. Если у вас уже есть какие-то инструменты, которые вы используете, то, возможно, вам лучше узнать, как достичь того, чего вы хотите достичь, используя эти инструменты (у меня нет опыта работы ни с одним из инструментов, о которых вы упомянули).
РЕДАКТИРОВАТЬ: перечитав ваш вопрос, я могу ответить на вторую часть.Возможно, что в языке не может быть лексических ошибок - это язык, на котором любая строка ввода является допустимой.