def __init__(self, logger): self.logger = logger self.parser = CommandParser.CommandParser() self.para_lexer = para_lexer.paraScanner(logger=logger, debug=0) self.para_parser = paraParser(self.para_lexer, logger=logger, debug=0) self.para = Bunch.threadSafeBunch() self.userRegMap = Bunch.threadSafeBunch() self.systemRegMap = Bunch.threadSafeBunch() self.commandRegMap = Bunch.threadSafeBunch()
def main(options, args): # TODO: configure the logger logger = logging.getLogger('para.parser') lexer = para_lexer.paraScanner(logger=logger, debug=0) parser = paraParser(lexer, logger=logger, debug=0, tabmodule=yacc_tab_module) if len(args) > 0: for filename in args: try: res = parser.parse_file(filename) if (res.errors == 0) and options.verbose: print(res.paramList) print(res.paramDict) print("%s: %d errors" % (filename, res.errors)) except paraParseError as e: # Print error message and continue to next file print(str(e)) else: buf = sys.stdin.read() try: res = parser.parse_buf(buf) if (res.errors == 0) and options.verbose: print(res.paramList) print(res.paramDict) print("%d errors" % (res.errors)) except paraParseError as e: # Print error message print(str(e))
def main(options, args): import os # TODO: configure the logger logger = logging.getLogger('para.ParameterHandler') logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.WARN) lexer = para_lexer.paraScanner(logger=logger, debug=0) parser = paraParser(lexer, logger=logger, debug=0) if len(args) > 0: for filename in args: in_f = open(filename, 'r') buf = in_f.read() in_f.close() print(filename, ":") if options.scan: res = lexer.tokenize(buf) print(res) else: res = parser.parse(buf) print(res) elif options.tsctest: #? rootLogger = logging.getLogger() pattern = re.compile(r'^(\w+)\.para$') currentDir = os.path.split(__file__)[0] TSCdir = os.path.join(currentDir, "../SkPara/cmd/TSC") have = os.listdir(TSCdir) for fname in have: if not pattern.match(fname): continue objectName = pattern.match(fname).group(1) # parser = yacc.yacc(debug=0) buf = '' print("#", "-" * 30, fname) fh = open(os.path.join(TSCdir, fname), "r") fw = open(os.path.join(currentDir, "%s.cmd" % objectName), "w") for cline in fh: buf = buf + cline buf = buf + '\n' l2 = parser.mk_paramObj(fname, buf) print(l2) v = ParameterHandler(l2) listOfSets = [] listOfParamNames = [] for aKey in l2: listOfParamNames.append(aKey) listOfSets.append(l2[aKey].getAllParamValueList()) combinationList = combination(listOfSets) for aList in combinationList: parameterMap = {} for i in range(len(listOfParamNames)): parameterMap[listOfParamNames[i]] = aList[i] try: parameterMap = v.populate(parameterMap, {}, {}, {}, {}, {}) v.validate(parameterMap) printList = 'EXEC TSC %s' % objectName for i in list(parameterMap.keys()): printList = printList + (" %s=%s " % (i, parameterMap[i])) fw.write(printList + "\n") except (ParameterValidationException, InconsistentParameterDefinitionException) as e: pass fw.close()