Вопросы по теме '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 просмотров
schedule
08.06.2023
как решить предупреждение бизона $ 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 просмотров
schedule
01.11.2022
Я не уверен, как выводить (сложную) полезную информацию, когда в моем парсере 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 просмотров
schedule
05.05.2022
Класс 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