Компьютерная программа yacc - это генератор парсеров, разработанный Стивеном Джонсоном из AT&T для операционной системы Unix.
2 ответа

Как добавить препроцессор в ассемблер flex+bison?

Я написал простой ассемблер, используя flex+bison. Я хотел бы добавить препроцессор (макросы) к языку ассемблера. Я впервые пытаюсь использовать flex+bison, я не знаю, как это сделать. Целесообразно ли добавить отдельный экземпляр flex + bison и вып…
14 апр '12 в 03:43
2 ответа

Лекс распознает [как часть цепочки букв вместо символа

Я пишу простую программу yacc, которая проверяет синтаксис. Я должен быть в состоянии сделать что-то вроде int a[100]; У меня есть много печатных заявлений в моей программе, чтобы вы могли видеть, что происходит. Вместо того чтобы сказать INT found …
25 фев '15 в 07:59
2 ответа

Преобразование расширенной BNF в грамматику Bison, но с ошибками сдвига / уменьшения

Фон Я работаю над компилятором для латексоподобного языка. Я уже написал файл lex, и пока он работает так, как должен. Тем не менее, я столкнулся с проблемами сейчас, когда я работаю над грамматикой в ​​файле.y. проблема Я воспроизвел ту часть грамм…
25 июл '18 в 20:23
2 ответа

Предупреждение о сборке зубров: "опция -s задана, но правило по умолчанию может быть найдено"

Я получаю предупреждение warning, -s option given but default rule can be matched Если вы зададите Google "опция указана, но правило по умолчанию может быть найдено", вы найдете главу руководства Flex по диагностике и эту запись на старой странице р…
25 окт '09 в 23:36
3 ответа

Нет совпадения для оператора * для экземпляров

Я пытаюсь сгенерировать код для определенного языка, используя bison, flex и llvm. Вот часть кода (точки обозначают код, не связанный с вопросом) для объединения и раздела правил: %union { Node *node; NBlock *block; NMethodCall* methodcall; . . . st…
10 янв '17 в 21:29
1 ответ

Lex - распознавание неоднозначных токенов

Все, В моем файле Lex мы опознаем некоторые операторы как токены, некоторые из этих операторов ":p" and ":" проблема в том, что любое слово ведьма начинается с: ":presentation" не признается как ':' word /*grammar*/ и ошибка разбора срабатывает из-з…
07 май '12 в 10:07
1 ответ

Мульти-оператор в строке

Что не так с моим кодом? - он правильно компилирует структуру while, правильно компилирует операторы, разделенные двоеточиями, - но сообщает синтаксическую ошибку, если операторы, разделенные двоеточиями, находятся в структуре while. Вот: 0x363> …
12 июн '13 в 16:41
1 ответ

Обработка #define макросов в yacc/bison lex

Как бы я реализовал #define макросы с yacc/ бизон? Я думал, что все определяемые символы должны соответствовать обычной переменной. Переменные определяются как [a-zA-Z_][a-zA-Z0-9_]* поэтому я полагаю, что могу поставить там проверку, чтобы увидеть,…
23 окт '09 в 17:53
2 ответа

Несколько правил одно и то же действие в YACC

Как указать несколько правил с одинаковым действием в yacc Пример: variable : string { cout<<$1<<endl; } | int { cout<<$1<<endl; }
27 май '15 в 05:41
2 ответа

Как использовать yyerror, чтобы рассказать больше об ошибках разбора

Итак, я написал всю грамматику, которую хочу, и все работает гладко. Я не делаю абсолютно никаких действий, когда встречается грамматика. Это определение моей функции yyerror int yyerror (const char *s) { printf("parser error %s \n ",s); return 0; }…
10 май '12 в 11:09
1 ответ

Предупреждения lex и yacc не работают должным образом

Lexer.l %{ #include "y.tab.h" %} %% "define" return(TK_KEY_DEFINE); "as" return(TK_KEY_AS); "is" return(TK_KEY_IS); "if" return(TK_KEY_IF); "then" return(TK_KEY_THEN); "else" return(TK_KEY_ELSE); "endif" return(TK_KEY_ENDIF); "with" return(TK_KEY_WI…
11 июн '17 в 12:34
2 ответа

Бесполезное правило из-за конфликтов в YACC

Сообщение об ошибке: bison -vdy tjc.y conflicts: 2 shift/reduce tjc.y:72.26-29: warning: rule useless in parser due to conflicts: return_type: type РЕДАКТИРОВАТЬ 2: дальнейшее сокращение грамматики до следующих правил. Та же ошибка из-за того же кон…
28 фев '12 в 01:04
1 ответ

Простая калькуляторная программа на lex и yacc не выдает вывод

Я пытаюсь написать очень простую калькуляторную программу, использующую lex и yacc, но застреваю при выводе на печать. Файлы: calc.l: %{ #include "y.tab.h" extern int yylval; %} %% [0-9]+ {yylval = atoi(yytext); return NUMBER;} [ \t] ; \n return 0; …
07 ноя '17 в 09:46
1 ответ

EOF обнаружен в программе действия LEX

У меня есть программа lex следующим образом. Я сталкиваюсь с ошибкой EOF обнаружен в программе действия LEX %{ #include<stdio.h> #include<math.h> #include "y.tab.h" %} %% [ \t]+ ; [0-9]+ {yylval = atoi(yytext); return INTEGER;} [-+*/] {r…
09 фев '17 в 05:32
1 ответ

Как избавиться от предупреждений в зубрах?

Я получаю много предупреждений в своем проекте. Вот одна выдержка из моего файла грамматики: stmtlist : stmt ';' { printf(".."); } | stmtlist stmt ';' { printf(".."); } ; строка -> предупреждение: неиспользованное значение: $1 строка -> предупрежден…
30 июл '13 в 18:07
1 ответ

Ошибка "что-то не структура или объединение" при компиляции очень простых файлов Lex/Yacc

Я искал ответы на свой вопрос, но никто не решает мою проблему. Это мой действительно простой файл Yacc: %{ #include <stdio.h> #include "y.tab.h" int clientesVodafone = 0; int clientesMovistar = 0; float sumaVodafone = 0.0; float sumaMovistar …
28 май '12 в 11:46
5 ответов

yacc/lex или ручное кодирование?

Я работаю над новым языком программирования, но я всегда был озадачен тем фактом, что все используют yaxx / lex для разбора кода, а я нет. Мой компилятор (который уже работает) написан вручную на C++/STL, и я не могу сказать, что он сложный или заня…
29 авг '10 в 01:14
3 ответа

Почему в некоторых случаях я не могу использовать токен в качестве маркера приоритета

Предположим, этот код работает: left '*' left '+' expr: expr '+' expr | expr '*' expr ; Я хочу определить другой маркер приоритета, например: left MULTIPLY left PLUS expr: expr '+' expr %prec PLUS | expr '*' expr %prec MULTIPLY ; Тем не менее, это н…
10 июн '12 в 22:30
1 ответ

Как распечатать дерево парсеров в Yacc (BISON)

Я сделал парсер для языка Си, используя BISON и FlEX. Он работает и печатает "синтаксическую ошибку" в терминале, если данный c-входной код синтаксически неверен, иначе ничего не печатать. Но я хочу напечатать дерево синтаксического анализатора, отн…
13 мар '12 в 17:22
4 ответа

Переключить входной поток в lex и yacc

Я настаиваю на использовании lex, а не flex. Я разрабатываю API в lex, подобный тому, который существует в flex util (yy_switch_buffer, yy_create_buffer...), предлагая возможность переключения между несколькими буферами. Это главная трудность для ме…
30 янв '12 в 15:10