-
Notifications
You must be signed in to change notification settings - Fork 7
/
DriverGen.py
62 lines (57 loc) · 2.35 KB
/
DriverGen.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
51
52
53
54
55
56
57
58
59
60
61
62
#-------------------------------------------------------------------------
#ParserGen.py -- Main compiler file generation routines.
#Compiler Generator Coco/R,
#Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz
#extended by M. Loeberbauer & A. Woess, Univ. of Linz
#ported from Java to Python by Ronald Longo
#
#This program is free software; you can redistribute it and/or modify it
#under the terms of the GNU General Public License as published by the
#Free Software Foundation; either version 2, or (at your option) any
#later version.
#
#This program is distributed in the hope that it will be useful, but
#WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
#or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
#for more details.
#
#You should have received a copy of the GNU General Public License along
#with this program; if not, write to the Free Software Foundation, Inc.,
#59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
#As an exception, it is allowed to write an extension of Coco/R that is
#used as a plugin in non-free software.
#
#If not otherwise stated, any source code generated by Coco/R (other than
#Coco/R itself) does not fall under the GNU General Public License.
#-------------------------------------------------------------------------*/
import os
import os.path
from Errors import Errors
from Core import Tab
from CodeGenerator import CodeGenerator
class DriverGen( object ):
EOF = -1
CR = '\r'
LF = '\n'
srcName = '' # name of the attributed grammar file
srcDir = '' # directory of attributed grammar file
codeGen = CodeGenerator( )
@staticmethod
def WriteDriver( ):
fr = str( Tab.gramSy.name + '.frame' )
fn = Tab.gramSy.name + '.py'
fn = str(fn)
DriverGen.codeGen.openFiles( [ fr, 'Driver.frame' ], Tab.gramSy.name + '.atg', fn, True )
DriverGen.codeGen.CopyFramePart( '-->begin' )
#DriverGen.codeGen.CopyFramePart( '-->class' )
#DriverGen.codeGen.write( Tab.gramSy.name )
DriverGen.codeGen.CopyFramePart( '$$$' )
DriverGen.codeGen.close( )
os.chmod(fn, 0755)
@staticmethod
def Init( f, dir ):
assert isinstance( f, str )
assert isinstance( dir, str )
DriverGen.srcName = f
DriverGen.srcDir = dir