Mercurial > repo
view ply-3.8/example/yply/yply.py @ 8596:9da903afdd41
<boily> addquote <izabera> if someone can, they\'re in this chan
author | HackBot |
---|---|
date | Fri, 24 Jun 2016 23:13:28 +0000 |
parents | 343ff337a19b |
children |
line wrap: on
line source
#!/usr/local/bin/python # yply.py # # Author: David Beazley (dave@dabeaz.com) # Date : October 2, 2006 # # Converts a UNIX-yacc specification file into a PLY-compatible # specification. To use, simply do this: # # % python yply.py [-nocode] inputfile.y >myparser.py # # The output of this program is Python code. In the output, # any C code in the original file is included, but is commented. # If you use the -nocode option, then all of the C code in the # original file is discarded. # # Disclaimer: This just an example I threw together in an afternoon. # It might have some bugs. However, it worked when I tried it on # a yacc-specified C++ parser containing 442 rules and 855 parsing # states. # import sys sys.path.insert(0,"../..") import ylex import yparse from ply import * if len(sys.argv) == 1: print "usage : yply.py [-nocode] inputfile" raise SystemExit if len(sys.argv) == 3: if sys.argv[1] == '-nocode': yparse.emit_code = 0 else: print "Unknown option '%s'" % sys.argv[1] raise SystemExit filename = sys.argv[2] else: filename = sys.argv[1] yacc.parse(open(filename).read()) print """ if __name__ == '__main__': from ply import * yacc.yacc() """