Вопросы по теме 'lexer'

ANTLR Parser с ручным лексером
Я переношу компилятор языка программирования на основе C # с ручного лексера / парсера на Antlr. Antlr вызывает у меня сильную головную боль, потому что он обычно в основном работает, но есть мелкие детали, которые не работают и которые...
1589 просмотров
schedule 05.09.2021

Где я могу изучить основы написания лексического анализатора?
Я хочу научиться писать лексический анализатор. В моем университетском курсе было задание, в котором мы должны были написать синтаксический анализатор (и лексер для его выполнения), но это было дано нам без каких-либо инструкций или обратной связи...
38717 просмотров

Лексер, распознающий блоки с отступом
Я хочу написать компилятор для языка, который обозначает программные блоки пробелами, как в Python. Я предпочитаю делать это на Python, но C ++ также возможен. Есть ли лексер с открытым исходным кодом, который может помочь мне сделать это легко,...
1874 просмотров

Как я могу изменить тип токена в правиле лексера ANTLR3?
У меня есть лексическое правило (Integer), которое использует некоторые фрагменты. В правиле парсера (синтаксическом анализе) я хочу переписать свое дерево по-разному, в зависимости от того, какой фрагмент сгенерировал рассматриваемый токен. Я...
597 просмотров
schedule 03.12.2021

RegEx с переменными данными в нем - ply.lex
Я использую модуль python ply.lex для написания лексера. Некоторые из моих токенов указаны с помощью регулярного выражения, но теперь я застрял. У меня list of Keywords , который должен быть token . data - это список примерно из 1000 ключевых...
1267 просмотров
schedule 09.10.2021

Как интерпретатор Ruby анализирует строки с двойными кавычками
Фон : Я реализую язык, похожий на Ruby, под названием Sapphire , чтобы опробовать некоторые идеи, которые у меня есть параллелизм в языках программирования. Я пытаюсь скопировать строки Ruby в двойные кавычки со встроенным кодом, который я...
220 просмотров
schedule 12.09.2021

Как разрешить конфликт между двумя вариантами, начиная с одних и тех же токенов в javacc
Я пытаюсь написать компилятор для какого-то конкретного формата сообщений. Моя проблема, если я ее упрощаю: < WORD : ([LETTER]){2,5}> < ANOTHER_WORD : (<LETTER>|<DIGIT>){1,5}> < SPECIAL_WORLD : "START"> void...
167 просмотров
schedule 04.10.2021

Как я могу определить значение неоднозначного терминатора при токенизации моего кода?
В Python слово in обозначает оператор в выражении 1 in [1,2,3] . Но в операторе for i in range(10) он указывает ключевое слово оператора for. Я написал лексер на основе регулярного выражения. Я использую правило (\+|-|\*|/|is|in) для...
22 просмотров
schedule 02.11.2021

Как я могу определить, какую хэш-функцию мне следует использовать?
Я недавно изучаю компиляторы и хочу реализовать лексер. Когда я разрабатывал таблицу символов лексера, я думал о том, чтобы преобразовать хеш-значение идентификатора в индекс таблицы символов. Однако я был смущен тем, какую хеш-функцию мне...
58 просмотров
schedule 19.10.2021

Конфликт сдвига / уменьшения в yacc-Flex
У меня следующая грамматика в yacc, но я получаю 1 конфликт сдвига / уменьшения: %union { char* integer; char* string; char* boolean; char* date; }; %token <integer> INTEGER %token <string> STRING %token...
71 просмотров
schedule 15.09.2021

Haskell: сопоставление строковых префиксов со списком
В последнее время я изучаю Haskell и подумал, что лексер может быть интересным проектом. Я использую эту грамматику ANSI C Yacc как Руководство. Общая структура программы: lex :: [Char] -> Maybe [Token] lex s = case tokenize([], s) of...
202 просмотров
schedule 23.11.2021

CDT Lexer: получить токены за комментарии
Я хочу написать редактор в моем подключаемом модуле Eclipse, который может обрабатывать язык моего инструмента. Язык основан на C / C ++ с дополнительными ключевыми словами и аннотациями. Мне удалось написать свой собственный языковой класс,...
59 просмотров

Есть ли рабочий файл грамматики C ++ для ANTLR?
Существуют ли какие-либо существующие файлы грамматики C ++ для ANTLR? Я ищу lex, а не анализирую некоторые файлы исходного кода C ++. Я просмотрел страницу грамматики ANTLR , и похоже, что в списке есть одна, созданная Sun Microsystems здесь...
7377 просмотров
schedule 09.03.2022

Как лексер может извлечь токен на неоднозначных языках?
Я хочу понять, как работает парсер. Я узнал о частях LL, LR (0), LR (1), о том, как создавать, NFA, DFA, таблицах синтаксического анализа и т. Д. Теперь проблема в том, что я знаю, что лексер должен извлекать токены только по запросу парсера в...
1022 просмотров
schedule 04.03.2022

Таблица 2-х направлений (строка ‹-› токен) при разборе
Я определил хэш-таблицу keyword_table для хранения всех ключевых слов моего языка. Вот часть кода: (* parser.mly *) %token CALL CASE CLOSE CONST ... reserved_identifier: | CALL { "Call" } | CASE { "Case" } | CLOSE { "Close" } | CONST {...
171 просмотров
schedule 18.03.2022

ANTLR lexer можно ли предпочесть более короткое совпадение?
Вот простая лексическая грамматика: lexer grammar TextLexer; @members { protected const int EOF = Eof; protected const int HIDDEN = Hidden; } COMMENT: 'comment' .*? 'end' -> channel(HIDDEN); WORD: [a-z]+ ; WS : ' ' -> channel(HIDDEN) ;...
67 просмотров
schedule 06.04.2022

Понимание токенов ANTLR4
Я новичок в ANTLR и пытаюсь понять, что такое Token в ATNLR4. Рассмотрим следующую довольно бессмысленную грамматику: grammar Tst; init: A token=('+'|'-') B; A: .+?; B: .+?; ADD: '+'; SUB: '-'; ANTLR4 генерирует для него следующие...
2664 просмотров
schedule 09.04.2022

Ошибка синтаксического анализа входных данных для постоянного замедления в ANTLR CPP Grammar
Я использую приведенную ниже грамматику ANTLR для анализа моего кода. https://github.com/antlr/grammars-v4/tree/master/cpp Но в приведенной ниже части кода появляется ошибка синтаксического анализа. const GstTensorsInfo info_in = {...
54 просмотров
schedule 10.04.2022

Сгенерировать AST исходного файла PHP
Я хочу преобразовать исходный файл PHP в AST (желательно как вложенный массив инструкций). Я в основном хочу конвертировать такие вещи, как f($a, $b + 1) во что-то вроде array( 'function_call', array( array( 'var', '$a' ),...
8836 просмотров
schedule 16.04.2022

Как получить сообщения об ошибках парсинга antlr?
Я написал грамматику с помощью antlr 4.4 вот так: grammar CSV; file : row+ EOF ; row : value (Comma value)* (LineBreak | EOF) ; value : SimpleValueA | QuotedValue ; Comma : ',' ; LineBreak : '\r'? '\n' | '\r' ;...
3065 просмотров
schedule 19.04.2022