1
我开始使用Bison/YACC和Flex/Lex,但我无法编译最简单的解析器。编译Bison/Flex文件时未定义的令牌
文件:Ruby.y
%{
#include <stdio.h>
#include <stdlib.h>
%}
%start program
%token NUMBER
%%
program : NUMBER;
%%
main(int argc, char* argv[]) {
yyparse();
}
yyerror(char *s){
printf("%s\n", s);
}
文件:Ruby.l
%{
#define "Ruby.tab.h"
%}
DIGIT [0-9]
%%
{DIGIT}+ { return(NUMBER); }
[ \t\n]+
. { return(yytext[0]); }
%%
我使用 “野牛-vd Ruby.y” 编译Ruby.y,然后 “软硬Ruby.l”然后尝试使用GCC与“GCC -c Ruby.tab.c”和“GCC -c lex.yy.c”编译整个东西,但是后者出现以下错误:
Ruby.l: 2:9:错误:宏名称必须是标识符 Ruby.l:In f 'yylex': Ruby.l:6:10:错误:'NUMBER'未申报(首次在此函数中使用) Ruby.l:6:10:注意:每个未申报的标识符仅对每个乐趣报告一次 ction它出现在
我很无知,有什么想法吗?
谢谢。
上帝,我感到难以置信的愚蠢!不能相信我错过了!我一直在阅读样本和手册,我使用了一个定义而不是一个包含! *打头阵*谢谢! –