Вопросы по теме '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 просмотров

Примеры/руководства по использованию 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