[英]_yylval is a unresolved external symbol
首先。 我是flex / lex的新手。 所以这对你们来说可能是一个容易的问题,或者很难,因为我不知道问题在哪里。
我的代码:
/* example.lex */
%{
#include <stdio.h>
#include "global.h"
extern int yylval;
%}
%option noyywrap
delim [\t\n]
ws [\t\n]+
letter [A-Za-z]
digit [0-9]
id {letter}({letter}|{digit})*
nummer [0-9]+
%%
{ws} { /* Dont Do Anything */ }
{id} { yylval = atoi(yytext); return ID; }
{nummer} { yylval = atoi(yytext); return NUM; }
"+" { return '+'; }
"-" { return '-'; }
"*" { return '*'; }
%%
这就是我的example.lex文件所拥有的一切。 如果您需要更多信息,请与我们联系。 欢迎任何有关我应尝试解决此问题的提示/帮助
yylval
通常由野牛(yacc)定义。 如果您不使用野牛,则需要自己定义yylval
。
就您而言,如果您不使用野牛,则可以简单地从llval
定义中删除“ extern”。 如果在另一个文件中使用yylval
,则必须在该文件中将其声明为“ extern”。
如果您使用yacc,则需要在lex文件中#include“ y.tab.h”。 您可以通过运行'bison -d file.y'
创建y.tab.h。
如果您正在寻找一个非常简单的答案,请更改:
extern int yylval;
至
int yylval;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.