.'|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ experimentalYJoel Bjornson joel.bjornson@gmail.com Niklas Broberg nibro@cs.chalmers.seArray representation Class for JBool expressions Class for JFloat expressions Class for JInt expressions Class for JString expressions $Class for representing expressions. M First parameter is the expression, second a TBool for variable or constant. & Third parameter represents the type. ?Class for derefable data types, used to allow the creation of D dereferencing objects. Examples: Math.random() or document.write() BClass for binding objects with constructors. E.g. o = new Date(); 9Args represents types that can be passed as arguments to  JavaScript functions. |KJFormal params represents parameters passed to a function along with their  corresponding types. 2Class for parameter types to JavaScript functions  !"#$%&'()Binary Operator *+,-./01234567!Class for expression that may be plussed.  Examples: 1 + 2, ha + skell. 8Assign Operator 9:;<=>?@%Post or Pre prefix , i.e. --x or x++ ABC>Allows values to be compared to JNull. E.g. for checking that - an object is instantiated or is accessible. D%Class that represents showable types EF"Class for representing JavaScript features, e.g. names of ( objects or functions. Example: window  hasFeature alert }GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqJavaScript types tuvwxyGenerates a Block from a Stmt. zGet the value of a variable. {~#Instanses for tuples,triples etc.. IAll JString values along with all objects and all functions can be null. #Any string value can be a feature.  Show for Exp |  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|qNihgfedcba`_^]\[ZYXWVUTSRQPOjkponml('&%$#"!  8?>=<;:9)6543210/.-,+*7@BACFDEMLKJIHG  zyrstuvwx{z   ('&%$#"!  !"#$%&'() 6543210/.-,+**+,-./012345678?>=<;:99:;<=>?@BAABCDEEFGHIJKLMNihgfedcba`_^]\[ZYXWVUTSRQPOOPQRSTUVWXYZ[\]^_`abcdefghijkponmllmnopqtuvwxyz{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOEPQRSTUVWXYZ[\]^_`abcdeMLKNfghijklmnopqrstuvwxyz{|}~HJavaScript-0.4.5Language.HJavaScript.SyntaxArrayIsJBooltoJBoolIsJFloattoJFloatIsJInttoJInt IsJString toJStringIsExptoExpIsDerefHasConstructorIsClass VarsToExpsv2eArgs FormalParams mkFParams showsFParams ParamTypeBlockSequence EmptyBlockElsesNoElseElseElseifStmtIfReturnContinueBreakForDoWhileWhileExpStmt VarAssign VarDeclAssignVarDeclBinOpLEThanGEThanLThanGThan NotEqualsEqualsOrAndModDivTimesMinusPlus PlusOpTypeAssignOpOrAssign AndAssign ModAssign DivAssign TimesAssign MinusAssign PlusAssignPostPrePrePst IsNullableJShowjshow IsFeatureJArrayJObjectJVoidJFloatJBoolJStringJIntExpJIsImplJValueOf JCastObjectJNullJBlockJThis JFunctionJDerefJNewJCallJIfOp JDecrement JIncrementJBinOpJNotJNeg JAssignWithJAssignJConstJSndJFstJRecRecVar JArrayIndex JDerefVarJMemberJParamJVarJTypederefderefVarcall methodCallvoidMethodCallmethodCallNoArgsvoidMethodCallNoArgstoBlockval renderBlock showsArgs showsFeatureindentppBlockppVarppExpppStmtppElses $fParamType()$fIsNullable[] $fIsFeature[] $fShowExp