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