package de.peeeq.wurstscript.jassAst abstract syntax: JassProgs * JassProg JassProg(JassTypeDefs defs, JassVars globals, JassNatives natives, JassFunctions functions) JassNatives * JassNative JassTypeDefs * JassTypeDef JassVars * JassVar JassSimpleVars * JassSimpleVar JassFunctions * JassFunction JassTypeDef( String name, String ext) JassFunctionOrNative = JassNative | JassFunction JassNative(String name, JassSimpleVars params, String returnType ) JassVar = JassSimpleVar(String type, String name) | JassArrayVar(String type, String name) | JassInitializedVar(String type, String name, JassExpr val, boolean isBj) JassFunction(String name, JassSimpleVars params, String returnType, JassVars locals, JassStatements body, boolean isCompiletimeNative) JassStatements * JassStatement JassStatement = JassStmtIf(JassExpr cond, JassStatements thenBlock, JassStatements elseBlock) | JassStmtLoop(JassStatements body) | JassStmtSet(String left, JassExpr right) | JassStmtSetArray(String left, JassExpr index, JassExpr right) | JassStmtCall(String funcName, JassExprlist arguments) | JassStmtReturn(JassExpr returnValue) | JassStmtReturnVoid() | JassStmtExitwhen(JassExpr cond) JassExprlist * JassExpr JassExpr = JassExprBinary(JassExpr leftExpr, JassOpBinary op, JassExpr right) // left = a, op = "and" right="b" --> a and b k? | JassExprUnary(JassOpUnary opU, JassExpr right) | JassExprFunctionCall(String funcName, JassExprlist arguments) | JassExprAtomic JassExprAtomic = JassExprIntVal(String valI) | JassExprRealVal(String valR) | JassExprStringVal(String valS) | JassExprBoolVal(boolean valB) | JassExprFuncRef(String funcName) | JassExprVarRef | JassExprNull() JassExprVarRef = JassExprVarAccess(String varName) | JassExprVarArrayAccess(String varName, JassExpr index) JassOpBinary = JassOpOr() | JassOpAnd() | JassOpEquals() | JassOpUnequals() | JassOpLessEq() | JassOpLess() | JassOpGreaterEq() | JassOpGreater() | JassOpPlus() | JassOpMinus() | JassOpMult() | JassOpDiv() JassOpUnary = JassOpNot() | JassOpMinus JassOp = JassOpBinary | JassOpUnary JassFuncRef = JassExprFuncRef | JassExprFunctionCall | JassStmtCall JassScope = JassFunction | JassProg attributes: JassProgs.getExtendsMap returns java.util.Map implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.getExtendsMap JassExpr.getType() returns String implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassExprAttr.getType JassProgs.addFunction(JassFunction f) returns void implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.addFunction JassProgs.addNative(JassNative n) returns void implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.addNative JassProgs.addGlobal(JassVar v) returns void implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.addGlobal JassProgs.addTypeDef(JassTypeDef t) returns void implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.addTypeDef JassProgs.getFunction(String name) returns JassFunction implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.getFunction JassProgs.getNative(String name) returns JassNative implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.getNative JassProgs.getGlobal(String name) returns JassVar implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.getGlobal JassProgs.getTypeDef(String name) returns JassTypeDef implemented by de.peeeq.wurstscript.frotty.jassAttributes.JassProgsAttr.getTypeDef JassProg.validate() returns void implemented by de.peeeq.wurstscript.frotty.jassValidator.JassValidator.validate Element.getLine returns int implemented by de.peeeq.wurstscript.frotty.jassValidator.LineMapAttr.getLine Element.getProg returns JassProg implemented by de.peeeq.wurstscript.frotty.jassValidator.LineMapAttr.getProg JassProg.attrLineMap returns java.util.Map implemented by de.peeeq.wurstscript.frotty.jassValidator.LineMapAttr.get JassExprVarRef.attrVariableDefinition "gets the var for a variable reference" returns JassVar implemented by de.peeeq.wurstscript.frotty.jassAttributes.VariableDefinition.get JassExprFunctionCall.attrFunctionCall "gets the function for a function call" returns JassFunction implemented by de.peeeq.wurstscript.frotty.jassAttributes.FunctionCall.get JassExprFuncRef.attrFuncRef "gets the function for a function reference" returns JassFunction implemented by de.peeeq.wurstscript.frotty.jassAttributes.FunctionReference.get JassStmtCall.attrFunctionCall "gets the function for a function call" returns JassFunction implemented by de.peeeq.wurstscript.frotty.jassAttributes.FunctionCall.get JassStmtSet.attrVariableDefinition "gets the var for a variable reference" returns JassStmtSet implemented by de.peeeq.wurstscript.frotty.jassAttributes.VariableDefinition.get JassStmtSetArray.attrVariableDefinition "gets the var for a variable reference" returns JassStmtSetArray implemented by de.peeeq.wurstscript.frotty.jassAttributes.VariableDefinition.get JassProg.attrIgnoredVariables returns java.util.Set implemented by de.peeeq.wurstscript.attributes.JassAttributes.attrIgnoredVariables JassProg.attrComments returns java.util.Map implemented by de.peeeq.wurstscript.attributes.JassAttributes.attrComments JassProg.attrIgnoredFunctions returns java.util.Set implemented by de.peeeq.wurstscript.attributes.JassAttributes.attrIgnoredFunctions JassFuncRef.attrFuncDef returns JassFunction implemented by de.peeeq.wurstscript.attributes.JassAttributes.attrFuncDef JassExpr.print(java.lang.StringBuilder sb, boolean withSpace) returns void implemented by de.peeeq.wurstscript.jassprinter.ExprPrinter.print JassTypeDef.print(java.lang.StringBuilder sb, boolean withSpace) returns void implemented by de.peeeq.wurstscript.jassprinter.JassPrinter.printTypeDef JassNative.print(java.lang.StringBuilder sb, boolean withSpace) returns void implemented by de.peeeq.wurstscript.jassprinter.JassPrinter.printNative JassStatement.print(java.lang.StringBuilder sb, int indent, boolean withSpace) returns void implemented by de.peeeq.wurstscript.jassprinter.StatementPrinter.print JassOp.print(java.lang.StringBuilder sb, boolean withSpace, boolean useParanthesesLeft, boolean useParanthesesRight) returns void implemented by de.peeeq.wurstscript.jassprinter.OpPrinter.print JassOp.asString() returns String implemented by de.peeeq.wurstscript.jassprinter.OpPrinter.asString