Как правильно выполнить интеграцию между lex и yacc? - PullRequest
1 голос
/ 10 ноября 2019

Я пытался сделать простой лексический и синтаксический сканер, используя 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, я делаю что-то не так?

...