0
Heloo EveryBody, 我在lex語言中有一個簡單的代碼,我嘗試通過「bison -d hello.l」來運行它,但是我得到錯誤! 我收到以下錯誤。這個簡單的Lex例子有什麼問題?
有人能讓我知道我錯了嗎?
bison -d hello.l
hello.l:4.1-5: syntax error, unexpected identifier
代碼:
%{
#include <math.h>
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
{DIGIT}+ {
printf("An integer: %s (%d)\n", yytext,
atoi(yytext));
}
{DIGIT}+"."{DIGIT}* {
printf("A float: %s (%g)\n", yytext,
atof(yytext));
}
if|then|begin|end|procedure|function {
printf("A keyword: %s\n", yytext);
}
{ID} printf("An identifier: %s\n", yytext);
"+"|"-"|"*"|"/" printf("An operator: %s\n", yytext);
"{"[\^{}}\n]*"}" /* eat up one-line comments */
[ \t\n]+ /* eat up whitespace */
. printf("Unrecognized character: %s\n", yytext);
%%
int main(int argc, char **argv)
{
++argv, --argc; /* skip over program name */
if (argc > 0)
yyin = fopen(argv[0], "r");
else
yyin = stdin;
yylex();
}
我用野牛來生成CONST.H文件! ,因爲當我想編譯lex.yy.c文件時,我得到一些像「未聲明的(首次在此函數中使用)」的錯誤! 當我在網上搜索我明白我需要一個Const.h文件,所以我想生成該文件。 我該怎麼做? – Cert
這將是非常有用的知道*什麼*被報告是未申報的。 – JohnB
9 C:\ Users \ Majid \ Desktop \ F \ hello.l'DIGIT'未聲明(首次在此函數中使用) – Cert