~andreas-dalsgaard/pyuppaal/ulpTranslate

« back to all changes in this revision

Viewing changes to pyuppaal/ulp/ulpTranslate.py

  • Committer: Andreas Dalsgaard
  • Date: 2010-02-23 11:35:31 UTC
  • Revision ID: andreas.dalsgaard@gmail.com-20100223113531-tu558szk9mskz2pz
* Layout
* Fix initial value of arrays

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
                self.error('Unsupported node: '+node.type)
68
68
 
69
69
    def visit_rootNode(self, node, level = 0):
 
70
        print 'from itertools import repeat'
 
71
        print ''
70
72
        for s in node.children:
71
73
            self.visit_translate(s)
72
74
 
73
75
    def visit_function(self, node, level = 0):
74
 
        print '    '*level, 'def', node.leaf[1].leaf, '(',
 
76
        print ''
 
77
        print '    '*level+'def', node.leaf[1].leaf, '(',
75
78
        self.print_parameters(node.leaf[2])
76
79
        print '):'
77
80
        for s in node.children:
86
89
                print ',',
87
90
 
88
91
    def visit_assignment(self, node, level = 0):
89
 
        print '    '*level,
 
92
        sys.stdout.write('    '*level)
90
93
        self.visit_translate(node.leaf)
91
 
        print '=', 
 
94
        print ' = ', 
92
95
        self.visit_translate(node.children[0])
93
96
        print 
94
97
 
95
98
 
96
99
    def visit_varDecl(self, node, level = 0):
97
 
        print '    '*level,
 
100
        sys.stdout.write('    '*level)
98
101
        for c in node.children:
99
102
            if c.leaf:
100
103
                if node.leaf.type in ['TypeInt', 'TypeConstInt', 'TypeConstInt',  \
101
104
                                'TypeBoolPointer', 'TypeConstBool', 'TypeBool']:
102
 
                    if len(c.children) != 0: # 'IsArray'
103
 
                        print c.leaf, '= list(range(0,',
104
 
                        self.visit_expression(c.leaf.children[0].leaf)
105
 
                        print '))'
 
105
                    if len(c.children) != 0:
 
106
                        if c.children[0].type == 'Index':
 
107
                            print c.leaf, '= list(repeat(0, ', 
 
108
                            self.visit_expression(c.children[0].leaf)
 
109
                            sys.stdout.write('))')
 
110
                            print ''
 
111
                        else:
 
112
                            self.error('Unexpected type of identifier child: '+c.children[0].type)
106
113
                    else:
107
114
                        print c.leaf, '= 0'
108
115
                else:
113
120
    
114
121
    def visit_expressionElement(self, node, level = 0):
115
122
        if node.type == 'Number':
116
 
            print node.leaf,
 
123
            sys.stdout.write(node.leaf)
117
124
        elif node.type == 'Plus':
118
125
            print '(', 
119
126
            self.visit_expressionElement(node.children[0])
153
160
        self.visit_expressionElement(node.children[0])
154
161
 
155
162
    def visit_identifier(self, node, level = 0):
156
 
        print node.leaf, 
 
163
        sys.stdout.write(node.leaf)
157
164
            
158
165
    def error(self, error):
159
166
        sys.stderr.write(error)