Вопросы по теме 'bison'
Синтаксическая ошибка, неожиданное значение ИСТИНА, ожидается '{'
Я пишу синтаксический анализатор в Bison для базового компилятора (а затем расширяю его, чтобы он содержал подпрограммы и динамическое распределение памяти). Грамматика определена в Приложении А к книге драконов. Мой сканер Flex работает - я...
1161 просмотров
schedule
28.10.2021
Как передать yytext из файла lex в yacc?
Пожалуйста, я столкнулся с простой проблемой ... вот проблема. В моем файле lex есть что-то похожее на:
char *ptr_String;
"name = " { BEGIN sName; }
<sName>.+ {
ptr_String = (char *)calloc(strlen(yytext)+1, sizeof(char));...
14499 просмотров
schedule
28.11.2021
Как получить ожидаемый токен в GLR-парсере bison / yacc?
Как получить ожидаемый токен в GLR-парсере bison / yacc?
Hi,
В проекте, над которым я работаю, есть несколько двусмысленных грамматик. Итак, я пытаюсь использовать% glr-parser для решения конфликтов сдвига / уменьшения.
Когда я использовал...
781 просмотров
schedule
23.11.2021
Столкновение типов Bison в подклассах C ++
Итак, я получаю столкновения типов в зубрах в форме
warning: type clash on default action: <stmt> != <expr>
потому что у меня есть производство вроде
%type <stmt> Stmt
%type <expr> Expr
...
Stmt : Expr /* empty...
1415 просмотров
schedule
29.10.2021
Реформирование грамматики для удаления сдвига уменьшает конфликты в if-then-else
Как удалить конфликт сдвига-уменьшения для bison для данной грамматики?
selection-stmt -> if ( expression ) statement |
if ( expression ) statement else statement
Было бы высоко оценено решение, дающее...
22384 просмотров
schedule
23.09.2021
Создание файла Bison для простой грамматики
У меня такая простая грамматика:
E -> T | ^ v . E
T -> F T1
T1 -> F T1 | epsilon
F -> ( E ) | v
Я новичок в Bison, поэтому я надеялся, что кто-нибудь может помочь мне показать, как написать это в таком формате. Все, что у меня...
162 просмотров
schedule
11.09.2021
Можно ли вызвать один синтаксический анализатор yacc из другого для анализа определенного подпотока токена?
Предположим, у меня уже есть полная грамматика YACC. Пусть это будет, например, грамматика C. Теперь я хочу создать отдельный синтаксический анализатор для предметно-ориентированного языка с простой грамматикой, за исключением того, что ему все еще...
363 просмотров
schedule
08.11.2021
Как я могу заставить Бизона переключиться, чтобы разрешить конфликт?
Я создаю эту грамматику для простого языка программирования (уже решены предыдущие проблемы неоднозначности: Не могу понять, почему Bison выбрасывает правила, бесполезные в парсере из-за конфликтов ). Это моя полная грамматика:...
200 просмотров
schedule
30.09.2021
Парсер Bison: создание функции, возвращающей токены
в моем флексе я хотел бы сделать что-то вроде этого:
{VARIABLE} {
yylval.string_val=strdup(yytext);
return getVarType(yytext); //that is the issue
}
У меня вопрос:...
711 просмотров
schedule
07.09.2021
приоритет зубров бесполезен? это не работает
Я объявил такой приоритет для bison :
%left '+' '-'
%left '*' '/'
Рекурсивные правила арифметики:
exp: exp binary_op exp { .. }
| literal_exp { .. }
| ID { .. }
binary_op: '+'...
369 просмотров
schedule
03.10.2021
Простой пример Flex-bison
Я изучаю флекс и бизон по книге Джона Р. Левина. Я хотел бы прочитать один-единственный "ВЫБРАТЬ;" заявление (это содержимое файла, который читает мой код), но я получаю сообщение «Сканер Flex застрял». Что не так с кодом?
Лексер: pmysql.l...
1336 просмотров
schedule
28.09.2021
в Bison, как я могу оставить ассоциативность specity для нетерминала?
У меня есть следующий фрагмент грамматики Bison:
binary_op: BINARY_OP
{
...
}
| '|' %prec BINARY_OP
{
......
1437 просмотров
schedule
18.09.2021
Приоритет оператора Jison
Я разрабатываю язык с использованием Jison, и проблема, с которой я сталкиваюсь, - это приоритет оператора. Я хочу, чтобы операторы сравнения были первыми оцениваемыми операторами, поэтому, например, 1 + 2 < 3 - 3 * 4 станет (1+2) < (3 - (3...
377 просмотров
schedule
02.10.2021
Перевод if then else в грамматике компилятора
...
IF LP assignment-expression RP marker statement {
backpatch($3.tlist,$5.instr);
$$.nextList = mergeList($3.flist,$6.nextList);
}
|IF LP assignment-expression RP marker statement ELSE Next statement {
backpatch($3.tlist,$5.instr);...
595 просмотров
schedule
15.09.2021
как заставить зубра выручить за все ошибки
Я использую Flex / Bison для парсера скриптов, который должен выйти из парсера и вернуть ненулевой статус из yyparse () для ВСЕХ ОШИБОК. Каждая часть документации для Bison, которую я могу найти, посвящена восстановлению - как мне написать набор...
424 просмотров
schedule
22.10.2021
В бизоне есть способ вернуть имя токена вместо его типа
Я работаю с Flex и Bison. в моем parse.y (bison) я определяю токены. Когда токен возвращается, он возвращает int. Мне было интересно, есть ли способ взять этот int и сопоставить его с фактическим именем в источнике bison. Например в моем parser.y...
1809 просмотров
schedule
23.11.2021
Пример грамматики Bison для объявления и использования функции
Может ли кто-нибудь привести пример грамматики Bison для объявления функций и использования функций, чтобы синтаксический анализатор вырабатывал ошибку, если количество аргументов в объявлении и использовании различается?
695 просмотров
schedule
13.10.2021
flex / bison: как переключить два лексера в одном входном файле
Как я могу передать открытый файл, например читать другим сканером в следующий сканер - и отдавать парсеру?
669 просмотров
schedule
12.09.2021
Как что-то сделать, когда во входном файле достигнут EOF?
Я пытаюсь отслеживать сигнатуры всех функций, чтобы проверить - когда весь входной файл был просканирован - все ли они были определены, и в противном случае сообщить об ошибке. Для этого я хочу, чтобы сканер возвращал синтаксическому анализатору...
1305 просмотров
schedule
19.09.2021
Лексический и семантический анализ компилятора Flex / Bison mini C сдвиг / уменьшение конфликтов
Я хочу написать компилятор для языка mini C, используя flex и bison. Пример моего языка будет выглядеть так:
/* This is an example uC program. */
int fac(int n)
{
if (n < 2)
return n;
return n * fac(n - 1);
}
int sum(int n,...
815 просмотров
schedule
11.10.2021