protected ShaderNodeVariable readVariable(Statement statement) throws IOException {

        String line = statement.getLine().trim().replaceAll("\\s*\\[", "[");
        String[] splitVar = line.split("\\s");

        if (splitVar.length > 3) {
            throw new MatParseException("More than 3 arguments", splitVar.length + "", statement);
        }

        String defaultValue = splitVar.length > 2? splitVar[2] : null;
        String varName = splitVar[1];
        String varType = splitVar[0];
        String multiplicity = null;

        if (varName.contains("[")) {
            //we have an array
            String[] arr = splitVar[1].split("\\[");
            varName = arr[0].trim();
            multiplicity = arr[1].replaceAll("\\]", "").trim();
        }

        if (varNames.contains(varName)) {
            throw new MatParseException("Duplicate variable name " + varName, statement);
        }

        varNames.add(varName);

        final ShaderNodeVariable variable = new ShaderNodeVariable(varType, "", varName, multiplicity);
        variable.setDefaultValue(defaultValue);

        return variable;
    }
reads a variable declaration statement &lt;glslType&gt; &lt;varName&gt;

@param statement the statement to parse
@return a ShaderNodeVariable extracted from the statement
@throws IOException if an I/O error occurs
jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java