Как школьное задание, я создаю Lexical Analyzer с использованием FLEX. Анализатор используется анализатором, который также является частью задания. Мы должны использовать лексический анализатор и парсер для языка, который называется VSL. Однако я не могу заставить анализатор работать.Создание лексического анализатора с использованием flex
Я буду использовать некоторые ключевые слова из VSL в качестве примера: FUNC, PRINT и IF.
Здесь токовый выход из секции правил:
"FUNC" {return FUNC;}
"START" {return START;}
"PRINT" {return PRINT;}
. { RETURN(yytext[0]); }
. просто возвращает каждый символ один за другим, когда не соответствует никакому другому правилу, и был предоставлен в почти пустом файле из университета. Токены, которые должны быть возвращены, указаны в предоставленном синтаксическом анализаторе, и три из них используются выше. Я определил из тестовых выходов (сгенерированных инструментами также), что FUNC, START и PRINT распознаются, но они не отображаются в тестовых выходах и, по-видимому, они не передаются. У меня такая же проблема с переменными (строки, цифры и т. Д.). Они состоят из цифр и/или букв, которые обрабатываются в правилах (не обязательно их показывать). Что я делаю не так? Каков мой следующий шаг?
Если я удалю каждое правило, которое я сделал, и пусть последнее правило с. остаются, то все буквы и цифры становятся видимыми на тестовом выходе, поэтому я знаю, что лексер их распознает как минимум. Но каков следующий шаг?
только личный совет: если вы хотите использовать ваш компьютер для программирования, вы должны использовать Linux или Windows, (первый, вероятно, лучше). Решение этих небольших проблем может сжечь много времени. – HAL9000