@@ -76,12 +76,18 @@ def parse(tokens):
return tokens[0], tokens[1:]
def evaluate(string):
- return parse(map(lambda x: x, tokenize(string)))[0]
+ expr_eval = parse(map(lambda x: x, tokenize(string)))[0]
+
+ if expr_eval.has_key('enum'):
+ add_enum(expr_eval['enum'])
+ elif expr_eval.has_key('union'):
+ add_enum('%sKind' % expr_eval['union'])
+
+ return expr_eval
def parse_schema(fp):
exprs = []
expr = ''
- expr_eval = None
for line in fp:
if line.startswith('#') or line == '\n':
@@ -90,23 +96,13 @@ def parse_schema(fp):
if line.startswith(' '):
expr += line
elif expr:
- expr_eval = evaluate(expr)
- if expr_eval.has_key('enum'):
- add_enum(expr_eval['enum'])
- elif expr_eval.has_key('union'):
- add_enum('%sKind' % expr_eval['union'])
- exprs.append(expr_eval)
+ exprs.append(evaluate(expr))
expr = line
else:
expr += line
if expr:
- expr_eval = evaluate(expr)
- if expr_eval.has_key('enum'):
- add_enum(expr_eval['enum'])
- elif expr_eval.has_key('union'):
- add_enum('%sKind' % expr_eval['union'])
- exprs.append(expr_eval)
+ exprs.append(evaluate(expr))
return exprs