[Top][All Lists]
[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:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [certi-cvs] certi/libCERTI fed.cc tokens.ll fed.hh syntax.yy,
certi-cvs <=