/** * Checks if the line is a method. * * @param par1 the par1 * @return true, if is method */ public boolean isMethod(CodeLine codeline) { String line = codeline.line.replace(";", ""); if (line.contains(METHOD_PARAMETERS_START_CHAR) && line.endsWith(METHOD_PARAMETERS_END_CHAR)) { String methodName = line.substring(0, line.indexOf(METHOD_PARAMETERS_START_CHAR)); if (this.getCustomMethod(methodName) != null) { return true; } TMLMethod executor = TextModHelper.getMethodExecutorFromName(methodName); return executor != null; } return false; }
/** * Reads a method from a line * * @param line the line * @return the method (with name and parameters) * @throws SyntaxException the parser exception */ public Method readMethod(CodeLine codeline) throws SyntaxException { // Replaces the method identifier int parametersStart = codeline.line.indexOf(METHOD_PARAMETERS_START_CHAR); int parametersEnd = codeline.line.lastIndexOf(METHOD_PARAMETERS_END_CHAR); if (parametersStart == -1 || parametersEnd == -1) { throw new SyntaxException( "Invalid method signature: Missing parameter list", codeline, codeline.line.length() - 1, 1); } String methodName = codeline.line.substring(0, parametersStart); String parameters = codeline.line.substring(parametersStart + 1, parametersEnd); String[] aparameters = TextModHelper.createParameterList(parameters, PARAMETER_SPLIT_CHAR.charAt(0)); Object[] aparameters2 = this.parser.parse(codeline, aparameters); return new PredefinedMethod(methodName, aparameters2); }
/** * Gets the variable from a line. * * @param line the line * @return the variable * @throws SyntaxException the parser exception */ public Variable readVariable(CodeLine codeline) throws SyntaxException { String line = codeline.line.substring(0, codeline.line.indexOf(';')); String[] split = TextModHelper.createParameterList(line, ' '); Variable var = null; if (this.isType(split[0])) // First part is a type declaration { Type type = Type.getTypeFromName(split[0]); String name = split[1]; Object value = this.parser.parse(codeline, line.substring(line.indexOf("=") + 1)); var = new Variable(type, name, value); } else // First part is an existing variable name { Variable var1 = this.getVariable(codeline, split[0]); String operator = split[1]; Object value = this.parser.parse(codeline, line.substring(line.indexOf(operator) + operator.length())); var = this.operate(var1, operator, value); } return var; }