public IResultBuilder buildResultBuilder(Spreadsheet spreadsheet) { IResultBuilder resultBuilder = null; try { resultBuilder = getResultBuilderInternal(spreadsheet); } catch (SyntaxNodeException e) { addError(e); } return resultBuilder; }
private void parseHeader(SpreadsheetHeaderDefinition header, IOpenSourceCodeModule source) { SymbolicTypeDefinition parsed = null; try { parsed = parseHeaderElement(source); IdentifierNode name = parsed.getName(); String headerName = name.getIdentifier(); SpreadsheetHeaderDefinition h1 = headerDefinitions.get(headerName); if (h1 != null) { SyntaxNodeException error; error = SyntaxNodeExceptionUtils.createError("The header definition is duplicated", name); addError(error); throw new DuplicatedVarException(null, headerName); } else { headerDefinitions.put(headerName, header); } header.addVarHeader(parsed); } catch (SyntaxNodeException error) { addError(error); } }
/** * Extract following data form the spreadsheet source table: * row names, column names, header definitions, return cell. */ public void buildHeaders(IOpenClass spreadsheetHeaderType) { addRowHeaders(); addColumnHeaders(); buildHeaderDefinitionsTypes(); try { buildReturnCells(spreadsheetHeaderType); } catch (SyntaxNodeException e) { addError(e); } }
/** * Cut a type identifier from a type identifier containing array symbols and whitespace. * * @param typeIdentifierNode identifier with additional info * @return cleaned type identifier */ private IdentifierNode cutTypeIdentifier(IdentifierNode typeIdentifierNode) { try { IdentifierNode[] variableAndType = Tokenizer.tokenize(typeIdentifierNode.getModule(), SpreadsheetSymbols.TYPE_DELIMETER.toString()); if (variableAndType.length > 1) { IdentifierNode[] nodes = Tokenizer.tokenize(typeIdentifierNode.getModule(), " []\n\r", variableAndType[1].getLocation()); if (nodes.length > 0) { return nodes[0]; } } } catch (OpenLCompilationException e) { SyntaxNodeException error = SyntaxNodeExceptionUtils.createError("Cannot parse header", typeIdentifierNode); addError(error); } return null; }