[Pvfs2-cvs] commit by walt in pvfs2-1/src/common/statecomp: codegen.c parser.y scanner.l statecomp.c

CVS commit program cvs at parl.clemson.edu
Tue Aug 29 16:44:03 EDT 2006


Update of /projects/cvsroot/pvfs2-1/src/common/statecomp
In directory parlweb1:/tmp/cvs-serv32553/src/common/statecomp

Modified Files:
      Tag: WALT3
	codegen.c parser.y scanner.l statecomp.c 
Log Message:
updates to parallel state machine code that get a basic test working
This test is still included in get_config.sm and needs to be removed.


Index: codegen.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/common/statecomp/codegen.c,v
diff -p -u -r1.20.4.2 -r1.20.4.3
--- codegen.c	1 Aug 2006 21:46:15 -0000	1.20.4.2
+++ codegen.c	29 Aug 2006 20:44:03 -0000	1.20.4.3
@@ -78,7 +78,7 @@ void gen_state_action(char *run_func, in
 	    break;
 	case SM_PJMP:
 	    fprintf(out_file, "\t .flag = SM_PJMP ,\n");
-            fprintf(out_file, "\t .action.nested = &%s ,\n", run_func);
+            fprintf(out_file, "\t .action.func = &%s ,\n", run_func);
             fprintf(out_file,"\t .pjtbl = ST_%s_pjtbl ,\n", state_name);
             fprintf(out_file,"\t .trtbl = ST_%s_trtbl ", state_name);
 	    break;
@@ -130,6 +130,9 @@ void gen_next_state(int flag, char *new_
         fprintf(out_file,",\n");
     }
     switch (flag) {
+	case SM_PJMP:
+	    fprintf(out_file, "\t .state_machine = &%s }", new_state);
+	    break;
 	case SM_NEXT:
 	    fprintf(out_file, "\t .next_state = &ST_%s }", new_state);
 	    break;

Index: parser.y
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/common/statecomp/parser.y,v
diff -p -u -r1.25.36.1 -r1.25.36.2
--- parser.y	1 Aug 2006 15:52:02 -0000	1.25.36.1
+++ parser.y	29 Aug 2006 20:44:03 -0000	1.25.36.2
@@ -44,8 +44,12 @@ void yyerror(char *);
  * vim: ts=8 sts=4 sw=4 expandtab
  */
 
+
 %}
 
+%token-table
+%error-verbose
+
 %union{
    int i;
    double f;
@@ -73,7 +77,7 @@ void yyerror(char *);
 %token <i> SEMICOLON
 %token <i> ARROW
 %token <c> IDENTIFIER
-%token <c> INTEGER
+%token <c> INTVAL
 
 %type <i> .state_body. state_body state_action .NESTED. .EXTERN.
 
@@ -175,7 +179,7 @@ state_action	  : RUN identifier SEMICOLO
 		  	  {gen_state_action($2, SM_PJMP, $<c>-2);}
 		  	 LBRACE
 			  {gen_pjtbl($<c>-2);}
-			 task_list RBRACE SEMICOLON
+			 task_list RBRACE
 		  | JUMP identifier SEMICOLON
 		     {gen_state_action($2, SM_JUMP, $<c>-2);}
 		  ;
@@ -187,7 +191,7 @@ task_list	: task
 task	: return_code
 			{gen_return_code($1);}
 			ARROW identifier SEMICOLON
-			{gen_next_state(SM_NEXT, $4);}
+			{gen_next_state(SM_PJMP, $4);}
 		  ;
 
 transition_list   : transition 
@@ -218,10 +222,22 @@ target  : identifier
 		  ;
 
 return_code	  : SUCCESS {$$ = "0";}
-		  | INTEGER {$$ = enter_string($1);}
+		  | INTVAL {$$ = enter_string($1);}
 		  | identifier {$$ = $1;} /* check for decl */
 		  | DEFAULT {$$ = "-1";}
 		  ;
 
 identifier	  : IDENTIFIER {$$ = enter_string($1);}
 		  ;
+
+%%
+
+void yyerror(char *s)
+{
+	/*
+	fprintf(stderr,"syntax error line %d: %s\n", line, s);
+	*/
+	fprintf(stderr,"syntax error line %d token %d(%s): %s\n",
+			line, yychar, yytname[yychar], s);
+}
+

Index: scanner.l
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/common/statecomp/scanner.l,v
diff -p -u -r1.17.14.1 -r1.17.14.2
--- scanner.l	1 Aug 2006 15:52:02 -0000	1.17.14.1
+++ scanner.l	29 Aug 2006 20:44:03 -0000	1.17.14.2
@@ -31,6 +31,7 @@ extern YYSTYPE yylval;
 extern FILE *out_file;
 extern char *in_file_name;
 void produce_listing(int line, char *listing);
+static void lexerr(void);
 extern int yylex(void);
 extern void yyerror(char *);
 
@@ -62,7 +63,7 @@ string      ["][^"]*["]
 float1      [-+]?[0-9]+"."[0-9]*([eE][-+]?[0-9]+)?
 float2      [-+]?"."[0-9]+([eE][-+]?[0-9]+)?
 float3      [-+]?[0-9]+[eE][-+]?[0-9]+
-int         [-+][0-9]+
+int         [-+]?[0-9]+
 id          [_a-zA-Z][_0-9a-zA-Z]*
 w           [ \t\n]*
 
@@ -109,13 +110,18 @@ w           [ \t\n]*
 
 
 <CODE>{id}     	{LIST; yylval.c = yytext; return(IDENTIFIER);}
-<CODE>{int}    	{LIST; yylval.c = yytext; return(INTEGER);}
+<CODE>{int}    	{LIST; yylval.c = yytext; return(INTVAL);}
 
 <CODE>"\n"	{MAKELIST; line++;}
 <CODE>[ \t]+	{LIST; /* eat white space */ }
-<*>.		{LIST; fprintf(stderr,"scanner error bad char %s\n",yytext);}
+<*>.		{LIST; lexerr();}
 
 %%
+
+static void lexerr(void)
+{
+    fprintf(stderr,"scanner error line %d: bad char %s\n", line, yytext);
+}
 
 /*
  * Local variables:

Index: statecomp.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/common/statecomp/statecomp.c,v
diff -p -u -r1.16 -r1.16.20.1
--- statecomp.c	29 Sep 2005 22:59:27 -0000	1.16
+++ statecomp.c	29 Aug 2006 20:44:03 -0000	1.16.20.1
@@ -39,6 +39,7 @@ int yyparse (void);
 #endif
 
 
+
 static void initialize(void);
 static void parse_args(int argc, char **argv);
 static void finalize(void);
@@ -64,12 +65,31 @@ char *in_file_name = 0;
 
 int main(int argc, char **argv)
 {
+    int retval;
     initialize();
     parse_args(argc, argv);
     gen_init();
-    yyparse();
-    finalize();
-    return 0;
+    retval = yyparse();
+    switch (retval)
+    {
+        case 0:
+            /* successful parse */
+            finalize();
+            break;
+        case 1:
+            /* syntax error */
+            fprintf(stderr,"yyparse returned syntax error\n");
+            break;
+        case 2:
+            /* out of memory error */
+            fprintf(stderr,"yyparse returned out of memory error\n");
+            break;
+        default:
+            /* unknown error */
+            fprintf(stderr,"yyparse returned unknown error\n");
+            break;
+    }
+    return retval;
 }
 
 static void initialize()
@@ -186,11 +206,7 @@ static void finalize(void)
     free(in_file_name);
 }
 
-void yyerror(char *s)
-{
-    fprintf(stderr,"syntax error line %d: %s\n", line, s);
-}
-
+/* This should be in parser.y but I'll worry with it later - WBL */
 void yywrap(void)
 {
     /*



More information about the Pvfs2-cvs mailing list