Bison - это генератор парсеров GNU. Он генерирует парсеры LALR, но может также генерировать парсеры GLR для грамматик, не являющихся LALR. У него есть режим совместимости со своим старым предшественником Yacc (еще один компилятор компилятора).
2 ответа

Бизон - передать значения для следующего производства

field_dec: type id_list ; id_list: ID punct id_list | ID SQUARE_OPEN INTEGER SQUARE_CLOSED punct id_list | ID punct | ID SQUARE_OPEN INTEGER SQUARE_CLOSED punct ; type: INT | BOOLEAN ; punct: COMMA | SEMICOLON ; У меня есть грамматика бизонов, как у…
11 окт '15 в 12:13
0 ответов

Можно ли проанализировать C++11 с опцией Bison gLR и взломать сканер?

Меня интересует эволюция языков программирования и возможные направления развития в будущем. C++ представляет особый интерес как широко используемый язык, который ложится тяжелым бременем на разработчиков компиляторов, чтобы предоставить пользовател…
13 сен '17 в 20:43
2 ответа

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

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

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

for(var x in z) { a = x + 1 + 2; foo(); } function bar() {} for(t in []){ function hello(a) { a = t + 'hello' + 'world'; } bar(); hello(); } hello(); function hello() {} 15 * 30; 1 + 2 + 3; a = 3 - 2 - 1; a + 10; Допустим, у нас есть семантическое п…
1 ответ

Синтаксическая ошибка Bison easy file

Я пытаюсь запустить этот.y файл %{ #include <stdlib.h> #include <stdio.h> int yylex(); int yyerror(); %} %start BEGIN %% BEGIN: 'a' | BEGIN 'a' %% int yylex(){ return getchar(); } int yyerror(char* s){ fprintf(stderr, "*** ERROR: %s\n", …
15 фев '17 в 10:34
1 ответ

Как я могу разобрать в структуре данных для последующего выполнения? (Флекс - Бизон)

Это для школьного задания. Я просто ищу точку в правильном направлении. Может быть, я просто не узнаю ответ, когда увижу его (поиск в Google). Вместо синтаксического анализа грамматики и немедленного выполнения {действия}, я хотел бы поместить все в…
22 май '17 в 18:18
1 ответ

Ошибка бизона: сбой подпроцесса m4

Я пытаюсь разобрать грамматику, но я получаю эту ошибку: bison -t -vd brest.y brest.y: warning: 52 shift/reduce conflicts [-Wconflicts-sr] brest.y: warning: 76 reduce/reduce conflicts [-Wconflicts-rr] brest.y:167.105-121: warning: rule useless in pa…
11 фев '15 в 09:33
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
1 ответ

Парсер из разных потоков

Нам нужно проанализировать значение в соответствии с этой грамматикой: %{ ... #define YYSTYPE Pformatted extern FILE *formattedin; extern Value lexval; %} %token FORMATTED_LEX_ID CHARCONST INTCONST REALCONST STRCONST BOOLCONST FORMATTED_LEX_ERROR %%…
17 июл '14 в 15:25
1 ответ

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

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

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

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

Есть ли в файле конфигурации чтение / запись C кода генератора?

Я знаю, как сгенерировать код сканера C с помощью flex или bison, но, к сожалению, мне нужен код C для чтения && -write- configure файла, но я не могу сгенерировать такой код с помощью flex или bison, может быть, я могу использовать файл конфигураци…
21 май '13 в 03:03
2 ответа

Ошибка токенов yacc/bison. ">>>" и ">>" оба присвоили номер 62

Я делаю что-то подобное в моем коде CmpExpr: rval '<<' rval { $$ = $1 << $3; } | rval '>>' rval { $$ = $1 >> $3; } | rval '>>>' rval { $$ = (unsigned)($1) >> ($3); } ; я получаю предупреждение tokens '>>&…
04 окт '09 в 01:02
1 ответ

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

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

Регулярное выражение для имени переменной

Я все еще использую [A-Za-z][A-Za-z_$0-9] как регулярное выражение для перехвата имени переменной (в bison-flex). Теперь я хочу добавить в него точку и квадратную скобку. Например, это может быть abc.def[12], Как мне это сделать?
25 май '16 в 15:51
1 ответ

Проблема с использованием флекс и бизон

Кто -нибудь работал над flex и bison?? у меня есть пример их. я запускаю его, но это показывает без бизонов, например: во flex в.l файле я определил id и поставил printf{"id"} для него. и в бизоне я определил что-то вроде этого: id_list : ID {printf…
07 июн '11 в 08:30
1 ответ

Распознавание бизонов / гибких токенов

Что я должен написать вместо identifier [a-zA-Z0-9]+ чтобы принять также строку, сделанную только числами? Я написал новые файлы бизонов и гибких дисков, чтобы прояснить мою проблему. Файл зубра: %{ #include <stdio.h> #include <string> u…
01 авг '15 в 17:57
2 ответа

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

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

Shift/ уменьшить с равным приоритетом

Я должен построить компилятор для подмножества C. Очевидно, так как я впервые делаю такую ​​вещь, она не очень хорошо работает. Тем не мение. В настоящее время я пытаюсь создать лексер и парсер для указанного подмножества. Я решил собрать его по час…
27 фев '14 в 22:13