commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/geas/lib/classdefs yparser.y


From: Neil Tiffin
Subject: gnue/geas/lib/classdefs yparser.y
Date: Thu, 24 May 2001 18:05:23 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Neil Tiffin <address@hidden>    01/05/24 18:05:23

Modified files:
        geas/lib/classdefs: yparser.y 

Log message:
        Add check for duplicate modules.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/lib/classdefs/yparser.y.diff?cvsroot=OldCVS&tr1=1.25&tr2=1.26&r1=text&r2=text

Patches:
Index: gnue/geas/lib/classdefs/yparser.y
diff -u gnue/geas/lib/classdefs/yparser.y:1.25 
gnue/geas/lib/classdefs/yparser.y:1.26
--- gnue/geas/lib/classdefs/yparser.y:1.25      Sat May 19 16:21:02 2001
+++ gnue/geas/lib/classdefs/yparser.y   Thu May 24 18:05:23 2001
@@ -65,6 +65,7 @@
 %type <string>     new_container_name new_field_name existing_class_name
 %type <string>     qualified_name opt_format opt_default
 %type <string>     existing_field_name
+%type <string>     new_module_name new_class_name
 %type <list>       enum_body parent_list search_fields
 %type <list>       body_item class_body_item class_body opt_parent_list
 %type <list>       new_field_list opt_argument_list argument_list
@@ -232,6 +233,25 @@
 new_container_name: SYMBOL   { $$ = $1; /*printf("[ (%s)\n",$1);*/ }
   ;
 
+new_module_name: SYMBOL   {
+                            odl_module * wanted = NULL;
+                            wanted = odl_find_module( yycurrenttree, $1, 0);
+                            /* printf("Looking for Module: %s, %p\n", $1, 
wanted); */
+                            if ((wanted == NULL) || (current_pass != 1))
+                              {
+                                $$ = $1;
+                              }
+                            else
+                              {
+                                yyerror("Duplicate module name.");
+                                $$ = "Duplicate_Module_Name";
+                              }
+                          }
+  ;
+  
+new_class_name: SYMBOL   { $$ = $1; /*printf("[ (%s)\n",$1);*/ }
+  ;
+
 new_field_name: SYMBOL { $$ = $1; }
   ;
 
@@ -244,13 +264,13 @@
   |   opt_access ENUM enum ';'  { is_a_type = FALSE; }
   ;
 
-module: MODULE new_container_name push_module '{' dt_on unit_list '}' 
pop_module dt_on
+module: MODULE new_module_name push_module '{' dt_on unit_list '}' pop_module 
dt_on
   ;
 
-class: opt_class_type CLASS dt_off new_container_name push_class 
opt_parent_list '{' dt_on class_body '}' pop_class dt_on {}
+class: opt_class_type CLASS dt_off new_class_name push_class opt_parent_list 
'{' dt_on class_body '}' pop_class dt_on {}
   ;
 
-type: opt_class_type CTYPE dt_off new_container_name push_class 
opt_parent_list '{' dt_on class_body '}' pop_class dt_on { lastpushed->istype = 
TRUE; }
+type: opt_class_type CTYPE dt_off new_class_name push_class opt_parent_list 
'{' dt_on class_body '}' pop_class dt_on { lastpushed->istype = TRUE; }
   ;
 
 enum: new_container_name '{' enum_body  '}' dt_on {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]