protected IOpenBinder getBinder() { return new XlsBinder(getUserEnvironmentContext()); }
public IBoundCode bind(IParsedCode parsedCode) { return bind(parsedCode, null); }
OpenMethodHeader[] openMethodHeaders = new OpenMethodHeader[tableSyntaxNodes.length]; Set<String> customSpreadsheetResultTypes = extractCustomSpreadsheetResultTypes(tableSyntaxNodes, moduleContext); if (isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { openMethodHeaders[i] = addMethodHeaderToContext(module, tableSyntaxNodes[i], openl, if (!isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { IMemberBoundNode child = beginBind(tableSyntaxNodes[i], module, openl, moduleContext); children[i] = child; if (child != null) { } catch (OpenlNotCheckedException e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tableSyntaxNodes[i]); processError(error, tableSyntaxNodes[i], moduleContext); if (isExecutableTableSyntaxNode(tableSyntaxNodes[i])) { moduleContext.preBindMethod(openMethodHeaders[i]); finilizeBind(children[i], tableSyntaxNodes[i], moduleContext); removeDebugInformation(children, tableSyntaxNodes, moduleContext);
ASelector<ISyntaxNode> propertiesSelector = getSelector(XlsNodeTypes.XLS_PROPERTIES); ASelector<ISyntaxNode> constantsSelector = getSelector(XlsNodeTypes.XLS_CONSTANTS); ASelector<ISyntaxNode> dataTypeSelector = getSelector(XlsNodeTypes.XLS_DATATYPE); ISelector<ISyntaxNode> spreadsheetSelector = getSelector(XlsNodeTypes.XLS_SPREADSHEET); ISelector<ISyntaxNode> dtSelector = getSelector(XlsNodeTypes.XLS_DT); ISelector<ISyntaxNode> testMethodSelector = getSelector(XlsNodeTypes.XLS_TEST_METHOD); ISelector<ISyntaxNode> runMethodSelector = getSelector(XlsNodeTypes.XLS_RUN_METHOD); TableSyntaxNode[] propertiesNodes = selectNodes(moduleNode, propertiesSelector); bindInternal(moduleNode, moduleOpenClass, propertiesNodes, openl, moduleContext); bindPropertiesForAllTables(moduleNode, moduleOpenClass, openl, moduleContext); TableSyntaxNode[] constantNodes = selectNodes(moduleNode, constantsSelector); bindInternal(moduleNode, moduleOpenClass, constantNodes, openl, moduleContext); TableSyntaxNode[] datatypeNodes = selectNodes(moduleNode, dataTypeSelector); bindInternal(moduleNode, moduleOpenClass, processedDatatypeNodes, openl, moduleContext); TableSyntaxNode[] commonTables = selectNodes(moduleNode, commonTablesSelector); TableSyntaxNode[] spreadsheets = selectTableSyntaxNodes(moduleNode, spreadsheetSelector); if (OpenLSystemProperties.isCustomSpreadsheetType(bindingContext.getExternalParams())) { try { for (TableSyntaxNode tsn : e.getTableSyntaxNodes()) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tsn);
private List<XlsTable> load(IOpenSourceCodeModule src) { UserContext ucxt = new UserContext(Thread.currentThread().getContextClassLoader(), "."); IParsedCode pc = new XlsParser(ucxt).parseAsModule(src); IBoundCode bc = new XlsBinder(ucxt).bind(pc); IOpenClass ioc = bc.getTopNode().getType(); XlsMetaInfo xmi = (XlsMetaInfo) ioc.getMetaInfo(); XlsModuleSyntaxNode xsn = xmi.getXlsModuleNode(); TableSyntaxNode[] nodes = xsn.getXlsTableSyntaxNodes(); List<XlsTable> tables = new ArrayList<>(nodes.length); for (TableSyntaxNode node : nodes) { tables.add(new XlsTable(node)); } return tables; }
Set<String> customSpreadsheetResultTypes) { try { AExecutableNodeBinder aExecutableNodeBinder = (AExecutableNodeBinder) getBinderFactory() .get(tableSyntaxNode.getType()); IOpenSourceCodeModule source = null; addTypeToken(customSpreadsheetResultTypes, tokens[0], sb); int j = 1; while (j < tokens.length && (tokens[j].startsWith("[") || tokens[j].startsWith("]"))) { while (j < tokens.length) { if (isType) { addTypeToken(customSpreadsheetResultTypes, tokens[j], sb); j++; while (j < tokens.length && (tokens[j].startsWith("[") || tokens[j].startsWith("]"))) { } catch (Exception e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tableSyntaxNode); processError(error, tableSyntaxNode, moduleContext);
moduleContext.pushErrors(); IMemberBoundNode memberBoundNode = XlsBinder.this .beginBind(tableSyntaxNode, module, openl, moduleContext); childrens[index] = memberBoundNode; if (memberBoundNode != null) { } catch (Exception e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError(e, tableSyntaxNode); processError(error, tableSyntaxNode, moduleContext);
@Override protected void finilizeBind(IMemberBoundNode memberBoundNode, TableSyntaxNode tableSyntaxNode, RulesModuleBindingContext moduleContext) { if (memberBoundNode instanceof AMethodBasedNode) { try { String methodName = ((AMethodBasedNode) memberBoundNode).getMethod().getName(); ExpressionContext expressionContext = new ExpressionContext(); expressionContext.setCurrentPath(ProjectData.getCurrentInstance().getPath(methodName)); ExpressionContext.setInstance(expressionContext); super.finilizeBind(memberBoundNode, tableSyntaxNode, moduleContext); } finally { ExpressionContext.removeInstance(); } } else { super.finilizeBind(memberBoundNode, tableSyntaxNode, moduleContext); } } }
private OpenL makeOpenL(XlsModuleSyntaxNode moduleNode) { String openlName = getOpenLName(moduleNode.getOpenlNode()); Collection<String> imports = moduleNode.getImports(); if (imports == null) { return OpenL.getInstance(openlName, userContext); } OpenLBuilderImpl builder = new OpenLBuilderImpl(); builder.setExtendsCategory(openlName); String category = openlName + "::" + moduleNode.getModule().getUri(); builder.setCategory(category); addImports(builder, imports); builder.setContexts(null, userContext); return OpenL.getInstance(category, userContext, builder); }
private List<XlsTable> load(IOpenSourceCodeModule src) { final ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); SimpleBundleClassLoader bundleCl = null; try { bundleCl = new SimpleBundleClassLoader(oldCl); Thread.currentThread().setContextClassLoader(bundleCl); UserContext ucxt = new UserContext(bundleCl, "."); IParsedCode pc = new SequentialParser(ucxt).parseAsModule(src); IBoundCode bc = new XlsBinder(ucxt).bind(pc); IOpenClass ioc = bc.getTopNode().getType(); XlsMetaInfo xmi = (XlsMetaInfo) ioc.getMetaInfo(); XlsModuleSyntaxNode xsn = xmi.getXlsModuleNode(); TableSyntaxNode[] nodes = xsn.getXlsTableSyntaxNodes(); List<XlsTable> tables = new ArrayList<>(nodes.length); for (TableSyntaxNode node : nodes) { tables.add(new XlsTable(node)); } return tables; } finally { OpenClassUtil.releaseClassLoader(bundleCl); Thread.currentThread().setContextClassLoader(oldCl); } }
@Override public IBoundCode bind(IParsedCode parsedCode, IBindingContext bindingContext) { try { XmlRulesModuleSyntaxNode topNode = (XmlRulesModuleSyntaxNode) parsedCode.getTopNode(); ProjectData.setCurrentInstance(topNode.getProjectData()); return super.bind(parsedCode, bindingContext); } finally { ProjectData.removeCurrentInstance(); } }
public OpenL build(String category) throws OpenConfigurationException { OpenL openl = new OpenL(); openl.setParser(createParser()); openl.setBinder(new XlsBinder(getUserEnvironmentContext())); openl.setVm(new XlsVM()); openl.setCompileContext(new RulesCompileContext()); return openl; }