Exemplo n.º 1
0
    def parse_locals(self, context):
        from ParserContext import ParseException
        locals = []
        token = context.get_next_token()
        if token != 'init':
            raise ParseException(
                'Expected init, found ' +
                token)  # fixme - only required for verifiable methods
        token = context.get_next_token()
        if token != '(':
            raise ParseException('Expected (, found' + token)
        token = context.get_next_token()
        lastToken = ''
        while not token.endswith(')'):
            v = Variable()
            if token.startswith('['):
                v.alias = token[1:-1]
                lastToken = token
                token = context.get_next_token()
            if token == 'class':
                v2 = ReferenceType()
                v2.alias = v.alias
                v2.type = Types.resolve_type(context.get_next_token())
                v = v2
            elif token.endswith('[]'):  # array
                v.type = Types.Array
                v.arrayType = Types.resolve_type(token[:-2])
            else:
                v.type = Types.BuiltInTypes[token]  # fixme - non-builtin types

            locals.append(v)
            lastToken = token
            token = context.get_next_token()
            #if token.endswith(')'):
            #    v.name = token[:-1]
            #    token = ')'
            #else:
            v.name = token
            lastToken = token
            token = context.get_next_token()

        return locals
Exemplo n.º 2
0
 def parse_locals(self, context):
     from ParserContext import ParseException
     locals = []
     token = context.get_next_token()
     if token != 'init':
         raise ParseException('Expected init, found ' + token) # fixme - only required for verifiable methods
     token = context.get_next_token()
     if token != '(':
         raise ParseException('Expected (, found' + token)
     token = context.get_next_token()
     lastToken = ''
     while not token.endswith(')'):
         v = Variable()
         if token.startswith('['):
             v.alias = token[1:-1]
             lastToken = token
             token = context.get_next_token()
         if token == 'class':
             v2 = ReferenceType()
             v2.alias = v.alias
             v2.type = Types.resolve_type(context.get_next_token())
             v = v2
         elif token.endswith('[]'): # array
             v.type = Types.Array
             v.arrayType = Types.resolve_type(token[:-2])
         else:
             v.type = Types.BuiltInTypes[token] # fixme - non-builtin types
         
         locals.append(v)
         lastToken = token
         token = context.get_next_token()
         #if token.endswith(')'):
         #    v.name = token[:-1]
         #    token = ')'
         #else:
         v.name = token
         lastToken= token
         token = context.get_next_token()
         
     return locals