Flow IMPORTS and EXPORTS through to sema. Not used there yet.
authorKim Grasman <kim.grasman@gmail.com>
Fri, 20 Sep 2013 20:41:33 +0000 (22:41 +0200)
committerKim Grasman <kim.grasman@gmail.com>
Fri, 20 Sep 2013 20:41:33 +0000 (22:41 +0200)
asn1ate/parser.py
asn1ate/sema.py

index 046d6a9..814f92e 100644 (file)
@@ -300,9 +300,10 @@ def _build_asn1_grammar():
     symbols_from_module = symbol_list + Suppress(FROM) + global_module_reference
     symbols_from_module_list = OneOrMore(symbols_from_module)
     symbols_imported = Optional(symbols_from_module_list)
-    imports = Optional(EXPORTS + symbol_list + Suppress(';')) + Optional(IMPORTS + symbols_imported + Suppress(';')) 
+    exports = Optional(Suppress(EXPORTS) + symbol_list + Suppress(';'))
+    imports = Optional(Suppress(IMPORTS) + symbols_imported + Suppress(';'))
 
-    module_body = (imports + assignment_list) | empty
+    module_body = (exports + imports + assignment_list) | empty
     module_defaults = Suppress(tag_default + extension_default)  # we don't want these in the AST
     module_identifier = module_reference + definitive_identifier
     module_definition = module_identifier + DEFINITIONS + module_defaults + '::=' + BEGIN + module_body + END
@@ -349,6 +350,7 @@ def _build_asn1_grammar():
     definitive_number_form.setParseAction(annotate('DefinitiveNumberForm'))
     definitive_name_and_number_form.setParseAction(annotate('DefinitiveNameAndNumberForm'))
     imports.setParseAction(annotate('Imports'))
+    exports.setParseAction(annotate('Exports'))
     assignment_list.setParseAction(annotate('AssignmentList'))
 
     return module_definition
index 73aff1e..736c8cb 100644 (file)
@@ -133,7 +133,7 @@ class Module(object):
         self.name = module_reference.elements[0]
 
         if module_body.elements:
-            _, assignments = module_body.elements
+            _, _, assignments = module_body.elements
             self.assignments = [_create_sema_node(token) for token in assignments.elements]
         else:
             self.assignments = []