Описание тега bison
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; Допустим, у нас есть семантическое п…
15 апр '18 в 11:16
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