def analyze(self): content = self.content[:] while content: stmt = content.pop(0) if isinstance(stmt, Contains): for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.module_subprogram[stmt.name] = stmt stmt = content.pop(0) while isinstance(stmt, Comment): stmt = content.pop(0) if not isinstance(stmt, EndModule): stmt.error('Expected END MODULE statement (analyzer).') continue stmt.analyze() if content: logger.info('Not analyzed content: %s' % content) # self.show_message('Not analyzed content: %s' % content) module_provides = self.a.module_provides for name, var in self.a.variables.items(): if var.is_public(): if name in module_provides: self.warning( 'module data object name conflict with %s, overriding.' % (name)) module_provides[name] = var return
def analyze(self): content = self.content[:] while content: stmt = content.pop(0) if isinstance(stmt, Contains): for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.module_subprogram[stmt.name] = stmt stmt = content.pop(0) while isinstance(stmt, Comment): stmt = content.pop(0) if not isinstance(stmt, EndModule): stmt.error('Expected END MODULE statement (analyzer).') continue stmt.analyze() if content: logger.info('Not analyzed content: %s' % content) # self.show_message('Not analyzed content: %s' % content) module_provides = self.a.module_provides for name, var in self.a.variables.items(): if var.is_public(): if name in module_provides: self.warning('module data object name conflict with %s, overriding.' % (name)) module_provides[name] = var return
def analyze(self): content = self.content[:] while content: stmt = content.pop(0) if isinstance(stmt, Contains): for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.module_subprogram[stmt.name] = stmt stmt = content.pop(0) assert isinstance(stmt, EndModule),`stmt` continue stmt.analyze() if content: self.show_message('Not analyzed content: %s' % content) #module_provides = self.a.module_provides #for name, var in self.a.variables.items(): # if var.is_public(): # if module_provides.has_key(name): # self.warning('module data object name conflict with %s, overriding.' % (name)) # module_provides[name] = var return
def analyze(self): content = self.content[:] if self.prefix: self.update_attributes(self.prefix.upper().split()) variables = self.a.variables for a in self.args: assert a not in variables if is_name(a): variables[a] = Variable(self, a) elif a == '*': variables[a] = Variable(self, a) # XXX: fix me appropriately else: raise AnalyzeError('argument must be a name or * but got %r' % (a)) if isinstance(self, Function): var = variables[self.result] = Variable(self, self.result) if self.typedecl is not None: var.set_type(self.typedecl) while content: stmt = content.pop(0) if isinstance(stmt, Contains): for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.internal_subprogram[stmt.name] = stmt stmt = content.pop(0) while isinstance(stmt, Comment): stmt = content.pop(0) assert isinstance(stmt, self.end_stmt_cls), ` stmt ` elif isinstance(stmt, self.end_stmt_cls): continue else: stmt.analyze() if content: logger.info('Not analyzed content: %s' % content) # self.show_message('Not analyzed content: %s' % content) parent_provides = self.parent.get_provides() if parent_provides is not None: if self.name in parent_provides: self.warning( 'module subprogram name conflict with %s, overriding.' % (self.name)) if self.is_public(): parent_provides[self.name] = self if self.is_recursive() and self.is_elemental(): self.warning( 'C1241 violation: prefix cannot specify both ELEMENTAL and RECURSIVE' ) return
def analyze(self): content = self.content[:] if self.prefix: self.update_attributes(self.prefix.upper().split()) variables = self.a.variables for a in self.args: assert a not in variables if is_name(a): variables[a] = Variable(self, a) elif a=='*': variables[a] = Variable(self, a) # XXX: fix me appropriately else: raise AnalyzeError('argument must be a name or * but got %r' % (a)) if isinstance(self, Function): var = variables[self.result] = Variable(self, self.result) if self.typedecl is not None: var.set_type(self.typedecl) while content: stmt = content.pop(0) if isinstance(stmt, Contains): stmt.analyze() # OC addition for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.internal_subprogram[stmt.name] = stmt stmt = content.pop(0) while isinstance (stmt, Comment): stmt = content.pop(0) assert isinstance(stmt, self.end_stmt_cls),`stmt` elif isinstance(stmt, self.end_stmt_cls): continue else: stmt.analyze() if content: logger.info('Not analyzed content: %s' % content) # self.show_message('Not analyzed content: %s' % content) parent_provides = self.parent.get_provides() if parent_provides is not None: if self.name in parent_provides: self.warning('module subprogram name conflict with %s, overriding.' % (self.name)) if self.is_public(): parent_provides[self.name] = self if self.is_recursive() and self.is_elemental(): self.warning('C1241 violation: prefix cannot specify both ELEMENTAL and RECURSIVE') return
def analyze(self): content = self.content[:] if self.prefix: self.update_attributes(prefix.upper().split()) variables = self.a.variables for a in self.args: assert not variables.has_key(a) assert is_name(a) variables[a] = Variable(self, a) if isinstance(self, Function): var = variables[self.result] = Variable(self, self.result) if self.typedecl is not None: var.set_type(self.typedecl) while content: stmt = content.pop(0) if isinstance(stmt, Contains): for stmt in filter_stmts(content, SubProgramStatement): stmt.analyze() self.a.internal_subprogram[stmt.name] = stmt stmt = content.pop(0) assert isinstance(stmt, self.end_stmt_cls),`stmt` elif isinstance(stmt, self.end_stmt_cls): continue else: stmt.analyze() if content: self.show_message('Not analyzed content: %s' % content) #parent_provides = self.parent.get_provides() #if parent_provides is not None: # if self.is_public(): # if parent_provides.has_key(self.name): # self.warning('module subprogram name conflict with %s, overriding.' % (self.name)) # parent_provides[self.name] = self return