Пример #1
0
    def values(self, tree):
        """
        Parses a values subtree
        """
        subtree = tree.child(0)
        if hasattr(subtree, 'data'):
            if subtree.data == 'string':
                return self.string(subtree)
            elif subtree.data == 'boolean':
                return self.boolean(subtree)
            elif subtree.data == 'list':
                return self.list(subtree)
            elif subtree.data == 'number':
                return self.number(subtree)
            elif subtree.data == 'time':
                return self.time(subtree)
            elif subtree.data == 'map':
                return self.map(subtree)
            elif subtree.data == 'regular_expression':
                return self.regular_expression(subtree)
            elif subtree.data == 'types':
                return self.types(subtree)
            elif subtree.data == 'void':
                return None

        internal_assert(subtree.type == 'NAME')
        return self.path(tree)
Пример #2
0
    def values(self, tree):
        """
        Parses a values subtree
        """
        subtree = tree.child(0)
        if hasattr(subtree, "data"):
            if subtree.data == "string":
                return self.string(subtree)
            elif subtree.data == "boolean":
                return self.boolean(subtree)
            elif subtree.data == "list":
                return self.list(subtree)
            elif subtree.data == "number":
                return self.number(subtree)
            elif subtree.data == "time":
                return self.time(subtree)
            elif subtree.data == "map":
                return self.map(subtree)
            elif subtree.data == "regular_expression":
                return self.regular_expression(subtree)
            elif subtree.data == "types":
                return self.types(subtree)
            elif subtree.data == "null":
                return None

        internal_assert(subtree.type == "NAME")
        return self.path(tree)
Пример #3
0
 def fake_base_expression(self, tree, parent):
     """
     Process a fake base expression which can only be an expression or path
     as mutations and service calls have been replaced with fake paths.
     """
     if tree.expression:
         return self.objects.expression(tree.expression)
     else:
         internal_assert(tree.child(0).data == "path")
         return self.objects.entity(tree)
Пример #4
0
 def map(self, tree):
     items = []
     for item in tree.children:
         child = item.child(0)
         if child.data == 'string':
             key = self.string(child)
         elif child.data == 'number':
             key = self.number(child)
         elif child.data == 'boolean':
             key = self.boolean(child)
         else:
             internal_assert(child.data == 'path')
             key = self.path(child)
         value = self.base_expression(item.child(1))
         items.append([key, value])
     return {'$OBJECT': 'dict', 'items': items}
Пример #5
0
    def map(self, tree):
        items = []
        for item in tree.children:
            child = item.child(0)
            if child.data == "string":
                key = self.string(child)
            elif child.data == "number":
                key = self.number(child)
            else:
                internal_assert(child.data == "path")
                key = self.path(child)
            value = self.base_expression(item.child(1))
            items.append(f"{key}: {value}")

        sep = ", "
        return f"{{{sep.join(items)}}}"
Пример #6
0
    def map(self, tree):
        items = []
        for item in tree.children:
            child = item.child(0)
            if child.data == 'string':
                key = self.string(child)
            elif child.data == 'number':
                key = self.number(child)
            else:
                internal_assert(child.data == 'path')
                key = self.path(child)
            value = self.base_expression(item.child(1))
            items.append(f'{key}: {value}')

        sep = ', '
        return f'{{{sep.join(items)}}}'
Пример #7
0
 def map(self, tree):
     items = []
     for item in tree.children:
         child = item.child(0)
         if child.data == "string":
             key = self.string(child)
         elif child.data == "number":
             key = self.number(child)
         elif child.data == "boolean":
             key = self.boolean(child)
         else:
             internal_assert(child.data == "path")
             key = self.path(child)
         value = self.base_expression(item.child(1))
         items.append([key, value])
     return {"$OBJECT": "dict", "items": items}
Пример #8
0
 def base_expression_assignment(self, tree, parent, position):
     """
     Compiles a base expression into an expression, service or mutation
     """
     service = tree.service
     if service:
         path = self.objects.names(service.path)
         internal_assert(not self.lines.is_variable_defined(path))
         self.service(service, None, parent)
     elif tree.mutation:
         if tree.mutation.path:
             self.mutation_block(tree.mutation, parent)
         else:
             self.mutation_block(tree, parent)
         return
     elif tree.expression:
         args = [self.objects.expression(tree.expression)]
         self.lines.append("expression", position, args=args, parent=parent)
         return
     else:
         internal_assert(tree.call_expression)
         exp = tree.call_expression
         self.call_expression(exp, parent)
         return
Пример #9
0
def test_internal_assert_0():
    with raises(InternalCompilerError) as e:
        internal_assert(0)
    assert e.value.message == "Internal Error"
Пример #10
0
def test_internal_assert_equal():
    with raises(InternalCompilerError) as e:
        internal_assert(1, 2)
    assert e.value.message == "1 != 2"