aboutsummaryrefslogtreecommitdiff
path: root/yapps2.py
diff options
context:
space:
mode:
authorsienkiew <sienkiew@d34015c8-bcbb-4646-8ac8-8ba5febf221d>2011-08-05 12:43:50 -0400
committersienkiew <sienkiew@d34015c8-bcbb-4646-8ac8-8ba5febf221d>2011-08-05 12:43:50 -0400
commite87b107fd80aee219a39ac0ecd52cc2b3a766990 (patch)
treed99048a6507a77121a2962d7aece8798d70e765c /yapps2.py
parentbe5a70d3aa1c30d7c86d77649b747de2838566ce (diff)
downloadexyapps-e87b107fd80aee219a39ac0ecd52cc2b3a766990.tar.gz
mogrify yapps2 into exyapps
git-svn-id: http://svn.stsci.edu/svn/ssb/etal/exyapps/trunk@361 d34015c8-bcbb-4646-8ac8-8ba5febf221d
Diffstat (limited to 'yapps2.py')
-rwxr-xr-xyapps2.py113
1 files changed, 0 insertions, 113 deletions
diff --git a/yapps2.py b/yapps2.py
deleted file mode 100755
index d6fd101..0000000
--- a/yapps2.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/python
-
-#
-# Yapps 2 - yet another python parser system
-# Copyright 1999-2003 by Amit J. Patel <amitp@cs.stanford.edu>
-#
-# This version of Yapps 2 can be distributed under the
-# terms of the MIT open source license, either found in the LICENSE file
-# included with the Yapps distribution
-# <http://theory.stanford.edu/~amitp/yapps/> or at
-# <http://www.opensource.org/licenses/mit-license.php>
-#
-
-import sys, re
-
-from yapps import runtime, parsetree
-
-def generate(inputfilename, outputfilename='', dump=0, **flags):
- """Generate a grammar, given an input filename (X.g)
- and an output filename (defaulting to X.py)."""
-
- if not outputfilename:
- if inputfilename.endswith('.g'):
- outputfilename = inputfilename[:-2] + '.py'
- else:
- raise Exception('Must specify output filename if input filename is not *.g')
-
- DIVIDER = '\n%%\n' # This pattern separates the pre/post parsers
- preparser, postparser = None, None # Code before and after the parser desc
-
- # Read the entire file
- s = open(inputfilename,'r').read()
-
- # See if there's a separation between the pre-parser and parser
- f = s.find(DIVIDER)
- if f >= 0: preparser, s = s[:f]+'\n\n', s[f+len(DIVIDER):]
-
- # See if there's a separation between the parser and post-parser
- f = s.find(DIVIDER)
- if f >= 0: s, postparser = s[:f], '\n\n'+s[f+len(DIVIDER):]
-
- # Create the parser and scanner and parse the text
- scanner = grammar.ParserDescriptionScanner(s, filename=inputfilename)
- if preparser: scanner.del_line += preparser.count('\n')
-
- parser = grammar.ParserDescription(scanner)
- t = runtime.wrap_error_reporter(parser, 'Parser')
- if t is None: return 1 # Failure
- if preparser is not None: t.preparser = preparser
- if postparser is not None: t.postparser = postparser
-
- # Check the options
- for f in t.options.keys():
- for opt,_,_ in yapps_options:
- if f == opt: break
- else:
- print >>sys.stderr, 'Warning: unrecognized option', f
- # Add command line options to the set
- for f in flags.keys(): t.options[f] = flags[f]
-
- # Generate the output
- if dump:
- t.dump_information()
- else:
- t.output = open(outputfilename, 'w')
- t.generate_output()
- return 0
-
-if __name__ == '__main__':
- import doctest
- doctest.testmod(sys.modules['__main__'])
- doctest.testmod(parsetree)
-
- # Someday I will use optparse, but Python 2.3 is too new at the moment.
- yapps_options = [
- ('context-insensitive-scanner',
- 'context-insensitive-scanner',
- 'Scan all tokens (see docs)'),
- ]
-
- import getopt
- optlist, args = getopt.getopt(sys.argv[1:], 'f:', ['help', 'dump', 'use-devel-grammar'])
- if not args or len(args) > 2:
- print >>sys.stderr, 'Usage:'
- print >>sys.stderr, ' python', sys.argv[0], '[flags] input.g [output.py]'
- print >>sys.stderr, 'Flags:'
- print >>sys.stderr, (' --dump' + ' '*40)[:35] + 'Dump out grammar information'
- print >>sys.stderr, (' --use-devel-grammar' + ' '*40)[:35] + 'Use the devel grammar parser from yapps_grammar.py instead of the stable grammar from grammar.py'
- for flag, _, doc in yapps_options:
- print >>sys.stderr, (' -f' + flag + ' '*40)[:35] + doc
- else:
- # Read in the options and create a list of flags
- flags = {}
- use_devel_grammar = 0
- for opt in optlist:
- for flag, name, _ in yapps_options:
- if opt == ('-f', flag):
- flags[name] = 1
- break
- else:
- if opt == ('--dump', ''):
- flags['dump'] = 1
- elif opt == ('--use-devel-grammar', ''):
- use_devel_grammar = 1
- else:
- print >>sys.stderr, 'Warning: unrecognized option', opt[0], opt[1]
-
- if use_devel_grammar:
- import yapps_grammar as grammar
- else:
- from yapps import grammar
-
- sys.exit(generate(*tuple(args), **flags))