def testInvalid(): testValidGrammar = r""" testValid <toolset> def noX(node): if node.value == 'x': message = "'x' is an invalid letter." (pattern,pos,source) = (node.pattern,node.start,node.source) raise Invalidation(message, pattern=pattern, source=source,pos=pos) <definition> x : "x" : noX letter : [a..z] : noX text : letter{4..6} """ make_parser = makeParser(testValidGrammar) parser = make_parser() source = "abcxyz" # check 'x' not matched alone parser.x.test('x') # check 'x' not matched in sequence parser.letter.test(source, "findAll") # check repetition match stops on 'x' parser.test(source)
def do(): ''' write parser from grammar ''' # get source grammar from command line argument try: grammar = file(arguments[1], 'r').read() except IndexError: message = ("\nCall Format:\n" "\tpython gen.py grammar_file_name\n" "or\n" "\tpython gen.py grammar_file_name parserFileName\n\n") write(message) end() # write parser into target file try: parserFile = file(arguments[2], 'w') makeParser(grammar, parserFile) except Exception: makeParser(grammar)
def do(): ''' write parser from grammar ''' # get source grammar from command line argument try: grammar = file(arguments[1], 'r').read() except IndexError: message = ("\nCall Format:\n" "\tpython gen.py grammar_file_name\n" "or\n" "\tpython gen.py grammar_file_name parserFileName\n\n" ) write(message) end() # write parser into target file try: parserFile = file(arguments[2], 'w') makeParser(grammar, parserFile) except Exception: makeParser(grammar)
def testGrammar(): print("=== parser from grammar ===") grammar = r""" testParser <definition> w1 : "foo" w2 : "bar" ch : w1 / w2 """ make_parser = makeParser(grammar) parser = make_parser() print "parser :", parser print "top pattern :", parser.topPattern parser.test("barfoz")
def testGrammar(): print ("=== parser from grammar ===") grammar = r""" testParser <definition> w1 : "foo" w2 : "bar" ch : w1 / w2 """ make_parser = makeParser(grammar) parser = make_parser() print "parser :", parser print "top pattern :", parser.topPattern parser.test("barfoz")
#~ grammar = """ #~ genTest #~ <toolset> #~ pass #~ <definition> #~ X : 'x' #~ XX : X XXX : join #~ XXX : XX / X : @ #~ """ #~ parser = makeParser(grammar) #~ source = r"""x xxx xxxxx""" #~ parser.test(source,"findAll") #~ end() make_parser = makeParser(grammar) parser = make_parser() # test it sources = """\ 1 - 1.1 1.1 * -2 -3 + +4.4 -3 ++4.4 3 *-4.4 9*8*7*6*5 1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1 9+8+7+6+5 3*(2+1) 1*4 + 3*2