Вопросы по теме 'lexer'
ANTLR Parser с ручным лексером
Я переношу компилятор языка программирования на основе C # с ручного лексера / парсера на Antlr.
Antlr вызывает у меня сильную головную боль, потому что он обычно в основном работает, но есть мелкие детали, которые не работают и которые...
1589 просмотров
schedule
05.09.2021
Где я могу изучить основы написания лексического анализатора?
Я хочу научиться писать лексический анализатор. В моем университетском курсе было задание, в котором мы должны были написать синтаксический анализатор (и лексер для его выполнения), но это было дано нам без каких-либо инструкций или обратной связи...
38717 просмотров
schedule
03.11.2021
Лексер, распознающий блоки с отступом
Я хочу написать компилятор для языка, который обозначает программные блоки пробелами, как в Python. Я предпочитаю делать это на Python, но C ++ также возможен. Есть ли лексер с открытым исходным кодом, который может помочь мне сделать это легко,...
1874 просмотров
schedule
06.11.2021
Как я могу изменить тип токена в правиле лексера 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 просмотров
schedule
12.11.2021
Есть ли рабочий файл грамматики 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