lex - 文件名.l :16: EOF encountered inside an action

标签 lex

我有一个像这样的 lex 文件

   %{
        #include "y.tab.h"
    %}

    %%
    "print"     {return print;}
    "exit"      {return exit_command;}
    [a-zA-Z]    {yylval.id = atoi(yytext); return identifier;}
    [0-9]+      {yylval.num = atoi(yytext);} return number;}
    [ \t\n]     ;
    [-+=;]      {return yytext[0];}
    .       {ECHO; yyerror("unexpected charater");}
    %%

    int yywrap(void){return 1;}

但是当我尝试运行 lex filename.l
我收到以下错误

filename.l:16: EOF encountered inside an action

任何人都可以看到任何错误

最佳答案

您的数字模式( [0-9]+ )有一个额外的 }其行为令人困惑(也令人困惑 flex )。

关于lex - 文件名.l :16: EOF encountered inside an action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711090/

相关文章:

yacc - lex 和 yacc : a simple calculator with syntax error

c - 在 Lex/Yacc 解析中是否有捕获错误的经验法则?

c - 使用 Yacc 和 Lex 设计一个处理多种类型的计算器

c - 使用 Lex 替换文本文件中句号后的第一个字符

Erlang、yecc 和 EBNF

java - 寻找 lex/yacc 格式的 Java 语法

lex - 如果由于 REJECT 而 Lex 程序中不存在匹配规则怎么办?

lex - ....未声明(在此函数中首次使用)?

parsing - lex & yacc 多重定义错误

c - Flex 默认规则