0
Heloo EveryBody, 나는 lex 언어로 된 간단한 코드를 가지고 있으며 "bison -d hello.l"로 실행하려고 시도하지만 오류가 발생합니다! 다음 오류가 발생합니다.간단한 Lex 예제에 어떤 문제가 있습니까?
누군가 내가 내가 뭘 잘못했는지 알려 줄 수 있습니까?
bison -d hello.l
hello.l:4.1-5: syntax error, unexpected identifier
코드 : 당신은 들소와 (F) 렉스 입력 파일을 컴파일하려고
%{
#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 파일을 생성하기 위해 bison을 사용합니다! lex.yy.c 파일을 컴파일하려고 할 때 "선언되지 않음 (이 함수에서 처음 사용)"과 같은 오류가 발생합니다! 웹에서 검색 할 때 Const.h 파일이 필요하다는 것을 알고 있으므로 해당 파일을 생성하고 싶습니다. 어떻게 할 수 있습니까? – Cert
* 무엇이 * 선언되지 않았 음을 알면 매우 유용 할 것입니다. – JohnB
9 C : \ Users \ Majid \ Desktop \ F \ hello.l'DIGIT '이 선언되지 않았습니다 (이 기능에서 처음 사용) – Cert