Вопросы по теме 'lexer'
Основная проблема с yacc / lex
У меня проблемы с очень простой программой yacc / lex. Возможно, я забыл некоторые базовые шаги (я давно не использовал эти инструменты).
В моей программе lex я привожу несколько основных значений, например:
word [a-zA-Z][a-zA-Z]*
%%
":"...
739 просмотров
schedule
28.03.2023
ANTLR - выдача нескольких токенов для правила лексера
Я хотел знать, поддерживает ли ANTLR выдачу нескольких токенов для правила лексера, учитывая, что целевой язык - JavaScript. Я обнаружил, что он поддерживает несколько токенов на других целевых языках, таких как Java и CSharp, но не смог найти...
242 просмотров
schedule
05.05.2023
Написание части компилятора (написанного на c++) на Perl
я пытаюсь узнать больше о компиляторах и языках программирования, к сожалению в моем университете нет курса по компиляторам, поэтому мне приходится заниматься им самому (спасибо, Интернет).
На данный момент я пытаюсь понять и реализовать лексер...
689 просмотров
schedule
23.10.2022
Примеры/руководства по использованию javax.lang.model или ANTLR JavaParser для получения информации об исходном коде Java
Я хотел бы создать автоматическую визуализацию в виде блок-схемы для простой логики Java, для этого мне нужно проанализировать исходный код Java, у меня есть 2 кандидата, ANTLR и javax.lang.model для Java 6. Ни то, ни другое не так просто.
Мне...
2261 просмотров
schedule
09.06.2022
Как написать (оболочку) лексер вручную
Я работаю над оболочкой, небольшой оболочкой, похожей на bash, без сценариев (если пока ...). Мне нужно сделать лексер/парсер (LL) вручную.
Таким образом, лексер преобразует команду ( char *cmd ) в связанный список ( t_list *list ). Парсер LL...
5686 просмотров
schedule
19.12.2022
Может ли ANTLR различать правила лексера по следующему символу?
Для разбора тестового файла я бы хотел, чтобы идентификатор начинался с цифры.
мое правило:
ID : ('a'..'z' | 'A'..'Z' | '0'..'9' | '_') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '&' | '/' | '-' | '.')*
;
Однако мне также нужно...
862 просмотров
schedule
30.08.2022
antlr3 НЕ правило
negExpression : (NOT^)* primitiveElement ;
Это у меня правило. Теперь у меня есть этот код:
!!(1==1)
Я ожидал, что получу это дерево:
NOT
|
NOT
|
==
/ \
1 1
Однако в Antlr3 кажется, что дерево заканчивается как...
71 просмотров
schedule
21.11.2022
Как генератор лексеров идентифицирует ключевые слова грамматики?
Я думаю о том, как написать генератор лексеров. Я не могу придумать простой способ идентифицировать ключевые слова языка по его грамматике... очевидно, что все ключевые слова являются терминалами, но не все терминалы являются ключевыми словами....
465 просмотров
schedule
07.10.2022
Как вручную построить AST?
В настоящее время я изучаю синтаксический анализ, но я немного запутался в том, как создать AST. Я написал синтаксический анализатор, который правильно проверяет, соответствует ли выражение грамматике (он молчит, когда выражение соответствует, и...
2323 просмотров
schedule
07.05.2023
лексер который берет не но не не нравится
Мне нужен небольшой трюк, чтобы мой парсер полностью заработал. Я использую antlr для анализа логических запросов.
запрос состоит из элементов, связанных между собой символами "и", "или" и "не".
Итак, я могу иметь что-то вроде:
"(P or not Q...
261 просмотров
schedule
14.11.2022
Разбор необязательной точки с запятой в конце оператора
Я писал парсер для разбора C-подобных грамматик.
Во-первых, теперь он может анализировать код, например:
a = 1;
b = 2;
Теперь я хочу сделать точку с запятой в конце строки необязательной.
Первоначальное правило YACC было следующим:...
3785 просмотров
schedule
13.09.2022
Как разобрать строку без регулярных выражений
В настоящее время я пытаюсь создать программный компонент, который мог бы интерпретировать динамические строки, такие как:
%TO_LOWER%(%DELETE_WHITESPACES%("A SAMPLE TEXT"))
В результате получится такая строка:
asampletext
Я хотел бы...
1034 просмотров
schedule
12.01.2023
ANTLR: как пропустить многострочные комментарии
Учитывая следующий лексер:
lexer grammar CodeTableLexer;
@header {
package ch.bsource.ice.parsers;
}
CodeTabHeader : OBracket Code ' ' Table ' ' Version CBracket;
CodeTable : Code ' '* Table;
EndCodeTable : 'end' ' '* Code ' '*...
5660 просмотров
schedule
04.12.2023
Генератор синтаксического анализатора С++ [закрыт]
Я пишу свой собственный язык сценариев, и мне нужен программный инструмент, который генерирует код C++ для разбора моего языка. Мне нужен лексический анализатор и генератор синтаксических анализаторов, который генерирует код C++. Было бы неплохо,...
11024 просмотров
schedule
18.04.2022
Как определить токены, которые могут появляться в нескольких лексических режимах в ANTLR4?
Я изучаю ANTLR4 и пытаюсь поиграть с лексическими модами. Как сделать так, чтобы один и тот же токен отображался в нескольких лексических режимах? В качестве очень простого примера предположим, что моя грамматика имеет два режима, и я хочу...
2045 просмотров
schedule
11.08.2023
Разделение задач между лексером и парсером при разборе регулярных выражений
Меня несколько смущает разделение задач между лексером и парсером.
Я пытаюсь написать синтаксический анализатор, который принимает регулярное выражение в стиле Perl и строит синтаксическое дерево. Моя проблема заключается в распознавании...
56 просмотров
schedule
18.02.2023
Как лексировать, анализировать и сериализовать сообщения электронной почты в XML с помощью Alex и Happy
Я работаю над тем, чтобы иметь возможность вводить любое сообщение электронной почты и выводить эквивалентную кодировку XML.
Я начинаю с малого, с одного из заголовков электронной почты — «Из заголовка».
Вот пример заголовка From:
From: John...
644 просмотров
schedule
10.09.2022
Как Lexer lookahead работает с жадным и нежадным сопоставлением в ANTLR3 и ANTLR4?
Если бы кто-то очистил мой разум от путаницы, связанной с упреждающим отношением к токенизации, включающим жадное / нежадное сопоставление, я был бы более чем рад. Имейте в виду, что это немного длинный пост, потому что он отражает мой мыслительный...
5203 просмотров
schedule
04.07.2022
Правило предупреждения регулярного выражения не может быть сопоставлено
Я определил регулярные выражения для:
[a-zA-Z0-9._\-]+ {yylval.str=strdup(yytext); return hostname;}
[a-zA-Z_]+[a-zA-Z0-9_]* {yylval.str=strdup(yytext); return variable;}
и я получаю предупреждение лексера, правило не может быть...
817 просмотров
schedule
28.06.2022
Перекрывающиеся правила — несовпадающий ввод
Моя грамматика (как показано ниже (урезанная по сравнению с оригиналом)) требует несколько перекрывающихся правил.
grammar NOVIANum;
statement : (priorityStatement | integerStatement)* ;
priorityStatement : T_PRIO TwoDigits ;
integerStatement...
533 просмотров
schedule
24.09.2022