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它出現在
我很無知,有什麼想法嗎?
謝謝。
上帝,我感到難以置信的愚蠢!不能相信我錯過了!我一直在閱讀樣本和手冊,我使用了一個定義而不是一個包含! *打頭陣*謝謝! –