certi-cvs
[Top][All Lists]
Advanced

[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:




reply via email to

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