Как я могу использовать lex и ya cc, чтобы найти свой токен? - PullRequest
1 голос
/ 14 января 2020

У меня есть код lex & ya cc для анализа моего файла, но при его выполнении видно, что lex не может найти мой токен. Как показано ниже: [lex]:

%{
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include "testinfoy.tab.h"
#include <stdlib.h>

int yyline=1;
%}
%%
IDDQ { return IDDQ; }
ABC  { return ABC; }
\{   { return LBrace; }
\}   { return RBrace; }
[0-9]+ { return NUMBER; }
%%
void yyerror(const char *s) {
printf("Test.information %s at line %d, unexpected token %s\n",s,yyline,yytext);
exit(-1);
}
int yywrap()
{
    return 1;
}

[yacc]:

%token IDDQ LBrace RBrace ABC NUMBER
%%
IDDQItem :IDDQ LBrace RBrace  
| IDDQ LBrace ABCDef RBrace
;
ABCDef   :ABC LBrace NUMBER RBrace
{ cout << "---ABC---" << endl; }
;

Мой входной файл: IDDQ {AB C {100}} Он всегда показывает: Test.information синтаксическая ошибка в строке 1, неожиданный токен AB C

Как это исправить?

...