2 files changed, 7 insertions(+), 2 deletions(-)
viff/sfdl/grammar.py | 4 ++++
viff/test/sfdl/test_grammar.py | 5 +++--
# HG changeset patch
# User Martin Geisler <[EMAIL PROTECTED]>
# Date 1227518476 -3600
# Node ID 01b0e928dcbeea1b22329f4356840f3e49fefe30
# Parent ad84b1d50412b49b96041aae42210635723d89bc
Store type declarations in global scope.
diff --git a/viff/sfdl/grammar.py b/viff/sfdl/grammar.py
--- a/viff/sfdl/grammar.py
+++ b/viff/sfdl/grammar.py
@@ -89,6 +89,7 @@
int_type.setParseAction(self.parse_int_type)
data_type.setParseAction(self.parse_data_type)
+ type_dec.setParseAction(self.parse_type_dec)
self.expr = expr = Forward()
self.qual_ident = qual_ident = ident \
@@ -172,3 +173,6 @@
return attrdict(length=toks[1])
else:
return toks
+
+ def parse_type_dec(self, s, loc, toks):
+ self.global_scope[toks[1]] = toks[2]
diff --git a/viff/test/sfdl/test_grammar.py b/viff/test/sfdl/test_grammar.py
--- a/viff/test/sfdl/test_grammar.py
+++ b/viff/test/sfdl/test_grammar.py
@@ -156,8 +156,9 @@
def test_type_dec(self):
self.assertParse(self.grammar.type_dec, "type x = Boolean;",
['type', 'x', 'Boolean'])
- self.assertParse(self.grammar.type_dec, "type x = AnotherType[4];",
- ['type', 'x', attrdict(length=4)])
+ self.assertParse(self.grammar.type_dec, "type xs = AnotherType[4];",
+ ['type', 'xs', attrdict(length=4)])
+ self.assertParse(self.grammar.const_expr, "xs.length", [4])
def test_qual_ident(self):
_______________________________________________
viff-patches mailing list
[email protected]
http://lists.viff.dk/listinfo.cgi/viff-patches-viff.dk