Я искал почти каждый материал онлайн. Но я все еще не понимаю, почему lexer не может определить yylval.
Вот случай:
Я определил группу ADT в node.h
и реализовал их в node.c
, моя цель - создать AST после правильного хранения этих структур. Но я застрял с файлом зубров.
Во-первых, я изменяю %union
на union YYSTYPE {...};
и typedef union YYSTYPE YYSTYPE;
, я не знаю, зачем мне это нужно, некоторые другие файлы, размещенные в Интернете, хорошо работают с %uinion
.
Тогда я застрял с yylval
вещами. Я сделал bison -d
вещи и проверил это уже в parser.c
(я указал выход зубров), поэтому я думаю, что extern YYSTYPE yylval;
должен работать. Но это не так. Поэтому мне интересно, есть ли другой способ решить незадекларированную проблему yylval.
Я использую только два типа YYSTYPE
struct, int
и char *
. Могу ли я отделить объединение YYSYTPE
и struct для AST? Это означает, что нетерминалы не будут иметь связанных типов. Ребята, у вас есть другие идеи?