class DeclParser:
- token_re = re.compile(r'(\d[x0-9a-fA-F.UL]*|\w+|\s+|.)')
+ token_re = re.compile(r'(\d[x0-9a-fA-F.UL]*|\w+|\s+|"[^"]*"|.)')
multi_comment_re = re.compile(r'/\*.*?\*/', flags = re.DOTALL)
single_comment_re = re.compile(r'//.*',)
self.consume()
type = 'Pointer(%s)' % type
name = self.consume()
- print '%s = Alias(%r, %s)' % (name, name, type)
+ print '%s = Alias("%s", %s)' % (name, name, type)
if self.match(','):
self.consume()
else:
name = self.consume()
self.consume('{')
- print '%s = Enum(%r, [' % (name, name)
+ print '%s = Enum("%s", [' % (name, name)
#value = 0
while self.lookahead() != '}':
if self.match(','):
self.consume(',')
tags = self.parse_tags()
- #print ' %r,\t# %s' % (name, value)
- print ' %r,' % (name,)
+ #print ' "%s",\t# %s' % (name, value)
+ print ' "%s",' % (name,)
#value += 1
self.consume('}')
self.consume('define')
name = self.consume()
value = self.consume()
- #print ' %r,\t# %s' % (name, value)
- print ' %r,' % (name,)
+ #print ' "%s",\t# %s' % (name, value)
+ print ' "%s",' % (name,)
return name, value
def parse_struct(self):
self.consume('struct')
name = self.consume()
- print '%s = Struct(%r, [' % (name, name)
+ print '%s = Struct("%s", [' % (name, name)
for type, name in self.parse_members():
- print ' (%s, %r),' % (type, name)
+ print ' (%s, "%s"),' % (type, name)
print '])'
print
else:
name = None
members = self.parse_members()
- return 'Union(%r, [%s])' % (name, ', '.join('%s, %r' % member for member in members))
+ return 'Union("%s", [%s])' % (name, ', '.join('%s, "%s"' % member for member in members))
def parse_members(self):
members = []
base = self.consume()
self.consume('{')
- print '%s = Interface(%r, %s)' % (name, name, base)
+ print '%s = Interface("%s", %s)' % (name, name, base)
print '%s.methods += [' % (name,)
while self.lookahead() != '}':
self.consume()
self.consume('0')
- print ' %s(%s, %r, [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
+ print ' %s(%s, "%s", [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
def parse_arg(self):
tags = self.parse_tags()
type, name = self.parse_named_type()
- arg = '(%s, %r)' % (type, name)
+ arg = '(%s, "%s")' % (type, name)
if 'out' in tags or 'inout' in tags:
arg = 'Out' + arg
tag = self.consume()
tags.append(tag)
self.consume(']')
+ if tags[0] == 'annotation':
+ assert tags[1] == '('
+ assert tags[3] == ')'
+ tags = tags[2]
+ assert tags[0] == '"'
+ assert tags[-1] == '"'
+ tags = tags[1:-1]
+ try:
+ tags, args = tags.split('(')
+ except ValueError:
+ pass
+ assert tags[0] == '_'
+ assert tags[-1] == '_'
+ tags = tags[1:-1]
+ tags = tags.lower()
+ tags = tags.split('_')
if self.lookahead().startswith('__'):
# Parse __in, __out, etc tags
tag = self.consume()[2:]
try:
int(length)
except ValueError:
- length = repr(length)
+ length = '"%s"' % length
type = 'Array(%s, %s)' % (type, length)
return type, name