распечатывать лексемы и токены кода C с использованием flex - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь распечатать лексемы и токены с помощью лексического анализатора «flex», и проблема в том, что я могу найти лексемы и могу просто печатать токены, а не лексемы. это простой код, который я использую, как вы можете видеть ниже

%{
#include<stdio.h>
char RW[] = "RESERVE_WORD";
%}

int [i][n][t]
%%
int printf("%s --> %s\n",  yylex(), RW);
.|\n    {   /* Ignore all other */}
%%

int main(int argc, char *argv[]) {
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
return 0;
}

когда я делаю лексический анализ, эта функция yylex () возвращает «ноль» и выдает

example5.l:8:1: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat].

Я буду рад, если вы сможете мне помочь. и все равно спасибо

1 Ответ

0 голосов
/ 05 марта 2012

хорошо, я справился с проблемой.так что мы должны использовать переменную yytext, которая содержит последний токен лексического анализатора в виде строки.Кроме того, функция yylex() вернет либо значение следующего токена, либо число <= 0, указывающее EOF. </p>

...