File: multiparser.py

package info (click to toggle)
antlr 2.7.7%2Bdfsg-9.2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 9,964 kB
  • sloc: java: 54,649; cs: 12,537; makefile: 8,847; cpp: 7,359; pascal: 5,273; sh: 4,333; python: 4,299; lisp: 1,969; xml: 220; lex: 192; ansic: 127
file content (47 lines) | stat: -rw-r--r-- 1,268 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

import sys
import traceback
import antlr

import SimpleLexer
import SimpleParser
import SimpleParser2

lexer = None
parser = None
parser2 = None

class Main:

    global lexer, parser, parser2

    def __init__(self):
	try:
	    lexer = SimpleLexer.Lexer(sys.stdin);

	    # Invoke first parser
	    sys.stdout.write("first parser" + '\n')
	    parser = SimpleParser.Parser(lexer)
	    parser.simple();

	    # Now we need to get the inputState from the first parser
	    # this includes data about guessing and stuff like it.
	    # If we don't do this and create the second parser
	    # with just the lexer object we might (doh! will!) miss tokens
	    # read for lookahead tests.
	    self.inputstate = parser.getInputState()

	    # When first parser runs out, invoke secnond parser
	    sys.stdout.write("second parser" + '\n')
	    parser2 = SimpleParser2.Parser(self.inputstate)
	    parser2.simple()

	except antlr.ANTLRException, e:
	    sys.stderr.write("exception: " + str(e) + '\n')
	    #apply(traceback.print_exception, sys.exc_info())
	except Exception, e:
	    sys.stderr.write("exception: " + str(e) + '\n')
	    #apply(traceback.print_exception, sys.exc_info())

if __name__ == '__main__':
    Main()