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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
--- ast/cxx.py.orig 2017-10-16 21:39:41 UTC
+++ ast/cxx.py
@@ -5,7 +5,7 @@
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.
-import cStringIO as StringIO
+import io as StringIO
from casing import title
from license import C_LICENSE_COMMENT
@@ -23,7 +23,7 @@ class Printer(object):
self._fields = []
def start_file(self):
- print C_LICENSE_COMMENT + '''/** @generated */
+ print(C_LICENSE_COMMENT + '''/** @generated */
#pragma once
#include "AstNode.h"
@@ -42,14 +42,14 @@ namespace ast {
struct CDeleter {
void operator()(const char *p) const { free((void *)p); }
};
-'''
+''')
def end_file(self):
- print
- print self._deferredOutput.getvalue()
- print '}'
- print '}'
- print '}'
+ print()
+ print(self._deferredOutput.getvalue())
+ print('}')
+ print('}')
+ print('}')
def _base_class(self, type):
return self._bases.get(type, 'Node')
@@ -58,8 +58,8 @@ struct CDeleter {
self._type_name = name
base = self._base_class(name)
# non-deferred!
- print 'class %s;' % name
- print >> self._deferredOutput, 'class %s : public %s {' % (name, base)
+ print('class %s;' % name)
+ print('class %s : public %s {' % (name, base), file=self._deferredOutput)
self._fields = []
def field(self, type, name, nullable, plural):
@@ -69,18 +69,18 @@ struct CDeleter {
def end_type(self, name):
self._print_fields()
- print >> self._deferredOutput, ' public:'
+ print(' public:', file=self._deferredOutput)
self._print_constructor()
- print >> self._deferredOutput
+ print(file=self._deferredOutput)
self._print_destructor_prototype()
- print >> self._deferredOutput
+ print(file=self._deferredOutput)
self._print_noncopyable()
- print >> self._deferredOutput
+ print(file=self._deferredOutput)
self._print_getters()
- print >> self._deferredOutput, ' void accept(visitor::AstVisitor *visitor) const override;'
- print >> self._deferredOutput, '};'
- print >> self._deferredOutput
- print >> self._deferredOutput
+ print(' void accept(visitor::AstVisitor *visitor) const override;', file=self._deferredOutput)
+ print('};', file=self._deferredOutput)
+ print(file=self._deferredOutput)
+ print(file=self._deferredOutput)
self._type_name = None
self._fields = []
@@ -97,7 +97,7 @@ struct CDeleter {
storage_type = self._storage_type(type)
if plural:
storage_type = 'std::unique_ptr<std::vector<%s>>' % storage_type
- print >> self._deferredOutput, ' %s %s_;' % (storage_type, name)
+ print(' %s %s_;' % (storage_type, name), file=self._deferredOutput)
def _ctor_singular_type(self, type):
if type == 'string':
@@ -111,28 +111,28 @@ struct CDeleter {
return 'std::vector<%s> *' % self._storage_type(type)
def _print_constructor(self):
- print >> self._deferredOutput, ' explicit %s(' % self._type_name
- print >> self._deferredOutput, ' const yy::location &location%s' % (',' if self._fields else '')
+ print(' explicit %s(' % self._type_name, file=self._deferredOutput)
+ print(' const yy::location &location%s' % (',' if self._fields else ''), file=self._deferredOutput)
def ctor_arg(type, name, plural):
if plural:
ctor_type = self._ctor_plural_type(type)
else:
ctor_type = self._ctor_singular_type(type)
return ' %s %s' % (ctor_type, name)
- print >> self._deferredOutput, ',\n'.join(ctor_arg(type, name, plural)
- for (type, name, nullable, plural) in self._fields)
- print >> self._deferredOutput, ' )'
+ print(',\n'.join(ctor_arg(type, name, plural)
+ for (type, name, nullable, plural) in self._fields), file=self._deferredOutput)
+ print(' )', file=self._deferredOutput)
def ctor_init(type, name, plural):
# Strings are const char *, just pass.
# Vectors are passed by pointer and we take ownership.
# Node types are passed in by pointer and we take ownership.
value = name
return ' %s_(%s)' % (name, value)
- print >> self._deferredOutput, ' : %s(location)%s' % (self._base_class(self._type_name), ',' if self._fields else '')
- print >> self._deferredOutput, ',\n'.join(ctor_init(type, name, plural)
+ print(' : %s(location)%s' % (self._base_class(self._type_name), ',' if self._fields else ''), file=self._deferredOutput)
+ print(',\n'.join(ctor_init(type, name, plural)
for (type, name, nullable, plural)
- in self._fields)
- print >> self._deferredOutput, ' {}'
+ in self._fields), file=self._deferredOutput)
+ print(' {}', file=self._deferredOutput)
def _getter_type(self, type, nullable, plural):
if plural and nullable:
@@ -165,31 +165,31 @@ struct CDeleter {
def _print_getters(self):
for (type, name, nullable, plural) in self._fields:
- print >> self._deferredOutput, ' %s get%s() const' % (
+ print(' %s get%s() const' % (
self._getter_type(type, nullable, plural),
- title(name))
- print >> self._deferredOutput, ' { return %s; }' % (
- self._getter_value_to_return(name + '_', type, nullable, plural))
- print >> self._deferredOutput
+ title(name)), file=self._deferredOutput)
+ print(' { return %s; }' % (
+ self._getter_value_to_return(name + '_', type, nullable, plural)), file=self._deferredOutput)
+ print(file=self._deferredOutput)
def _print_destructor_prototype(self):
- print >> self._deferredOutput, ' ~%s() {}' % self._type_name
+ print(' ~%s() {}' % self._type_name, file=self._deferredOutput)
def _print_noncopyable(self):
- print >> self._deferredOutput, ' %s(const %s&) = delete;' % (
- self._type_name, self._type_name)
- print >> self._deferredOutput, ' %s& operator=(const %s&) = delete;' % (
- self._type_name, self._type_name)
+ print(' %s(const %s&) = delete;' % (
+ self._type_name, self._type_name), file=self._deferredOutput)
+ print(' %s& operator=(const %s&) = delete;' % (
+ self._type_name, self._type_name), file=self._deferredOutput)
def start_union(self, name):
self._type_name = name
# non-deferred!
- print 'class %s;' % name
- print >> self._deferredOutput, 'class %s : public Node {' % name
- print >> self._deferredOutput, ' public:'
+ print('class %s;' % name)
+ print('class %s : public Node {' % name, file=self._deferredOutput)
+ print(' public:', file=self._deferredOutput)
self._print_constructor()
- print >> self._deferredOutput, '};'
- print >> self._deferredOutput
+ print('};', file=self._deferredOutput)
+ print(file=self._deferredOutput)
def union_option(self, type):
assert type not in self._bases, '%s cannot appear in more than one union!' % type
|