小编Max*_*Max的帖子

lex中无法识别的规则

我正在用lex编写一个程序,它给了我以下错误:

scanner.:49:无法识别的规则

第49行是: {number} {return(NUM);}

编辑:但是,错误似乎与之前的行直接相关{id} {return(ID);}.它将在该规则之后直接列出该行作为错误的来源,即使它是空白的.

这是我的代码:

#include <stdio.h>

%token BOOL, ELSE, IF, TRUE, WHILE, DO, FALSE, INT, VOID
%token LPAREN, RPAREN, LBRACK, RBRACK, LBRACE, RBRACE, SEMI, COMMA, PLUS, MINUS, TIMES
%token DIV, MOD, AND, OR, NOT, IS, ADDR, EQ, NE, LT, GT, LE, GE
%token NUM, ID, PUNCT, OP

int line = 1, numAttr;
char *strAttr;
%}

/* regular definitions */

delim   [ \t]
ws      {delim}+
letter  [A-Za-z]
digit   [0-9]
id      ({letter} | _)({letter} | {digit} …
Run Code Online (Sandbox Code Playgroud)

lex

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

lex ×1