Я пытался сделать простой лексический и синтаксический сканер, используя lex и yacc, в настоящее время проблема, с которой я сталкиваюсь, заключается в следующем: я не могу вывести ни один из своих входных данных в консоль.
Вот соответствующие части кода:
Lex:
ID {L}({L}|{D})*
%%
"let" { return ( LET ); }
"{}" { return ( OBJ ); }
{ID} { return ( ID ); }
. { return ( *yytext ); }
Yacc / Grammar:
%{
struct Atributos {
vector<string> c;
};
#define YYSTYPE Atributos
%}
%token ID OBJ LET
%%
Cmd : DeclVar ';' { cout << $1.c.size() << endl;}
;
DeclVar : LET ID '=' '{''}' { cout << $1.c.size() << endl;}
;
Я ожидаю, что $ 1.c сможет фактически напечататьтокены, которые я получаю, но когда я даю ему ввод "let a = {};"всегда выводит размер вектора как 0, я делаю что-то не так?