Read and respond to this message at: https://sourceforge.net/forum/message.php?msg_id=5941940 By: glutters
Yes, but it works on XP. The code: %{ #define YYSTYPE char* // deve cambiare #include <stdlib.h> #include <getopt.h> #include "error.h" %} /** Credo sia opportuno dichiarare un struttura apposita per i token **/ %token NL %token DOTCOMMA %token CLASS %token ASPECT %token DEF %token TYPE %token ID %token ASSIGN %token LPAREN %token RPAREN %token LSQPAREN %token RSQPAREN %token GLPAREN %token GRPAREN %token STRINGDQ %token STRINGSQ %token PUBLIC %token PRIVATE %token PROTECTED %token INT %token FLOAT %token EXNUM %token CHAR %token DEFINE %token ENDIF %token ASPECT %token MAIN %token IFDEF %token COMPTYPE %token TYPEOF %token SELF %token INIT %token NOT %token COMPONENT %token EXTENDS %token IMPLEMENTS %token IF %token SWITCH %token CASE %token IN %token IMPORT %token TRY %token EXCEPT %token PRINT %token RAISE %token WHILE %token REF %token LSHIFT %token RSHIFT %token BREAK %token RETURN %token DIVEQ %token INCR %token DECR %token CLASS %token INTERFACE %token DOT %token TRUE %token FALSE %token FOR %token NEQ %token DDOT %token COMMA %token FOR %token OR %token AND %token EQ /************************************************************* DEVO USARE QUESTA STRUTTURA UNA VOLTA GENERATA UNA SINTASSI CORRETTA %union{ char *content; var *v; }; *************************************************************/ %left '+' '-' '*' '/' %left ANDBIT ORBIT XORBIT LT GT LTEQ GTEQ NEQ %left AND OR EQ %right LSHIFT RSHIFT %right NOTBIT NOT %start lines %% // Like python C++ mixed /* tutte queste regole vanno aggiunte al disotto della produzione comp_decl | modifier INTERFACE ID GLPAREN GRPAREN comp_decl {} | modifier CLASS ID GLPAREN class_dec GRPAREN comp_decl {} | modifier INTERFACE ID GLPAREN GRPAREN comp_decl {} funzionalità avanzate da investigare | modifier ASPECT ID aspect_dec {} | modifier DEBUG ID RPAREN param_dec LPAREN GLPAREN debug_dec GRPAREN {} */ // Produzione iniziale funzionante :-) lines: lines header COMPONENT ID GLPAREN comp_decl GRPAREN NL |lines NL | |lines error NL { yyerrok;} ; // Dichiarazione di classe comp_decl: modifier CLASS ID class_extra GLPAREN class_dec GRPAREN comp_decl {} | ; // Dichiarazione di implementazioni di interfaccie e/o estensioni di superclasse class_extra: DDOT IMPLEMENTS seq_id EXTENDS ID | DDOT EXTENDS ID ; seq_id: ID COMMA seq_id | ID ; header: IMPORT seq_imp DOTCOMMA header | DEFINE "DEBUG" {} | ; modifier: PUBLIC | PRIVATE | PROTECTED ; seq_imp: ID DOT seq_imp |ID ; class_dec: DEF method_dec class_dec | modifier TYPE REF ID DOTCOMMA class_dec {} | modifier TYPE ID DOTCOMMA class_dec {} | modifier ID ASSIGN TYPE DOTCOMMA class_dec {} | modifier ID ASSIGN INT DOTCOMMA class_dec {} | modifier ID ASSIGN EXNUM DOTCOMMA class_dec {} | modifier ID ASSIGN CHAR DOTCOMMA class_dec {} | modifier ID ASSIGN STRINGDQ DOTCOMMA class_dec {} | modifier ID ASSIGN STRINGSQ DOTCOMMA class_dec {} | modifier ID ASSIGN TRUE DOTCOMMA class_dec {} | modifier ID ASSIGN FALSE DOTCOMMA class_dec {} | modifier COMPTYPE REF ID DOTCOMMA class_dec {} | modifier COMPTYPE ID DOTCOMMA class_dec {} | modifier ID ASSIGN COMPTYPE DOTCOMMA class_dec {} | modifier COMPTYPE ID ASSIGN LSQPAREN item_list RSQPAREN DOTCOMMA class_dec {} | modifier COMPTYPE ID ASSIGN GLPAREN dict_list GRPAREN DOTCOMMA class_dec {} | modifier COMPTYPE ID ASSIGN LPAREN item_list RPAREN DOTCOMMA class_dec {} | modifier ID ASSIGN LSQPAREN item_list RSQPAREN DOTCOMMA class_dec {} | modifier ID ASSIGN GLPAREN dict_list GRPAREN DOTCOMMA class_dec {} | modifier ID ASSIGN LPAREN item_list RPAREN DOTCOMMA class_dec {} | ; method_dec: MAIN LPAREN param_dec RPAREN modifier GLPAREN GRPAREN {/*main method*/} | MAIN LPAREN param_dec RPAREN GLPAREN GRPAREN {/*main method*/} | INIT LPAREN param_dec RPAREN modifier GLPAREN GRPAREN {/*Costruttore*/} | INIT LPAREN param_dec RPAREN GLPAREN GRPAREN {/*Costruttore*/} | ID LPAREN param_dec RPAREN modifier GLPAREN GRPAREN {} | ID LPAREN param_dec RPAREN GLPAREN GRPAREN ; /** Dengling else problem... ! :-) Risolto **/ param_dec: TYPE REF ID sufx_param_dec |TYPE ID sufx_param_dec |ID ASSIGN TYPE sufx_param_dec |COMPTYPE REF ID sufx_param_dec |COMPTYPE ID sufx_param_dec |ID ASSIGN COMPTYPE sufx_param_dec |COMPTYPE ID ASSIGN LSQPAREN item_list RSQPAREN sufx_param_dec |COMPTYPE ID ASSIGN LPAREN item_list RPAREN sufx_param_dec |COMPTYPE ID ASSIGN GLPAREN dict_list GRPAREN sufx_param_dec |ID ASSIGN LSQPAREN item_list RSQPAREN sufx_param_dec |ID ASSIGN GLPAREN dict_list GRPAREN sufx_param_dec |ID ASSIGN LPAREN item_list RPAREN sufx_param_dec ; sufx_param_dec: COMMA param_dec | ; item_list: INT sufx_item_list | CHAR sufx_item_list | EXNUM sufx_item_list | STRINGSQ sufx_item_list | STRINGDQ sufx_item_list | FALSE sufx_item_list | TRUE sufx_item_list ; sufx_item_list: COMMA item_list | ; dict_list: INT DDOT INT sufx_dict_list |INT DDOT CHAR sufx_dict_list |INT DDOT STRINGDQ sufx_dict_list |INT DDOT STRINGSQ sufx_dict_list |INT DDOT FLOAT sufx_dict_list |INT DDOT TRUE sufx_dict_list |INT DDOT FALSE sufx_dict_list |INT DDOT LPAREN item_list RPAREN sufx_dict_list |INT DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |CHAR DDOT INT sufx_dict_list |CHAR DDOT CHAR sufx_dict_list |CHAR DDOT STRINGDQ sufx_dict_list |CHAR DDOT STRINGSQ sufx_dict_list |CHAR DDOT FLOAT sufx_dict_list |CHAR DDOT TRUE sufx_dict_list |CHAR DDOT FALSE sufx_dict_list |CHAR DDOT LPAREN item_list RPAREN sufx_dict_list |CHAR DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |STRINGDQ DDOT INT sufx_dict_list |STRINGDQ DDOT CHAR sufx_dict_list |STRINGDQ DDOT STRINGDQ sufx_dict_list |STRINGDQ DDOT STRINGSQ sufx_dict_list |STRINGDQ DDOT FLOAT sufx_dict_list |STRINGDQ DDOT TRUE sufx_dict_list |STRINGDQ DDOT FALSE sufx_dict_list |STRINGDQ DDOT LPAREN item_list RPAREN sufx_dict_list |STRINGDQ DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |STRINGSQ DDOT INT sufx_dict_list |STRINGSQ DDOT CHAR sufx_dict_list |STRINGSQ DDOT STRINGDQ sufx_dict_list |STRINGSQ DDOT STRINGSQ sufx_dict_list |STRINGSQ DDOT FLOAT sufx_dict_list |STRINGSQ DDOT TRUE sufx_dict_list |STRINGSQ DDOT FALSE sufx_dict_list |STRINGSQ DDOT LPAREN item_list RPAREN sufx_dict_list |STRINGSQ DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |FLOAT DDOT INT sufx_dict_list |FLOAT DDOT CHAR sufx_dict_list |FLOAT DDOT STRINGDQ sufx_dict_list |FLOAT DDOT STRINGSQ sufx_dict_list |FLOAT DDOT FLOAT sufx_dict_list |FLOAT DDOT TRUE sufx_dict_list |FLOAT DDOT FALSE sufx_dict_list |FLOAT DDOT LPAREN item_list RPAREN sufx_dict_list |FLOAT DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |TRUE DDOT INT sufx_dict_list |TRUE DDOT CHAR sufx_dict_list |TRUE DDOT STRINGDQ sufx_dict_list |TRUE DDOT STRINGSQ sufx_dict_list |TRUE DDOT FLOAT sufx_dict_list |TRUE DDOT TRUE sufx_dict_list |TRUE DDOT FALSE sufx_dict_list |TRUE DDOT LPAREN item_list RPAREN sufx_dict_list |TRUE DDOT LSQPAREN item_list RSQPAREN sufx_dict_list |FALSE DDOT INT sufx_dict_list |FALSE DDOT CHAR sufx_dict_list |FALSE DDOT STRINGDQ sufx_dict_list |FALSE DDOT STRINGSQ sufx_dict_list |FALSE DDOT FLOAT sufx_dict_list |FALSE DDOT TRUE sufx_dict_list |FALSE DDOT FALSE sufx_dict_list |FALSE DDOT LPAREN item_list RPAREN sufx_dict_list |FALSE DDOT LSQPAREN item_list RSQPAREN sufx_dict_list ; sufx_dict_list: COMMA dict_list | ; %% #include "lex.yy.c" int yyerror(char const *msg){ fprintf(stderr, "error at line: %d, %s", yylineno, msg); exit(-1); } void handleArguments(int argc, char *argv[]){ char c; char *input_file = NULL; char *output_file = NULL; // Può contenere o un percorso ad un file o una directory // NOTA: bisogna definire un formato per le librerie char *library = NULL; short assembler_opt = FALSE; int opt_level = 0; while((c = getopt(argc, argv, "i:o:L:a:O:")) != EOF){ switch(c){ case 'i': // input file input_file = optarg; break; case 'o': // output file output_file = optarg; break; case 'L': // library in input library = optarg; break; case 'a': // Compile and assembly in bytecode assembler_opt = TRUE; break; case 'O': opt_level = atoi(optarg); break; default: break; } } // END WHILE } int main(int argc, char *argv[]){ // handleArguments(argc,argv); yyin = stdin; yyparse(); } ______________________________________________________________________ You are receiving this email because you elected to monitor this forum. To stop monitoring this forum, login to SourceForge.net and visit: https://sourceforge.net/forum/unmonitor.php?forum_id=74807 ------------------------------------------------------------------------------ _______________________________________________ GnuWin32-Users mailing list GnuWin32-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gnuwin32-users