繁体   English   中英

_yylval是无法解析的外部符号

[英]_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM