-
Notifications
You must be signed in to change notification settings - Fork 2
/
pjc.py
executable file
·50 lines (32 loc) · 1.28 KB
/
pjc.py
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
48
49
50
#! /usr/bin/env python
import sys
from antlr3 import ANTLRInputStream, CommonTokenStream
from antlr3.main import ParserMain
from Pork import Pork, writeClasses, classDefs, compileLineNumbers
from PorkLexer import PorkLexer
def main(argv, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr):
errors = 0
if len(argv) > 1:
for arg in argv[1:]:
lexer = PorkLexer(ANTLRInputStream(open(arg)))
parser = Pork(CommonTokenStream(lexer))
parser.porkfile()
errors += parser._state.syntaxErrors
if not errors:
if True:
for clazz in classDefs.values():
fileName = arg[arg.rfind('/') + 1:]
print 'setting file name to ' + fileName
clazz.setSourceFile(fileName)
writeClasses()
classDefs.clear()
else:
lexer = PorkLexer(ANTLRInputStream(stdin))
parser = Pork(CommonTokenStream(lexer))
parser.porkfile()
errors = parser._state.syntaxErrors
if not errors:
writeClasses()
return errors
if __name__ == '__main__':
sys.exit(main(sys.argv))