[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] certi/scripts GenerateMessages.py
From: |
certi-cvs |
Subject: |
[certi-cvs] certi/scripts GenerateMessages.py |
Date: |
Tue, 14 Jul 2009 20:54:35 +0000 |
CVSROOT: /sources/certi
Module name: certi
Changes by: Eric NOULARD <erk> 09/07/14 20:54:35
Modified files:
scripts : GenerateMessages.py
Log message:
C++, Java and Python generator skeleton added
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.6&r2=1.7
Patches:
Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- GenerateMessages.py 14 Jul 2009 20:23:42 -0000 1.6
+++ GenerateMessages.py 14 Jul 2009 20:54:35 -0000 1.7
@@ -17,11 +17,11 @@
# http://docs.python.org/library/logging.html#formatter-objects
stdoutHandler.setFormatter(logging.Formatter("%(asctime)s.%(msecs)d-[%(name)s::%(levelname)s]
%(message)s","%a %H:%M:%S"))
mainlogger = logging.Logger("Main")
-mainlogger.setLevel(logging.INFO)
+mainlogger.setLevel(logging.ERROR)
mainlogger.addHandler(stdoutHandler)
def usage():
- print "Usage:\n %s --file=<message> [--language=C++|Java|Python]
[--type=header|body|factory] [--output=<filename>] [--verbose] [--help]" %
os.path.basename(sys.argv[0])
+ print "Usage:\n %s --file=<message> [--language=C++|Java|Python|Text]
[--type=header|body|factory] [--output=<filename>] [--verbose] [--help]" %
os.path.basename(sys.argv[0])
try:
opts, args = getopt.getopt(sys.argv[1:], "f:l:t:vho:",
["file=","language=","type=","output","verbose","help"])
@@ -37,7 +37,7 @@
# default value
verbose=False
gentype="header"
-language="C++"
+language="Text"
output=sys.stdout
# Parse command line options
@@ -53,6 +53,7 @@
output=open(a)
if o in ("-v", "--verbose"):
verbose=True
+ mainlogger.setLevel(logging.INFO)
if o in ("-h", "--help"):
usage()
sys.exit(0)
@@ -174,7 +175,7 @@
self.__name = name
self.__comment = None
self.logger = logging.Logger("ASTElement")
- self.logger.setLevel(logging.DEBUG)
+ self.logger.setLevel(logging.ERROR)
self.logger.addHandler(stdoutHandler)
def getName(self):
@@ -209,7 +210,7 @@
self.__types = dict()
self.__ultimateElement = None
self.logger = logging.Logger("MessageAST")
- self.logger.setLevel(logging.DEBUG)
+ self.logger.setLevel(logging.ERROR)
self.logger.addHandler(stdoutHandler)
def __getNativeMessageTypeSet(self):
@@ -587,6 +588,57 @@
self.writeComment(stream, field)
stream.write("}\n")
+class CXXGenerator(object):
+ """This is a C++ generator"""
+ def __init__(self,MessageAST):
+ self.AST = MessageAST
+
+ def writeComment(self,stream,ASTElement):
+ if ASTElement.hasComment():
+ for line in ASTElement.comment.lines:
+ stream.write("// ")
+ stream.write(str(line))
+ stream.write("\n")
+ else:
+ stream.write("\n")
+
+ def generate(self,stream):
+ stream.write("C++ generator is NOT Implemented\n")
+
+class JavaGenerator(object):
+ """This is a Java generator"""
+ def __init__(self,MessageAST):
+ self.AST = MessageAST
+
+ def writeComment(self,stream,ASTElement):
+ if ASTElement.hasComment():
+ for line in ASTElement.comment.lines:
+ stream.write("// ")
+ stream.write(str(line))
+ stream.write("\n")
+ else:
+ stream.write("\n")
+
+ def generate(self,stream):
+ stream.write("Java generator is NOT Implemented\n")
+
+class PythonGenerator(object):
+ """This is a Python generator"""
+ def __init__(self,MessageAST):
+ self.AST = MessageAST
+
+ def writeComment(self,stream,ASTElement):
+ if ASTElement.hasComment():
+ for line in ASTElement.comment.lines:
+ stream.write("// ")
+ stream.write(str(line))
+ stream.write("\n")
+ else:
+ stream.write("\n")
+
+ def generate(self,stream):
+ stream.write("Python generator is NOT Implemented\n")
+
# Build the PLY parser
parserlogger = logging.Logger("MessageParser")
parserlogger.setLevel(logging.ERROR)
@@ -601,9 +653,22 @@
parser.parse(msgFile.read(),lexer=lexer)
msgFile.close()
mainlogger.info("Parse succeeded AST = %s" % (parser.AST))
-mainlogger.info("Generate Text AST:")
-textGen = TextGenerator(parser.AST)
-textGen.generate(sys.stdout)
+
+mainlogger.info("Generate %s from AST,..."%language)
+if language=="Text":
+ textGen = TextGenerator(parser.AST)
+ textGen.generate(sys.stdout)
+elif language=="C++":
+ cxxGen = CXXGenerator(parser.AST)
+ cxxGen.generate(sys.stdout)
+elif language=="Java":
+ cxxGen = JavaGenerator(parser.AST)
+ cxxGen.generate(sys.stdout)
+elif language=="Python":
+ cxxGen = PythonGenerator(parser.AST)
+ cxxGen.generate(sys.stdout)
+
+mainlogger.info("Generate %s from AST, Done."%language)
sys.exit()
for l in msgFile: