From 48a250c4ef39f4340f818d102afaedf49ce0fb03 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 6 Jun 2015 21:50:24 +0300 Subject: In autogenerate script add support for files without subdir. --- scripts/addfile.py | 64 +++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 29 deletions(-) (limited to 'scripts/addfile.py') diff --git a/scripts/addfile.py b/scripts/addfile.py index ab1b937..6f55842 100755 --- a/scripts/addfile.py +++ b/scripts/addfile.py @@ -25,56 +25,62 @@ nodeTemplate = readFile("tpl/node.tpl") parserTemplate = readFile("tpl/parser.tpl") if len(sys.argv) == 2: dirName = "" - nodeName = sys.argv[1].lower() + typeName = sys.argv[1] + nodeName = typeName.lower() else: dirName = sys.argv[1].lower() - nodeName = sys.argv[2].lower() + typeName = sys.argv[2] + nodeName = typeName.lower() suffixSize = 0 parserAdditionalCode1 = "" parserAdditionalCode2 = "" parserBaseInclude = "" -if nodeName[-4:] == "decl": - suffixSize = 4 - parserAdditionalCode1 = " fillLocation(node);\n fillDeclLabel(node);\n" - parserAdditionalCode2 = "\n fillDeclAutoGenerated(node);\n fillDeclAttributes(node);\n" - parserBaseInclude = "#include \"parsers/base/decl.h\"\n" -elif nodeName[-4:] == "type": - suffixSize = 4 - parserAdditionalCode2 = "\n fillTypeName(node);\n fillTypeAttributes(node);\n" - parserBaseInclude = "#include \"parsers/base/type.h\"\n" -elif nodeName[-3:] == "cst": - suffixSize = 3 -elif nodeName[-4:] == "expr": - suffixSize = 4 - parserAdditionalCode2 = "\n fillExprOperands(node);\n" - parserBaseInclude = "#include \"parsers/base/expr.h\"\n" -elif nodeName[-4:] == "list": - suffixSize = 4 +if dirName != "": + if nodeName[-4:] == "decl": + suffixSize = 4 + parserAdditionalCode1 = " fillLocation(node);\n fillDeclLabel(node);\n" + parserAdditionalCode2 = "\n fillDeclAutoGenerated(node);\n fillDeclAttributes(node);\n" + parserBaseInclude = "#include \"parsers/base/decl.h\"\n" + elif nodeName[-4:] == "type": + suffixSize = 4 + parserAdditionalCode2 = "\n fillTypeName(node);\n fillTypeAttributes(node);\n" + parserBaseInclude = "#include \"parsers/base/type.h\"\n" + elif nodeName[-3:] == "cst": + suffixSize = 3 + elif nodeName[-4:] == "expr": + suffixSize = 4 + parserAdditionalCode2 = "\n fillExprOperands(node);\n" + parserBaseInclude = "#include \"parsers/base/expr.h\"\n" + elif nodeName[-4:] == "list": + suffixSize = 4 + else: + print "unknown nodename" + exit(1) else: - print "unknown nodename" - exit(1) + suffixSize = 0 word1 = nodeName[0 : len(nodeName) - suffixSize] word2 = nodeName[- suffixSize:] -typeName = firstBigLetter(word1) + firstBigLetter(word2) -fileName = word1 + "_" + word2 nodeInclude = "" if dirName != "": + fileName = word1 + "_" + word2 guardHeader = (dirName + "_" + nodeName).upper() baseName = dirName baseTypeName = firstBigLetter(dirName) nodeInclude = dirName + "/" + fileName + nodeFileName = "../src/nodes/{0}/{1}.h".format(dirName, fileName) + parserFileName = "../src/parsers/{0}/{1}.cpp".format(dirName, fileName) else: + fileName = word1 guardHeader = nodeName.upper() baseName = "node" - baseTypeName = "Node" + baseTypeName = "" nodeInclude = fileName + nodeFileName = "../src/nodes/{0}.h".format(fileName) + parserFileName = "../src/parsers/{0}.cpp".format(fileName) -writeFile("../src/nodes/{0}/{1}.h".format(dirName, fileName), +writeFile(nodeFileName, nodeTemplate.format(guardHeader, baseName, typeName, baseTypeName)) -writeFile("../src/parsers/{0}/{1}.cpp".format(dirName, fileName), +writeFile(parserFileName, parserTemplate.format(typeName, nodeInclude, parserBaseInclude, parserAdditionalCode1, parserAdditionalCode2)) - -#print nodeTemplate.format(guardHeader, baseName, typeName, baseTypeName) -#print parserTemplate.format(typeName, nodeInclude, parserBaseInclude, parserAdditionalCode1, parserAdditionalCode2) -- cgit v1.2.3-60-g2f50