コード例 #1
0
    def collect_class(self, tok):
        if tok.type == 'OPEN_BRACE':
            self.current_brace_level += 1
            self.mode = Mode.INSIDE_CLASS_OR_ENUM
            if self.namespace_stack:
                self.namespace_stack[-1].had_class = True
                info('HAD CLASS')
            else:
                warning('WARNING: Class at ROOT namespace found: ', self.path)

        elif tok.type == 'SEMI_COLON':
            self.switch_to_normal()

            # do not consider forward declarations in global scope
            # (they do not add anything to namespace)
            if not self.namespace_stack:
                # no need to clear_name_stack() cause it is empty
                return

            self.namespace_stack[-1].had_forward = True

            name = '::'.join(map(lambda c: c.current, self.namespace_stack))
            obj_name = ' '.join(map(lambda c: c.value, self.name_stack))
            info('HAD FORWARD', name, obj_name)
            self.clear_name_stack()
        else:
            self.name_stack.append(tok)
コード例 #2
0
ファイル: Parser.py プロジェクト: TLF-Thanos/tlf-core
 def _checkFuncOrVar(self):
     if has('OPEN_BRACE', self.nameStack) and has('CLOSE_BRACE',
                                                  self.nameStack):
         if self.namespaceStack:
             self.namespaceStack[-1].hadFuncOrVar = True
             info('HAD FUNC or VAR')
         else:
             functionName = ' '.join(map(lambda e: e.value, self.nameStack))
             info('WARNING: Probably function at ROOT namespace found: ',
                  self.path, functionName)
     if has('OPEN_SQUARE_BRACKET', self.nameStack) and has(
             'CLOSE_SQUARE_BRACKET', self.nameStack):
         if self.namespaceStack:
             self.namespaceStack[-1].hadFuncOrVar = True
             info('HAD FUNC or VAR')
         else:
             warning('WARNING: Unknown case: ', self.path,
                     ' '.join(map(lambda e: e.value, self.nameStack)))
コード例 #3
0
ファイル: Parser.py プロジェクト: TLF-Thanos/tlf-core
    def collectClass(self, tok):
        if tok.type == 'OPEN_BRACE':
            self.currentBraceLevel += 1
            self.mode = Mode.InsideClassOrEnum
            if self.namespaceStack:
                self.namespaceStack[-1].hadClass = True
                info('HAD CLASS')
            else:
                warning('WARNING: Class at ROOT namespace found: ', self.path)

        elif tok.type == 'SEMI_COLON':
            self.switchToNormal()
            self.namespaceStack[-1].hadForward = True

            name = '::'.join(map(lambda c: c.current, self.namespaceStack))
            objName = ' '.join(map(lambda c: c.value, self.nameStack))
            info('HAD FORWARD', name, objName)
            self.clearNameStack()
        else:
            self.nameStack.append(tok)
コード例 #4
0
    def collect_enum(self, tok):
        if tok.type == 'OPEN_BRACE':
            self.current_brace_level += 1
            self.mode = Mode.INSIDE_CLASS_OR_ENUM
            if self.namespace_stack:
                self.namespace_stack[-1].had_enum = True
                info('HAD ENUM')
            else:
                warning('WARNING: Enum at ROOT namespace found: ', self.path)

        elif tok.type == 'SEMI_COLON':
            self.switch_to_normal()
            self.namespace_stack[-1].had_forward = True

            name = '::'.join(map(lambda c: c.current, self.namespace_stack))
            obj_name = ' '.join(map(lambda c: c.value, self.name_stack))
            info('HAD FORWARD', name, obj_name)
            self.clear_name_stack()

        else:
            self.name_stack.append(tok)