LINUX.ORG.RU

Сообщения Mitya_Potemkin

 

Не получатся выловить ошибку flex/bison

Форум — Development

есть лексер и парсер, лексер отзывается и работает вроде ровно, а вот парсер не откликается ваще, никак не могу понять в чём проблема, уже просто сил не осталось. Пожалуйста помогите! вот код лексера: %{ #include <stdio.h> #include «vhdlTest.tab.h»

%} %option reentrant noyywrap %option noansi-definitions

%% var {ECHO;printf(«\n»);return TVAR;} entity return TENTITY; is return TIS; of {ECHO;return TOF;} end {ECHO;printf(«\n»);return TEND;} if {ECHO;return TIF;} begin {ECHO;return TBEGIN;} architecture {ECHO;return TARCHITECTURE;} then {ECHO;return TTHEN;} port {ECHO;return TPORT;} not {ECHO;return TNOT;} and {ECHO;return TAND;} or {ECHO;return TOR;} nand {ECHO;return TNAND;} nor {ECHO;return TNOR;} xor {ECHO;return TXOR;} [a-zA-Z][_a-zA-Z0-9]* {yylval=strdup(yytext); return TSOMEWORD;} ":=" {ECHO;return TASSIGNS;} «/=» {ECHO;return TNOTEQUAL;} «<=» {ECHO;return TAPPOINTMENTSIGNAL;} «>=» {ECHO;return TMOREOREQUAL;} [0-9]+ {ECHO;return TNUMBER;} \n ; " " ; \t ; "." {ECHO;} %%

а вот парсера: %{ #include <stdlib.h> #define YYSTYPE char * char words[10]; %}

%token TVAR TENTITY TIS TOF TIF TEND TBEGIN TARCHITECTURE TTHEN TPORT TSOMEWORD TASSIGNS TNOTEQUAL TAPPOINTMENTSIGNAL TMOREOREQUAL TNOT TAND TOR TNAND TNOR TXOR TNUMBER

%debug

%% input: /*empty*/ |input line ; line: entity /*|entity architecture*/ ;

entity: name_entity end_entity /*|name_entity body_entity end_entity*/ ; name_entity: TENTITY TSOMEWORD TIS { $$ = $2; strcpy(words,$2); printf(«ENTITY name is -->%s»,words); } ;

/*body_entity: port_expression;*/

/*port_expression: TPORT TLBRACKET ToDo TRBRACKET TSEMICOLON;*/

end_entity: TEND name_entity; %% #include <stdio.h> #include <ctype.h>

main() { yyparse(); }

int yywrap(void) { return 1; }

yyerror(const char *str) { fprintf(stderr, «ERROR: %s\n», str); }

Mitya_Potemkin
()

RSS подписка на новые темы