我想寫我的第一個解析器與Flex &野牛。在解析數字時,我試圖將它們的值保存到yylval
結構中。問題是,當詞法分析器達到一個數字時,yylval
爲空,這會導致分段錯誤。爲什麼yylval null?
(混亂的相關問題:那爲什麼在大多數Flex的例子(如here),yylval
是一個結構,而不是指向結構的指針我不能讓yylval
在test.l確認無%option bison-bridge
,而選擇做yylval
的指針。另外,我試着在test.y的main
初始化yylval
,但yylval = malloc(...)
給人一種類型mismatch--彷彿yylval
是不指針......?)
測試.l
%{
#include <stdio.h>
#include <stdlib.h>
#include "svg.tab.h"
%}
%option bison-bridge
%option noyywrap
%%
[0-9]+ { yylval->real = atof(yytext); return REAL; }
. { return *yytext; }
%%
test.y:
%{
#include <stdio.h>
void yyerror(char *);
%}
%union {
double real;
}
%token <real> REAL
%%
...
生成命令:
bison -d test.y && flex test.l && gcc lex.yy.c test.tab.c