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

Есть ли современная (например, CLR) замена bison / yacc?
Я только что переработал старую часть кода, подобного компилятору, написанного с использованием bison. Пока я делал это, мне было интересно, что такое современный эквивалент? Есть ли хорошая платформа для написания компиляторов .NET (или...
1774 просмотров
schedule 10.06.2023

Разработка простого парсера
Моя дневная работа включает в себя разработку компилятора, подобного Pascal. Я все время работал над оптимизацией и генерацией кода. Я также хотел бы начать учиться создавать простой парсер для того же языка. Однако я не совсем уверен, как это...
8125 просмотров
schedule 13.03.2022

Как заставить Bison не выходить, когда он вызывает yyerror
Когда мой синтаксический анализатор сканирует исходный файл с неправильным синтаксисом и вызывает yyerror, я хочу, чтобы он отображал сообщение об ошибке, но продолжал анализировать файл, чтобы потенциально отображать больше ошибок. Однако каждый...
3122 просмотров
schedule 28.07.2023

Как заставить yacc/bison и/или lex/flex перезапускать сканирование после чего-то вроде замены токена?
Есть ли способ заставить bison и/или flex перезапустить сканирование после того, как я заменю какой-то токен на что-то другое? Мой конкретный пример будет с заменой определенного слова/строки. Если я хочу, чтобы слово hello было заменено на...
2901 просмотров
schedule 31.03.2023

Как заставить yacc/bison и lex/flex приостановить сканирование файлов?
Я пытаюсь разобрать файл с помощью Bison/Yacc, но я хочу приостановить синтаксический анализ на некоторое время. Причина, по которой я хочу это сделать, заключается в том, что я хочу последовательно обрабатывать огромный файл и имитировать итератор...
659 просмотров
schedule 29.06.2023

Компиляция парсера (flex/bison) с помощью NDK
ОБНОВЛЕНИЕ Теперь я знаю, что parser.h должен генерироваться системой make из parser.y. В файле Android.mk даже есть такая запись: edify_src_files := \ lexer.l \ parser.y \ expr.c Но я все еще не могу получить исполняемый файл из него. (Да,...
2463 просмотров

как решить предупреждение бизона $ 1 из `GrammarCl' не имеет объявленного типа
У меня есть грамматика в BNF, и я использовал BNF Converter для преобразования этой грамматики в исполняемую программу с кодом C. Однако у меня есть конкретная проблема, связанная с тем, что $ 1 GrammarCl не имеет объявленного типа в файле...
1739 просмотров
schedule 18.04.2022

Строки кодирования Flex/Lex с экранированными символами
Я обращусь к этому вопросу для некоторого фона: Регулярное выражение для строкового литерала в flex/lex Проблема, с которой я сталкиваюсь, заключается в обработке ввода с экранированными символами в моем лексере, и я думаю, что это может быть...
11743 просмотров
schedule 22.11.2022

Многопроходный анализ классов Flex/Bison
Пишу компилятор для игрушечного ОО-языка. Я пишу это на C, используя Flex и Bison. Рассмотрим следующий синтаксис: class MyClass { int m_n; void MyFunc(int b) { m_n = 5; m_p = b; } int m_p; } Мой...
685 просмотров
schedule 20.12.2023

Как мне сказать bison, что есть синтаксическая ошибка?
Что происходит, так это конкретный случай, когда после анализа AST я узнаю, есть ли ошибка или нет, когда правило завершено. Я пробовал yyerror("blah") безуспешно. Поскольку я не могу сказать, что это ошибка, оно завершает другое правило и теперь...
258 просмотров
schedule 06.02.2023

Как сканировать токены только в контексте с помощью Flex?
Я хочу создать синтаксический анализатор шаблонизатора с помощью Flex & Bison. Дело в том, что я хотел бы разбирать только выражения внутри {{..}} и $ {..}. Шаблон может быть любым произвольным текстом со встроенными токенами с таким кодом:...
351 просмотров
schedule 30.04.2022

Bison: $$ и $ 1 указывают на одну и ту же ячейку памяти (объединение YYSTYPE двух типов указателей)
Я создавал парсер для очень простого парсера, когда внезапно начал получать сообщения SEGFAULT. Я сократил свой код до минимума, когда он идет не так: Это мой файл test.flex: %{ #include "test.tab.h" #include <iostream> using namespace...
1010 просмотров
schedule 10.10.2023

Можно ли использовать «вектор» в yylval yacc?
Я хочу определить yylval следующим образом: %union { int ival; char *sval; struct s_con { char exp[30]; vector<Where*> v_wheres; } *p_s_con; } Здесь Where — это класс. Потом нахожу ошибку в...
1976 просмотров
schedule 01.06.2023

Char* как YYSTYPE в flex/bison возвращает только первый символ в токене при использовании с strdup() в лексере
Я использую char* как YYSTYPE в компиляторе, созданном с помощью flex и bison. Линия #define YYSTYPE char* находится в верхней части моего файла грамматики. Некоторым из токенов в моем лексере нужно передать всю строку, которая...
6709 просмотров

Я не уверен, как выводить (сложную) полезную информацию, когда в моем парсере bison
Я пишу Flex/Bison Lexer/Parser, чтобы разобрать сценарий моего собственного дизайна в качестве задания для университета. Все идет очень хорошо, и мой скрипт правильно анализирует, обнаруживает любые ошибки и т. Д., И распознает токены, и передает...
135 просмотров
schedule 13.05.2022

что не так с этой грамматикой
s : cmd | cmd SOMETHING cmd :WORD WORD и SOMETHING не нулевые терминалы это грамматика LR1, поэтому bison без проблем разберет ее. однако я столкнулся с неожиданной проблемой во время выполнения: программа дважды запрашивает ввод,...
77 просмотров
schedule 25.04.2023

Построение AST с помощью Bison
Я работаю с Bison над созданием AST для компилятора, который я пишу. Как лучше всего создавать узлы в AST? Мой вопрос может быть более ясным с примером. Учитывая следующий фрагмент: field : modifier type TOK_IDENT TOK_SEMICOLON {...
2061 просмотров

Класс C++ Singelton, пространства имен и общедоступные статические переменные
Какой из следующих подходов лучше всего подходит для определения глобальной переменной: общедоступные статические переменные класса использовать один объект класса со всеми закрытыми переменными: (одноэлементный класс) пространства имен -...
649 просмотров
schedule 07.02.2024

Парсер Bison не будет упреждать токен
У меня есть следующая грамматика парсера (это небольшой пример): expr: ident assignop expr { $$ = new NAssignment(new NAssignmentIdentifier(*$1), $2, *$3); } | STAR expr %prec IDEREF {...
558 просмотров
schedule 05.07.2022

про восстановление ошибок от bison2.4.1
Я хочу справиться с исправлением ошибок из bison2.4.1. Я сослался на книгу Орейли (lex & yacc) и на некоторые веб-сайты, чтобы поместить токен ошибки в свое правило, но я думаю, что это не работает. это не помогает мне справляться с...
142 просмотров
schedule 18.09.2022