Пример #1
0
 def grammar_stmt(self, token, buffer):
     tag, left, right, sublist = token
     map = singleMap(sublist)
     grammar = Grammar()
     grammar.name = getString(map['varname'], buffer)
     grammar.statements = self._suite(map['suite'], buffer)
     if 'inherit' in map:
         grammar.inherit = self._inherit(map['inherit'], buffer)
     self.context.grammars[grammar.name] = grammar
Пример #2
0
 def grammar_stmt(self, token, buffer):
     tag, left, right, sublist = token
     map = singleMap(sublist)
     grammar = Grammar()
     grammar.name = getString(map['varname'], buffer)
     grammar.statements = self._suite(map['suite'], buffer)
     if 'inherit' in map:
         grammar.inherit = self._inherit(map['inherit'], buffer)
     self.context.grammars[grammar.name] = grammar
Пример #3
0
    def instance_list(self, (tag, start, stop, subtags), buffer):
        """
        Process C{complex_content} production.

        @return:  a 2-tuple of (keywords, parameter lists), where keywords is
            the list of KEYWORD occurrences and parameter lists is a list of
            strings (each of which is an unparsed parameter list).
        """
        inst = dp.multiMap((tag, start, stop, subtags), buffer)
        return inst.get("KEYWORD"), inst.get("parameter_list")

    def simple_instance(self, (tag, start, stop, subtags), buffer):
        """
        Process C{simple_instance} production.
        """
        inst = dp.singleMap(subtags, self, buffer)
        iname = int(inst.get("ENTITY_INSTANCE_NAME"))
        self.res["contents"][iname] = inst.get("parameter_list")
        self.res["insttype"][iname] = inst.get("KEYWORD")
        self.res["typeinst"][inst.get("KEYWORD")].append(iname)

    def complex_instance(self, (tag, start, stop, subtags), buffer):
        """
        Process C{complex_instance} production.
        """
        inst = dp.singleMap(subtags, self, buffer)
        iname = int(inst.get("ENTITY_INSTANCE_NAME"))
        self.res["contents"][iname] = inst.get("parameter_list")
        self.res["insttype"][iname] = "complex_type"
        self.res["typeinst"][inst.get("KEYWORD")].append(iname)
Пример #4
0
 def parameters(self, value, buffer_):  # @UnusedVariable
     # value = (tag, left, right, taglist)
     _av = singleMap(value[3], self, buffer_)
     if len(_av) == 1 and type(_av) in [dict] and "parameter_list" in _av:
         return {'parameters': _av["parameter_list"]}
     return {'parameters': _av}
Пример #5
0
 def array_declaration(self, value, buffer_):  # @UnusedVariable
     # value = (tag, left, right, taglist)
     return singleMap(value[3], self, buffer_)
Пример #6
0
 def comment(self, value, buffer_):  # @UnusedVariable
     # value = (tag, left, right, taglist)
     return {'comment': singleMap(value[3], self, buffer_)}
Пример #7
0
 def designation(self, value, buffer_):  # @UnusedVariable
     # value = (tag, left, right, taglist)
     return {'designation': singleMap(value[3], self, buffer_)}
Пример #8
0
 def data_definition(self, value, buffer_):
     # value = (tag, left, right, taglist)
     return singleMap(value[3], self, buffer_)
Пример #9
0
 def parameter(self, value, buffer_):  # @UnusedVariable
     # value = (tag, left, right, taglist)
     return singleMap(value[3], self, buffer_)
Пример #10
0
    def instance_list(self, (tag, start, stop, subtags), buffer):
        """
        Process C{complex_content} production.

        @return:  a 2-tuple of (keywords, parameter lists), where keywords is
            the list of KEYWORD occurrences and parameter lists is a list of
            strings (each of which is an unparsed parameter list).
        """
        inst = dp.multiMap((tag, start, stop, subtags), buffer)
        return inst.get('KEYWORD'), inst.get('parameter_list')

    def simple_instance(self, (tag, start, stop, subtags), buffer):
        """
        Process C{simple_instance} production.
        """
        inst = dp.singleMap(subtags, self, buffer)
        iname = int(inst.get('ENTITY_INSTANCE_NAME'))
        self.res['contents'][iname] = inst.get('parameter_list')
        self.res['insttype'][iname] = inst.get('KEYWORD')
        self.res['typeinst'][inst.get('KEYWORD')].append(iname)

    def complex_instance(self, (tag, start, stop, subtags), buffer):
        """
        Process C{complex_instance} production.
        """
        inst = dp.singleMap(subtags, self, buffer)
        iname = int(inst.get('ENTITY_INSTANCE_NAME'))
        self.res['contents'][iname] = inst.get('parameter_list')
        self.res['insttype'][iname] = 'complex_type'
        self.res['typeinst'][inst.get('KEYWORD')].append(iname)
Пример #11
0
            elif tag == 'function':
                statement = self._function(token, buffer)
            else:
                raise Exception('BUG: invalid token %s' % tag)
            statements.append(statement)
        return statements

    def define_stmt(self, (tag, left, right, sublist), buffer):
        name_tup, value_tup = sublist
        value_tag           = value_tup[0]
        name                = getString(name_tup,   buffer)
        value               = getString(value_tup,  buffer)
        if value_tag == 'regex':
            value = self._regex(value_tup, buffer)
        elif value_tag == 'varname':
            if not self.context.lexicon.has_key(value):
                _error(buffer, value_tup[1], 'no such variable')
            value = self.context.lexicon[value]
        else:
            raise Exception('BUG: invalid token %s' % value_tag)
        self.context.lexicon[name] = value

    def grammar_stmt(self, (tag, left, right, sublist), buffer):
        map                = singleMap(sublist)
        grammar            = Grammar()
        grammar.name       = getString(map['varname'], buffer)
        grammar.statements = self._suite(map['suite'], buffer)
        if map.has_key('inherit'):
            grammar.inherit = self._inherit(map['inherit'], buffer)
        self.context.grammars[grammar.name] = grammar
Пример #12
0
            elif tag == 'function':
                statement = self._function(token, buffer)
            else:
                raise Exception('BUG: invalid token %s' % tag)
            statements.append(statement)
        return statements

    def define_stmt(self, (tag, left, right, sublist), buffer):
        name_tup, value_tup = sublist
        value_tag           = value_tup[0]
        name                = getString(name_tup,   buffer)
        value               = getString(value_tup,  buffer)
        if value_tag == 'regex':
            value = self._regex(value_tup, buffer)
        elif value_tag == 'varname':
            if not self.context.lexicon.has_key(value):
                _error(buffer, value_tup[1], 'no such variable')
            value = self.context.lexicon[value]
        else:
            raise Exception('BUG: invalid token %s' % value_tag)
        self.context.lexicon[name] = value

    def grammar_stmt(self, (tag, left, right, sublist), buffer):
        map                = singleMap(sublist)
        grammar            = Grammar()
        grammar.name       = getString(map['varname'], buffer)
        grammar.statements = self._suite(map['suite'], buffer)
        if map.has_key('inherit'):
            grammar.inherit = self._inherit(map['inherit'], buffer)
        self.context.grammars[grammar.name] = grammar