public void preBind() { try { preBindeding = true; try { moduleContext.pushErrors(); IMemberBoundNode memberBoundNode = XlsBinder.this.beginBind(tableSyntaxNode, module, openl, moduleContext); childrens[index] = memberBoundNode; if (memberBoundNode != null) { try { memberBoundNode.addTo(module); } catch (OpenlNotCheckedException e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tableSyntaxNode); processError(error, tableSyntaxNode, moduleContext); } } } finally { List<SyntaxNodeException> syntaxNodeExceptions = moduleContext.popErrors(); for (SyntaxNodeException e : syntaxNodeExceptions) { addModuleContextError(e); // Workaround for syntax node // errors } } if (recursiveOpenMethodPreBinderMethods != null) { for (RecursiveOpenMethodPreBinder recursiveOpenMethodPreBinderMethod : recursiveOpenMethodPreBinderMethods) { recursiveOpenMethodPreBinderMethod.preBind(); } } } finally { preBindeding = false; } }
protected IBoundNode bindInternal( XlsModuleSyntaxNode moduleSyntaxNode, XlsModuleOpenClass module, TableSyntaxNode[] tableSyntaxNodes, OpenL openl, RulesModuleBindingContext moduleContext) { IMemberBoundNode[] children = new IMemberBoundNode[tableSyntaxNodes.length]; OpenMethodHeader[] openMethodHeaders = new OpenMethodHeader[tableSyntaxNodes.length]; for (int i = 0; i < tableSyntaxNodes.length; i++) { // Add methods that should be compiled recursively if (isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { openMethodHeaders[i] = addMethodHeaderToContext( module, tableSyntaxNodes[i], openl, moduleContext, children, i); } } for (int i = 0; i < tableSyntaxNodes.length; i++) { if (!isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { IMemberBoundNode child = beginBind(tableSyntaxNodes[i], module, openl, moduleContext); children[i] = child; if (child != null) { try { child.addTo(module); } catch (OpenlNotCheckedException e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tableSyntaxNodes[i]); processError(error, tableSyntaxNodes[i], moduleContext); } } } } for (int i = 0; i < children.length; i++) { if (isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { moduleContext.preBindMethod(openMethodHeaders[i]); } } for (int i = 0; i < children.length; i++) { if (children[i] != null) { finilizeBind(children[i], tableSyntaxNodes[i], moduleContext); } } processModuleContextErrors(moduleContext); if (moduleContext.isExecutionMode()) { removeDebugInformation(children, tableSyntaxNodes, moduleContext); } return new ModuleNode(moduleSyntaxNode, moduleContext.getModule()); }
protected void finilizeBind( IMemberBoundNode memberBoundNode, TableSyntaxNode tableSyntaxNode, RulesModuleBindingContext moduleContext) { try { memberBoundNode.finalizeBind(moduleContext); } catch (SyntaxNodeException error) { processError(error, tableSyntaxNode, moduleContext); } catch (CompositeSyntaxNodeException ex) { if (ex.getErrors() != null) { for (SyntaxNodeException error : ex.getErrors()) { processError(error, tableSyntaxNode, moduleContext); } } } catch (Throwable t) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(t, tableSyntaxNode); processError(error, tableSyntaxNode, moduleContext); } }