certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi/libCERTI fed.cc tokens.ll fed.hh syntax.yy


From: certi-cvs
Subject: [certi-cvs] certi/libCERTI fed.cc tokens.ll fed.hh syntax.yy
Date: Tue, 09 Nov 2010 12:43:31 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/11/09 12:43:31

Modified files:
        libCERTI       : fed.cc tokens.ll fed.hh syntax.yy 

Log message:
        Update fed parser in order to parse
        LevelOne.fed file without error.
        Parsing is now OK but RoutingSpace needs some more semantic handling.
        shoud fix 
        bug #28832 : CERTI's FED file parser not fully HLA 1.3 compliant

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/fed.cc?cvsroot=certi&r1=3.22&r2=3.23
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/tokens.ll?cvsroot=certi&r1=3.8&r2=3.9
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/fed.hh?cvsroot=certi&r1=3.7&r2=3.8
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/syntax.yy?cvsroot=certi&r1=3.8&r2=3.9

Patches:
Index: fed.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/fed.cc,v
retrieving revision 3.22
retrieving revision 3.23
diff -u -b -r3.22 -r3.23
--- fed.cc      24 Nov 2009 16:39:20 -0000      3.22
+++ fed.cc      9 Nov 2010 12:43:30 -0000       3.23
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: fed.cc,v 3.22 2009/11/24 16:39:20 erk Exp $
+// $Id: fed.cc,v 3.23 2010/11/09 12:43:30 erk Exp $
 // ----------------------------------------------------------------------------
 
 // CERTI header
@@ -55,6 +55,15 @@
 namespace fedparser {
 
 extern std::string arg ;
+extern std::string federationname_arg;
+extern std::string federatename_arg;
+extern std::string spacename_arg ;
+extern std::string dimensionname_arg;
+extern std::string objectclassname_arg;
+extern std::string attributename_arg;
+extern std::string interactionclassname_arg;
+extern std::string parametername_arg;
+
 extern OrderType order ;
 extern TransportType transport ;
 extern int line_number ;
@@ -145,7 +154,8 @@
 {
        --indentation ;
        if(verbose) {
-               cout << ")" << endl << endl ;
+               indent();
+               cout << ")" << endl ;
        }
 }
 
@@ -155,7 +165,7 @@
 {
        indent();
        if(verbose) {
-               cout << "(federation \"" << arg << "\")" ;
+               cout << "(Federation \"" << federationname_arg << "\")" ;
        }
 }
 
@@ -180,13 +190,21 @@
        ++indentation ;
 }
 
+void checkSpaceName() {
+       // FIXME no check TDB
+       if(verbose) {
+                       cout << spacename_arg ;
+       }
+}
+
 // ----------------------------------------------------------------------------
 void
 end()
 {
        --indentation ;
        if(verbose) {
-               cout << ")" ;
+               indent();
+               cout << ")";
        }
 }
 
@@ -216,7 +234,7 @@
 void
 startFederate()
 {
-       federate = arg ;
+       federate = federatename_arg ;
 }
 
 // ----------------------------------------------------------------------------
@@ -228,7 +246,7 @@
        indent();
        if(verbose) {
                cout <<"(federate \"" << federate << "\" \""
-               << arg << "\")" ;
+               << arg << "\")" <<endl;
        }
 }
 
@@ -238,7 +256,7 @@
 {
        ObjectClass *parent = NULL;
        /* note how objectHandle counter is incremented */
-       ObjectClass *object = new ObjectClass(arg,objectHandle++);
+       ObjectClass *object = new 
ObjectClass(objectclassname_arg,objectHandle++);
 
        /*
         * Does this object class have a parent [object] class?
@@ -255,7 +273,7 @@
 
        indent();
        if(verbose) {
-               cout << "(class \"" << arg << "\" (id "
+               cout << "(class \"" << objectclassname_arg << "\" (id "
                << object->getHandle()  << ")" ;
        }
        ++indentation ;
@@ -278,14 +296,14 @@
 addAttribute()
 {
         AttributeHandle attributeHandle = 
objects.back()->getHandleClassAttributeMap().size() + 1;
-       attribute = new ObjectClassAttribute(arg, attributeHandle);
+       attribute = new ObjectClassAttribute(attributename_arg, 
attributeHandle);
         attribute->transport = transport;
         attribute->order = order;
        objects.back()->addAttribute(attribute);
 
        indent();
        if(verbose) {
-               cout << "(attribute \"" << arg << "\" (id "
+               cout << "(attribute \"" << attributename_arg << "\" (id "
                << attribute->getHandle() << ")" ;
        }
        printTransport();
@@ -299,12 +317,13 @@
 void
 endObject()
 {
-       if(verbose) {
-               cout << ")" ;
-       }
        objects.pop_back();
        if (objects.size() == 0) attributeHandle = 1 ;
        --indentation ;
+       if(verbose) {
+               indent();
+               cout << ")";
+       }
 }
 
 // ----------------------------------------------------------------------------
@@ -312,7 +331,7 @@
 startInteraction()
 {
        Interaction *parent = NULL;
-       Interaction *interaction = new 
Interaction(arg,interactionHandle++,transport,order);
+       Interaction *interaction = new 
Interaction(interactionclassname_arg,interactionHandle++,transport,order);
 
        /* does this interaction class have a parent ? */
        if (interactions.size() > 0) {
@@ -327,7 +346,7 @@
 
        indent();
        if(verbose)
-               cout << "(interaction \"" << arg << "\" (id "
+               cout << "(interaction \"" << interactionclassname_arg << "\" 
(id "
                << interaction->getHandle() << ")" ;
        printTransport();
        printOrder();
@@ -361,12 +380,12 @@
 void
 addParameter()
 {
-        parameter = new Parameter(arg, parameterHandle++);
+    parameter = new Parameter(parametername_arg, parameterHandle++);
        interactions.back()->addParameter(parameter);
 
        indent();
        if(verbose) {
-               cout << "(parameter \"" << arg << "\" (id "
+               cout << "(parameter \"" << parametername_arg << "\" (id "
                << parameter->getHandle() << "))" << std::flush;
        }
 }
@@ -375,12 +394,13 @@
 void
 endInteraction()
 {
-       if(verbose) {
-               cout << ")" ;
-       }
        interactions.pop_back();
        if (interactions.size() == 0) parameterHandle = 1 ;
        --indentation ;
+       if(verbose) {
+                       indent();
+                       cout << ")";
+       }
 }
 
 // ----------------------------------------------------------------------------
@@ -413,12 +433,12 @@
 {
        routing_space = RoutingSpace();
        routing_space.setHandle(spaceHandle++);
-       routing_space.setName(arg);
+       routing_space.setName(spacename_arg);
        dimensionHandle = 1 ;
 
        indent();
        if(verbose) {
-               cout << "(space \"" << arg << "\" (id "
+               cout << "(space \"" << spacename_arg << "\" (id "
                << routing_space.getHandle() << ")" ;
        }
        ++indentation ;
@@ -432,7 +452,8 @@
 
        --indentation ;
        if(verbose) {
-               cout << ")" ;
+               indent();
+               cout << ")";
        }
 }
 
@@ -441,16 +462,16 @@
 addDimension()
 {
        Dimension dimension(dimensionHandle++);
-       dimension.setName(arg);
+       dimension.setName(dimensionname_arg);
        routing_space.addDimension(dimension);
 
        indent();
        if(verbose) {
-               cout << "(dimension \"" << arg << "\" (id "
+               cout << "(dimension \"" << dimensionname_arg << "\" (id "
                << dimension.getHandle() << "))" ;
        }
 }
 
 }} // namespaces
 
-// $Id: fed.cc,v 3.22 2009/11/24 16:39:20 erk Exp $
+// $Id: fed.cc,v 3.23 2010/11/09 12:43:30 erk Exp $

Index: tokens.ll
===================================================================
RCS file: /sources/certi/certi/libCERTI/tokens.ll,v
retrieving revision 3.8
retrieving revision 3.9
diff -u -b -r3.8 -r3.9
--- tokens.ll   7 Feb 2010 01:00:44 -0000       3.8
+++ tokens.ll   9 Nov 2010 12:43:30 -0000       3.9
@@ -20,7 +20,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: tokens.ll,v 3.8 2010/02/07 01:00:44 erk Exp $
+// $Id: tokens.ll,v 3.9 2010/11/09 12:43:30 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "syntax.h"
@@ -47,8 +47,15 @@
 OrderType order ;
 TransportType transport ;
 int line_number ;
+std::string federationname_arg;
+std::string federatename_arg;
 std::string timestamp_arg;
-
+std::string spacename_arg;
+std::string dimensionname_arg;
+std::string objectclassname_arg;
+std::string attributename_arg;
+std::string interactionclassname_arg;
+std::string parametername_arg;
 }}
 
 int yyerror(const char *);

Index: fed.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/fed.hh,v
retrieving revision 3.7
retrieving revision 3.8
diff -u -b -r3.7 -r3.8
--- fed.hh      19 Nov 2009 18:15:30 -0000      3.7
+++ fed.hh      9 Nov 2010 12:43:30 -0000       3.8
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: fed.hh,v 3.7 2009/11/19 18:15:30 erk Exp $
+// $Id: fed.hh,v 3.8 2010/11/09 12:43:30 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _FED_HH
@@ -54,6 +54,7 @@
 void startObjects();
 void startSpace();
 void startSpaces();
+void checkSpaceName();
 
 void addAttribute();
 void addDimension();
@@ -74,4 +75,4 @@
 }
 
 #endif // _FED_HH
-// $Id: fed.hh,v 3.7 2009/11/19 18:15:30 erk Exp $
+// $Id: fed.hh,v 3.8 2010/11/09 12:43:30 erk Exp $

Index: syntax.yy
===================================================================
RCS file: /sources/certi/certi/libCERTI/syntax.yy,v
retrieving revision 3.8
retrieving revision 3.9
diff -u -b -r3.8 -r3.9
--- syntax.yy   21 Oct 2008 10:55:37 -0000      3.8
+++ syntax.yy   9 Nov 2010 12:43:31 -0000       3.9
@@ -20,7 +20,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: syntax.yy,v 3.8 2008/10/21 10:55:37 erk Exp $
+// $Id: syntax.yy,v 3.9 2010/11/09 12:43:31 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "fed.hh"
@@ -35,7 +35,16 @@
 extern std::string arg ;
 extern const char *fed_filename ;
 extern int line_number ;
+extern std::string federationname_arg;
+extern std::string federatename_arg;
 extern std::string timestamp_arg;
+extern std::string spacename_arg ;
+extern std::string dimensionname_arg;
+extern std::string objectclassname_arg;
+extern std::string attributename_arg;
+extern std::string interactionclassname_arg;
+extern std::string parametername_arg;
+
 }}
 
 int yylex();
@@ -80,7 +89,8 @@
        R_PAR ;
 
 federation:
-       FEDERATION STRING { certi::fedparser::addFederation(); }
+       FEDERATION STRING { certi::fedparser::federationname_arg =  
certi::fedparser::arg;
+                           certi::fedparser::addFederation(); }
        R_PAR ;
 
 fed_version:
@@ -96,7 +106,8 @@
        | federate_list federate ;
 
 federate:
-       FEDERATE STRING { certi::fedparser::startFederate(); }
+       FEDERATE STRING { certi::fedparser::federatename_arg =  
certi::fedparser::arg;
+                         certi::fedparser::startFederate(); }
        STRING { certi::fedparser::endFederate(); }
        R_PAR ;
 
@@ -114,10 +125,16 @@
        | space_list space ;
 
 space:
-       SPACE STRING { certi::fedparser::startSpace(); }
+       SPACE STRING { certi::fedparser::spacename_arg =  certi::fedparser::arg;
+                      certi::fedparser::startSpace(); }
        opt_dimension_list { certi::fedparser::endSpace(); }
        R_PAR ;
 
+opt_space_name:
+       STRING { certi::fedparser::spacename_arg =  certi::fedparser::arg;
+                certi::fedparser::checkSpaceName(); }
+       | ;
+
 opt_dimension_list:
        dimension_list
        | ;
@@ -127,7 +144,8 @@
        | dimension_list dimension ;
 
 dimension:
-       DIMENSION STRING { certi::fedparser::addDimension(); }
+       DIMENSION STRING { certi::fedparser::dimensionname_arg =  
certi::fedparser::arg;
+                          certi::fedparser::addDimension(); }
        R_PAR ;
 
 objects:
@@ -144,7 +162,8 @@
        | object_class_list object_class ;
 
 object_class:
-       CLASS STRING { certi::fedparser::startObject(); }
+       CLASS STRING { certi::fedparser::objectclassname_arg =  
certi::fedparser::arg;
+                      certi::fedparser::startObject(); }
        object_class_items { certi::fedparser::endObject(); }
        R_PAR ;
 
@@ -162,21 +181,37 @@
        | attribute_list attribute ;
 
 attribute:
-       ATTRIBUTE TIMESTAMP_TOKEN TRANSPORT ORDER { certi::fedparser::arg = 
certi::fedparser::timestamp_arg; 
-                                                   
certi::fedparser::addAttribute(); }
-       R_PAR ;
-
-attribute:
-       ATTRIBUTE STRING TRANSPORT TIMESTAMP_TOKEN { 
certi::fedparser::addAttribute(); }
-       R_PAR ;
-
-attribute:
-       ATTRIBUTE STRING TRANSPORT ORDER { certi::fedparser::addAttribute(); }
+      attribute_named_ts
+    | attribute_prefix attribute_ro
+    | attribute_prefix attribute_ts;
+    
+attribute_named_ts:
+       ATTRIBUTE TIMESTAMP_TOKEN
+       { certi::fedparser::attributename_arg = 
certi::fedparser::timestamp_arg;} 
+       TRANSPORT ORDER opt_space_name                                          
    
+       { certi::fedparser::addAttribute(); }
+       R_PAR ;
+
+attribute_prefix:
+       ATTRIBUTE STRING
+       { certi::fedparser::attributename_arg = certi::fedparser::arg;}
+       TRANSPORT;
+       
+attribute_ts:
+       TIMESTAMP_TOKEN opt_space_name 
+       { certi::fedparser::addAttribute(); }   
+       R_PAR ;
+
+attribute_ro:
+    ORDER opt_space_name 
+       { certi::fedparser::addAttribute(); }
        R_PAR ;
 
 interactions:
-       INTERACTIONS { certi::fedparser::startInteractions(); }
-       opt_interaction_class_list { certi::fedparser::end(); }
+       INTERACTIONS 
+       { certi::fedparser::startInteractions(); }
+       opt_interaction_class_list 
+       { certi::fedparser::end(); }
        R_PAR ;
 
 opt_interaction_class_list:
@@ -188,13 +223,26 @@
        | interaction_class_list interaction_class ;
 
 interaction_class:
-       CLASS STRING TRANSPORT TIMESTAMP_TOKEN { 
certi::fedparser::startInteraction(); }
-       interaction_class_items { certi::fedparser::endInteraction(); }
-       R_PAR ;
+    interaction_class_prefix interaction_class_ts
+    | interaction_class_prefix interaction_class_ro;
 
-interaction_class:
-       CLASS STRING TRANSPORT ORDER { certi::fedparser::startInteraction(); }
-       interaction_class_items { certi::fedparser::endInteraction(); }
+interaction_class_prefix:
+       CLASS STRING
+       { certi::fedparser::interactionclassname_arg = certi::fedparser::arg;}
+       TRANSPORT;
+
+interaction_class_ts:  
+       TIMESTAMP_TOKEN opt_space_name 
+       { certi::fedparser::startInteraction(); }
+       interaction_class_items 
+       { certi::fedparser::endInteraction(); }
+       R_PAR ;
+
+interaction_class_ro:
+       ORDER opt_space_name 
+       { certi::fedparser::startInteraction(); }
+       interaction_class_items 
+       { certi::fedparser::endInteraction(); }
        R_PAR ;
 
 interaction_class_items:       
@@ -211,12 +259,15 @@
        | parameter_list parameter ;
 
 parameter:
-       PARAMETER TIMESTAMP_TOKEN {certi::fedparser::arg = 
certi::fedparser::timestamp_arg; 
+       PARAMETER TIMESTAMP_TOKEN 
+       {certi::fedparser::parametername_arg = certi::fedparser::timestamp_arg; 
                                   certi::fedparser::addParameter(); }
        R_PAR ;
 
 parameter:
-       PARAMETER STRING { certi::fedparser::addParameter(); }
+       PARAMETER STRING 
+       { certi::fedparser::parametername_arg = certi::fedparser::arg;
+         certi::fedparser::addParameter(); }
        R_PAR ;
 
 interaction_security_level:



reply via email to

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