Sema and codegen support for SET.
authorKim Grasman <kim.grasman@gmail.com>
Sun, 28 Jul 2013 21:55:07 +0000 (23:55 +0200)
committerKim Grasman <kim.grasman@gmail.com>
Sun, 28 Jul 2013 21:55:07 +0000 (23:55 +0200)
asn1ate/parser.py
asn1ate/pyasn1gen.py
asn1ate/sema.py

index 36429d7..6df2c3f 100644 (file)
@@ -279,6 +279,7 @@ def _build_asn1_grammar():
     simple_type.setParseAction(annotate('SimpleType'))
     choice_type.setParseAction(annotate('ChoiceType'))
     sequence_type.setParseAction(annotate('SequenceType'))
+    set_type.setParseAction(annotate('SetType'))
     value_list_type.setParseAction(annotate('ValueListType'))
     bitstring_type.setParseAction(annotate('BitStringType'))
     referenced_type.setParseAction(annotate('ReferencedType'))
index 0fdfd2c..618b23b 100644 (file)
@@ -62,6 +62,7 @@ class Pyasn1Backend(object):
         self.decl_generators = {
             ChoiceType: self.decl_constructed_type,
             SequenceType: self.decl_constructed_type,
+            SetType: self.decl_constructed_type,
             TaggedType: self.decl_tagged_type,
             SimpleType: self.decl_simple_type,
             UserDefinedType: self.decl_userdefined_type,
@@ -299,6 +300,7 @@ _ASN1_BUILTIN_TYPES = {
     'OCTET STRING': 'univ.OctetString',
     'CHOICE': 'univ.Choice',
     'SEQUENCE': 'univ.Sequence',
+    'SET': 'univ.Set',
     'SEQUENCE OF': 'univ.SequenceOf',
     'SET OF': 'univ.SetOf',
     'UTF8String': 'char.UTF8String',
index ff733cb..853f4ee 100644 (file)
@@ -241,6 +241,11 @@ class SequenceType(ConstructedType):
         super(SequenceType, self).__init__(elements)
 
 
+class SetType(ConstructedType):
+    def __init__(self, elements):
+        super(SetType, self).__init__(elements)
+
+
 class SequenceOfType(object):
     def __init__(self, elements):
         type_name, type_token = elements
@@ -575,6 +580,8 @@ def _create_sema_node(token):
         return SequenceType(token.elements)
     elif token.ty == 'ChoiceType':
         return ChoiceType(token.elements)
+    elif token.ty == 'SetType':
+        return SetType(token.elements)
     elif token.ty == 'SequenceOfType':
         return SequenceOfType(token.elements)
     elif token.ty == 'SetOfType':