main.1f2ec643885ac2dda183.js.map 1.7 MB

1
  1. {"version":3,"file":"main.1f2ec643885ac2dda183.js","mappings":"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AAAA,WAAW,CAAChX,MAAZ,GAPc,CASd;;AACAmnB,MAAAA,iCAAiC,GAAG,KAApC;AACAC,MAAAA,kCAAkC,GAAG,KAArC;AACA;AACD,GAtDD;AAwDApQ,EAAAA,WAAW,CAAC8M,MAAZ;AACA;;;;;;;;;;;AChmCY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,gBAAgB,mBAAO,CAAC,oCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC/FY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;;;;;;;;;;;;ACRP;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,2CAAa;AACtC,iBAAiB,mBAAO,CAAC,2CAAa;AACtC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,kBAAe;;;;;;;;;;;;ACVF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,GAAG,mBAAmB;AACvC,YAAY,mBAAO,CAAC,sCAAK;AACzB,iBAAiB,mBAAO,CAAC,qCAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qCAAqC,YAAY,EAAE,YAAY,OAAO,YAAY,EAAE,YAAY,OAAO,YAAY;AACnH,mCAAmC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACjF;AACA,yCAAyC,aAAa,GAAG,YAAY,GAAG,UAAU;AAClF,kDAAkD,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAuD;AAC3E;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D,gDAAgD,QAAQ;AACxD,eAAe,SAAS,mCAAmC;AAC3D;AACA;AACA,cAAc,wCAAwC;AACtD;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;ACtFJ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,gBAAgB,mBAAO,CAAC,oCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC/FY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,yCAAe;AACxC,WAAW,mBAAO,CAAC,+BAAU;AAC7B,eAAe,mBAAO,CAAC,qCAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;;;;;;;AChBF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,yBAAyB,GAAG,iBAAiB;AAC7C,iBAAiB;AACjB,WAAW,oBAAoB;AAC/B,WAAW,oBAAoB;AAC/B,YAAY,oBAAoB;AAChC,WAAW,oBAAoB;AAC/B,WAAW,oBAAoB;AAC/B,UAAU,oBAAoB;AAC9B,UAAU,qBAAqB;AAC/B,UAAU,oBAAoB;AAC9B,UAAU,qBAAqB;AAC/B,UAAU,qBAAqB;AAC/B,WAAW,sBAAsB;AACjC,WAAW,uBAAuB;AAClC,UAAU,sBAAsB;AAChC,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;;;;;;;;;;;ACtCZ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACdF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB;AAChB,kBAAkB,mBAAO,CAAC,yCAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC5GY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,8BAA8B,GAAG,8BAA8B;AAC/D,gBAAgB,mBAAO,CAAC,qDAAqB;AAC7C,oBAAoB,mBAAO,CAAC,+CAAkB;AAC9C,oBAAoB,mBAAO,CAAC,6DAAyB;AACrD,iBAAiB,mBAAO,CAAC,2CAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qCAAqC;AACjE;AACA,gCAAgC,sCAAsC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,4BAA4B,qCAAqC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;;;;;;;;;;;ACrNjB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe;AACf,eAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACPY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACTY;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa;AACb;AACA,gBAAgB,mBAAO,CAAC,yCAAU;AAClC,gBAAgB,mBAAO,CAAC,wDAAwB;AAChD,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C,yBAAyB,mBAAO,CAAC,gEAAkB;AACnD,qBAAqB,mBAAO,CAAC,kEAA6B;AAC1D,4BAA4B,mBAAO,CAAC,kFAA2B;AAC/D,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD,2BAA2B,mBAAO,CAAC,oEAAoB;AACvD,sBAAsB,mBAAO,CAAC,sEAAqB;AACnD,8BAA8B,mBAAO,CAAC,sFAA6B;AACnE,0BAA0B,mBAAO,CAAC,8EAAyB;AAC3D,gCAAgC,mBAAO,CAAC,0FAA+B;AACvE,iCAAiC,mBAAO,CAAC,gFAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe,8BAA8B,eAAe;AAC3F;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,eAAe,8BAA8B,eAAe;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,IAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;;;;;;;;;;;AC9QA;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB;AACnB,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;;;;;;;;;;;AC7DN;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,wBAAwB;AACxB,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C,4BAA4B,mBAAO,CAAC,kFAA2B;AAC/D,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;;;;;;;;;;;ACrIX;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB;AACtB,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;;;;;;;;;;;AC3BT;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,2BAA2B;AAC3B,2BAA2B,mBAAO,CAAC,oEAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;ACnBd;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uBAAuB;AACvB,qBAAqB,mBAAO,CAAC,qEAAgC;AAC7D,8BAA8B,mBAAO,CAAC,gFAAuB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;;;;;;;;;;;ACrFV;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;;;;;;;;;;;ACvBb;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;;;;;;;;;;;ACjBL;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,yBAAyB;AACzB,sBAAsB,mBAAO,CAAC,gEAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;;;;;;;;;;;ACXZ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;;;;;;;;;;AC5BR;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uBAAuB;AACvB,kBAAkB,mBAAO,CAAC,4CAAkB;AAC5C,oBAAoB,mBAAO,CAAC,yDAAW;AACvC,iBAAiB,mBAAO,CAAC,6CAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;;;;;;;;;;;ACzCV;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC7CJ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC/BJ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;AACA,YAAY;;;;;;;;;;;;ACfC;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB,GAAG,aAAa;AACrC,eAAe,mBAAO,CAAC,uCAAQ;AAC/B,oBAAoB,mBAAO,CAAC,iDAAa;AACzC,gBAAgB,mBAAO,CAAC,yCAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;;;;;;;;;;ACjCR;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;;;;;;;;AC7BD;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;;;;;;;;;;;;;;;;;UCtCb;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UEhDA;UACA;UACA;UACA;UACA","sources":["webpack://ivprogCore/webpack/universalModuleDefinition","webpack://ivprogCore/./i18n/error.csv","webpack://ivprogCore/./i18n/message.csv","webpack://ivprogCore/./i18n/ui.csv","webpack://ivprogCore/./js/assessment/ivprogAssessment.js","webpack://ivprogCore/./js/assessment/output_matching/assessment_result.js","webpack://ivprogCore/./js/assessment/output_matching/output_matching.js","webpack://ivprogCore/./js/assessment/output_matching/output_result.js","webpack://ivprogCore/./js/ast/commands/arrayAssign.js","webpack://ivprogCore/./js/ast/commands/arrayDeclaration.js","webpack://ivprogCore/./js/ast/commands/assign.js","webpack://ivprogCore/./js/ast/commands/break.js","webpack://ivprogCore/./js/ast/commands/case.js","webpack://ivprogCore/./js/ast/commands/command.js","webpack://ivprogCore/./js/ast/commands/commandBlock.js","webpack://ivprogCore/./js/ast/commands/declaration.js","webpack://ivprogCore/./js/ast/commands/for.js","webpack://ivprogCore/./js/ast/commands/formalParameter.js","webpack://ivprogCore/./js/ast/commands/function.js","webpack://ivprogCore/./js/ast/commands/ifThenElse.js","webpack://ivprogCore/./js/ast/commands/index.js","webpack://ivprogCore/./js/ast/commands/repeatUntil.js","webpack://ivprogCore/./js/ast/commands/return.js","webpack://ivprogCore/./js/ast/commands/switch.js","webpack://ivprogCore/./js/ast/commands/sysCall.js","webpack://ivprogCore/./js/ast/commands/while.js","webpack://ivprogCore/./js/ast/error/syntaxError.js","webpack://ivprogCore/./js/ast/error/syntaxErrorFactory.js","webpack://ivprogCore/./js/ast/expressions/arrayAccess.js","webpack://ivprogCore/./js/ast/expressions/arrayLiteral.js","webpack://ivprogCore/./js/ast/expressions/boolLiteral.js","webpack://ivprogCore/./js/ast/expressions/charLiteral.js","webpack://ivprogCore/./js/ast/expressions/expression.js","webpack://ivprogCore/./js/ast/expressions/functionCall.js","webpack://ivprogCore/./js/ast/expressions/index.js","webpack://ivprogCore/./js/ast/expressions/infixApp.js","webpack://ivprogCore/./js/ast/expressions/intLiteral.js","webpack://ivprogCore/./js/ast/expressions/literal.js","webpack://ivprogCore/./js/ast/expressions/realLiteral.js","webpack://ivprogCore/./js/ast/expressions/stringLiteral.js","webpack://ivprogCore/./js/ast/expressions/unaryApp.js","webpack://ivprogCore/./js/ast/expressions/variableLiteral.js","webpack://ivprogCore/./js/ast/ivprogParser.js","webpack://ivprogCore/./js/ast/sourceInfo.js","webpack://ivprogCore/./js/io/domConsole.js","webpack://ivprogCore/./js/io/input.js","webpack://ivprogCore/./js/io/output.js","webpack://ivprogCore/./js/main.js","webpack://ivprogCore/./js/processor/definedFunctions.js","webpack://ivprogCore/./js/processor/error/processorErrorFactory.js","webpack://ivprogCore/./js/processor/error/runtimeError.js","webpack://ivprogCore/./js/processor/error/semanticError.js","webpack://ivprogCore/./js/processor/ivprogProcessor.js","webpack://ivprogCore/./js/processor/lib/arrays.js","webpack://ivprogCore/./js/processor/lib/io.js","webpack://ivprogCore/./js/processor/lib/lang.js","webpack://ivprogCore/./js/processor/lib/math.js","webpack://ivprogCore/./js/processor/lib/strings.js","webpack://ivprogCore/./js/processor/semantic/semanticAnalyser.js","webpack://ivprogCore/./js/runner.js","webpack://ivprogCore/./js/services/i18nHelper.js","webpack://ivprogCore/./js/services/localizedStringsService.js","webpack://ivprogCore/./js/services/userLog.js","webpack://ivprogCore/./js/typeSystem/parsers.js","webpack://ivprogCore/./js/util/auto_gen_output.js","webpack://ivprogCore/./js/util/codeParser.js","webpack://ivprogCore/./js/util/dataProcess.js","webpack://ivprogCore/./js/util/editorMode2.js","webpack://ivprogCore/./js/util/iassignHelpers.js","webpack://ivprogCore/./js/util/inputTest.js","webpack://ivprogCore/./js/util/input_assessment.js","webpack://ivprogCore/./js/util/outputTest.js","webpack://ivprogCore/./js/util/parseFromVisual.js","webpack://ivprogCore/./js/util/string_diff.js","webpack://ivprogCore/./js/util/testConsole.js","webpack://ivprogCore/./js/util/utils.js","webpack://ivprogCore/./js/visualUI/algorithm.js","webpack://ivprogCore/./js/visualUI/code_generator.js","webpack://ivprogCore/./js/visualUI/commands.js","webpack://ivprogCore/./js/visualUI/commands/attribution.js","webpack://ivprogCore/./js/visualUI/commands/break.js","webpack://ivprogCore/./js/visualUI/commands/comment.js","webpack://ivprogCore/./js/visualUI/commands/conditional_expression.js","webpack://ivprogCore/./js/visualUI/commands/contextualized_menu.js","webpack://ivprogCore/./js/visualUI/commands/dowhiletrue.js","webpack://ivprogCore/./js/visualUI/commands/functioncall.js","webpack://ivprogCore/./js/visualUI/commands/generic_expression.js","webpack://ivprogCore/./js/visualUI/commands/iftrue.js","webpack://ivprogCore/./js/visualUI/commands/reader.js","webpack://ivprogCore/./js/visualUI/commands/repeatNtimes.js","webpack://ivprogCore/./js/visualUI/commands/return.js","webpack://ivprogCore/./js/visualUI/commands/switch.js","webpack://ivprogCore/./js/visualUI/commands/variable_value_menu.js","webpack://ivprogCore/./js/visualUI/commands/whiletrue.js","webpack://ivprogCore/./js/visualUI/commands/writer.js","webpack://ivprogCore/./js/visualUI/functions.js","webpack://ivprogCore/./js/visualUI/globals.js","webpack://ivprogCore/./js/visualUI/ivprog_elements.js","webpack://ivprogCore/./js/visualUI/text_editor.js","webpack://ivprogCore/./js/visualUI/types.js","webpack://ivprogCore/./js/visualUI/utils.js","webpack://ivprogCore/./js/visualUI/variables.js","webpack://ivprogCore/./grammar/en/ivprog.ts","webpack://ivprogCore/./grammar/helper.ts","webpack://ivprogCore/./grammar/index.ts","webpack://ivprogCore/./grammar/lexer.ts","webpack://ivprogCore/./grammar/pt/ivprog.ts","webpack://ivprogCore/./i18n/index.ts","webpack://ivprogCore/./js/ast/operators.ts","webpack://ivprogCore/./js/memory/address.ts","webpack://ivprogCore/./js/memory/location.ts","webpack://ivprogCore/./js/processor/compatibilityTable.ts","webpack://ivprogCore/./js/processor/context.ts","webpack://ivprogCore/./js/processor/modes.ts","webpack://ivprogCore/./js/processor/store/store.ts","webpack://ivprogCore/./js/processor/store/storeObject.ts","webpack://ivprogCore/./js/processor/store/storeObjectArray.ts","webpack://ivprogCore/./js/processor/store/storeObjectRef.ts","webpack://ivprogCore/./js/processor/store/store_object_array_ref.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value_ref.ts","webpack://ivprogCore/./js/processor/store/value/store_value.ts","webpack://ivprogCore/./js/processor/store/value/store_value_address.ts","webpack://ivprogCore/./js/processor/store/value/store_value_ref.ts","webpack://ivprogCore/./js/services/languageService.ts","webpack://ivprogCore/./js/typeSystem/array_type.ts","webpack://ivprogCore/./js/typeSystem/multiType.ts","webpack://ivprogCore/./js/typeSystem/type.ts","webpack://ivprogCore/./js/typeSystem/types.ts","webpack://ivprogCore/./js/util/config.ts","webpack://ivprogCore/./js/util/maybe.ts","webpack://ivprogCore/webpack/bootstrap","webpack://ivprogCore/webpack/runtime/chunk loaded","webpack://ivprogCore/webpack/runtime/compat get default export","webpack://ivprogCore/webpack/runtime/define property getters","webpack://ivprogCore/webpack/runtime/hasOwnProperty shorthand","webpack://ivprogCore/webpack/runtime/make namespace object","webpack://ivprogCore/webpack/runtime/jsonp chunk loading","webpack://ivprogCore/webpack/before-startup","webpack://ivprogCore/webpack/startup","webpack://ivprogCore/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ivprogCore\"] = factory();\n\telse\n\t\troot[\"ivprogCore\"] = factory();\n})(self, function() {\nreturn ","module.exports = {\"pt\":{\"token_missing_one\":\"Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3\",\"token_missing_two\":\"Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4\",\"eos_missing\":\"Falta uma nova linha ou ; na linha: $0, coluna: $1\",\"invalid_type\":\"$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3\",\"invalid_array_dimension\":\"A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.\",\"invalid_array_size\":\"O tamnho do vetor/matriz excede o máximo de 2 na linha $0\",\"extra_lines\":\"Nenhum texto é permitido após '}' em 'programa {...}'\",\"invalid_main_return\":\"A função $0 declarada na linha $2 deve retornar $1.\",\"invalid_var_declaration\":\"Erro na linha $0: variáveis só podem ser declaradas no corpo principal da função e nas primeiras linhas, antes de qualquer comando.\",\"invalid_break_command\":\"Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'\",\"invalid_terminal\":\"Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.\",\"const_not_init\":\"Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada\",\"id_missing\":\"Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2\",\"invalid_id_format\":\"$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.\",\"main_missing\":\"A função principal não foi encontrada\",\"invalid_global_var\":\"Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE\",\"not_implemented\":\"Erro interno crítico: A função definida pelo sistema $0 não foi implementada.\",\"function_missing\":\"A função $0 não foi encontrada\",\"function_missing_full\":\"A função $0 na linha: $1, coluna: $2 não foi encontrada\",\"invalid_parameters_size_full\":\"Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.\",\"invalid_parameters_size\":\"A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2\",\"invalid_ref_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_ref\":\"A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_parameter_type_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.\",\"invalid_parameter_type\":\"A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.\",\"unknown_command_full\":\"Erro interno crítico: comando desconhecido encontrado na linha $0\",\"unknown_command\":\"Erro interno crítico: comando desconhecido encontrado!\",\"loop_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico\",\"loop_condition_type\":\"A condição $0 do laço de repetição deve ser do tipo lógico\",\"endless_loop_full\":\"Possível laço infinito detectado no seu código. Verifique a linha $0\",\"endless_loop\":\"Possível laço infinito detectado no seu código.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico\",\"if_condition_type\":\"A condição $0 do comando se...senao deve ser do tipo lógico\",\"invalid_return_type_full\":\"Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.\",\"invalid_return_type\":\"A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.\",\"invalid_void_return_full\":\"Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2\",\"invalid_void_return\":\"A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1\",\"unexpected_break_command_full\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0\",\"unexpected_break_command\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso\",\"invalid_dimension\":\"As dimensões de um vetor/matriz devem ser do tipo inteiro\",\"void_in_expression_full\":\"Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"void_in_expression\":\"A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"invalid_array_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido\",\"invalid_array_access\":\"Identificador $0 não se refere a um vetor/matriz válido\",\"invalid_matrix_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida\",\"invalid_matrix_access\":\"Identificador $0 não se refere a uma matriz válida\",\"matrix_column_outbounds_full\":\"Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas\",\"matrix_column_outbounds\":\"Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas\",\"matrix_line_outbounds_full\":\"Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas\",\"matrix_line_outbounds\":\"Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas\",\"vector_line_outbounds_full\":\"Erro na linha $0: O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_line_outbounds\":\"O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_not_matrix_full\":\"Erro na linha $0: $1 não é uma matriz\",\"vector_not_matrix\":\"$0 não é uma matriz\",\"invalid_infix_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado aos tipos $3 e $4\",\"invalid_infix_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado aos tipos $2 e $3\",\"invalid_unary_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado ao tipo $3\",\"invalid_unary_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado ao tipo $2\",\"unknown_op\":\"Erro interno crítico: Operação $0 desconhecida\",\"duplicate_function\":\"A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.\",\"duplicate_variable\":\"A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.\",\"main_parameters\":\"A função inicio não pode ter parâmetros.\",\"symbol_not_found_full\":\"A variável $0 na linha: $1, coluna: $2 não foi declarada\",\"symbol_not_found\":\"A variável $0 não foi declarada\",\"array_dimension_not_int_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser do tipo inteiro.\",\"array_dimension_not_int\":\"As dimensões de um arranjo (vetor ou matriz) devem ser do tipo inteiro.\",\"array_dimension_not_positive_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser valores positivos.\",\"array_dimension_not_positive\":\"As dimensões de um arranjo (vetor ou matriz) devem ser valores positivos.\",\"incompatible_types_full\":\"Era esperado um $0 mas a expressão $1 na linha $2 resulta em $3.\",\"incompatible_types\":\"Era esperado um $0 mas a expressão $1 resulta em $2.\",\"incompatible_types_array_full\":\"A expressão $0 na linha $2 é incompatível com o tipo $1.\",\"incompatible_types_array\":\"A expressão $0 é incompatível com o tipo $1.\",\"invalid_case_type_full\":\"O caso $0 na linha $1 é incompatível com o tipo $2.\",\"invalid_case_type\":\"O caso $0 é incompatível com o tipo $1.\",\"function_no_return\":\"A função $0 não possui um comando de devolução acessível. Toda função deve ter ao menos um comando 'devolva' no seu corpo principal.\",\"invalid_array_literal_type_full\":\"Erro na linha $0: a expressão $1 não resulta em um tipo compatível.\",\"invalid_array_literal_type\":\"A expressão $0 não resulta em um tipo compatível.\",\"invalid_array_literal_line_full\":\"Erro na linha $0: esperava-se $1 linhas mas encontrou $2.\",\"invalid_array_literal_line\":\"Esperava-se $0 linhas mas encontrou $1.\",\"invalid_array_literal_column_full\":\"Erro na linha $0: esperava-se $1 colunas mas encontrou $2.\",\"invalid_array_literal_column\":\"Esperava-se $0 colunas mas encontrou $1.\",\"exceeded_input_request\":\"A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.\",\"test_case_few_reads\":\"Caso de teste $0 falhou: ainda restam entradas!\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Caso de teste $0 não executou com sucesso.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Caso de teste $0 falhou</span>: $1\",\"test_case_exception\":\"Ocorreu uma exceção no caso de teste $0: $1\",\"invalid_type_conversion\":\"O valor $0 não pode ser convertido para o tipo $1\",\"invalid_read_type\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo da variável <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo aceito pela variável <span class='ivprog-error-varname'>$3</span> que é um $4.\",\"inform_valid_identifier\":\"Informe um nome válido! O nome não pode ser uma palavra reservadas e deve começar com letras ou _ e conter apenas letras, números e _.\",\"inform_valid_global_duplicated\":\"Já existe uma variável global com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_variable_duplicated\":\"Já existe uma variável com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"inform_valid_function_duplicated\":\"Já existe uma função com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_param_duplicated\":\"Já existe um parâmetro com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"invalid_character\":\"O caractere $0 na linha $1 não pode ser utilizado neste contexto.\",\"invalid_syntax\":\"O iVProg não reconhece o texto $0 na linha $1. Certifique-se que não há erro de digitação ou caractere inválido.\",\"annonymous_array_literal\":\"Erro na linha $0: a notação de vetor/matriz só permitida durante a inicialização de uma variável desse tipo. Ex: inteiro vec[3] ← {1,2,3}.\",\"invalid_matrix_literal_line\":\"A expressão $0 na linha $1 não possui um número de elementos igual a linha anterior. Todas as linhas de uma matriz devem ter a mesma quantidade de elementos.\",\"cannot_infer_matrix_line\":\"Não é possível inferir o número de linhas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_matrix_column\":\"Não é possível inferir o número de colunas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_vector_size\":\"Não é possível inferir o número de elementos do vetor $0 na linha $1. É necessário que ele seja inicializado ou que o valor seja informado de forma explícita\",\"matrix_to_vector_literal_attr\":\"Erro na linha $0: A expressão $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_literal_attr\":\"Erro na linha $0: A expressão $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_const_ref_full\":\"A variável $0 fornecida como parâmetro para a função $1 na linha $2 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_ref\":\"A variável $0 fornecida como parâmetro para a função $1 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_assignment_full\":\"Erro na linha $0: $1 é uma constante e portanto não pode ter seu valor alterado\",\"invalid_const_assignment\":\"$0 é uma constante e portanto não pode ter seu valor alterado\",\"array_init_not_literal\":\"Erro na linha $0: Vetor/Matriz só pode ser inicializado por literal. Ex: real vetor[] <- {1,2,3}\",\"array_exceeds_2d\":\"Erro na linha $0: O número máximo de dimensões que um arranjo pode ter é 2. Elemento de 3 ou mais dimensões encontrado!\",\"invalid_matrix_id_dimension\":\"Erro na linha $0: Você deve definir todas as dimensões da matriz quando uma delas é definida por uma variável! Ex: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Erro na linha $0: Não se pode inicializar um vetor que teve seu tamanho declarado utilizando uma variável! Utilize uma atribuição de vetores ou use um laço de repetição.\",\"invalid_matrix_init\":\"Erro na linha $0: Não se pode inicializar uma matrix que teve ao menos uma das suas dimensões declaradas utilizando uma variável! Utilize uma atribuição de matrizes ou use um laço de repetição.\",\"invalid_vector_assignment_full\":\"Erro na linha $0: Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $1 comporta $2 e $3 comporta $4!\",\"invalid_vector_assignment\":\"Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $0 comporta $1 e $2 comporta $3!\",\"invalid_matrix_assignment_full\":\"Erro na linha $0: Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $1 tem $2 linhas e $3 colunas, enquanto $4 possui $5 linhas e $6 colunas!\",\"invalid_matrix_assignment\":\"Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $0 tem $1 linhas e $2 colunas, enquanto $3 possui $4 linhas e $5 colunas!\",\"matrix_to_vector_attr\":\"Erro na linha $0: $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_attr\":\"Erro na linha $0: $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_matrix_index_assign_full\":\"Erro na linha $0: A posição $1 da matriz $2 aceita apenas vetores de tamanho $3, mas $4 tem tamanho $5\",\"invalid_matrix_index_assign\":\"A linha $0 da matriz $1 aceita apenas vetores de tamanho $2, mas $3 tem tamanho $4\",\"invalid_number_elements_vector\":\"Esperava-se por $0 elementos na linha $1 mas a expressão $2 possui $3 elementos.\",\"invalid_number_lines_matrix\":\"Esperava-se por uma matriz com $0 linhas na linha $1 mas a expressão $2 possui $3 linhas\",\"divsion_by_zero_full\":\"Erro na linha $0: A expressão $1 resulta em uma divisão por 0.\",\"divsion_by_zero\":\"A expressão $0 resulta em uma divisão por 0.\",\"undefined_tanget_value\":\"Erro na linha $0: A tangente de $1° não é indefinida.\",\"negative_log_value\":\"Erro na linha $0: Não se pode calcular o log de um valor negativo.\",\"invalid_string_index\":\"Erro na linha $0 durante a execução da função $1: $2 é um índice inválido para a cadeia de texto $3. Os valores válidos vão de 0 à $4\",\"negative_sqrt_value\":\"Erro na linha $0: Não é permitido calcular a raiz quadrada de um número negativo.\",\"exceeded_recursive_calls\":\"Erro na execução da linha $0: Número de chamadas recursivas execedeu o limite máximo definido!\",\"invalid_for_variable\":\"Erro na linha $0: A variavel $1 utilizada no comando repita_para deve ser do tipo inteiro.\",\"invalid_for_from\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'de' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_to\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'para' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_pass\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'passo' do comando repita_para deve ser do tipo inteiro.\",\"exceed_max_instructions\":\"Número de instruções excedeu o limite definido. Certifique-se que seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"},\"en\":{\"token_missing_one\":\"Syntax error: Expected $0 but found $1 at line:$2, column:$3\",\"token_missing_two\":\"Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4\",\"eos_missing\":\"A new line or a ‘;’ is missing at line: $0, column: $1\",\"invalid_type\":\"$0 at line: $1, column: $2 is a invalid type. The valid types are: $3\",\"invalid_array_dimension\":\"Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.\",\"invalid_array_size\":\"The array at line $0 exceeds the maximum size of 2.\",\"extra_lines\":\"No text is allowed after '}' in 'program { … }'\",\"invalid_main_return\":\"The function $0 declared at line $2 must return $1.\",\"invalid_var_declaration\":\"Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.\",\"invalid_break_command\":\"Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure.\",\"invalid_terminal\":\"It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.\",\"const_not_init\":\"Error at line: $0, column: $1. A variable declared as const must be initialized.\",\"id_missing\":\"Expected an identifier but found $0 at line: $1, column: $2.\",\"invalid_id_format\":\"$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.\",\"main_missing\":\"The main function was not found. You need to declare a function of return type void named main.\",\"invalid_global_var\":\"Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context.\",\"not_implemented\":\"Critial internal error: The system defined function $0 was not found.\",\"function_missing\":\"The function $0 was not found.\",\"function_missing_full\":\"The function $0 at line: $1, column: $2 was not found.\",\"invalid_parameters_size_full\":\"Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3.\",\"invalid_parameters_size\":\"The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2.\",\"invalid_ref_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_ref\":\"The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_parameter_type_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type.\",\"invalid_parameter_type\":\"The expression $0 provided as a parameter to the function $1 is not of the expected type.\",\"unknown_command_full\":\"Internal error: an unknown command found at line $0.\",\"unknown_command\":\"Internal error: an unknown command found.\",\"loop_condition_type_full\":\"Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).\",\"loop_condition_type\":\"The condition $0 of the loop must be of type bool (true or false).\",\"endless_loop_full\":\"Possible infinite loop detected in your code. Check line $0.\",\"endless_loop\":\"Possible infinite loop detected in your code.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).\",\"if_condition_type\":\"The condition $0 in the if … else command must result in a bool (true or false).\",\"invalid_return_type_full\":\"Error at line $0: The expression doest not result in a type compatible with the function $1. Expected type: $2.\",\"invalid_return_type\":\"The expression doest not result in a type compatible with the function $0. Expected type: $1.\",\"invalid_void_return_full\":\"Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2\",\"invalid_void_return\":\"The function $0 cannot return an empty expression, use an expression that results in a $1\",\"unexpected_break_command_full\":\"Critical error at line $0: a break command was found outside a valid context: loop or switch … case structure.\",\"unexpected_break_command\":\"Critical error: a break command was found outside a valid context: loop or switch … case structure.\",\"invalid_dimension\":\"Array (vector or matrix) dimensions must be of type int.\",\"void_in_expression_full\":\"Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.\",\"void_in_expression\":\"The function $0 cannot be used inside an expression since its return type is void.\",\"invalid_array_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.\",\"invalid_array_access\":\"Identifier $0 does not identify a valid vector or matrix.\",\"invalid_matrix_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid matrix.\",\"invalid_matrix_access\":\"Identifier $0 does not identify a valid matrix.\",\"matrix_column_outbounds_full\":\"Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns.\",\"matrix_column_outbounds\":\"The number of columns $0 is invalid for the matrix $1 which has $2 columns.\",\"matrix_line_outbounds_full\":\"Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines.\",\"matrix_line_outbounds\":\"The number of lines $0 is invalid for matrix $1 which has $2 lines.\",\"vector_line_outbounds_full\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_line_outbounds\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_not_matrix_full\":\"Error at line $0: $1 is not a matrix.\",\"vector_not_matrix\":\"$0 is not a matrix.\",\"invalid_infix_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4.\",\"invalid_infix_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3.\",\"invalid_unary_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the type $3.\",\"invalid_unary_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the type $2.\",\"unknown_op\":\"Critical error: Unknown operator $0.\",\"duplicate_function\":\"The function $0 at line: $1, column: $2 has already been declared.\",\"duplicate_variable\":\"The variable $0 at line: $1, column: $2 has already been declared.\",\"main_parameters\":\"The main function cannot have parameters.\",\"symbol_not_found_full\":\"The variable $0 at line: $1, column: $2 has not been declared.\",\"symbol_not_found\":\"The variable $0 has not been declared.\",\"array_dimension_not_int_full\":\"The array (vector or matrix) dimensions at line $0 must be of type int.\",\"array_dimension_not_int\":\"An array (vector or matrix) dimensions must be of type int.\",\"array_dimension_not_positive_full\":\"The array (vector or matrix) dimensions at line $0 must be positive.\",\"array_dimension_not_positive\":\"An array (vector or matrix) dimensions must be positive.\",\"incompatible_types_full\":\"It expected $0 but the expression $1 at line $2 results in $3.\",\"incompatible_types\":\"It expected $0 but the expression $1 results in $2.\",\"incompatible_types_array_full\":\"The expression $0 at line $2 is not compatible with type $1.\",\"incompatible_types_array\":\"The expression $0 is not compatible with type $1.\",\"invalid_case_type_full\":\"The case expression $0 at line $1 is not compatible with type $2.\",\"invalid_case_type\":\"The case expression $0 is not compatible with type $1.\",\"function_no_return\":\"The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body.\",\"invalid_array_literal_type_full\":\"Error at line $0: the expression $1 does not result in a compatible type.\",\"invalid_array_literal_type\":\"The expression $0 does not result in a compatible type.\",\"invalid_array_literal_line_full\":\"Error at line $0: it expected $1 lines but found $2.\",\"invalid_array_literal_line\":\"It expected $0 lines but found $1.\",\"invalid_array_literal_column_full\":\"Error at line $0: it expected $1 column but found $2.\",\"invalid_array_literal_column\":\"It expected $0 column but found $1.\",\"exceeded_input_request\":\"The amount of reads requested exceeded the amount of inputs available.\",\"test_case_few_reads\":\"Teste case $0 failed: there are available inputs remaining.\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Test case $0 did not executed successfully.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Test case $0 failed</span>: $1\",\"test_case_exception\":\"An exception has ocurred during the execution of test case $0: $1\",\"invalid_type_conversion\":\"The value $0 cannot be converted to type $1.\",\"invalid_read_type\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.\",\"inform_valid_identifier\":\"Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.\",\"inform_valid_global_duplicated\":\"A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.\",\"inform_valid_variable_duplicated\":\"A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.\",\"inform_valid_function_duplicated\":\"A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.\",\"inform_valid_param_duplicated\":\"A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.\",\"invalid_character\":\"The character $0 at line $1 cannot be used in this context.\",\"invalid_syntax\":\"iVProg does not recognize the text $0 at line $1. Check for typos or invalid character.\",\"annonymous_array_literal\":\"Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.\",\"invalid_matrix_literal_line\":\"The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements.\",\"cannot_infer_matrix_line\":\"It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared.\",\"cannot_infer_matrix_column\":\"It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared.\",\"cannot_infer_vector_size\":\"It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard.\",\"matrix_to_vector_literal_attr\":\"Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_literal_attr\":\"Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_const_ref_full\":\"The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_ref\":\"The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_assignment_full\":\"Error at line $0: $1 is a constant e therefore cannot have its value changed.\",\"invalid_const_assignment\":\"$0 is a constant e therefore cannot have its value changed.\",\"array_init_not_literal\":\"Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}\",\"array_exceeds_2d\":\"Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found.\",\"invalid_matrix_id_dimension\":\"Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command.\",\"invalid_matrix_init\":\"Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command.\",\"invalid_vector_assignment_full\":\"Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!\",\"invalid_vector_assignment\":\"You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!\",\"invalid_matrix_assignment_full\":\"Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!\",\"invalid_matrix_assignment\":\"You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!\",\"matrix_to_vector_attr\":\"Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_attr\":\"Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_matrix_index_assign_full\":\"Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5.\",\"invalid_matrix_index_assign\":\"The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4.\",\"invalid_number_elements_vector\":\"It expected $0 elements at line $1 but the expression $2 has $3 elements.\",\"invalid_number_lines_matrix\":\"It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines.\",\"divsion_by_zero_full\":\"Error at line $0: The expression $1 resuts in a division by zero.\",\"divsion_by_zero\":\"The expression $0 resuts in a division by zero.\",\"undefined_tanget_value\":\"Error at line $0: The tangent of $1° is undefined.\",\"negative_log_value\":\"Error at line $0: You cannot calculate the logarithm of a negative value.\",\"invalid_string_index\":\"Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4.\",\"negative_sqrt_value\":\"Error at line $0: It is not allowd to calculate the square root of a negative number.\",\"exceeded_recursive_calls\":\"Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls.\",\"invalid_for_variable\":\"Error at line $0: The variable $1 used in the repeat_for command must be of type int.\",\"invalid_for_from\":\"Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.\",\"invalid_for_to\":\"Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.\",\"invalid_for_pass\":\"Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.\",\"exceed_max_instructions\":\"The number of instructions executed by your program exceed the defined limit. Check your code for infinite loops or excessive recursive functions calls.\"},\"es\":{\"token_missing_one\":\"Syntax error: Expected $0 but found $1 at line:$2, column:$3\",\"token_missing_two\":\"Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4\",\"eos_missing\":\"A new line or a ‘;’ is missing at line: $0, column: $1\",\"invalid_type\":\"$0 at line: $1, column: $2 is a invalid type. The valid types are: $3\",\"invalid_array_dimension\":\"Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.\",\"invalid_array_size\":\"The array at line $0 exceeds the maximum size of 2.\",\"extra_lines\":\"No text is allowed after '}' in 'program { … }'\",\"invalid_main_return\":\"The function $0 declared at line $2 must return $1.\",\"invalid_var_declaration\":\"Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.\",\"invalid_break_command\":\"Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure.\",\"invalid_terminal\":\"It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.\",\"const_not_init\":\"Error at line: $0, column: $1. A variable declared as const must be initialized.\",\"id_missing\":\"Expected an identifier but found $0 at line: $1, column: $2.\",\"invalid_id_format\":\"$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.\",\"main_missing\":\"The main function was not found. You need to declare a function of return type void named main.\",\"invalid_global_var\":\"Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context.\",\"not_implemented\":\"Critial internal error: The system defined function $0 was not found.\",\"function_missing\":\"The function $0 was not found.\",\"function_missing_full\":\"The function $0 at line: $1, column: $2 was not found.\",\"invalid_parameters_size_full\":\"Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3.\",\"invalid_parameters_size\":\"The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2.\",\"invalid_ref_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_ref\":\"The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_parameter_type_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type.\",\"invalid_parameter_type\":\"The expression $0 provided as a parameter to the function $1 is not of the expected type.\",\"unknown_command_full\":\"Internal error: an unknown command found at line $0.\",\"unknown_command\":\"Internal error: an unknown command found.\",\"loop_condition_type_full\":\"Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).\",\"loop_condition_type\":\"The condition $0 of the loop must be of type bool (true or false).\",\"endless_loop_full\":\"Possible infinite loop detected in your code. Check line $0.\",\"endless_loop\":\"Possible infinite loop detected in your code.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).\",\"if_condition_type\":\"The condition $0 in the if … else command must result in a bool (true or false).\",\"invalid_return_type_full\":\"Error at line $0: The expression doest not result in a type compatible with the function $1. Expected type: $2.\",\"invalid_return_type\":\"The expression doest not result in a type compatible with the function $0. Expected type: $1.\",\"invalid_void_return_full\":\"Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2\",\"invalid_void_return\":\"The function $0 cannot return an empty expression, use an expression that results in a $1\",\"unexpected_break_command_full\":\"Critical error at line $0: a break command was found outside a valid context: loop or switch … case structure.\",\"unexpected_break_command\":\"Critical error: a break command was found outside a valid context: loop or switch … case structure.\",\"invalid_dimension\":\"Array (vector or matrix) dimensions must be of type int.\",\"void_in_expression_full\":\"Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.\",\"void_in_expression\":\"The function $0 cannot be used inside an expression since its return type is void.\",\"invalid_array_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.\",\"invalid_array_access\":\"Identifier $0 does not identify a valid vector or matrix.\",\"invalid_matrix_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid matrix.\",\"invalid_matrix_access\":\"Identifier $0 does not identify a valid matrix.\",\"matrix_column_outbounds_full\":\"Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns.\",\"matrix_column_outbounds\":\"The number of columns $0 is invalid for the matrix $1 which has $2 columns.\",\"matrix_line_outbounds_full\":\"Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines.\",\"matrix_line_outbounds\":\"The number of lines $0 is invalid for matrix $1 which has $2 lines.\",\"vector_line_outbounds_full\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_line_outbounds\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_not_matrix_full\":\"Error at line $0: $1 is not a matrix.\",\"vector_not_matrix\":\"$0 is not a matrix.\",\"invalid_infix_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4.\",\"invalid_infix_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3.\",\"invalid_unary_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the type $3.\",\"invalid_unary_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the type $2.\",\"unknown_op\":\"Critical error: Unknown operator $0.\",\"duplicate_function\":\"The function $0 at line: $1, column: $2 has already been declared.\",\"duplicate_variable\":\"The variable $0 at line: $1, column: $2 has already been declared.\",\"main_parameters\":\"The main function cannot have parameters.\",\"symbol_not_found_full\":\"The variable $0 at line: $1, column: $2 has not been declared.\",\"symbol_not_found\":\"The variable $0 has not been declared.\",\"array_dimension_not_int_full\":\"The array (vector or matrix) dimensions at line $0 must be of type int.\",\"array_dimension_not_int\":\"An array (vector or matrix) dimensions must be of type int.\",\"array_dimension_not_positive_full\":\"The array (vector or matrix) dimensions at line $0 must be positive.\",\"array_dimension_not_positive\":\"An array (vector or matrix) dimensions must be positive.\",\"incompatible_types_full\":\"It expected $0 but the expression $1 at line $2 results in $3.\",\"incompatible_types\":\"It expected $0 but the expression $1 results in $2.\",\"incompatible_types_array_full\":\"The expression $0 at line $2 is not compatible with type $1.\",\"incompatible_types_array\":\"The expression $0 is not compatible with type $1.\",\"invalid_case_type_full\":\"The case expression $0 at line $1 is not compatible with type $2.\",\"invalid_case_type\":\"The case expression $0 is not compatible with type $1.\",\"function_no_return\":\"The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body.\",\"invalid_array_literal_type_full\":\"Error at line $0: the expression $1 does not result in a compatible type.\",\"invalid_array_literal_type\":\"The expression $0 does not result in a compatible type.\",\"invalid_array_literal_line_full\":\"Error at line $0: it expected $1 lines but found $2.\",\"invalid_array_literal_line\":\"It expected $0 lines but found $1.\",\"invalid_array_literal_column_full\":\"Error at line $0: it expected $1 column but found $2.\",\"invalid_array_literal_column\":\"It expected $0 column but found $1.\",\"exceeded_input_request\":\"The amount of reads requested exceeded the amount of inputs available.\",\"test_case_few_reads\":\"Teste case $0 failed: there are available inputs remaining.\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Test case $0 did not executed successfully.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Test case $0 failed</span>: $1\",\"test_case_exception\":\"An exception has ocurred during the execution of test case $0: $1\",\"invalid_type_conversion\":\"The value $0 cannot be converted to type $1.\",\"invalid_read_type\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.\",\"inform_valid_identifier\":\"Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.\",\"inform_valid_global_duplicated\":\"A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.\",\"inform_valid_variable_duplicated\":\"A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.\",\"inform_valid_function_duplicated\":\"A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.\",\"inform_valid_param_duplicated\":\"A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.\",\"invalid_character\":\"The character $0 at line $1 cannot be used in this context.\",\"invalid_syntax\":\"iVProg does not recognize the text $0 at line $1. Check for typos or invalid character.\",\"annonymous_array_literal\":\"Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.\",\"invalid_matrix_literal_line\":\"The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements.\",\"cannot_infer_matrix_line\":\"It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared.\",\"cannot_infer_matrix_column\":\"It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared.\",\"cannot_infer_vector_size\":\"It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard.\",\"matrix_to_vector_literal_attr\":\"Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_literal_attr\":\"Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_const_ref_full\":\"The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_ref\":\"The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_assignment_full\":\"Error at line $0: $1 is a constant e therefore cannot have its value changed.\",\"invalid_const_assignment\":\"$0 is a constant e therefore cannot have its value changed.\",\"array_init_not_literal\":\"Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}\",\"array_exceeds_2d\":\"Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found.\",\"invalid_matrix_id_dimension\":\"Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command.\",\"invalid_matrix_init\":\"Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command.\",\"invalid_vector_assignment_full\":\"Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!\",\"invalid_vector_assignment\":\"You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!\",\"invalid_matrix_assignment_full\":\"Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!\",\"invalid_matrix_assignment\":\"You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!\",\"matrix_to_vector_attr\":\"Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_attr\":\"Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_matrix_index_assign_full\":\"Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5.\",\"invalid_matrix_index_assign\":\"The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4.\",\"invalid_number_elements_vector\":\"It expected $0 elements at line $1 but the expression $2 has $3 elements.\",\"invalid_number_lines_matrix\":\"It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines.\",\"divsion_by_zero_full\":\"Error at line $0: The expression $1 resuts in a division by zero.\",\"divsion_by_zero\":\"The expression $0 resuts in a division by zero.\",\"undefined_tanget_value\":\"Error at line $0: The tangent of $1° is undefined.\",\"negative_log_value\":\"Error at line $0: You cannot calculate the logarithm of a negative value.\",\"invalid_string_index\":\"Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4.\",\"negative_sqrt_value\":\"Error at line $0: It is not allowd to calculate the square root of a negative number.\",\"exceeded_recursive_calls\":\"Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls.\",\"invalid_for_variable\":\"Error at line $0: The variable $1 used in the repeat_for command must be of type int.\",\"invalid_for_from\":\"Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.\",\"invalid_for_to\":\"Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.\",\"invalid_for_pass\":\"Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.\",\"exceed_max_instructions\":\"The number of instructions executed by your program exceed the defined limit. Check your code for infinite loops or excessive recursive functions calls.\"}}","module.exports = {\"pt\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Caso de teste $0</span>: OK</div>\",\"test_case_duration\":\"Levou $0ms\",\"test_suite_grade\":\"A sua solução alcançou $0% da nota.\",\"awaiting_input_message\":\"O seu programa está em execução e aguardando uma entrada! Digite algo e pressione ENTER...\",\"assessment-empty-expected-tooltip\":\"A saída gerada foi além do esperado\",\"assessment-empty-generated-tooltip\":\"O programa não gerou saídas suficientes\",\"testcase_autogen_unused_input\":\"A solução submetida não lê todas entradas disponíveis no caso de teste 1\",\"testcase_autogen_empty\":\"Sua solução não gerou qualquer saída para o caso de teste $0.\",\"success_execution\":\"Execução do programa finalizada!\",\"aborted_execution\":\"A execução do programa foi interrompida!\",\"unexpected_execution_error\":\"Erro inesperado durante a execução do programa.\"},\"en\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Test case $0</span>: OK</div>\",\"test_case_duration\":\"Took $0ms\",\"test_suite_grade\":\"Your solution scored $0% of the grade.\",\"awaiting_input_message\":\"Your program is running and awaiting for an input. Type something and press ENTER…\",\"assessment-empty-expected-tooltip\":\"The generated output was beyond the amount expected\",\"assessment-empty-generated-tooltip\":\"The program did not generate enough outputs\",\"testcase_autogen_unused_input\":\"The submitted solution does not read all inputs available in the test case $0\",\"testcase_autogen_empty\":\"Your solution did not generate any output for test case $0.\",\"success_execution\":\"Program execution finished!\",\"aborted_execution\":\"Program execution was aborted!\",\"unexpected_execution_error\":\"Unexpected error during program execution.\"},\"es\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Test case $0</span>: OK</div>\",\"test_case_duration\":\"Tardó $0ms\",\"test_suite_grade\":\"Su solución obtuvo $0% de la calificación.\",\"awaiting_input_message\":\"Su programa se está ejecutando y esperando una entrada. Escriba algo y presione ENTER ...\",\"assessment-empty-expected-tooltip\":\"The generated output was beyond the amount expected\",\"assessment-empty-generated-tooltip\":\"El programa no generó suficientes resultados.\",\"testcase_autogen_unused_input\":\"La solución presentada no lee todas las entradas disponibles en el caso de prueba 1\",\"testcase_autogen_empty\":\"Su solución no generó ningún resultado para el caso de prueba de $ 0.\",\"success_execution\":\"¡Ejecución del programa terminada!\",\"aborted_execution\":\"¡La ejecución del programa fue abortada!\",\"unexpected_execution_error\":\"Error inesperado durante la ejecución del programa.\"}}","module.exports = {\"pt\":{\"function\":\"funcao\",\"btn_clear\":\"Limpar\",\"btn_function\":\"Função\",\"btn_arithmetic_plus\":\"Adição\",\"btn_arithmetic_minus\":\"Subtração\",\"btn_arithmetic_multiplication\":\"Multiplicação\",\"btn_arithmetic_division\":\"Divisão\",\"btn_arithmetic_module\":\"Módulo\",\"btn_break\":\"Pare\",\"btn_case\":\"Caso\",\"btn_add_var\":\"Adicionar variável\",\"btn_drag_and_drop_function\":\"Mover função\",\"btn_delete_function\":\"Excluir função\",\"expression_invalid\":\"Expressão inválida. Verifique a sintáxe antes de continuar.\",\"expression_undelcared_variable\":\"Variáveis não declaradas:\",\"expression_undeclared_function\":\"Funções não definidas:\",\"start\":\"inicio\",\"type_void\":\"vazio\",\"type_integer\":\"inteiro\",\"logic_operator_and\":\"E\",\"logic_operator_or\":\"OU\",\"logic_operator_not\":\"nao\",\"type_real\":\"real\",\"program\":\"programa\",\"type_text\":\"cadeia\",\"textvar_default_value\":\"texto\",\"type_boolean\":\"logico\",\"logic_value_true\":\"verdadeiro\",\"logic_value_false\":\"falso\",\"variable\":\"Variável\",\"command\":\"Comando\",\"new_parameter\":\"parametro\",\"new_variable\":\"variavel\",\"new_global\":\"global\",\"new_function\":\"nova_funcao\",\"matrix\":\"matriz\",\"vector\":\"vetor\",\"text_lock_expression\":\"Bloquear expressão\",\"text_unlock_expression\":\"Desbloquear expressão\",\"text_edit_expression\":\"Editar expressão manualmente\",\"text_edit_expression_confirm\":\"Confirmar edição\",\"text_edit_expression_cancel\":\"Cancelar edição\",\"text_add_function\":\"Adicionar uma nova função ao programa\",\"text_move_command\":\"Mover comando\",\"text_add_parameters\":\"Adicionar um novo parâmetro\",\"text_parameter_reference\":\"Definir parâmetro como passagem por referência\",\"text_parameter_copy\":\"Definir parâmetro como passagem por cópia\",\"text_comment_start\":\"Comentário inicial da função...\",\"text_comment_main\":\"Esta é a função principal...\",\"text_read_var\":\"Entrada/Leitura de dados\",\"text_write_var\":\"Saída/Escrita de dados\",\"text_command_read\":\"leia\",\"text_command_write\":\"escreva\",\"text_return\":\"devolva\",\"text_btn_return\":\"Devolver\",\"text_comment\":\"Comentário\",\"string_join_or\":\"ou\",\"matrix_info_string\":\"matriz de $0\",\"vector_info_string\":\"vetor de $0\",\"text_attribution\":\"Atribuição\",\"text_if\":\"se\",\"text_break\":\"pare\",\"text_else\":\"senao\",\"text_for\":\"repita_para\",\"text_code_while\":\"repita_enquanto\",\"text_code_do\":\"repita\",\"text_code_do_until\":\"ate_que\",\"text_command_do\":\"repita\",\"text_command_while\":\"repita enquanto\",\"text_command_do_until\":\"até que\",\"text_code_switch\":\"escolha\",\"text_code_case\":\"caso\",\"text_config_programming\":\"Programação\",\"text_config_programming_both\":\"Visual e textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Lógicos\",\"text_arithmetic_expression\":\"Aritméticos\",\"text_iftrue\":\"Se condição senão\",\"text_message_error_activity_file\":\"Aconteceu um erro ao processar a atividade. <br> Recarregue a página para tentar novamente.\",\"text_message_error_upload_file\":\"Não foi possível carregar o arquivo.<br>Verifique o conteúdo do arquivo e tente novamente.\",\"text_message_error_upload_close\":\"Fechar\",\"text_message_error_activity_reload\":\"Recarregar\",\"text_repeatNtimes\":\"Repita N vezes\",\"text_receives\":\"recebe\",\"text_whiletrue\":\"Enquanto verdadeiro\",\"text_dowhiletrue\":\"Repita até que verdadeiro\",\"text_switch\":\"Escolha\",\"text_functioncall\":\"Chamada de função\",\"text_value\":\"Valor\",\"text_operator\":\"Operador\",\"text_parentheses\":\"Parênteses\",\"text_change\":\"Alterar\",\"text_teacher_algorithm\":\"Algoritmo\",\"text_teacher_algorithm_include\":\"Incluir o algoritmo abaixo no exercício\",\"text_teacher_test_case\":\"Casos de teste\",\"text_teacher_config\":\"Configurações\",\"text_teacher_data_types\":\"Tipos de dados\",\"text_teacher_commands\":\"Comandos\",\"text_teacher_functions\":\"Funções\",\"text_teacher_create_functions\":\"Criar novas funções\",\"text_teacher_create_movement_functions\":\"Movimentar funções\",\"text_teacher_test_case_input\":\"Entrada\",\"text_teacher_test_case_output\":\"Saída\",\"text_teacher_test_case_actions\":\"Ações\",\"text_teacher_test_case_add\":\"Adicionar caso de teste\",\"text_header_ivprog_functions\":\"Funções do iVProg\",\"text_menu_functions_math\":\"Matemática\",\"text_menu_functions_text\":\"Texto\",\"text_menu_functions_array\":\"Arranjo\",\"text_menu_functions_conversion\":\"Conversão\",\"text_no_variable\":\"Nenhuma variável declarada\",\"text_no_variable_instruction\":\"Antes de utilizar uma variável, é necessário criá-la\",\"text_ivprog_description\":\"Programação Visual interativa na Internet\",\"tooltip_visual\":\"Programação visual\",\"tooltip_textual\":\"Programação textual\",\"tooltip_upload\":\"Upload de código fonte\",\"tooltip_download\":\"Download do código fonte\",\"tooltip_undo\":\"Desfazer\",\"tooltip_redo\":\"Refazer\",\"tooltip_run\":\"Executar o programa\",\"tooltip_evaluate\":\"Avaliar o programa\",\"tooltip_help\":\"Ajuda\",\"tooltip_add_global\":\"Adicionar variável global\",\"tooltip_hide_function\":\"Ocultar os elementos da função\",\"var_menu_select_var\":\"Selecione uma variável\",\"var_menu_select_all\":\"Selecione\",\"var_menu_select_function\":\"Selecione uma função\",\"expression_menu_select\":\"Construir uma expressão lógica\",\"inform_valid_content\":\"Informe o conteúdo!\",\"inform_valid_expression\":\"Construa uma expressão lógica!\",\"tooltip_terminal_clear\":\"Limpa o terminal removendo todos os textos já escritos e os pendentes.\",\"tooltip_terminal_show\":\"Exibe o terminal caso esteja escondido\",\"tooltip_terminal_hide\":\"Esconde o terminal caso não esteja escondido\",\"tooltip_menu_read\":\"Comando para receber dados pelo teclado\",\"tooltip_menu_write\":\"Comando para apresentar conteúdo ao usuário\",\"tooltip_menu_comments\":\"Bloco para comentários internos do programador\",\"tooltip_menu_attribution\":\"Comando para atribuir uma expressão a uma variável\",\"tooltip_menu_call_function\":\"Comando para realizar a chamada de uma função\",\"tooltip_menu_if_else\":\"Estrutura para que os comandos só sejam executados de acordo com as condições estabelecidas\",\"tooltip_menu_repeat_n_times\":\"Estrutura para executar um bloco de comandos repetidamente\",\"tooltip_menu_repeat_whiletrue\":\"Estrutura para repetir um bloco de comandos enquanto a condição for verdadeira\",\"tooltip_menu_repeat_dowhiletrue\":\"Estrutura que executa um bloco e o repete enquanto a condição for verdadeira\",\"tooltip_menu_repeat_switch\":\"Estrutura de escolha do bloco a ser executado\",\"tooltip_menu_repeat_return\":\"Comando para devolver o resultado e finalizar a função\",\"tooltip_move_var\":\"Mover variável\",\"tooltip_remove_var\":\"Excluir variável\",\"text_ivprog_version\":\"Versão\",\"text_teacher_filter\":\"Filtro\",\"text_teacher_filter_active\":\"Ativado\",\"text_teacher_filter_help\":\"Ao ativar o filtro, as modificações do iVProg estarão bloqueadas.\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duração\",\"assessment-detail-grade-label\":\"Nota\",\"assessment-detail-input-label\":\"Entradas\",\"assessment-detail-output-label\":\"Saídas\",\"assessment-detail-expected-label\":\"Esperava\",\"assessment-detail-generated-label\":\"Gerou\",\"assessment-detail-result-label\":\"Resultado\",\"assessment-detail-title\":\"Caso de Teste $0\",\"text_teacher_generate_outputs\":\"Gerar saídas\",\"text_teacher_generate_outputs_algorithm\":\"Antes de gerar as saídas, elabore um algoritmo!\",\"text_code_for_from\":\"de\",\"text_code_for_to\":\"ate\",\"text_code_for_pass\":\"passo\",\"text_for_from\":\"de\",\"text_for_to\":\"até\",\"text_for_pass\":\"passo\",\"text_relational_expression\":\"Relacionais\",\"write_command_newline_on\":\"Quebra de linha ativada\",\"write_command_newline_off\":\" Quebra de linha desativada\",\"write_seprator_menu_text\":\"Espaço\",\"initial_program_code\":\"programa {\\\\n\\\\n\\\\t\\\\tfuncao vazio inicio () {\\\\n\\\\t\\\\t\\\\t// Inicie seu codigo aqui!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"caractere\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separador para imprimir mais valores/variáveis\"},\"en\":{\"function\":\"function\",\"btn_clear\":\"Clean\",\"btn_function\":\"Function\",\"btn_arithmetic_plus\":\"Addition\",\"btn_arithmetic_minus\":\"Subtraction\",\"btn_arithmetic_multiplication\":\"Multiplication\",\"btn_arithmetic_division\":\"Division\",\"btn_arithmetic_module\":\"Remainder\",\"btn_break\":\"break\",\"btn_case\":\"Case\",\"btn_add_var\":\"Add a variable\",\"btn_drag_and_drop_function\":\"Move function\",\"btn_delete_function\":\"Delete function\",\"expression_invalid\":\"Invalid expression. Check the syntax before proceeding.\",\"expression_undelcared_variable\":\"Undeclared variables:\",\"expression_undeclared_function\":\"Undefined functions:\",\"start\":\"main\",\"type_void\":\"void\",\"type_integer\":\"int\",\"logic_operator_and\":\"AND\",\"logic_operator_or\":\"OR\",\"logic_operator_not\":\"not\",\"type_real\":\"real\",\"program\":\"program\",\"type_text\":\"string\",\"textvar_default_value\":\"text\",\"type_boolean\":\"bool\",\"logic_value_true\":\"true\",\"logic_value_false\":\"false\",\"variable\":\"Variable\",\"command\":\"Command\",\"new_parameter\":\"parameter\",\"new_variable\":\"variable\",\"new_global\":\"global\",\"new_function\":\"new_function\",\"matrix\":\"matrix\",\"vector\":\"vector\",\"text_lock_expression\":\"Block expression\",\"text_unlock_expression\":\"Unlock expression\",\"text_edit_expression\":\"Edit expression manually\",\"text_edit_expression_confirm\":\"Confirm edition\",\"text_edit_expression_cancel\":\"Cancel edition\",\"text_add_function\":\"Add a new function to the program\",\"text_move_command\":\"Move command\",\"text_add_parameters\":\"Add a new parameter\",\"text_parameter_reference\":\"Define parameter passed by reference\",\"text_parameter_copy\":\"Define parameter passed by copy\",\"text_comment_start\":\"Function initial comment\",\"text_comment_main\":\"This is the main funcion\",\"text_read_var\":\"Input/Read data\",\"text_write_var\":\"Output/Write data\",\"text_command_read\":\"read\",\"text_command_write\":\"write\",\"text_return\":\"return\",\"text_btn_return\":\"Return\",\"text_comment\":\"Comment\",\"string_join_or\":\"or\",\"matrix_info_string\":\"matrix of $0\",\"vector_info_string\":\"vector of $0\",\"text_attribution\":\"Assignment\",\"text_if\":\"if\",\"text_break\":\"break\",\"text_else\":\"else\",\"text_for\":\"repeat_for\",\"text_code_while\":\"repeat_while\",\"text_code_do\":\"repeat\",\"text_code_do_until\":\"until\",\"text_command_do\":\"repeat\",\"text_command_while\":\"repeat while\",\"text_command_do_until\":\"until\",\"text_code_switch\":\"switch\",\"text_code_case\":\"case\",\"text_config_programming\":\"Programming\",\"text_config_programming_both\":\"Visual & Textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Logic\",\"text_arithmetic_expression\":\"Arithmetics\",\"text_iftrue\":\"If condition else\",\"text_message_error_activity_file\":\"There was an error processing the activity.<br> Reload the page to try again.\",\"text_message_error_upload_file\":\"It was not possible upload the file.<br>Verify the file's content and try again.\",\"text_message_error_upload_close\":\"Close\",\"text_message_error_activity_reload\":\"Reload\",\"text_repeatNtimes\":\"Repeat N times\",\"text_receives\":\"receives\",\"text_whiletrue\":\"While true\",\"text_dowhiletrue\":\"Repeat until true\",\"text_switch\":\"Switch\",\"text_functioncall\":\"Function call\",\"text_value\":\"Value\",\"text_operator\":\"Operator\",\"text_parentheses\":\"Parentheses\",\"text_change\":\"Modify\",\"text_teacher_algorithm\":\"Algorithm\",\"text_teacher_algorithm_include\":\"Include the algorithm below in the activity\",\"text_teacher_test_case\":\"Test cases\",\"text_teacher_config\":\"Configurations\",\"text_teacher_data_types\":\"Data types\",\"text_teacher_commands\":\"Commands\",\"text_teacher_functions\":\"Functions\",\"text_teacher_create_functions\":\"Create new functions\",\"text_teacher_create_movement_functions\":\"Move functions\",\"text_teacher_test_case_input\":\"Input\",\"text_teacher_test_case_output\":\"Output\",\"text_teacher_test_case_actions\":\"Actions\",\"text_teacher_test_case_add\":\"Add test case\",\"text_header_ivprog_functions\":\"iVProg Functions\",\"text_menu_functions_math\":\"Math\",\"text_menu_functions_text\":\"Text\",\"text_menu_functions_array\":\"Array\",\"text_menu_functions_conversion\":\"Conversion\",\"text_no_variable\":\"No variable declared\",\"text_no_variable_instruction\":\"Before using a variable, you need to create it\",\"text_ivprog_description\":\"Interactive and Visual Programming on the Internet\",\"tooltip_visual\":\"Visual programming\",\"tooltip_textual\":\"Textual programming\",\"tooltip_upload\":\"Upload source code\",\"tooltip_download\":\"Download source code\",\"tooltip_undo\":\"Undo\",\"tooltip_redo\":\"Redo\",\"tooltip_run\":\"Run the program\",\"tooltip_evaluate\":\"Evaluate the program\",\"tooltip_help\":\"Help\",\"tooltip_add_global\":\"Add a global variable\",\"tooltip_hide_function\":\"Hide function elements\",\"var_menu_select_var\":\"Select a variable\",\"var_menu_select_all\":\"Select\",\"var_menu_select_function\":\"Select a function\",\"expression_menu_select\":\"Construct a logic expression\",\"inform_valid_content\":\"Provide some data\",\"inform_valid_expression\":\"Construct a logic expression\",\"tooltip_terminal_clear\":\"Clears the terminal by removing all wrriten and pending text.\",\"tooltip_terminal_show\":\"Shows the terminal if it is hidden\",\"tooltip_terminal_hide\":\"Hides the terminal if it is not on display\",\"tooltip_menu_read\":\"Command to input data from keyboard\",\"tooltip_menu_write\":\"Command to present content to user\",\"tooltip_menu_comments\":\"Block to comments from developer\",\"tooltip_menu_attribution\":\"Command to assign an expression to a variable\",\"tooltip_menu_call_function\":\"Command to execute a function call\",\"tooltip_menu_if_else\":\"Structure in which command only run when the conditions are satisfied\",\"tooltip_menu_repeat_n_times\":\"Structure to execute a block of commands repeatedly\",\"tooltip_menu_repeat_whiletrue\":\"Structure to execute a block repeatdly while condition is true\",\"tooltip_menu_repeat_dowhiletrue\":\"Structure that executes a block and repeat while the condition is true\",\"tooltip_menu_repeat_switch\":\"Structure that choices the block to be executed\",\"tooltip_menu_repeat_return\":\"Command to return the result and finish the function\",\"tooltip_move_var\":\"Move variable\",\"tooltip_remove_var\":\"Delete variable\",\"text_ivprog_version\":\"Version\",\"text_teacher_filter\":\"Filter\",\"text_teacher_filter_active\":\"Activated\",\"text_teacher_filter_help\":\"By activating the filter modifications in iVProg will be blocked\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duration\",\"assessment-detail-grade-label\":\"Grade\",\"assessment-detail-input-label\":\"Inputs\",\"assessment-detail-output-label\":\"Outputs\",\"assessment-detail-expected-label\":\"Expected\",\"assessment-detail-generated-label\":\"Generated\",\"assessment-detail-result-label\":\"Result\",\"assessment-detail-title\":\"Test Case $0\",\"text_teacher_generate_outputs\":\"Generate outputs\",\"text_teacher_generate_outputs_algorithm\":\"Before generating the outputs you need to create an algorithm\",\"text_code_for_from\":\"from\",\"text_code_for_to\":\"to\",\"text_code_for_pass\":\"pass\",\"text_for_from\":\"from\",\"text_for_to\":\"to\",\"text_for_pass\":\"pass\",\"text_relational_expression\":\"Relational\",\"write_command_newline_on\":\" Line break is on\",\"write_command_newline_off\":\" Line break is off\",\"write_seprator_menu_text\":\"Spacer\",\"initial_program_code\":\"program {\\\\n\\\\n\\\\t\\\\tfunction void main () {\\\\n\\\\t\\\\t\\\\t// Start your code here!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"char\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separator used to print more values/variables\"},\"es\":{\"function\":\"function\",\"btn_clear\":\"Limpiar\",\"btn_function\":\"Funcíon\",\"btn_arithmetic_plus\":\"Adición\",\"btn_arithmetic_minus\":\"Sustracción\",\"btn_arithmetic_multiplication\":\"Multiplicación\",\"btn_arithmetic_division\":\"División\",\"btn_arithmetic_module\":\"Resto\",\"btn_break\":\"break\",\"btn_case\":\"Caso\",\"btn_add_var\":\"Add a variable\",\"btn_drag_and_drop_function\":\"Mover función \",\"btn_delete_function\":\"Borrar función \",\"expression_invalid\":\"Expresión no válida. Verifique la sintaxis antes de continuar.\",\"expression_undelcared_variable\":\"Variables no declaradas:\",\"expression_undeclared_function\":\"Funcíon no declaradas:\",\"start\":\"main\",\"type_void\":\"void\",\"type_integer\":\"int\",\"logic_operator_and\":\"AND\",\"logic_operator_or\":\"OR\",\"logic_operator_not\":\"not\",\"type_real\":\"real\",\"program\":\"program\",\"type_text\":\"string\",\"textvar_default_value\":\"texto\",\"type_boolean\":\"bool\",\"logic_value_true\":\"true\",\"logic_value_false\":\"false\",\"variable\":\"Variable\",\"command\":\"Comando\",\"new_parameter\":\"parametro\",\"new_variable\":\"variable\",\"new_global\":\"global\",\"new_function\":\"nueva_función\",\"matrix\":\"matriz\",\"vector\":\"vector\",\"text_lock_expression\":\"Expresión de bloque \",\"text_unlock_expression\":\"Desbloquear expresión \",\"text_edit_expression\":\"Editar expresión manualmente \",\"text_edit_expression_confirm\":\"Confirmar edición\",\"text_edit_expression_cancel\":\"Cancelar edición\",\"text_add_function\":\"Agregar una nueva función al programa\",\"text_move_command\":\"Mover comando\",\"text_add_parameters\":\"Agregar un nuevo parámetro\",\"text_parameter_reference\":\"Define parameter passed by reference\",\"text_parameter_copy\":\"Define parameter passed by copy\",\"text_comment_start\":\"Comentario inicial de la función\",\"text_comment_main\":\"Esta es la función principal\",\"text_read_var\":\"Entrada/Lectura de dados\",\"text_write_var\":\"Salida/Escribir datos\",\"text_command_read\":\"read\",\"text_command_write\":\"write\",\"text_return\":\"return\",\"text_btn_return\":\"Devolución\",\"text_comment\":\"Comentario\",\"string_join_or\":\"or\",\"matrix_info_string\":\"matriz de $0\",\"vector_info_string\":\"vector de $0\",\"text_attribution\":\"Asignación\",\"text_if\":\"if\",\"text_break\":\"break\",\"text_else\":\"else\",\"text_for\":\"repeat_for\",\"text_code_while\":\"repeat_while\",\"text_code_do\":\"repeat\",\"text_code_do_until\":\"until\",\"text_command_do\":\"repeat\",\"text_command_while\":\"repeat while\",\"text_command_do_until\":\"until\",\"text_code_switch\":\"switch\",\"text_code_case\":\"case\",\"text_config_programming\":\"Programación\",\"text_config_programming_both\":\"Visual & Textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Lógicos\",\"text_arithmetic_expression\":\"Aritmética\",\"text_iftrue\":\"Si condicion sino\",\"text_message_error_activity_file\":\"Se produjo un error al procesar la actividad.<br> Recargar la página para volver a intentarlo.\",\"text_message_error_upload_file\":\"text_message_error_upload_file\",\"text_message_error_upload_close\":\"Close\",\"text_message_error_activity_reload\":\"Recargar\",\"text_repeatNtimes\":\"Repetir N veces\",\"text_receives\":\"receives\",\"text_whiletrue\":\"Mientras verdad\",\"text_dowhiletrue\":\"Repita hasta verdad\",\"text_switch\":\"Switch\",\"text_functioncall\":\"Llamada de función\",\"text_value\":\"Valor\",\"text_operator\":\"Operador\",\"text_parentheses\":\"Paréntesis\",\"text_change\":\"Modify\",\"text_teacher_algorithm\":\"Algorithm\",\"text_teacher_algorithm_include\":\"Incluir el algoritmo en la actividad.\",\"text_teacher_test_case\":\"Test cases\",\"text_teacher_config\":\"Configuraciones\",\"text_teacher_data_types\":\"Data types\",\"text_teacher_commands\":\"Commands\",\"text_teacher_functions\":\"Funciones\",\"text_teacher_create_functions\":\"Create new functions\",\"text_teacher_create_movement_functions\":\"Move functions\",\"text_teacher_test_case_input\":\"Input\",\"text_teacher_test_case_output\":\"Output\",\"text_teacher_test_case_actions\":\"Actions\",\"text_teacher_test_case_add\":\"Add test case\",\"text_header_ivprog_functions\":\"iVProg Functions\",\"text_menu_functions_math\":\"Math\",\"text_menu_functions_text\":\"Text\",\"text_menu_functions_array\":\"Array\",\"text_menu_functions_conversion\":\"Conversion\",\"text_no_variable\":\"No variable declared\",\"text_no_variable_instruction\":\"Antes de usar una variable, debe crearla\",\"text_ivprog_description\":\"Interactive and Visual Programming on the Internet\",\"tooltip_visual\":\"Visual programming\",\"tooltip_textual\":\"Textual programming\",\"tooltip_upload\":\"Upload source code\",\"tooltip_download\":\"Download source code\",\"tooltip_undo\":\"Undo\",\"tooltip_redo\":\"Redo\",\"tooltip_run\":\"Run the program\",\"tooltip_evaluate\":\"Evaluate the program\",\"tooltip_help\":\"Help\",\"tooltip_add_global\":\"Add a global variable\",\"tooltip_hide_function\":\"Hide function elements\",\"var_menu_select_var\":\"Select a variable\",\"var_menu_select_all\":\"Select\",\"var_menu_select_function\":\"Select a function\",\"expression_menu_select\":\"Construct a logic expression\",\"inform_valid_content\":\"Proporcionar algunos datos\",\"inform_valid_expression\":\"Construct a logic expression\",\"tooltip_terminal_clear\":\"Borra el terminal eliminando todo el texto escrito y pendiente.\",\"tooltip_terminal_show\":\"Muestra el terminal si está oculto.\",\"tooltip_terminal_hide\":\"Oculta el terminal si no está en exhibición\",\"tooltip_menu_read\":\"Command to input data from keyboard\",\"tooltip_menu_write\":\"Command to present content to user\",\"tooltip_menu_comments\":\"Block to comments from developer\",\"tooltip_menu_attribution\":\"Command to assign an expression to a variable\",\"tooltip_menu_call_function\":\"Command to execute a function call\",\"tooltip_menu_if_else\":\"Structure in which command only run when the conditions are satisfied\",\"tooltip_menu_repeat_n_times\":\"Structure to execute a block of commands repeatedly\",\"tooltip_menu_repeat_whiletrue\":\"Structure to execute a block repeatdly while condition is true\",\"tooltip_menu_repeat_dowhiletrue\":\"Structure that executes a block and repeat while the condition is true\",\"tooltip_menu_repeat_switch\":\"Structure that choices the block to be executed\",\"tooltip_menu_repeat_return\":\"Command to return the result and finish the function\",\"tooltip_move_var\":\"Move variable\",\"tooltip_remove_var\":\"Delete variable\",\"text_ivprog_version\":\"Version\",\"text_teacher_filter\":\"Filter\",\"text_teacher_filter_active\":\"Activated\",\"text_teacher_filter_help\":\"Al activar el filtro, las modificaciones en iVProg serán bloqueadas\",\"text_join_assessment_outputs\":\" ;\",\"assessment-detail-time-label\":\"Duration\",\"assessment-detail-grade-label\":\"Grade\",\"assessment-detail-input-label\":\"Inputs\",\"assessment-detail-output-label\":\"Outputs\",\"assessment-detail-expected-label\":\"Expected\",\"assessment-detail-generated-label\":\"Generated\",\"assessment-detail-result-label\":\"Result\",\"assessment-detail-title\":\"Test Case $0\",\"text_teacher_generate_outputs\":\"Generate outputs\",\"text_teacher_generate_outputs_algorithm\":\"Antes de generar las salidas necesita crear un algoritmo\",\"text_code_for_from\":\"from\",\"text_code_for_to\":\"to\",\"text_code_for_pass\":\"pass\",\"text_for_from\":\"from\",\"text_for_to\":\"to\",\"text_for_pass\":\"pass\",\"text_relational_expression\":\"Relational\",\"write_command_newline_on\":\"El salto de línea está activado\",\"write_command_newline_off\":\"El salto de línea está desactivado\",\"write_seprator_menu_text\":\"Spacer\",\"initial_program_code\":\"program {\\\\n\\\\n\\\\t\\\\tfunction void main () {\\\\n\\\\t\\\\t\\\\t// Start your code here!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"char\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separator used to print more values/variables\"}}","import line_i18n from 'line-i18n'\nimport { IVProgProcessor } from \"./../processor/ivprogProcessor\";\nimport { DOMConsole} from \"./../io/domConsole\";\nimport * as LocalizedStringsService from \"../services/localizedStringsService\";\nimport { OutputMatching } from './output_matching/output_matching';\nimport { Config } from '../util/config';\n\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nconst StringTypes = line_i18n.StringTypes;\n\nconst AssessmentConfig = {\n max_instruction_count: 350250,\n suspend_threshold: 200\n}\n\nexport class IVProgAssessment {\n\n constructor (ast_code, testCases, domConsole) {\n this.ast_code = ast_code;\n this.testCases = testCases;\n this.domConsole = domConsole;\n this.old_config = JSON.parse(JSON.stringify(Config));\n Config.setConfig(AssessmentConfig);\n }\n\n runTest () {\n try {\n // loop test cases and show messages through domconsole\n const partialTests = this.testCases.map( (t, name) => {\n return new OutputMatching(new IVProgProcessor(this.ast_code), t.input, t.output, name);\n });\n const testResult = partialTests.map(om => om.eval());\n return Promise.all(testResult).then(results => {\n let grade = 0;\n for(let i = 0; i < results.length; i += 1) {\n const result = results[i];\n grade += result.grade;\n if(result.grade == 1) {\n this.writeToConsole(DOMConsole.INFO, StringTypes.MESSAGE,'test_case_success',\n result.name + 1, result.generateOutput());\n } else if (result.status == 1) {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed_exception',\n result.name + 1, result.error_msg, result.generateOutput());\n } else {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed',\n result.name + 1, result.generateOutput());\n }\n }\n grade /= results.length;\n const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n return grade;\n });\n // return testResult.then(function (total) {\n // const grade = total / this.testCases.length;\n // const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n // this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n // return Promise.resolve(grade)\n // }).catch(err => {\n // this.domConsole.err(\"Erro inesperado durante o cálculo da nota.\");// try and show error messages through domconsole\n // this.domConsole.err(err.message);\n // return Promise.resolve(0);\n // });\n } catch (error) {\n this.showErrorMessage(DOMConsole.ERR, StringTypes.MESSAGE, \"unexpected_execution_error\");\n this.domConsole.err(error.message);\n return Promise.resolve(0);\n } finally {\n Config.setConfig(this.old_config);\n }\n }\n\n showErrorMessage (errorID, ...args) {\n this.domConsole.err(LocalizedStrings.getError(errorID, args));\n }\n\n showInfoMessage (msgID, ...args) {\n this.domConsole.info(LocalizedStrings.getMessage(msgID, args));\n }\n\n writeToConsole (channel, msgType, msgID, ...args) {\n let msg = LocalizedStrings.getString(msgID, msgType);\n msg = LocalizedStrings.processString(msg, args);\n this.domConsole.writeRawHTML(msg, channel);\n }\n}\n","import StringDiff from \"./../../util/string_diff\";\nimport { LocalizedStrings } from './../../services/localizedStringsService'\n\nexport class OutputAssessmentResult {\n\n static get PAGE_TEMPLATE () {\n return `<!DOCTYPE html>\n <html>\n <head>\n <meta http-equiv='content-type' content='text/html; charset=UTF-8'>\n <link rel='stylesheet' href='css/ivprog-assessment.css' type='text/css'/>\n </head>\n <body>\n :assessment-result:\n </body>\n </html>`;\n }\n\n static get DETAIL_TEMPLATE () {\n return `<div class='details-body'>\n <div class='details-header'>\n <h2>:test-name:</h2>\n <p>:time-label:: <span>:time:ms</span></p>\n <p>:grade-label:: <span>:grade:%</span></p>\n </div>\n <div>\n <h3>:input-label:</h3>\n <ul>\n <li>:input-list:</li>\n </ul>\n </div>\n <div>\n <h3>:output-label:</h3>\n :output-result:\n </div>\n </div>`;\n }\n\n static get OUPUT_TABLE_TEMPLATE () {\n return `<div class='detaisl-div-table'>\n <table class='assessment-output-table'>\n <tr>\n <th>:expected-label:</th>\n <th>:generated-label:</th>\n <th>:result-label:</th>\n </tr>\n :results:\n </table>\n </div>`;\n }\n\n static get OUTPUT_TEMPLATE () {\n return `<tr><td class=':class-expected:'>$0</td>\n <td class=':class-generated:'>$1</td>\n <td class=':class-result:'>$2</td></tr>`;\n }\n\n static get EMPTY_OUTPUT_TEMPLATE () {\n return `<div class='assessment-popup'><img class='assessment-empty-output' src='img/empty.svg'>\n <span class='assessment-popuptext'>$0</span></div>`;\n }\n\n static get FAILED_TEMPLATE () {\n return `<p class='assessment-failed-execution'><span class='assessment-failed-case'>✗</span>$0</p>`;\n }\n\n static get INPUT_INFO_TEMPLATE () {\n return `<span class='$0'>$1</span>`;\n }\n\n // Status code - it is not grade related!\n // 0 - Succesful execution\n // 1 - failed execution\n constructor (name, status, inputs, result, store, time, error_msg = '') {\n this.name = name;\n this.status = status;\n this.inputs = inputs;\n this.results = result;\n this.store = store;\n this.time = time;\n this.error_msg = error_msg;\n }\n\n get grade () {\n if(this.results == null) {\n return 0;\n }\n return this.results.reduce((prev, val) => prev + val.grade, 0) / this.results.length;\n }\n\n prepareResults () {\n let template = OutputAssessmentResult.DETAIL_TEMPLATE;\n const grade = (this.grade * 100).toFixed(2);\n const time = this.time || \"-\";\n template = template.replace(':test-name:', LocalizedStrings.getUI('assessment-detail-title', [this.name + 1]));\n template = template.replace(':time-label:', LocalizedStrings.getUI('assessment-detail-time-label'));\n template = template.replace(':time:', time);\n template = template.replace(':grade-label:', LocalizedStrings.getUI('assessment-detail-grade-label'));\n template = template.replace(':grade:', grade);\n const input_spans = this.prepareInputList(this.inputs);\n template = template.replace(':input-label:', LocalizedStrings.getUI('assessment-detail-input-label'));\n template = template.replace(':input-list:', input_spans);\n template = template.replace(':output-label:', LocalizedStrings.getUI('assessment-detail-output-label'));\n if(this.status == 0) {\n const output_rows = this.results.map(result => {\n if(result.type == \"string\") {\n return this.formatString(result);\n } else if (result.type == \"number\") {\n return this.formatNumber(result);\n } else {\n return this.formatBool(result);\n }\n }, this);\n template = template.replace(':output-result:', this.prepareOutputTable(output_rows));\n } else {\n let failed_text = OutputAssessmentResult.FAILED_TEMPLATE;\n failed_text = failed_text.replace(\"$0\", this.error_msg);\n template = template.replace(\":output-result:\", failed_text);\n }\n return template;\n }\n\n prepareInputList (input_list) {\n const list = input_list.map(input => {\n let template = OutputAssessmentResult.INPUT_INFO_TEMPLATE;\n template = template.replace(\"$1\", input.value);\n if(input.read) {\n template = template.replace(\"$0\", \"assessment-input-read\");\n } else {\n template = template.replace(\"$0\", \"assessment-input-unread\");\n }\n return template;\n }, this);\n return list.join(LocalizedStrings.getUI('text_join_assessment_outputs'));\n }\n\n prepareOutputTable (output_rows) {\n let template = OutputAssessmentResult.OUPUT_TABLE_TEMPLATE;\n template = template.replace(':expected-label:', LocalizedStrings.getUI('assessment-detail-expected-label'));\n template = template.replace(':generated-label:', LocalizedStrings.getUI('assessment-detail-generated-label'));\n template = template.replace(':result-label:', LocalizedStrings.getUI('assessment-detail-result-label'));\n template = template.replace(':results:', output_rows.join(''));\n return template;\n }\n\n generateOutput () {\n const assessment_result = this.prepareResults();\n let page = OutputAssessmentResult.PAGE_TEMPLATE;\n page = page.replace(':assessment-result:', assessment_result);\n page = page.replace(/(\\r|\\n|\\t)/gm,'').replace(/> *</g, '><');\n return page;\n }\n\n formatNumber (result) {\n const result_class = result.grade == 1 ? 'assessment-number-result' : 'assessment-number-result-failed';\n let template = this.formatOutput('assessment-number-expected',\n 'assessment-number-generated', result_class, result);\n return template\n }\n\n formatBool (result) {\n const result_class = result.grade == 1 ? 'assessment-bool-result' : 'assessment-bool-result-failed';\n let template = this.formatOutput('assessment-bool-expected',\n 'assessment-bool-generated', result_class, result);\n return template\n }\n\n formatOutput (expected_class, generated_class, result_class, result) {\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n template = template.replace(\":class-result:\", result_class);\n let expected_tmpl = result.expected;\n let generated_tmpl = result.generated;\n if(expected_tmpl == null) {\n expected_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-expected-tooltip'));\n } else if(generated_tmpl == null) {\n generated_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-generated-tooltip'));\n }\n template = template.replace(\"$0\", expected_tmpl);\n template = template.replace(\"$1\", generated_tmpl);\n const final_result = result.grade == 1 ? \"✓\" : \"✗\"\n template = template.replace(\"$2\", final_result);\n return template\n }\n\n formatString (result) {\n const expected_class = 'assessment-string-expected';\n const generated_class = 'assessment-string-generated';\n //const result_class = 'assessment-string-result';\n\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n //template = template.replace(\":class-result:\", result_class);\n\n const g_string = result.generated || \"\";\n const e_string = result.expected || \"\";\n // console.log(\"generated: \", g_string,\"expected: \", e_string);\n let g_string_tmpl = g_string;\n let e_string_tmpl = e_string;\n if(result.generated == null) {\n g_string_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-generated-tooltip'));\n } else if (result.expected == null) {\n e_string_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-expected-tooltip'));\n }\n template = template.replace(\"$0\", e_string_tmpl);\n template = template.replace(\"$1\", g_string_tmpl);\n if(result.grade == 1) {\n template = template.replace(\"$2\", \"✓\");\n template = template.replace(\":class-result:\", 'assessment-string-result');\n } else {\n const diff = StringDiff(g_string, e_string);\n // console.log(diff);\n const diff_vec = diff.map(part => this.getDiffStringStyle(part[1], part[0]), this);\n const diff_string = diff_vec.reduce((prev, actual) => prev + actual, \"\");\n template = template.replace(\"$2\", \"<span class='assessment-failed-case'>✗</span>\" + diff_string);\n template = template.replace(\":class-result:\", \"assessment-string-diff\");\n }\n return template;\n }\n\n getDiffStringStyle (text, action) {\n const template = \"<span class='$0'>$1</span>\"\n // Fix missing whitespace when its a single element\n text = text.replace(/\\s/g,\"&#160;\");\n switch(action) {\n case StringDiff.INSERT:\n return template.replace(\"$0\", \"stringdiff-insert\").replace(\"$1\", text);\n case StringDiff.DELETE:\n return template.replace(\"$0\", \"stringdiff-delete\").replace(\"$1\", text);\n case StringDiff.EQUAL:\n return template.replace(\"$0\", \"stringdiff-equal\").replace(\"$1\", text);\n }\n }\n}\n","import { Decimal } from 'decimal.js';\nimport { InputAssessment } from \"../../util/input_assessment\";\nimport { OutputTest } from \"../../util/outputTest\";\nimport { Config } from \"../../util/config\";\nimport { levenshteinDistance } from \"../../util/utils\";\nimport { OutputAssessmentResult } from './assessment_result';\nimport * as TypeParser from \"./../../typeSystem/parsers\";\nimport * as LocalizedStringsService from \"../../services/localizedStringsService\";\nimport * as OutputResult from \"./output_result\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport class OutputMatching {\n\n static get NUM_REGEX () {\n return /^[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)$/;\n }\n\n static get NUM_IN_STRING_REGEX () {\n return /[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)/g;\n }\n\n static get BOOLEAN_REGEX () {\n const str = `^(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})$`;\n return new RegExp(str);\n }\n\n static get BOOLEAN_IN_STRING_REGEX () {\n const str = `(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})`;\n return new RegExp(str, 'g');\n }\n\n constructor (program, input_list, expected_output, test_name) {\n this.program = program;\n this.name = test_name;\n this.input_list = input_list;\n this.expected_output = expected_output;\n }\n\n eval () {\n const refThis = this;\n const input = new InputAssessment(this.input_list);\n const gen_output = new OutputTest();\n this.program.registerInput(input);\n this.program.registerOutput(gen_output);\n const start_time = Date.now();\n return this.program.interpretAST().then( sto => {\n const final_time = Date.now() - start_time;\n if(input.isInputAvailable()) {\n return new OutputAssessmentResult(this.name, 1, input.input_list,\n null, sto, final_time, refThis.getErrorMessage('test_case_few_reads', this.name+1))\n }\n const result = gen_output.list.map((g_out, i) => {\n if(i >= this.expected_output.length) {\n return new OutputResult.OutputMatchResult(null, g_out, 0, this.getPotentialOutputType(g_out));\n }\n return this.outputMatch(g_out, this.expected_output[i]);\n }, this);\n if(this.expected_output.length > gen_output.list.length) {\n console.log(\"Saída insuficientes!\",this.expected_output.length,gen_output.list.length);\n for(let i = gen_output.list.length; i < this.expected_output.length; ++i) {\n const e_out = this.expected_output[i];\n result.push(new OutputResult.OutputMatchResult(e_out, null, 0, this.getPotentialOutputType(e_out)));\n }\n } else if (this.expected_output.length == 0 && this.expected_output.length == gen_output.list.length) {\n // no output expected....\n result.push(new OutputResult.OutputMatchResult(\"\", \"\", 1, \"string\"));\n }\n return new OutputAssessmentResult(this.name, 0, input.input_list, result, sto, final_time);\n }).catch(error => {\n return new OutputAssessmentResult(this.name, 1, input.input_list, null, null,\n null, refThis.getErrorMessage('test_case_exception', this.name + 1, error.message))\n });\n }\n\n getPotentialOutputType (output) {\n if(OutputMatching.NUM_REGEX.test(output)) {\n return \"number\";\n } else if (OutputMatching.BOOLEAN_REGEX.test(output)) {\n return \"bool\";\n } else {\n return \"string\";\n }\n }\n\n outputMatch (g_output, e_output) {\n if(OutputMatching.NUM_REGEX.test(e_output)) {\n if(!OutputMatching.NUM_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output);\n }\n const g_num = new Decimal(g_output);\n const e_num = new Decimal(e_output);\n return this.checkNumbers(g_num, e_num);\n } else if (OutputMatching.BOOLEAN_REGEX.test(e_output)) {\n if (!OutputMatching.BOOLEAN_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output)\n }\n const g_bool = TypeParser.toBool(g_output);\n const e_bool = TypeParser.toBool(e_output);\n return this.checkBoolean(g_bool, e_bool);\n } else {\n return this.checkStrings(g_output, e_output);\n }\n }\n\n checkNumbers (g_num, e_num) {\n const decimalPlaces = Math.min(e_num.dp(), Config.decimalPlaces);\n g_num = new Decimal(g_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n e_num = new Decimal(e_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n const result = g_num.eq(e_num);\n const grade = result ? 1 : 0;\n return OutputResult.createNumberResult(e_num.toNumber(), g_num.toNumber(), grade);\n }\n\n checkBoolean (g_bool, e_bool) {\n const grade = g_bool == e_bool ? 1 : 0;\n const g_bool_text = TypeParser.convertBoolToString(g_bool);\n const e_bool_text = TypeParser.convertBoolToString(e_bool);\n return OutputResult.createBoolResult(e_bool_text, g_bool_text, grade);\n }\n\n checkStrings (g_output, e_ouput) {\n const assessmentList = []\n let e_output_clean = e_ouput.trim();\n let g_output_clean = g_output.trim();\n if (OutputMatching.NUM_IN_STRING_REGEX.test(e_ouput)) {\n const expected_numbers = e_ouput.match(OutputMatching.NUM_IN_STRING_REGEX);\n const generated_numbers = g_output.match(OutputMatching.NUM_IN_STRING_REGEX) || [];\n const result = generated_numbers.map((val, i) => {\n if(i >= expected_numbers.length) {\n return OutputResult.createNumberResult(null, val, 0);\n }\n const g_val = new Decimal(val)\n const e_val = new Decimal(expected_numbers[i]);\n return this.checkNumbers(g_val, e_val);\n }, this);\n if(expected_numbers.length > generated_numbers.length) {\n for(let i = generated_numbers.length; i < expected_numbers.length; ++i) {\n result.push(OutputResult.createNumberResult(expected_numbers[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '');\n g_output_clean = g_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '');\n const numberGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(numberGrade);\n }\n if(OutputMatching.BOOLEAN_IN_STRING_REGEX.test(e_ouput)) {\n const expected_bools = e_ouput.match(OutputMatching.BOOLEAN_IN_STRING_REGEX);\n const generated_bools = g_output.match(OutputMatching.BOOLEAN_IN_STRING_REGEX) || [];\n const result = generated_bools.map((val, i) => {\n if(i >= expected_bools.length) {\n return OutputResult.createBoolResult(null, val, 0);\n }\n const g_bool = TypeParser.toBool(val);\n const e_bool = TypeParser.toBool(expected_bools[i]);\n return this.checkBoolean(g_bool, e_bool );\n }, this);\n if(expected_bools.length > generated_bools.length) {\n for(let i = generated_bools.length; i < expected_bools.length; ++i) {\n result.push(OutputResult.createBoolResult(expected_bools[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '');\n g_output_clean = g_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '');\n const boolGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(boolGrade);\n }\n const dist = levenshteinDistance(g_output_clean, e_output_clean);\n let gradeDiff = Math.max(0, e_output_clean.length - dist)/e_output_clean.length;\n gradeDiff = Number.isNaN(gradeDiff) ? 0 : gradeDiff;\n const assessment_size = assessmentList.length + 1;\n const gradeAcc = assessmentList.reduce((prev, val) => prev + val/assessment_size, 0);\n const finalGrade = 1 * (gradeDiff/assessment_size + gradeAcc);\n return OutputResult.createStringResult(e_ouput, g_output, finalGrade);\n }\n\n getErrorMessage (errorID, ...args) {\n return LocalizedStrings.getError(errorID, args);\n }\n}\n\n","\nexport function createNumberResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"number\");\n}\n\nexport function createBoolResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"bool\");\n}\n\nexport function createStringResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"string\");\n}\n\nexport class OutputMatchResult {\n\n constructor (expected, generated, grade, type) {\n this.expected = expected;\n this.generated = generated;\n this.grade = grade;\n this.type = type;\n }\n}","import { Assign } from './assign';\n\nexport class ArrayIndexAssign extends Assign {\n\n constructor (id, lineExpression, columnExpression, expression) {\n super(id, expression);\n this.line = lineExpression;\n this.column = columnExpression;\n }\n}\n","import { Declaration } from './declaration';\n\nexport class ArrayDeclaration extends Declaration {\n\n constructor (id, type, lines, columns, initial, isConst) {\n super(id, type, initial, isConst);\n this.lines = lines;\n this.columns = columns;\n }\n\n get isVector () {\n return this.columns == null;\n }\n}","import { Command } from './command';\n\nexport class Assign extends Command {\n \n constructor (id, expression) {\n super();\n this.id = id;\n this.expression = expression;\n }\n}","import { Command } from './command';\n\nexport class Break extends Command {\n\n constructor () {\n super();\n }\n}\n","import { Command } from './command';\n\nexport class Case extends Command {\n\n constructor (expression) {\n super();\n this.expression = expression;\n /**\n * @type {Command[]}\n */\n this.commands = [];\n }\n\n /**\n * \n * @param {Command[]} commands \n */\n setCommands (commands) {\n this.commands = commands;\n }\n\n get isDefault () {\n return this.expression === null;\n }\n}","export class Command {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n this._sourceInfo = sourceInfo;\n }\n\n get sourceInfo () {\n return this._sourceInfo;\n }\n}\n","export class CommandBlock {\n\t\n\tconstructor(variables, commands) {\n\t\tthis.variables = variables;\n\t\tthis.commands = commands;\n\t\tthis._sourceInfo = null;\n\t}\n\n\tset sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class Declaration extends Command {\n \n constructor (id, type, initial, isConst) {\n super();\n this.id = id;\n this.type = type;\n this.initial = initial;\n this.isConst = isConst;\n }\n}\n","import { Command } from './command';\n\nexport class For extends Command {\n\n constructor (for_id, for_from, for_to, for_pass, commandBlock) {\n super();\n this.for_id = for_id;\n this.for_from = for_from;\n this.for_to = for_to;\n this.for_pass = for_pass;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n}","export class FormalParameter {\n\n constructor (type, id, byRef = false, variadic = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this.variadic = variadic;\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Types } from './../../typeSystem/types';\n\nexport class Function {\n\n /**\n * \n * @param {string} name \n * @param {import('./../../typeSystem/itype').IType} returnType \n * @param {import('./formalParameter').FormalParameter[]} formalParameters \n * @param {import('./commandBlock').CommandBlock} commandBlock \n */\n constructor(name, returnType, formalParameters, commandBlock) {\n this.name = name;\n this.returnType = returnType;\n this.formalParameters = formalParameters;\n this.commandBlock = commandBlock;\n this._sourceInfo = null;\n }\n\n get isMain () {\n return this.name === null && this.returnType.isCompatible(Types.VOID);\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get variablesDeclarations () {\n return this.commandBlock.variables;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n }\n \n hasVariadic () {\n return this.formalParameters.some( p => p.variadic);\n }\n}","import { Command } from './command';\n\nexport class IfThenElse extends Command {\n\n constructor (condition, ifTrue, ifFalse) {\n super();\n this.condition = condition;\n this.ifTrue = ifTrue;\n this.ifFalse = ifFalse;\n }\n}","import { Break } from './break';\nimport { Return } from './return';\nimport { Assign } from './assign';\nimport { ArrayIndexAssign } from './arrayAssign';\nimport { Declaration } from './declaration';\nimport { ArrayDeclaration } from './arrayDeclaration';\nimport { While } from './while';\nimport { For } from './for';\nimport { Function } from './function';\nimport { IfThenElse } from './ifThenElse';\nimport { CommandBlock } from './commandBlock';\nimport { RepeatUntil } from './repeatUntil';\nimport { Switch } from './switch';\nimport { Case } from './case';\nimport { SysCall } from './sysCall';\nimport { FormalParameter } from './formalParameter';\nimport { FunctionCall } from './../expressions/functionCall'; //Proxy to expression since they do exatcly the same thing\n\nexport {\n Break,\n Return,\n Assign,\n ArrayIndexAssign,\n Declaration,\n ArrayDeclaration,\n While,\n For,\n Function,\n IfThenElse,\n CommandBlock,\n RepeatUntil,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { While } from './while';\n\nexport class RepeatUntil extends While {\n\n constructor(condition, commandBlock) {\n super(condition, commandBlock);\n }\n\n get testFirst () {\n return false;\n }\n \n}","import { Command } from './command';\n\nexport class Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from '../expressions/expression';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Case } from '.';\n\nexport class Switch extends Command {\n \n /**\n * \n * @param {Expression} expression \n * @param {Case[]} cases \n */\n constructor (expression, cases) {\n super();\n this.expression = expression;\n this.cases = cases;\n }\n}","/**\n * This class represents all the language defined functions.\n * The language processor uses the id provided here to properly execute the desired function.\n * The function is actually implemented inside the language processor.\n * All the functions can be found at: js/processor/definedFunctions.js\n */\nexport class SysCall {\n\n constructor (langFunc) {\n this.langFunc = langFunc;\n }\n}","import { Command } from './command';\n\nexport class While extends Command {\n\n constructor (expression, commandBlock) {\n super();\n this.expression = expression;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get testFirst () {\n \treturn true;\n }\n}","export class SyntaxError extends Error {\n constructor (msg, id) {\n super(msg);\n this.id = id;\n this._context = {};\n if (Error.captureStackTrace) Error.captureStackTrace(this, SyntaxError);\n }\n\n get context () {\n return this._context;\n }\n\n set context (contextObj) {\n this._context = contextObj;\n }\n}\n","import * as LocalizedStringsService from \"./../../services/localizedStringsService\";\nimport { SyntaxError } from \"./syntaxError\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nfunction createError (message_id, context = []) {\n return new SyntaxError(\n LocalizedStrings.getError(message_id, context),\n message_id\n );\n}\n\nexport const SyntaxErrorFactory = Object.freeze({\n extra_lines: () => new SyntaxError(LocalizedStrings.getError(\"extra_lines\")),\n token_missing_one: (expected, token) => {\n const context = [expected, token.text, token.line, token.col];\n const error = createError(\"token_missing_one\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n token_missing_list: (expectedList, token) => {\n const line = expectedList.join(LocalizedStrings.getOR());\n const error = SyntaxErrorFactory.token_missing_one(line, token);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n id_missing: (token) => {\n const context = [token.text, token.line, token.col];\n const error = createError(\"id_missing\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n eos_missing: (token) => {\n const context = [token.line, token.col];\n const error = createError(\"eos_missing\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.col, typeName];\n const error = createError(\"invalid_array_dimension\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n const error = createError(\"invalid_array_size\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n const error = createError(\"invalid_main_return\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n const error = createError(\"invalid_var_declaration\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n const error = createError(\"invalid_break_command\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.col];\n const error = createError(\"invalid_terminal\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_type: (list, token) => {\n const line = list.join(LocalizedStrings.getOR());\n const context = [token.text, token.line, token.col, line];\n const error = createError(\"invalid_type\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n const_not_init: (token) => {\n const context = [token.line, token.col];\n const error = createError(\"const_not_init\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.col];\n const error = createError(\"invalid_id_format\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.col];\n const error = createError(\"duplicate_function\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n main_parameters: () => {\n return createError(\"main_parameters\");\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.col];\n const error = createError(\"duplicate_variable\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_character: (text, line, column) => {\n const context = [text, line];\n const error = createError(\"invalid_character\", context);\n error.context = { line: line, column: column };\n return error;\n },\n annonymous_array_literal: (token) => {\n const context = [token.line];\n const error = createError(\"annonymous_array_literal\", context);\n error.context = { line: token.line, column: token.col};\n return error;\n },\n invalid_matrix_literal_line: (exp, sourceInfo) => {\n const context = [exp, sourceInfo.line];\n const error = createError(\"invalid_matrix_literal_line\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n cannot_infer_matrix_line: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n const error = createError(\"cannot_infer_matrix_line\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n cannot_infer_matrix_column: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n const error = createError(\"cannot_infer_matrix_column\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n cannot_infer_vector_size: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n const error = createError(\"cannot_infer_vector_size\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n matrix_to_vector_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n const error = createError(\"matrix_to_vector_literal_attr\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n vector_to_matrix_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n const error = createError(\"vector_to_matrix_literal_attr\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n array_init_not_literal: (sourceInfo) => {\n const context = [sourceInfo.line];\n const error = createError(\"array_init_not_literal\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n array_exceeds_2d: (sourceInfo) => {\n const context = [sourceInfo.line];\n const error = createError(\"array_exceeds_2d\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n invalid_matrix_id_dimension: (sourceInfo) => {\n const context = [sourceInfo.line];\n const error = createError(\"invalid_matrix_id_dimension\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n invalid_vector_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n const error = createError(\"invalid_vector_init\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n invalid_matrix_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n const error = createError(\"invalid_matrix_init\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n invalid_syntax: (text, line, column) => {\n const context = [text, line];\n const error = createError(\"invalid_syntax\", context);\n error.context = { line: line, column: column };\n return error;\n }\n});\n","import { Expression } from './expression';\n\nexport class ArrayAccess extends Expression {\n\t\n\tconstructor (id, line, column) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.line = line;\n\t\tthis.column = column;\n\t}\n\n\ttoString () {\n\t\tconst strLine = this.line.toString();\n\t\tlet strColumn = null;\n\t\tif(this.column) {\n\t\t\tstrColumn = this.column.toString();\n\t\t}\n\t\tlet text = null;\n\t\tif(strColumn) {\n\t\t\ttext = `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\ttext = `${this.id}[${strLine}]`;\n\t\t}\n\t\tif(this.parenthesis ){\n\t\t\treturn `(${text})`\n\t\t} else {\n\t\t\treturn text;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n /**\n * \n * @param {import('../../typeSystem/itype').IType} type \n * @param {import('./expression').Expression[]} value \n */\n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n const element = this.value[0];\n if (element instanceof ArrayLiteral) {\n return element.value[0].type;\n } else {\n return element.type;\n }\n }\n\n get lines () {\n return this.value.length;\n }\n\n get columns () {\n const element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value.length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return this.validateSize() && this.validateType();\n }\n\n validateType () {\n const valid = true;\n // const subtype = this.subtype;\n // if(this.columns !== null) {\n // const len = this.lines;\n // const len2 = this.columns;\n // for (let i = len - 1; i >= 0 && valid; --i) {\n // for (let j = len2 - 1; j >= 0 && valid; --j) {\n // if(!this.value[i].value[j].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0 && valid; i--) {\n // if(!this.value[i].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // Cannot validate type since no information on variables literals are available\n return valid;\n }\n\n validateSize () {\n const valid = true;\n // if(this.columns !== null) {\n // const equalityTest = this.value.map(v => v.value.length)\n // .reduce((old, next) => {\n // console.log(next);\n // if (old == null) {\n // return next;\n // } else if (old === next) {\n // return old\n // } else {\n // return -1;\n // }\n // }, null);\n // valid = equalityTest !== -1;\n // }\n // check is now made inside IVProgParser.parseVectorList(...)\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n const text = \"{\" + strList.join(',') + \"}\";\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}\n","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertBoolToString } from \"./../../typeSystem/parsers\";\n\nexport class BoolLiteral extends Literal {\n \n constructor(value) {\n super(Types.BOOLEAN);\n this.value = value;\n }\n\n toString () {\n const text = convertBoolToString(this.value);\n if(this.parenthesis) {\n return `(${text})`\n } else {\n return text;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class CharLiteral extends Literal {\n \n constructor(value) {\n super(Types.CHAR);\n this.value = value;\n }\n\n toString () {\n const text = `'${this.value}'`;\n if(this.parenthesis) {\n return `(${text})`\n } else {\n return text;\n }\n }\n}","export class Expression {\n\n constructor () {\n\t\tthis._sourceInfo = null;\n\t\tthis._parenthesis = false;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n\n\tset parenthesis (flag) {\n\t\tthis._parenthesis = flag;\n\t}\n\n\tget parenthesis () {\n\t\treturn this._parenthesis;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\t/**\n\t * \n\t * @param {string} id \n\t * @param {Expression[]} actualParameters \n\t */\n\tconstructor (id, actualParameters) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.actualParameters = actualParameters;\n\t}\n\n\tget isMainCall () {\n\t\treturn this.id === null;\n\t}\n\n\tget parametersSize () {\n\t\treturn this.actualParameters.length;\n\t}\n\n\ttoString () {\n\t\tlet name = null;\n\t\tif(this.isMainCall) {\n\t\t\tname = LanguageDefinedFunction.getMainFunctionName();\n\t\t} else {\n\t\t\tname = LanguageDefinedFunction.getLocalName(this.id);\n\t\t}\n\t\tlet params = null;\n\t\tif(this.actualParameters.length == 0) {\n\t\t\tparams = \"()\";\n\t\t} else {\n\t\t\tconst strParams = this.actualParameters.map(v => v.toString());\n\t\t\tparams = \"(\" + strParams.join(\",\") + \")\";\n\t\t}\n\t\tif(this.parenthesis) {\n\t\t\treturn `(${name + params})`;\n\t\t} else {\n\t\t\treturn name + params;\n\t\t}\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { CharLiteral } from './charLiteral'\nimport { StringLiteral } from './stringLiteral';\nimport { ArrayLiteral } from './arrayLiteral';\nimport { VariableLiteral } from './variableLiteral';\nimport { InfixApp } from './infixApp';\nimport { UnaryApp } from './unaryApp';\n\nexport {\n\tArrayAccess,\n\tFunctionCall,\n IntLiteral,\n RealLiteral,\n BoolLiteral,\n CharLiteral,\n StringLiteral,\n ArrayLiteral,\n VariableLiteral,\n InfixApp,\n UnaryApp\n};","import { Expression } from './expression';\n\nexport class InfixApp extends Expression {\n\n constructor(op, left, right) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n const r = this.right.toString();\n if(this.parenthesis) {\n return `(${l + op + r})`;\n } else {\n return l + op + r;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class IntLiteral extends Literal {\n \n constructor(value) {\n super(Types.INTEGER);\n this.value = value;\n }\n\n toString() {\n const text = convertToString(this.value, this.type);\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import { Expression } from './expression';\n\nexport class Literal extends Expression {\n \n constructor (type) {\n super();\n this.type = type;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class RealLiteral extends Literal {\n \n constructor(value) {\n super(Types.REAL);\n this.value = value;\n }\n\n toString() {\n const text = convertToString(this.value, this.type);\n if (this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class StringLiteral extends Literal {\n \n constructor(value) {\n super(Types.STRING);\n this.value = value;\n }\n\n toString() {\n const text = '\"' + this.value + '\"';\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import {InfixApp} from './infixApp';\n\nexport class UnaryApp extends InfixApp {\n \n constructor (op, left) {\n super(op, left, null);\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n if(this.parenthesis) {\n return `(${op + l})`;\n } else {\n return op + l;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class VariableLiteral extends Literal {\n \n constructor(id) {\n super(Types.UNDEFINED);\n this.id = id;\n }\n\n toString () {\n if(this.parenthesis) {\n return `(${this.id})`;\n } else {\n return this.id;\n }\n }\n}","import * as Expressions from \"./expressions\";\nimport * as Commands from \"./commands\";\nimport * as Parsers from \"../typeSystem/parsers\";\nimport { Types } from \"../typeSystem/types\";\nimport { ArrayType } from \"../typeSystem/array_type\";\nimport { SourceInfo } from \"./sourceInfo\";\nimport { convertFromString } from \"./operators\";\nimport { SyntaxErrorFactory } from \"./error/syntaxErrorFactory\";\nimport { LanguageDefinedFunction } from \"../processor/definedFunctions\";\nimport { LanguageService } from \"../services/languageService\";\n\nexport class IVProgParser {\n static createParser (input, fill = true) {\n const lexer = LanguageService.getCurrentLexer();\n const parser = new IVProgParser(input, lexer);\n if (fill) {\n parser.fill();\n }\n return parser;\n }\n\n // <BEGIN scope consts>\n static get BASE () {\n return 0;\n }\n static get FUNCTION () {\n return 1;\n }\n static get COMMAND () {\n return 2;\n }\n static get BREAKABLE () {\n return 4;\n }\n // </ END scope consts>\n //\n static get EOF_TOKEN () {\n return {\n text: null,\n line: -1,\n col: -1,\n value: null,\n offset: -1,\n lineBreaks: false,\n type: \"EOF\",\n };\n }\n\n /**\n * @param {string} input\n * @param {IVProgLexer} ivprogLexer\n **/\n constructor (input, ivprogLexer) {\n this.ivprogLexer = ivprogLexer;\n this.inputStream = input;\n this.lexer = ivprogLexer.lexer;\n this.tokenStream = [];\n this.pos = 0;\n this.ruleNames = ivprogLexer.getRules();\n this.variableTypes = Object.entries(this.ivprogLexer.getTypeKeys()).map(\n ([key, _]) => key\n );\n this.functionTypes = this.variableTypes.concat(this.ruleNames.RK_VOID);\n\n this.parsingArrayDimension = 0;\n this.scope = [];\n this.langFuncs = this.ivprogLexer.getLangFuncs();\n this.definedFuncsNameList = [];\n this.definedVariablesStack = [];\n }\n\n fill (stream = null) {\n if (stream) {\n this.tokenStream = stream;\n return;\n }\n this.tokenStream = Array.from(this.lexer.reset(this.inputStream));\n this.tokenStream = this.tokenStream.filter((token) => {\n // Throws an exception in case of invalid syntax\n if (token.type === this.ruleNames.ERROR) {\n let text = token.text;\n const line = token.line;\n const column = token.col;\n throw SyntaxErrorFactory.invalid_syntax(text, line, column);\n }\n // remove all whitespaces token and comments\n return (\n token.type !== this.ruleNames.WHITESPACE &&\n token.type !== this.ruleNames.COMMENTS\n );\n });\n }\n\n parseTree () {\n return this.parseProgram();\n }\n\n /**\n * @param {number} index\n * @return {moo.Token}\n * */\n getToken (index = this.pos) {\n // if(index === null)\n // index = this.pos;\n if (index >= this.tokenStream.length) {\n return IVProgParser.EOF_TOKEN;\n }\n return this.tokenStream[index];\n }\n\n insideScope (scope) {\n if (this.scope.length <= 0) {\n return IVProgParser.BASE === scope;\n } else {\n return this.scope[this.scope.length - 1] === scope;\n }\n }\n\n pushScope (scope) {\n this.scope.push(scope);\n }\n\n pushVariableStack () {\n this.definedVariablesStack.push([]);\n }\n\n popScope () {\n return this.scope.pop();\n }\n\n popVariableStack () {\n return this.definedVariablesStack.pop();\n }\n\n getCurrentVariableStack () {\n return this.definedVariablesStack[this.definedVariablesStack.length - 1];\n }\n\n isEOF () {\n return this.getToken(this.pos).type === IVProgParser.EOF_TOKEN.type;\n }\n\n parseProgram () {\n this.consumeNewLines();\n const token = this.getToken();\n let globalVars = [];\n let functions = [];\n\n if (this.ruleNames.RK_PROGRAM === token.type) {\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.pushVariableStack();\n for (;;) {\n this.consumeNewLines();\n const token = this.getToken();\n if (\n token.type === this.ruleNames.RK_CONST ||\n this.isVariableType(token)\n ) {\n globalVars = globalVars.concat(this.parseGlobalVariables());\n } else if (token.type === this.ruleNames.RK_FUNCTION) {\n this.pushVariableStack();\n functions = functions.concat(this.parseFunction());\n this.popVariableStack();\n } else {\n break;\n }\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n if (!this.isEOF()) {\n console.log(this.getToken());\n throw SyntaxErrorFactory.extra_lines();\n }\n this.popVariableStack();\n return { global: globalVars, functions: functions };\n } else {\n throw SyntaxErrorFactory.token_missing_one(\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_PROGRAM],\n token\n );\n }\n }\n\n checkOpenCurly (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.OPEN_CURLY !== token.type) {\n if (!attempt) throw SyntaxErrorFactory.token_missing_one(\"{\", token);\n else return false;\n }\n return true;\n }\n\n checkCloseCurly (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.CLOSE_CURLY !== token.type) {\n if (!attempt) throw SyntaxErrorFactory.token_missing_one(\"}\", token);\n else return false;\n }\n return true;\n }\n\n /* It checks if the current token at position pos is a ']'.\n * As a check function it doesn't increment pos.\n *\n * @params bool:attempt, indicates that the token is optional. Defaults: false\n *\n * @returns true if the attempt is true and current token is '[',\n * false is attempt is true and current token is not '['\n **/\n checkOpenBrace (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.OPEN_BRACE !== token.type) {\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(\"[\", token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseBrace (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.CLOSE_BRACE !== token.type) {\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(\"]\", token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkOpenParenthesis (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.OPEN_PARENTHESIS !== token.type) {\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(\"(\", token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseParenthesis (attempt = false) {\n const token = this.getToken();\n if (this.ruleNames.CLOSE_PARENTHESIS !== token.type) {\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(\")\", token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkEOS (attempt = false) {\n const eosToken = this.getToken();\n if (eosToken.type !== this.ruleNames.EOS) {\n if (!attempt) throw SyntaxErrorFactory.eos_missing(eosToken);\n else return false;\n }\n return true;\n }\n\n checkFunctionDuplicate (functionID, funcIDToken) {\n const id = functionID === null ? \"$main\" : functionID;\n const index = this.definedFuncsNameList.indexOf(id);\n if (index !== -1) {\n throw SyntaxErrorFactory.duplicate_function(funcIDToken);\n }\n this.definedFuncsNameList.push(id);\n }\n checkVariableDuplicate (variableID, sourceInfo) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if (index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(sourceInfo);\n }\n this.getCurrentVariableStack().push(variableID);\n }\n\n consumeForSemiColon () {\n const eosToken = this.getToken();\n if (eosToken.type === this.ruleNames.EOS && eosToken.text.match(\"^;$\")) {\n this.pos++;\n return;\n }\n throw SyntaxErrorFactory.token_missing_one(\";\", eosToken);\n }\n\n parseGlobalVariables () {\n const decl = this.parseMaybeConst();\n this.checkEOS();\n this.pos++;\n return decl;\n }\n\n /*\n * Checks if the next token is PR_CONST. It's only available\n * at global variables declaration level\n * @returns Declararion(const, type, id, initVal?)\n **/\n parseMaybeConst () {\n const constToken = this.getToken();\n if (constToken.type === this.ruleNames.RK_CONST) {\n this.pos++;\n const typeString = this.parseType();\n return this.parseDeclaration(typeString, true);\n } else if (this.isVariableType(constToken)) {\n const typeString = this.parseType();\n return this.parseDeclaration(typeString);\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_CONST]].concat(\n this.getTypeArray()\n ),\n constToken\n );\n }\n }\n\n /**\n * Parses a declarion of the form: type --- id --- (= --- EAnd)?\n * @return {Commands.Declartion[]} a list of Declararion(const, type, id, initVal?)\n **/\n parseDeclaration (typeString, isConst = false) {\n let initial = null;\n let dim1 = null;\n let dim2 = null;\n let dimensions = 0;\n const sourceInfo = SourceInfo.createSourceInfo(this.getToken());\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, sourceInfo);\n // Check for array or vector\n // ID[int/IDi?][int/IDj?]\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1;\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1;\n }\n return this.parseArrayDeclaration(\n typeString,\n isConst,\n idString,\n sourceInfo,\n dimensions,\n dim1,\n dim2\n );\n } else {\n const assignmentToken = this.getToken();\n if (isConst && assignmentToken.type !== this.ruleNames.ASSIGNMENT) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if (assignmentToken.type === this.ruleNames.ASSIGNMENT) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n const declaration = new Commands.Declaration(\n idString,\n typeString,\n initial,\n isConst\n );\n declaration.sourceInfo = sourceInfo;\n const commaToken = this.getToken();\n if (commaToken.type === this.ruleNames.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration].concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration];\n }\n }\n }\n\n parseArrayDeclaration (\n typeString,\n isConst,\n idString,\n sourceInfo,\n dimensions,\n dim1,\n dim2\n ) {\n const assignmentToken = this.getToken();\n let n_lines = dim1;\n let n_columns = dim2;\n let initial = null;\n let dim_is_id = false;\n if (\n dim1 instanceof Expressions.VariableLiteral ||\n dim2 instanceof Expressions.VariableLiteral\n ) {\n dim_is_id = true;\n if (dimensions > 1 && (dim1 == null || dim2 == null)) {\n throw SyntaxErrorFactory.invalid_matrix_id_dimension(\n SourceInfo.createSourceInfo(assignmentToken)\n );\n }\n }\n if (isConst && assignmentToken.type !== this.ruleNames.ASSIGNMENT) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if (assignmentToken.type === this.ruleNames.ASSIGNMENT) {\n if (dim_is_id) {\n if (dimensions == 1) {\n throw SyntaxErrorFactory.invalid_vector_init(\n SourceInfo.createSourceInfo(assignmentToken)\n );\n } else {\n throw SyntaxErrorFactory.invalid_matrix_init(\n SourceInfo.createSourceInfo(assignmentToken)\n );\n }\n }\n this.pos += 1;\n initial = this.parseArrayLiteral(typeString);\n }\n if (initial == null && dim1 == null) {\n if (dimensions > 1) {\n throw SyntaxErrorFactory.cannot_infer_matrix_line(idString, sourceInfo);\n }\n throw SyntaxErrorFactory.cannot_infer_vector_size(idString, sourceInfo);\n }\n if (dimensions > 1) {\n if (initial == null && dim2 == null) {\n throw SyntaxErrorFactory.cannot_infer_matrix_column(\n idString,\n sourceInfo\n );\n }\n }\n\n if (dimensions === 1 && initial != null && !initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.matrix_to_vector_literal_attr(\n idString,\n expString,\n initial.sourceInfo\n );\n } else if (dimensions > 1 && initial != null && initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.vector_to_matrix_literal_attr(\n idString,\n expString,\n initial.sourceInfo\n );\n }\n\n if (dim1 == null) {\n n_lines = new Expressions.IntLiteral(Parsers.toInt(initial.lines));\n n_lines.sourceInfo = sourceInfo;\n }\n\n if (dimensions > 1) {\n if (dim2 == null) {\n n_columns = new Expressions.IntLiteral(Parsers.toInt(initial.columns));\n n_columns.sourceInfo = sourceInfo;\n }\n }\n const declaration = new Commands.ArrayDeclaration(\n idString,\n new ArrayType(typeString, dimensions),\n n_lines,\n n_columns,\n initial,\n isConst\n );\n declaration.sourceInfo = sourceInfo;\n const commaToken = this.getToken();\n if (commaToken.type === this.ruleNames.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration].concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration];\n }\n }\n\n consumeNewLines () {\n let token = this.getToken();\n while (\n token &&\n token.type === this.ruleNames.EOS &&\n token.text.match(\"^[\\r\\n]+$\")\n ) {\n this.pos++;\n token = this.getToken();\n }\n }\n\n isVariableType (token) {\n return this.variableTypes.find((v) => v === token.type);\n }\n\n /**\n * Reads the next token of the stream to check if it is a Integer or an ID.\n * @returns Integer | ID\n **/\n parseArrayDimension () {\n const dimToken = this.getToken();\n if (dimToken.type === this.ruleNames.INTEGER) {\n //parse as int literal\n this.pos++;\n return this.getIntLiteral(dimToken);\n } else if (dimToken.type === this.ruleNames.ID) {\n //parse as variable\n this.pos++;\n return this.parseVariable(dimToken);\n } else if (dimToken.type === this.ruleNames.CLOSE_BRACE) {\n return null;\n } else {\n throw SyntaxErrorFactory.invalid_array_dimension(\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_INTEGER],\n dimToken\n );\n }\n }\n\n /**\n * Returns an object {type: 'int', value: value}.\n * It checks for binary and hexadecimal integers.\n * @param {moo.Token} token\n * @return {Object} object with fields type and value\n **/\n getIntLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.IntLiteral(Parsers.toInt(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getRealLiteral (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.RealLiteral(Parsers.toReal(token.text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getStringLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.StringLiteral(Parsers.toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getCharLiteral (token) {\n const text = token.text;\n const exp = new Expressions.CharLiteral(Parsers.toChar(text));\n exp.sourceInfo = SourceInfo.createSourceInfo(token);\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = Parsers.toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);\n return exp;\n }\n\n parseArrayLiteral (typeString) {\n const openCurly = this.checkOpenCurly(true);\n if (!openCurly) {\n const invalid_token = this.getToken();\n throw SyntaxErrorFactory.array_init_not_literal(\n SourceInfo.createSourceInfo(invalid_token)\n );\n }\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(\n SourceInfo.createSourceInfo(beginArray)\n );\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n let data = null;\n const maybeCurlyOpen = this.checkOpenCurly(true);\n if (maybeCurlyOpen) {\n // This is potentially a list of vectors\n data = this.parseVectorList(typeString);\n } else {\n data = this.parseExpressionList();\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(\n beginArray,\n endArray\n );\n let dataDim = 1;\n if (data[0] instanceof Expressions.ArrayLiteral) {\n dataDim += 1;\n } else if (data.length == 1) {\n console.log(\"Talvez uma variável seja uma melhor opção\");\n }\n const type = new ArrayType(typeString, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /**\n * Returns a list of ArrayLiterals. Helper function for parsing matrices\n */\n parseVectorList (typeString) {\n const list = [];\n let lastSize = null;\n for (;;) {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(\n SourceInfo.createSourceInfo(beginArray)\n );\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly();\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(\n beginArray,\n endArray\n );\n if (lastSize == null) {\n lastSize = data.length;\n } else if (lastSize !== data.length) {\n const expString = this.inputStream.substring(\n beginArray.offset,\n endArray.offset + endArray.text.length\n );\n throw SyntaxErrorFactory.invalid_matrix_literal_line(\n expString,\n sourceInfo\n );\n }\n const type = new ArrayType(typeString, 1);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n list.push(exp);\n const commaToken = this.getToken();\n if (commaToken.type !== this.ruleNames.COMMA) {\n break;\n }\n this.pos += 1;\n this.consumeNewLines();\n }\n if (list.length == 1) {\n console.log(\"Talvez um vetor seja uma melhor opção\");\n }\n return list;\n }\n\n /*\n * Returns an object {type: 'variable', value: value}.\n * @returns object with fields type and value\n **/\n parseVariable (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.VariableLiteral(token.text);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object representing a function. It has\n * four attributes: returnType, id, formalParams and block.\n * The block object has two attributes: declarations and commands\n **/\n parseFunction () {\n this.pushScope(IVProgParser.FUNCTION);\n let formalParams = [];\n const token = this.getToken();\n if (token.type !== this.ruleNames.RK_FUNCTION) {\n //throw SyntaxError.createError(this.lexer.literalNames[this.lexerClass.PR_FUNCAO], token);\n return null;\n }\n this.pos++;\n const funType = this.parseType();\n let dimensions = 0;\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n }\n }\n const funcIDToken = this.getToken();\n const functionID = this.parseID();\n this.checkFunctionDuplicate(functionID, funcIDToken);\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n if (!this.checkCloseParenthesis(true)) {\n formalParams = this.parseFormalParameters(); // formal parameters\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n } else {\n this.pos++;\n }\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n let returnType = funType;\n if (dimensions > 0) {\n returnType = new ArrayType(funType, dimensions);\n }\n const func = new Commands.Function(\n functionID,\n returnType,\n formalParams,\n commandsBlock\n );\n if (functionID === null && !func.isMain) {\n throw SyntaxErrorFactory.invalid_main_return(\n LanguageDefinedFunction.getMainFunctionName(),\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_VOID],\n token.line\n );\n } else if (func.isMain && formalParams.length !== 0) {\n throw SyntaxErrorFactory.main_parameters();\n }\n this.popScope();\n func.sourceInfo = SourceInfo.createSourceInfo(funcIDToken);\n return func;\n }\n\n /*\n * Parse the formal parameters of a function.\n * @returns a list of objects with the following attributes: type, id and dimensions.\n **/\n parseFormalParameters () {\n const list = [];\n for (;;) {\n let dimensions = 0;\n let reference = false;\n const typeString = this.parseType();\n let maybeIDToken = this.getToken();\n if (maybeIDToken.type === this.ruleNames.RK_REFERENCE) {\n reference = true;\n this.pos += 1;\n maybeIDToken = this.getToken();\n }\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, maybeIDToken);\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n }\n }\n let type = null;\n if (dimensions > 0) {\n type = new ArrayType(typeString, dimensions);\n } else {\n type = typeString;\n }\n const parameter = new Commands.FormalParameter(type, idString, reference);\n parameter.sourceInfo = SourceInfo.createSourceInfo(maybeIDToken);\n list.push(parameter);\n const commaToken = this.getToken();\n if (commaToken.type !== this.ruleNames.COMMA) break;\n this.pos++;\n this.consumeNewLines();\n }\n return list;\n }\n\n parseID () {\n const token = this.getToken();\n if (token.type !== this.ruleNames.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n this.pos++;\n if (this.insideScope(IVProgParser.FUNCTION)) {\n if (token.text === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n }\n return token.text;\n }\n\n /**\n * @return {string}\n **/\n parseMaybeLibID () {\n const token = this.getToken();\n if (token.type !== this.ruleNames.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n const maybeDOT = this.getToken(this.pos + 1);\n if (maybeDOT.type === this.ruleNames.DOT) {\n this.pos += 2;\n const anotherID = this.getToken();\n if (anotherID.type !== this.ruleNames.ID) {\n throw SyntaxErrorFactory.id_missing(anotherID);\n }\n this.pos++;\n return `${token.text}.${anotherID.text}`;\n }\n this.pos++;\n return token.text;\n }\n\n parseType () {\n const token = this.getToken();\n if (\n token.type === this.ruleNames.ID &&\n this.insideScope(IVProgParser.FUNCTION)\n ) {\n return Types.VOID;\n } else if (\n token.type === this.ruleNames.RK_VOID &&\n this.insideScope(IVProgParser.FUNCTION)\n ) {\n this.pos++;\n return Types.VOID;\n } else if (this.isVariableType(token)) {\n this.pos++;\n switch (token.type) {\n case this.ruleNames.RK_INTEGER:\n return Types.INTEGER;\n case this.ruleNames.RK_BOOLEAN:\n return Types.BOOLEAN;\n case this.ruleNames.RK_REAL:\n return Types.REAL;\n case this.ruleNames.RK_STRING:\n return Types.STRING;\n case this.ruleNames.RK_CHARACTER:\n return Types.CHAR;\n default:\n break;\n }\n }\n\n throw SyntaxErrorFactory.invalid_type(this.getTypeArray(), token);\n }\n\n parseCommandBlock (optionalCurly = false) {\n let variablesDecl = [];\n const commands = [];\n let hasOpen = false;\n if (this.checkOpenCurly(optionalCurly)) {\n this.pos++;\n hasOpen = true;\n }\n this.consumeNewLines();\n let parsedCommand = false;\n for (;;) {\n const cmd = this.parseCommand();\n if (cmd === null) break;\n if (cmd !== -1) {\n if (cmd instanceof Array) {\n if (parsedCommand) {\n const lastToken = this.getToken(this.pos - 1);\n throw SyntaxErrorFactory.invalid_var_declaration(lastToken);\n }\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n parsedCommand = true;\n commands.push(cmd);\n }\n }\n }\n this.consumeNewLines();\n if (hasOpen) {\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n }\n return new Commands.CommandBlock(variablesDecl, commands);\n }\n\n parseCommand () {\n const token = this.getToken();\n if (this.isVariableType(token)) {\n if (!this.insideScope(IVProgParser.FUNCTION)) {\n throw SyntaxErrorFactory.invalid_var_declaration(token);\n }\n this.pushScope(IVProgParser.BASE);\n const varType = this.parseType();\n this.popScope();\n const cmd = this.parseDeclaration(varType);\n this.checkEOS();\n this.pos++;\n return cmd;\n } else if (token.type === this.ruleNames.ID) {\n return this.parseIDCommand();\n } else if (token.type === this.ruleNames.DOT) {\n // TODO Check if this is relevant since DOT is a replacement for antlr4 LIB_ID :=> ID . ID\n throw SyntaxErrorFactory.invalid_syntax(\n token.text,\n token.line,\n token.col\n );\n } else if (token.type === this.ruleNames.RK_RETURN) {\n return this.parseReturn();\n } else if (\n token.type === this.ruleNames.RK_WHILE ||\n token.type === this.ruleNames.RK_WHILE_ALT\n ) {\n return this.parseWhile();\n } else if (\n token.type === this.ruleNames.RK_FOR ||\n token.type === this.ruleNames.RK_FOR_ALT\n ) {\n return this.parseFor();\n } else if (token.type === this.ruleNames.RK_BREAK) {\n if (!this.insideScope(IVProgParser.BREAKABLE)) {\n throw SyntaxErrorFactory.invalid_break_command(\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_BREAK],\n token\n );\n }\n return this.parseBreak();\n } else if (token.type === this.ruleNames.RK_SWITCH) {\n return this.parseSwitchCase();\n } else if (token.type === this.ruleNames.RK_DO) {\n return this.parseRepeatUntil();\n } else if (token.type === this.ruleNames.RK_IF) {\n return this.parseIfThenElse();\n } else if (this.checkEOS(true)) {\n this.pos++;\n return -1;\n } else {\n return null;\n }\n }\n\n parseSwitchCase () {\n const token = this.getToken();\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.consumeNewLines();\n const casesList = this.parseCases();\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n\n this.popScope();\n const command = new Commands.Switch(exp, casesList);\n command.sourceInfo = SourceInfo.createSourceInfo(token);\n return command;\n }\n\n parseRepeatUntil () {\n const token = this.getToken();\n this.pos++;\n this.consumeNewLines();\n this.pushScope(IVProgParser.BREAKABLE);\n const commandsBlock = this.parseCommandBlock();\n this.consumeNewLines(); //Maybe not...\n const whileToken = this.getToken();\n if (whileToken.type !== this.ruleNames.RK_DO_UNTIL) {\n throw SyntaxErrorFactory.token_missing_one(\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_DO_UNTIL],\n whileToken\n );\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.checkEOS();\n this.popScope();\n const command = new Commands.RepeatUntil(condition, commandsBlock);\n command.sourceInfo = SourceInfo.createSourceInfo(token);\n return command;\n }\n\n parseIfThenElse () {\n if (this.insideScope(IVProgParser.BREAKABLE)) {\n this.pushScope(IVProgParser.BREAKABLE);\n } else {\n this.pushScope(IVProgParser.COMMAND);\n }\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n\n const maybeElse = this.getToken();\n if (maybeElse.type === this.ruleNames.RK_ELSE) {\n this.pos++;\n this.consumeNewLines();\n const maybeIf = this.getToken();\n let elseBlock = null;\n if (this.checkOpenCurly(true)) {\n elseBlock = this.parseCommandBlock();\n } else if (maybeIf.type === this.ruleNames.RK_IF) {\n elseBlock = this.parseIfThenElse();\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_IF], \"{\"],\n maybeIf\n );\n }\n this.popScope();\n const cmd = new Commands.IfThenElse(\n logicalExpression,\n cmdBlocks,\n elseBlock\n );\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n this.popScope();\n\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, null);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseFor () {\n this.pushScope(IVProgParser.BREAKABLE);\n const for_token = this.getToken();\n this.pos += 1;\n // parse ID\n const id_token = this.getToken();\n const id = this.parseID();\n const for_id = new Expressions.VariableLiteral(id);\n for_id.sourceInfo = SourceInfo.createSourceInfo(id_token);\n // END parse ID\n const for_from = this.parseForParameters(this.ruleNames.RK_FOR_FROM);\n const for_to = this.parseForParameters(this.ruleNames.RK_FOR_TO);\n const maybePass = this.parseForParameters(this.ruleNames.RK_FOR_PASS);\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.For(\n for_id,\n for_from,\n for_to,\n maybePass,\n commandsBlock\n );\n cmd.sourceInfo = SourceInfo.createSourceInfo(for_token);\n return cmd;\n }\n\n parseWhile () {\n this.pushScope(IVProgParser.BREAKABLE);\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.While(logicalExpression, cmdBlocks);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseBreak () {\n const token = this.getToken();\n this.pos++;\n this.checkEOS();\n this.pos++;\n const command = new Commands.Break();\n command.sourceInfo = SourceInfo.createSourceInfo(token);\n return command;\n }\n\n parseReturn () {\n const token = this.getToken();\n this.pos++;\n let exp = null;\n if (!this.checkEOS(true)) {\n exp = this.parseExpressionOR();\n this.checkEOS();\n }\n this.pos++;\n const returnCommand = new Commands.Return(exp);\n returnCommand.sourceInfo = SourceInfo.createSourceInfo(token);\n return returnCommand;\n }\n\n parseIDCommand () {\n const refToken = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = id.indexOf(\".\") === -1;\n if (this.checkOpenBrace(true)) {\n this.pos++;\n let lineExpression = null;\n let columnExpression = null;\n this.consumeNewLines();\n lineExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n columnExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n const assignmentToken = this.getToken();\n if (assignmentToken.type !== this.ruleNames.ASSIGNMENT) {\n // TODO BETTER MESSAGE\n throw SyntaxErrorFactory.token_missing_one(\"<-\", assignmentToken);\n }\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.ArrayIndexAssign(\n id,\n lineExpression,\n columnExpression,\n exp\n );\n cmd.sourceInfo = SourceInfo.createSourceInfo(assignmentToken);\n return cmd;\n }\n const assignmentOrParenthesis = this.getToken();\n if (isID && assignmentOrParenthesis.type === this.ruleNames.ASSIGNMENT) {\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(assignmentOrParenthesis);\n return cmd;\n } else if (\n assignmentOrParenthesis.type === this.ruleNames.OPEN_PARENTHESIS\n ) {\n const funcCall = this.parseFunctionCallCommand(id);\n this.checkEOS();\n this.pos++;\n return funcCall;\n } else if (isID) {\n throw SyntaxErrorFactory.token_missing_list(\n [\"<-\", \"(\"],\n assignmentOrParenthesis\n );\n } else {\n throw SyntaxErrorFactory.invalid_id_format(refToken);\n }\n }\n\n parseForParameters (keyword_code) {\n if (keyword_code === this.ruleNames.RK_FOR_PASS) {\n if (this.checkOpenCurly(true)) {\n return null;\n }\n }\n const from_token = this.getToken();\n if (from_token.type !== keyword_code) {\n // TODO better error message\n const keyword = this.ivprogLexer.getReservedKeys()[keyword_code];\n throw new Error(\n \"Error de sintaxe no comando repita_para: esperava-se \" +\n keyword +\n \" mas encontrou \" +\n from_token.text\n );\n }\n this.pos += 1;\n let int_or_id = this.getToken();\n let is_unary_op = false;\n let op = null;\n if (int_or_id.type === this.ruleNames.SUM_OP) {\n is_unary_op = true;\n op = int_or_id.text;\n this.pos += 1;\n int_or_id = this.getToken();\n }\n let for_from = null;\n if (int_or_id.type === this.ruleNames.ID) {\n for_from = new Expressions.VariableLiteral(this.parseID());\n for_from.sourceInfo = SourceInfo.createSourceInfo(int_or_id);\n } else if (int_or_id.type === this.ruleNames.INTEGER) {\n this.pos += 1;\n for_from = this.getIntLiteral(int_or_id);\n }\n if (for_from == null) {\n // TODO better error message\n const keyword = this.ivprogLexer.getReservedKeys()[keyword_code];\n throw new Error(\n \"Error de sintaxe no comando repeita_para: \" +\n int_or_id.text +\n \" não é compativel com o esperado para o paramentro \" +\n keyword +\n \". O valor deve ser um inteiro ou variável.\"\n );\n }\n if (is_unary_op) {\n for_from = new Expressions.UnaryApp(convertFromString(op), for_from);\n }\n return for_from;\n }\n\n parseCases () {\n const token = this.getToken();\n if (token.type !== this.ruleNames.RK_CASE) {\n throw SyntaxErrorFactory.token_missing_one(\n this.ivprogLexer.getReservedKeys()[this.ruleNames.RK_CASE],\n token\n );\n }\n this.pos++;\n const nextToken = this.getToken();\n if (nextToken.type === this.ruleNames.RK_DEFAULT) {\n this.pos++;\n const colonToken = this.getToken();\n if (colonToken.type !== this.ruleNames.COLON) {\n throw SyntaxErrorFactory.token_missing_one(\":\", colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const defaultCase = new Commands.Case(null);\n defaultCase.sourceInfo = SourceInfo.createSourceInfo(token);\n defaultCase.setCommands(block.commands);\n return [defaultCase];\n } else {\n const exp = this.parseExpressionOR();\n const colonToken = this.getToken();\n if (colonToken.type !== this.ruleNames.COLON) {\n throw SyntaxErrorFactory.token_missing_one(\":\", colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const aCase = new Commands.Case(exp);\n aCase.sourceInfo = SourceInfo.createSourceInfo(token);\n aCase.setCommands(block.commands);\n const caseToken = this.getToken();\n if (caseToken.type === this.ruleNames.RK_CASE) {\n return [aCase].concat(this.parseCases());\n } else {\n return [aCase];\n }\n }\n }\n\n /*\n * Parses an Expression following the structure:\n *\n * EOR => EAnd ( 'or' EOR)? #expression and\n *\n * EAnd => ENot ('and' EAnd)? #expression or\n *\n * ENot => 'not'? ER #expression not\n *\n * ER => E ((>=, <=, ==, >, <) ER)? #expression relational\n *\n * E => factor ((+, -) E)? #expression\n *\n * factor=> term ((*, /, %) factor)?\n *\n * term => literal || arrayAccess || FuncCall || ID || '('EOR')'\n **/\n parseExpressionOR () {\n let exp1 = this.parseExpressionAND();\n while (this.getToken().type === this.ruleNames.OR_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const or = convertFromString(\"or\");\n this.consumeNewLines();\n const exp2 = this.parseExpressionAND();\n const finalExp = new Expressions.InfixApp(or, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionAND () {\n let exp1 = this.parseExpressionNot();\n while (this.getToken().type === this.ruleNames.AND_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const and = convertFromString(\"and\");\n this.consumeNewLines();\n const exp2 = this.parseExpressionNot();\n const finalExp = new Expressions.InfixApp(and, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionNot () {\n const maybeNotToken = this.getToken();\n if (maybeNotToken.type === this.ruleNames.NOT_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const not = convertFromString(\"not\");\n const exp1 = this.parseExpressionRel();\n const finalExp = new Expressions.UnaryApp(not, exp1);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n return finalExp;\n } else {\n return this.parseExpressionRel();\n }\n }\n\n parseExpressionRel () {\n let exp1 = this.parseExpression();\n while (this.getToken().type === this.ruleNames.RELATIONAL_OPERATOR) {\n const relToken = this.getToken();\n this.pos++;\n const rel = convertFromString(relToken.text);\n const exp2 = this.parseExpression();\n const finalExp = new Expressions.InfixApp(rel, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(relToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpression () {\n let factor = this.parseFactor();\n while (this.getToken().type === this.ruleNames.SUM_OP) {\n const sumOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(sumOpToken.text);\n const factor2 = this.parseFactor();\n const finalExp = new Expressions.InfixApp(op, factor, factor2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(sumOpToken);\n factor = finalExp;\n }\n return factor;\n }\n\n parseFactor () {\n let term = this.parseTerm();\n while (this.getToken().type === this.ruleNames.MULTI_OP) {\n const multOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(multOpToken.text);\n const term2 = this.parseTerm();\n const finalExp = new Expressions.InfixApp(op, term, term2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(multOpToken);\n term = finalExp;\n }\n return term;\n }\n\n parseTerm () {\n const token = this.getToken();\n let sourceInfo = null;\n let exp = null;\n switch (token.type) {\n case this.ruleNames.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n exp = new Expressions.UnaryApp(\n convertFromString(token.text),\n this.parseTerm()\n );\n exp.sourceInfo = sourceInfo;\n return exp;\n case this.ruleNames.INTEGER:\n this.pos++;\n return this.getIntLiteral(token);\n case this.ruleNames.REAL:\n this.pos++;\n return this.getRealLiteral(token);\n case this.ruleNames.STRING:\n this.pos++;\n return this.getStringLiteral(token);\n case this.ruleNames.CHARACTER:\n this.pos++;\n return this.getCharLiteral(token);\n case this.ruleNames.RK_TRUE:\n case this.ruleNames.RK_FALSE:\n this.pos++;\n return this.getBoolLiteral(token);\n case this.ruleNames.OPEN_CURLY:\n // No more annonymous array\n // return this.parseArrayLiteral();\n throw SyntaxErrorFactory.annonymous_array_literal(token);\n case this.ruleNames.ID:\n return this.parseIDTerm();\n case this.ruleNames.OPEN_PARENTHESIS:\n return this.parseParenthesisExp();\n default:\n throw SyntaxErrorFactory.invalid_terminal(token);\n }\n }\n\n parseIDTerm () {\n const tokenA = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = id.indexOf(\".\") === -1;\n if (isID && this.checkOpenBrace(true)) {\n let tokenB = null;\n this.pos++;\n const firstIndex = this.parseExpression();\n let secondIndex = null;\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++;\n secondIndex = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const exp = new Expressions.ArrayAccess(id, firstIndex, secondIndex);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else if (this.checkOpenParenthesis(true)) {\n return this.parseFunctionCallExpression(id);\n } else if (isID) {\n const sourceInfo = SourceInfo.createSourceInfo(tokenA);\n const exp = new Expressions.VariableLiteral(id);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else {\n throw SyntaxErrorFactory.invalid_id_format(tokenA);\n }\n }\n\n getFunctionName (id) {\n const name = LanguageDefinedFunction.getInternalName(id);\n if (name === null) {\n if (id === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n return id;\n } else {\n return name;\n }\n }\n\n parseFunctionCallExpression (id) {\n const stepBack = id.indexOf(\".\") === -1 ? 1 : 3;\n const tokenA = this.getToken(this.pos - stepBack);\n const actualParameters = this.parseActualParameters();\n const tokenB = this.getToken(this.pos - 1);\n const funcName = this.getFunctionName(id);\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const cmd = new Expressions.FunctionCall(funcName, actualParameters);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseFunctionCallCommand (id) {\n return this.parseFunctionCallExpression(id);\n }\n\n parseParenthesisExp () {\n this.checkOpenParenthesis();\n const tokenA = this.getToken();\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n this.pos += 1;\n exp.sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n exp.parenthesis = true;\n return exp;\n }\n\n parseActualParameters () {\n this.checkOpenParenthesis();\n this.pos++;\n if (this.checkCloseParenthesis(true)) {\n this.pos++;\n return [];\n }\n this.consumeNewLines();\n const list = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n return list;\n }\n\n parseExpressionList () {\n const list = [];\n for (;;) {\n const exp = this.parseExpressionOR();\n list.push(exp);\n const maybeToken = this.getToken();\n if (maybeToken.type !== this.ruleNames.COMMA) {\n break;\n } else {\n this.pos++;\n this.consumeNewLines();\n }\n }\n return list;\n }\n\n getTypeArray () {\n const types = this.insideScope(IVProgParser.FUNCTION)\n ? this.functionTypes\n : this.variableTypes;\n return types.map((x) => this.lexer.literalNames[x]);\n }\n}\n","export class SourceInfo {\n\n /**\n * @param {moo.Token} token\n *\n * @return {SourceInfo}\n * **/\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.col, token.text, token.text.length);\n }\n\n /**\n * @param {moo.Token} tokenA\n * @param {moo.Token} tokenB\n *\n * @return {SourceInfo}\n * **/\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.col;\n // adapted from https://github.com/UNIVALI-LITE/Portugol-Studio/blob/master/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/Portugol.g\n // No idea why...\n const size = tokenB.offset + 1 - tokenA.offset\n return new SourceInfo(line, column, \"\", size);\n }\n\n /**\n * @param {number} line\n * @param {number} column\n * @param {string} text\n * @param {number} size\n * **/\n constructor (line, column, text, size) {\n this.line = line;\n this.column = column;\n this.text = text;\n this.size = size;\n }\n\n}\n","import { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport * as Utils from \"./../util/utils\";\nimport { Config } from \"./../util/config\";\n\nexport class DOMConsole {\n static get BASH_TEMPLATE () {\n return `\n <div class=\"bash-title\">\n <i id=\"ivprog-console-clearbtn\" class=\"icon eraser\" style=\"float:left;padding-left: 5px\"></i>\n <span>Terminal</span>\n <i id=\"ivprog-console-showbtn\" class=\"icon window maximize outline\" style=\"float:right\"></i>\n <i id=\"ivprog-console-hidebtn\" class=\"icon window minimize outline\" style=\"float:right\"></i>\n </div>\n <div id='ivprog-term' class=\"bash-body\"></div>`;\n }\n\n static get INPUT_CARET_TEMPLATE () {\n return `\n <div id=\"cmd\">\n <span></span>\n <div id=\"cursor\"></div>\n </div>`;\n }\n\n static get USER () {\n return 0;\n }\n\n static get INFO () {\n return 1;\n }\n\n static get ERR () {\n return 2;\n }\n\n static get INPUT () {\n return 3;\n }\n\n constructor (elementID, disableMarginTop = false) {\n this.disableMarginTop = disableMarginTop;\n this.input = null;\n this.cursorInterval = null;\n this.idleInterval = null;\n this.inputDiv = null;\n this.inputCMD = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.needInput = false;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n this.termDiv = null;\n this.anyKey = false;\n let actualID = elementID;\n if (elementID[0] === \"#\") {\n actualID = elementID.substring(1);\n }\n this.parent = document.getElementById(actualID);\n this.setup();\n this.inputListeners = [];\n this.hideInput();\n this.pending_writes = [];\n this.last_clear = -1;\n }\n\n setup () {\n this._setupDom();\n this._setupEvents();\n }\n\n _setupEvents () {\n this.input.addEventListener(\"keydown\", this.registerInput.bind(this));\n this.clearBtn.addEventListener(\"click\", this.clearBtnClick.bind(this));\n this.hideBtn.addEventListener(\"click\", this.hideBtnClick.bind(this));\n this.showBtn.addEventListener(\"click\", this.showBtnClick.bind(this));\n }\n\n registerInput (event) {\n if (!this.needInput) {\n return;\n }\n const keyCode = event.which;\n if (keyCode === 13 || this.anyKey) {\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n let text = this.input.value;\n text = text.replace(\"[\\n\\r]+\", \"\");\n this.notifyListeners(text);\n this._appendUserInput(text);\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n }\n }\n\n _setupDom () {\n const bashNode = document.createElement(\"div\");\n bashNode.classList.add(\"bash\");\n bashNode.innerHTML = DOMConsole.BASH_TEMPLATE;\n this.termDiv = bashNode.querySelector(\"#ivprog-term\");\n this.termDiv.classList.add(\"ivprog-term-div\");\n this.inputDiv = document.createElement(\"div\");\n this.inputDiv.id = \"ivprog-terminal-inputdiv\";\n this.inputDiv.innerHTML = DOMConsole.INPUT_CARET_TEMPLATE;\n this.input = document.createElement(\"input\");\n this.input.setAttribute(\"name\", \"command\");\n this.input.setAttribute(\"value\", \"\");\n this.input.setAttribute(\"type\", \"text\");\n this.input.setAttribute(\"autocomplete\", \"off\");\n this.inputDiv.append(this.input);\n this.termDiv.append(this.inputDiv);\n bashNode.append(this.termDiv);\n this.parent.append(bashNode);\n this.inputCMD = this.inputDiv.querySelector(\"#cmd\");\n this.cursorRef = this.inputCMD.querySelector(\"#cursor\");\n this.inputSpan = this.inputCMD.querySelector(\"span\");\n this.clearBtn = bashNode.querySelector(\"#ivprog-console-clearbtn\");\n this.hideBtn = bashNode.querySelector(\"#ivprog-console-hidebtn\");\n this.showBtn = bashNode.querySelector(\"#ivprog-console-showbtn\");\n this._setupCursor();\n //Jquery tooltips....\n window\n .$(this.clearBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_clear\") });\n window\n .$(this.showBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_show\") });\n window\n .$(this.hideBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_hide\") });\n }\n\n _setupCursor () {\n this.inputCMD.addEventListener(\"click\", this.blinkCaretAndFocus.bind(this));\n //this.inputCMD.click();\n\n this.input.addEventListener(\"keyup\", this.updateSpanText.bind(this));\n this.input.addEventListener(\"blur\", this.stopBlinkCaret.bind(this));\n }\n\n blinkCaretAndFocus () {\n if (this.cursorInterval != null) {\n return;\n }\n this.input.focus();\n this.cursorInterval = window.setInterval(() => {\n if (this.cursorRef.style.visibility === \"visible\") {\n this.cursorRef.style.visibility = \"hidden\";\n } else {\n this.cursorRef.style.visibility = \"visible\";\n }\n }, 500);\n }\n\n updateSpanText () {\n this.inputSpan.innerHTML = this.input.value;\n if (this.idleInterval != null) window.clearInterval(this.idleInterval);\n this.scheduleNotify();\n }\n\n stopBlinkCaret () {\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n this.cursorRef.style.visibility = \"visible\";\n }\n\n notifyListeners (text) {\n this.inputListeners.forEach((resolve) => resolve(text));\n this.inputListeners.splice(0, this.inputListeners.length);\n this.hideInput();\n this.anyKey = false;\n }\n\n writeRawHTML (text, channel) {\n this._appendTextLn(text, channel, false);\n }\n\n write (text, newLine = false) {\n this._appendText(text, DOMConsole.USER, newLine);\n }\n\n info (text) {\n this._appendTextLn(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendTextLn(text, DOMConsole.ERR);\n }\n\n async _appendText (text, type, newLine = false) {\n // console.debug(\"Caling appendText\");\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(3);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n\n if (this.currentLine == null) {\n const divClass = this.getClassForType(type);\n const textDiv = document.createElement(\"div\");\n textDiv.classList.add(divClass);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = textDiv;\n }\n this.currentLine.innerHTML += this.getOutputText(text);\n if (newLine) {\n // console.debug(\"append newline\");\n this.currentLine = null;\n }\n this.scrollTerm();\n }\n\n async _appendTextLn (text, type, filter = true) {\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(3);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(type);\n const textDiv = document.createElement(\"div\");\n textDiv.classList.add(divClass);\n if (filter) textDiv.innerHTML = this.getOutputText(text);\n else textDiv.innerHTML = `<span>${text}</span>`;\n if (this.currentLine != null && this.currentLine.innerHTML.length === 0) {\n this.termDiv.removeChild(this.currentLine);\n }\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = null;\n this.scrollTerm();\n }\n\n async _appendUserInput (text) {\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(3);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(DOMConsole.INPUT);\n const textDiv = document.createElement(\"div\");\n textDiv.innerHTML = this.getUserInputText(text);\n textDiv.classList.add(divClass);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = null;\n this.scrollTerm();\n }\n\n getOutputText (text) {\n text = text.replace(/\\s/g, \"&#160;\");\n return `<span>${text}</span>`;\n }\n\n getUserInputText (text) {\n if (text.trim().length == 0) {\n text = \"&nbsp;\";\n }\n return `<i class=\"icon keyboard outline\" style=\"float:left\"></i><span>${text}</span>`;\n }\n\n scrollTerm () {\n //scrollIt(this.inputDiv.previousSibling,200);\n this.termDiv.scrollTop = this.termDiv.scrollHeight;\n }\n\n focus () {\n this.termDiv.style.display = \"block\";\n // Is in draggable mode?\n if (!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"-160px\";\n }\n if (this.needInput) {\n this.showInput();\n this.scheduleNotify();\n }\n if (!Utils.isElementInViewport(this.termDiv))\n this.termDiv.scrollIntoView(false);\n this.scrollTerm();\n }\n\n hide () {\n if (this.needInput) {\n clearInterval(this.idleInterval);\n this.hideInput();\n this.needInput = true;\n }\n // Is in draggable mode?\n if (!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"0\";\n }\n this.termDiv.style.display = \"none\";\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.INPUT:\n return \"ivprog-term-userInput\";\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n dispose () {\n this.input.removeEventListener(\"keyup\", this.updateSpanText.bind(this));\n this.input.removeEventListener(\"blur\", this.stopBlinkCaret.bind(this));\n this.input.removeEventListener(\"keydown\", this.registerInput.bind(this));\n this.inputCMD.removeEventListener(\n \"click\",\n this.blinkCaretAndFocus.bind(this)\n );\n this.clearBtn.removeEventListener(\"click\", this.clearBtnClick.bind(this));\n this.hideBtn.removeEventListener(\"click\", this.hideBtnClick.bind(this));\n this.showBtn.removeEventListener(\"click\", this.showBtnClick.bind(this));\n this.input = null;\n this.inputCMD = null;\n this.inputDiv = null;\n this.termDiv = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n this.currentLine = null;\n const cNode = this.parent.cloneNode(false);\n this.parent.parentNode.replaceChild(cNode, this.parent);\n if (this.cursorInterval != null) {\n clearInterval(this.cursorInterval);\n }\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n }\n }\n\n showInput () {\n this.needInput = true;\n this.inputDiv.style.display = \"block\";\n this.inputCMD.click();\n //this.inputCMD.scrollIntoView();\n this.scrollTerm();\n }\n\n hideInput () {\n this.needInput = false;\n this.inputDiv.style.display = \" none\";\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n }\n\n requestInput (anyKey = false) {\n const promise = new Promise((resolve, _) => {\n this.inputListeners.push(resolve);\n this.anyKey = anyKey;\n if (this.idleInterval == null) this.scheduleNotify();\n this.showInput();\n });\n return promise;\n }\n\n sendOutput (text) {\n //console.debug(text);\n let output = \"\" + text;\n if (output.indexOf(\"\\n\") !== -1) {\n //console.debug(\"newline\");\n const outputList = output.split(\"\\n\");\n let i = 0;\n for (; i < outputList.length - 1; i += 1) {\n //console.debug(\"newline write\");\n let t = outputList[i];\n t = t.replace(/\\t/g, \"&#x0020;&#x0020;\");\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length !== 0) {\n this.write(t);\n }\n this.write(\"\", true);\n }\n let t = outputList[i];\n t = t.replace(/\\t/g, \"&#x0020;&#x0020;\");\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length != 0) this.write(t);\n } else {\n // console.debug(\"no newline\");\n output = output.replace(/\\t/g, \"&#x0020;&#x0020;\");\n output = output.replace(/\\s/g, \"&#x0020;\");\n if (output.length != 0) this.write(output);\n }\n }\n\n clearPendingWrites () {\n this.last_clear = Date.now();\n }\n\n clear () {\n this.clearPendingWrites();\n while (this.inputDiv.parentElement.childNodes.length > 1) {\n this.inputDiv.parentElement.removeChild(\n this.inputDiv.parentElement.firstChild\n );\n }\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n }\n\n clearBtnClick () {\n this.clear();\n }\n\n showBtnClick () {\n this.focus();\n }\n\n hideBtnClick () {\n this.hide();\n }\n\n notifyIdle () {\n this.info(LocalizedStrings.getMessage(\"awaiting_input_message\"));\n this.inputCMD.click();\n }\n\n scheduleNotify () {\n this.idleInterval = window.setInterval(\n this.notifyIdle.bind(this),\n Config.idle_input_interval\n );\n }\n\n cancelPendingInputRequests () {\n this.inputListeners.forEach((resolve) => resolve(\"\"));\n this.inputListeners.splice(0, this.inputListeners.length);\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n this.hideInput();\n this.anyKey = false;\n }\n}\n","export class Input {\n\n requestInput () {\n throw new Error(\"Must be implemented\");\n }\n\n cancelPendingInputRequests () {\n throw new Error(\"Must be implemented\");\n }\n}","export class Output {\n\n sendOutput (text) {\n throw new Error(\"Must be implemented\");\n }\n}","import { runner } from \"./runner\";\nimport {\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n getTestCases,\n} from \"./visualUI/functions\";\nimport * as LocalizedStringsService from \"./services/localizedStringsService\";\nimport { i18nHelper } from \"./services/i18nHelper\";\nimport {\n ActionTypes,\n getLogs,\n getLogsAsString,\n registerClick,\n registerUserEvent,\n parseLogs,\n} from \"./services/userLog\";\nimport {\n prepareActivityToStudentHelper,\n prepareActivityToStudentHelperJSON,\n autoEval,\n setPreviousAlgorithm\n} from \"./util/iassignHelpers\";\nimport { openAssessmentDetail, levenshteinDistance } from \"./util/utils\";\nimport { Config } from \"./util/config\";\nimport { processData } from \"./util/dataProcess\";\nimport { parseExpression, parseCode } from \"./util/parseFromVisual\";\nimport * as CodeEditorAll from \"./visualUI/text_editor\";\nimport { autoGenerateTestCaseOutput } from \"./util/auto_gen_output\";\nimport { generate } from \"./visualUI/code_generator\";\n\nconst CodeEditor = {\n initTextEditor: CodeEditorAll.initTextEditor,\n setCode: CodeEditorAll.setCode,\n getCode: CodeEditorAll.getCode,\n updateEditor: CodeEditorAll.updateEditor,\n disable: CodeEditorAll.disable,\n};\n\nconst Settings = {\n programming: [],\n functions: [],\n datatypes: [],\n commands: [],\n filter: []\n}\n\nconst i18n = i18nHelper.i18n;\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport {\n runner,\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n getTestCases,\n autoEval,\n prepareActivityToStudentHelper,\n prepareActivityToStudentHelperJSON,\n LocalizedStrings,\n i18n,\n getLogs,\n getLogsAsString,\n registerClick,\n registerUserEvent,\n parseLogs,\n ActionTypes,\n CodeEditor,\n openAssessmentDetail,\n autoGenerateTestCaseOutput,\n Config,\n parseExpression,\n parseCode,\n generate as generateCode,\n levenshteinDistance,\n processData,\n Settings,\n setPreviousAlgorithm\n};\n","import { LanguageService } from '../services/languageService';\nimport {createInputFun, createOutputFun} from './lib/io';\nimport {createLengthFun, createLowercaseFun,\n createrCharAtFun, createSubstringFun,\n createUppercaseFun} from './lib/strings';\nimport {createMatrixColumnsFun, createMatrixLinesFun,\n createNumElementsFun} from './lib/arrays';\nimport {createCastBoolFun, createCastIntFun,\n createCastRealFun, createCastStringFun,\n createIsBoolFun, createIsIntFun,\n createIsRealFun, createCastCharFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun, createRandFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(Object.prototype.hasOwnProperty.call(object, key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n const result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n }\n }\n return result;\n}\n\nconst libsObject = {\n $mathLib: {\n $sin: createSinFun(),\n $cos: createCosFun(),\n $tan: createTanFun(),\n $sqrt: createSqrtFun(),\n $pow: createPowFun(),\n $log: createLogFun(),\n $abs: createAbsFun(),\n $negate: createNegateFun(),\n $invert: createInvertFun(),\n $max: createMaxFun(),\n $min: createMinFun(),\n $rand: createRandFun()\n },\n $ioLib: {\n $read: createInputFun(),\n $write: createOutputFun()\n },\n $strLib: {\n $substring: createSubstringFun(),\n $length: createLengthFun(),\n $uppercase: createUppercaseFun(),\n $lowercase: createLowercaseFun(),\n $charAt: createrCharAtFun(),\n },\n $arrayLib: {\n $numElements: createNumElementsFun(),\n $matrixLines: createMatrixLinesFun(),\n $matrixColumns: createMatrixColumnsFun()\n },\n $langLib: {\n $isReal: createIsRealFun(),\n $isInt: createIsIntFun(),\n $isBool: createIsBoolFun(),\n $castReal: createCastRealFun(),\n $castInt: createCastIntFun(),\n $castBool: createCastBoolFun(),\n $castString: createCastStringFun(),\n $castChar: createCastCharFun()\n }\n}\n\nconst funcsObject = concatObjects(libsObject.$ioLib, libsObject.$langLib,\n libsObject.$strLib, libsObject.$arrayLib);\n\nexport const LanguageDefinedFunction = Object.freeze({\n getMainFunctionName: () => LanguageService.getCurrentLangFuncs().main_function,\n getInternalName: (localName) => {\n if (localName.indexOf(\".\") !== -1) {\n const names = localName.split(\".\");\n const lib = valueToKey(names[0], LanguageService.getCurrentLangLibs());\n const internalName = valueToKey(names[1], LanguageService.getCurrentLangFuncs());\n if (lib === null || internalName === null) {\n return null;\n }\n return lib + \".\" + internalName;\n }\n const funcName = valueToKey(localName, LanguageService.getCurrentLangFuncs());\n if(funcName !== null) {\n if(funcsObject[funcName]) {\n return funcName;\n }\n }\n return null;\n },\n getFunction: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = names[0];\n const funName = names[1];\n return libsObject[libName][funName];\n }\n return funcsObject[internalName];\n },\n getLocalName: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = LanguageService.getCurrentLangLibs()[names[0]];\n const funName = LanguageService.getCurrentLangFuncs()[names[1]];\n return `${libName}.${funName}`;\n } else if (LanguageService.getCurrentLangFuncs()[internalName]) {\n return LanguageService.getCurrentLangFuncs()[internalName];\n } else { \n return internalName\n }\n }\n});","import { RuntimeError } from \"./runtimeError\";\nimport { SemanticError } from \"./semanticError\";\nimport * as LocalizedStringsService from \"./../../services/localizedStringsService\";\nimport { LanguageDefinedFunction } from \"../definedFunctions\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nfunction createRuntimeError (i18n_id, context = []) {\n return new RuntimeError(LocalizedStrings.getError(i18n_id, context), i18n_id);\n}\n\nfunction createSemanticError (i18n_id, context = []) {\n return new SemanticError(\n LocalizedStrings.getError(i18n_id, context),\n i18n_id\n );\n}\n\nexport const ProcessorErrorFactory = Object.freeze({\n symbol_not_found_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n const error = createSemanticError(\"symbol_not_found_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.symbol_not_found(id);\n }\n },\n symbol_not_found: (id) => {\n const context = [id];\n return createSemanticError(\"symbol_not_found\", context);\n },\n function_missing_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n const error = createSemanticError(\"function_missing_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return createSemanticError(\"function_missing\", context);\n },\n main_missing: () => {\n return createSemanticError(\"main_missing\");\n },\n array_dimension_not_int_full: (sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line];\n const error = createSemanticError(\n \"array_dimension_not_int_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return createSemanticError(\"array_dimension_not_int\");\n },\n unknown_command_full: (sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line];\n const error = createRuntimeError(\"unknown_command_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n },\n unknown_command: () => {\n return createRuntimeError(\"unknown_command\");\n },\n incompatible_types_full: (\n left_type,\n left_dim,\n right_type,\n right_dim,\n exp,\n source_info\n ) => {\n if (source_info) {\n const context = [\n LocalizedStrings.translateType(left_type, left_dim),\n exp,\n source_info.line,\n LocalizedStrings.translateType(right_type, right_dim),\n ];\n const error = createSemanticError(\"incompatible_types_full\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.incompatible_types(\n left_type,\n left_dim,\n right_type,\n right_dim,\n exp\n );\n }\n },\n incompatible_types: (left_type, left_dim, right_type, right_dim, exp) => {\n const context = [\n LocalizedStrings.translateType(left_type, left_dim),\n exp,\n LocalizedStrings.translateType(right_type, right_dim),\n ];\n return createSemanticError(\"incompatible_types\", context);\n },\n incompatible_types_array_full: (exp, type, dim, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n exp,\n LocalizedStrings.translateType(type, dim),\n sourceInfo.line,\n sourceInfo.column,\n ];\n const error = createSemanticError(\n \"incompatible_types_array_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.incompatible_types_array(exp, type, dim);\n }\n },\n incompatible_types_array: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"incompatible_types_array\", context);\n },\n loop_condition_type_full: (exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n const error = createSemanticError(\"loop_condition_type_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.loop_condition_type(exp);\n }\n },\n loop_condition_type: (exp) => {\n const context = [exp];\n return createSemanticError(\"loop_condition_type\", context);\n },\n /**\n * @deprecated 01/10/2019\n */\n endless_loop_full: (sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line];\n const error = createSemanticError(\"endless_loop_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return createSemanticError(\"endless_loop\");\n },\n if_condition_type_full: (exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n const error = createSemanticError(\"if_condition_type_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.if_condition_type(exp);\n }\n },\n if_condition_type: (exp) => {\n const context = [exp];\n return createSemanticError(\"if_condition_type\", context);\n },\n invalid_global_var: () => {\n return createRuntimeError(\"invalid_global_var\");\n },\n not_implemented: (id) => {\n const context = [id];\n return createRuntimeError(\"not_implemented\", context);\n },\n invalid_case_type_full: (exp, type, dim, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n exp,\n LocalizedStrings.translateType(type, dim),\n sourceInfo.line,\n sourceInfo.column,\n ];\n const error = createSemanticError(\"invalid_case_type_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_case_type(exp, type, dim);\n }\n },\n invalid_case_type: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_case_type\", context);\n },\n void_in_expression_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, id];\n const error = createSemanticError(\"void_in_expression_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.void_in_expression(id);\n }\n },\n void_in_expression: (id) => {\n const context = [id];\n return createSemanticError(\"void_in_expression\", context);\n },\n invalid_array_access_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n const error = createSemanticError(\"invalid_array_access_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_array_access(id);\n }\n },\n invalid_array_access: (id) => {\n const context = [id];\n return createSemanticError(\"invalid_array_access\", context);\n },\n invalid_matrix_access_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n const error = createSemanticError(\"invalid_matrix_access_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_matrix_access(id);\n }\n },\n invalid_matrix_access: (id) => {\n const context = [id];\n return createSemanticError(\"invalid_matrix_access\", context);\n },\n matrix_column_outbounds_full: (id, value, columns, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, value, id, columns];\n const error = createRuntimeError(\"matrix_column_outbounds_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.matrix_column_outbounds(id, value, columns);\n }\n },\n matrix_column_outbounds: (id, value, columns) => {\n const context = [value, id, columns];\n return createRuntimeError(\"matrix_column_outbounds\", context);\n },\n matrix_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n const error = createRuntimeError(\"matrix_line_outbounds_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.matrix_line_outbounds(id, value, lines);\n }\n },\n matrix_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return createRuntimeError(\"matrix_line_outbounds\", context);\n },\n vector_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n const error = createRuntimeError(\"vector_line_outbounds_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.vector_line_outbounds(id, value, lines);\n }\n },\n vector_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return createRuntimeError(\"vector_line_outbounds\", context);\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, id];\n const error = createRuntimeError(\"vector_not_matrix_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.vector_not_matrix(id);\n }\n },\n vector_not_matrix: (id) => {\n const context = [id];\n return createRuntimeError(\"vector_not_matrix\", context);\n },\n function_no_return: (id) => {\n const context = [id];\n return createSemanticError(\"function_no_return\", context);\n },\n invalid_void_return_full: (id, type, dim, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n sourceInfo.line,\n id,\n LocalizedStrings.translateType(type, dim),\n ];\n const error = createSemanticError(\"invalid_void_return_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_void_return(id, type, dim);\n }\n },\n invalid_void_return: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_void_return_full\", context);\n },\n invalid_return_type_full: (id, type, dim, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n sourceInfo.line,\n id,\n LocalizedStrings.translateType(type, dim),\n ];\n const error = createSemanticError(\"invalid_return_type_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_return_type(id, type, dim);\n }\n },\n invalid_return_type: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_return_type\", context);\n },\n invalid_parameters_size_full: (id, expected, actual, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, id, expected, actual];\n const error = createSemanticError(\n \"invalid_parameters_size_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_parameters_size(\n id,\n expected,\n actual\n );\n }\n },\n invalid_parameters_size: (id, expected, actual) => {\n const context = [id, expected, actual];\n return createSemanticError(\"invalid_parameters_size\", context);\n },\n invalid_parameter_type_full: (fun_name, exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n exp,\n LanguageDefinedFunction.getLocalName(fun_name),\n sourceInfo.line,\n ];\n const error = createSemanticError(\"invalid_parameter_type_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(fun_name, exp);\n }\n },\n invalid_parameter_type: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n return createSemanticError(\"invalid_parameter_type_full\", context);\n },\n invalid_ref_full: (id, exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [exp, id, sourceInfo.line];\n const error = createSemanticError(\"invalid_ref_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_ref(id, exp);\n }\n },\n invalid_ref: (id, exp) => {\n const context = [exp, id];\n return createSemanticError(\"invalid_ref\", context);\n },\n unexpected_break_command_full: (sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line];\n const error = createRuntimeError(\n \"unexpected_break_command_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return createRuntimeError(\"unexpected_break_command\");\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, exp];\n const error = createRuntimeError(\n \"invalid_array_literal_type_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(exp);\n }\n },\n invalid_array_literal_type: (exp) => {\n const context = [exp];\n return createRuntimeError(\"invalid_array_literal_type\", context);\n },\n invalid_array_literal_line_full: (expected, actual, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n const error = createRuntimeError(\n \"invalid_array_literal_line_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(expected, actual);\n }\n },\n invalid_array_literal_line: (expected, actual) => {\n const context = [expected, actual];\n return createRuntimeError(\"invalid_array_literal_line\", context);\n },\n invalid_array_literal_column_full: (expected, actual, sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n const error = createRuntimeError(\n \"invalid_array_literal_column_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_array_literal_column(\n expected,\n actual\n );\n }\n },\n invalid_array_literal_column: (expected, actual) => {\n const context = [expected, actual];\n return createRuntimeError(\"invalid_array_literal_column\", context);\n },\n invalid_unary_op_full: (expString, opName, type, dim, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n sourceInfo.line,\n expString,\n LocalizedStrings.translateOp(opName),\n LocalizedStrings.translateType(type, dim),\n ];\n const error = createRuntimeError(\"invalid_unary_op_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (expString, opName, type, dim) => {\n const context = [\n expString,\n LocalizedStrings.translateOp(opName),\n LocalizedStrings.translateType(type, dim),\n ];\n return createRuntimeError(\"invalid_unary_op\", context);\n },\n invalid_infix_op_full: (\n expString,\n opName,\n typeLeft,\n dimLeft,\n typeRight,\n dimRight,\n sourceInfo\n ) => {\n if (sourceInfo) {\n const context = [\n sourceInfo.line,\n expString,\n LocalizedStrings.translateOp(opName),\n LocalizedStrings.translateType(typeLeft, dimLeft),\n LocalizedStrings.translateType(typeRight, dimRight),\n ];\n const error = createRuntimeError(\"invalid_infix_op_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_infix_op(\n opName,\n typeLeft,\n dimLeft,\n typeRight,\n dimRight\n );\n }\n },\n invalid_infix_op: (\n expString,\n opName,\n typeLeft,\n dimLeft,\n typeRight,\n dimRight\n ) => {\n const context = [\n expString,\n LocalizedStrings.translateOp(opName),\n LocalizedStrings.translateType(typeLeft, dimLeft),\n LocalizedStrings.translateType(typeRight, dimRight),\n ];\n return createRuntimeError(\"invalid_infix_op\", context);\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if (sourceInfo) {\n const context = [sourceInfo.line];\n const error = createSemanticError(\n \"array_dimension_not_positive_full\",\n context\n );\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return createSemanticError(\"array_dimension_not_positive\");\n },\n invalid_type_conversion: (value, type, dim) => {\n const context = [value, LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_type_conversion\", context);\n },\n invalid_read_type: (exp, type, dim, name, source_info) => {\n const context = [\n source_info.line,\n exp,\n LocalizedStrings.translateType(type, dim),\n name,\n ];\n const error = createRuntimeError(\"invalid_read_type\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_read_type_array: (\n exp,\n typePos,\n dimPos,\n name,\n typeArray,\n dimArray,\n sourceInfo\n ) => {\n const context = [\n sourceInfo.line,\n exp,\n LocalizedStrings.translateType(typePos, dimPos),\n name,\n LocalizedStrings.translateType(typeArray, dimArray),\n ];\n const error = createRuntimeError(\"invalid_read_type_array\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n },\n invalid_const_ref_full: (fun_name, exp, sourceInfo) => {\n if (sourceInfo) {\n const context = [\n exp,\n LanguageDefinedFunction.getLocalName(fun_name),\n sourceInfo.line,\n ];\n const error = createSemanticError(\"invalid_const_ref_full\", context);\n error.context = { line: sourceInfo.line, column: sourceInfo.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_const_ref(fun_name, exp);\n }\n },\n invalid_const_ref: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n const error = createSemanticError(\"invalid_const_ref\", context);\n return error;\n },\n invalid_const_assignment_full: (var_id, source_info) => {\n if (source_info) {\n const context = [source_info.line, var_id];\n const error = createSemanticError(\n \"invalid_const_assignment_full\",\n context\n );\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_const_assignment(var_id);\n }\n },\n invalid_const_assignment: (var_id) => {\n const context = [var_id];\n return createSemanticError(\"invalid_const_assignment\", context);\n },\n invalid_vector_assignment_full: (\n left_id,\n left_size,\n right_id,\n right_size,\n source_info\n ) => {\n if (source_info) {\n const context = [\n source_info.line,\n left_id,\n left_size,\n right_id,\n right_size,\n ];\n const error = createRuntimeError(\n \"invalid_vector_assignment_full\",\n context\n );\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_vector_assignment(\n left_id,\n left_size,\n right_id,\n right_size\n );\n }\n },\n invalid_vector_assignment: (left_id, left_size, right_id, right_size) => {\n const context = [left_id, left_size, right_id, right_size];\n return createRuntimeError(\"invalid_vector_assignment\", context);\n },\n invalid_matrix_assignment_full: (\n left_id,\n left_line,\n left_column,\n right_id,\n right_line,\n right_column,\n source_info\n ) => {\n if (source_info) {\n const context = [\n source_info.line,\n left_id,\n left_line,\n left_column,\n right_id,\n right_line,\n right_column,\n ];\n const error = createRuntimeError(\n \"invalid_matrix_assignment_full\",\n context\n );\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_matrix_assignment(\n left_id,\n left_line,\n left_column,\n right_id,\n right_line,\n right_column\n );\n }\n },\n invalid_matrix_assignment: (\n left_id,\n left_line,\n left_column,\n right_id,\n right_line,\n right_column\n ) => {\n const context = [\n left_id,\n left_line,\n left_column,\n right_id,\n right_line,\n right_column,\n ];\n return createRuntimeError(\"invalid_matrix_assignment\", context);\n },\n matrix_to_vector_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n const error = createSemanticError(\"matrix_to_vector_attr\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n vector_to_matrix_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n const error = createSemanticError(\"vector_to_matrix_attr\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_matrix_index_assign_full: (\n mat_id,\n mat_line,\n mat_size,\n exp,\n exp_size,\n source_info\n ) => {\n if (source_info) {\n const context = [\n source_info.line,\n mat_line,\n mat_id,\n mat_size,\n exp,\n exp_size,\n ];\n const error = createRuntimeError(\n \"invalid_matrix_index_assign_full\",\n context\n );\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.invalid_matrix_index_assign(\n mat_id,\n mat_line,\n mat_size,\n exp,\n exp_size\n );\n }\n },\n invalid_matrix_index_assign: (mat_id, mat_line, mat_size, exp, exp_size) => {\n const context = [mat_line, mat_id, mat_size, exp, exp_size];\n return createRuntimeError(\"invalid_matrix_index_assign\", context);\n },\n invalid_number_elements_vector: (\n expected_num,\n exp,\n actual_num,\n source_info\n ) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n const error = createRuntimeError(\"invalid_number_elements_vector\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_number_lines_matrix: (expected_num, exp, actual_num, source_info) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n const error = createRuntimeError(\"invalid_number_lines_matrix\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n divsion_by_zero_full: (exp, source_info) => {\n if (source_info) {\n const context = [source_info.line, exp];\n const error = createRuntimeError(\"divsion_by_zero_full\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n } else {\n return ProcessorErrorFactory.divsion_by_zero(exp);\n }\n },\n divsion_by_zero: (exp) => {\n const context = [exp];\n return createRuntimeError(\"divsion_by_zero\", context);\n },\n undefined_tanget_value: (value, source_info) => {\n const context = [source_info.line, value];\n const error = createRuntimeError(\"undefined_tanget_value\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n negative_log_value: (source_info) => {\n const error = createRuntimeError(\"negative_log_value\", [source_info.line]);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_string_index: (index, str, source_info) => {\n const local_fun_name = LanguageDefinedFunction.getLocalName(\"$charAt\");\n const context = [\n source_info.line,\n local_fun_name,\n index,\n str,\n str.length - 1,\n ];\n const error = createRuntimeError(\"invalid_string_index\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n negative_sqrt_value: (source_info) => {\n const error = createRuntimeError(\"negative_sqrt_value\", [source_info.line]);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n /**\n * @deprecated 01/10/2019\n */\n exceeded_recursive_calls: (source_info) => {\n const context = [source_info.line];\n const error = createRuntimeError(\"exceeded_recursive_calls\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_for_variable: (id, source_info) => {\n const context = [source_info.line, id];\n const error = createSemanticError(\"invalid_for_variable\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_for_from: (exp, source_info) => {\n const context = [source_info.line, exp];\n const error = createSemanticError(\"invalid_for_from\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_for_to: (exp, source_info) => {\n const context = [source_info.line, exp];\n const error = createSemanticError(\"invalid_for_to\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n invalid_for_pass: (exp, source_info) => {\n const context = [source_info.line, exp];\n const error = createSemanticError(\"invalid_for_pass\", context);\n error.context = { line: source_info.line, column: source_info.column };\n return error;\n },\n exceed_max_instructions: () => {\n return createRuntimeError(\"exceed_max_instructions\");\n },\n});\n\n","export class RuntimeError extends Error {\n constructor (msg, id) {\n super(msg);\n this.id = id;\n this._context = {};\n if (Error.captureStackTrace) Error.captureStackTrace(this, RuntimeError);\n }\n\n get context () {\n return this._context;\n }\n\n set context (contextObj) {\n this._context = contextObj;\n }\n}\n","export class SemanticError extends Error {\n constructor (msg, id) {\n super(msg);\n this.id = id;\n this._context = {};\n if (Error.captureStackTrace) Error.captureStackTrace(this, SemanticError);\n }\n\n get context () {\n return this._context;\n }\n\n set context (contextObj) {\n this._context = contextObj;\n }\n}\n","import { Store } from \"./store/store\";\nimport { Modes } from \"./modes\";\nimport { Context } from \"./context\";\nimport { Types } from \"./../typeSystem/types\";\nimport { Operators } from \"./../ast/operators\";\nimport { LanguageDefinedFunction } from \"./definedFunctions\";\nimport {\n resultTypeAfterInfixOp,\n resultTypeAfterUnaryOp,\n} from \"./compatibilityTable\";\nimport * as Commands from \"./../ast/commands/\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Command } from \"./../ast/commands/command\";\nimport * as Expressions from \"./../ast/expressions/\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from \"./../ast/expressions/expression\";\nimport * as Utils from \"./../util/utils\";\nimport { ArrayType } from \"./../typeSystem/array_type\";\nimport { convertToString, toInt } from \"../typeSystem/parsers\";\nimport { Config } from \"../util/config\";\nimport { ProcessorErrorFactory } from \"./error/processorErrorFactory\";\nimport { RuntimeError } from \"./error/runtimeError\";\nimport { Location } from \"../memory/location\";\nimport { StoreValue } from \"./store/value/store_value\";\nimport { StoreValueRef } from \"./store/value/store_value_ref\";\nimport { ArrayStoreValue } from \"./store/value/array_store_value\";\nimport { ArrayStoreValueRef } from \"./store/value/array_store_value_ref\";\nimport { StoreValueAddress } from \"./store/value/store_value_address\";\nimport { LocalizedStrings } from \"../services/localizedStringsService\";\n\nexport class IVProgProcessor {\n static get MAIN_INTERNAL_ID () {\n return \"$main\";\n }\n\n constructor (ast) {\n this.ast = ast;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.input = null;\n this.forceKill = false;\n this.output = null;\n this.mode = Modes.RUN;\n /**\n * Stores the sourceInfo of every function call, command or expression\n */\n this.function_call_stack = [];\n this.instruction_count = 0;\n this.function_call_count = 0;\n }\n\n registerInput (input) {\n if (this.input !== null) this.input = null;\n this.input = input;\n }\n\n registerOutput (output) {\n if (this.output !== null) this.output = null;\n this.output = output;\n }\n\n checkContext (context) {\n return this.context[this.context.length - 1] === context;\n }\n\n ignoreSwitchCases (store) {\n if (store.mode === Modes.RETURN) {\n return true;\n } else if (store.mode === Modes.BREAK) {\n return true;\n } else {\n return false;\n }\n }\n\n prepareState () {\n if (this.stores !== null) {\n for (let i = 0; i < this.stores.length; i++) {\n delete this.stores[i];\n }\n this.stores = null;\n }\n if (this.globalStore !== null) this.globalStore = null;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.instruction_count = 0;\n this.mode = Modes.RUN;\n }\n\n async interpretAST () {\n this.prepareState();\n Location.clear();\n await this.initGlobal();\n const mainFunc = this.findMainFunction();\n if (mainFunc === null) {\n throw ProcessorErrorFactory.main_missing();\n }\n return this.runFunction(mainFunc, [], this.globalStore);\n }\n\n async initGlobal () {\n if (!this.checkContext(Context.BASE)) {\n return ProcessorErrorFactory.invalid_global_var();\n }\n return this.executeCommands(this.globalStore, this.ast.global);\n }\n\n findMainFunction () {\n return this.ast.functions.find((v) => v.isMain);\n }\n\n findFunction (name) {\n if (name.match(/^\\$.+$/)) {\n if (name === IVProgProcessor.MAIN_INTERNAL_ID) {\n return this.findMainFunction();\n }\n const fun = LanguageDefinedFunction.getFunction(name);\n if (!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find((v) => v.name === name);\n if (!val) {\n throw ProcessorErrorFactory.function_missing(name);\n }\n return val;\n }\n }\n\n async runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n const funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n await this.associateParameters(\n func.formalParameters,\n actualParameters,\n store,\n funcStore\n );\n this.context.push(Context.FUNCTION);\n this.stores.push(funcStore);\n const stoWithVars = await this.executeCommands(\n funcStore,\n func.variablesDeclarations\n );\n const finalSto = await this.executeCommands(stoWithVars, func.commands);\n this.stores.pop();\n this.context.pop();\n return finalSto;\n }\n\n /**\n *\n * @param {import('./../ast/commands/formalParameter').FormalParameter[]} formal_params\n * @param {Expression[]} effective_params\n * @param {Store} caller_store\n * @param {Store} callee_store\n */\n async associateParameters (\n formal_params,\n effective_params,\n caller_store,\n callee_store\n ) {\n const funcName =\n callee_store.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : callee_store.name;\n\n const hasVariadic = formal_params.some((p) => p.variadic);\n\n if (\n (formal_params.length != effective_params.length && !hasVariadic) ||\n formal_params.length > effective_params.length\n ) {\n throw ProcessorErrorFactory.invalid_parameters_size(\n funcName,\n formal_params.length,\n effective_params.length\n );\n }\n for (\n let i = 0, j = 0;\n i < formal_params.length && j < effective_params.length;\n i += 1, j += 1\n ) {\n const formalParameter = formal_params[i];\n if (formalParameter.variadic) {\n [j, callee_store] = await this.associateVariadicParameter(\n funcName,\n formalParameter,\n j,\n effective_params,\n caller_store,\n callee_store\n );\n } else {\n const actualParam = effective_params[i];\n callee_store = await this.associateParameter(\n funcName,\n formalParameter,\n actualParam,\n caller_store,\n callee_store\n );\n }\n }\n return callee_store;\n }\n\n /**\n *\n * @param {string} funcName\n * @param {import('./../ast/commands/formalParameter').FormalParameter} formalParameter\n * @param {number} index\n * @param {Expression[]} effective_params\n * @param {Store} caller_store\n * @param {Store} callee_store\n */\n async associateVariadicParameter (\n funcName,\n formalParameter,\n index,\n effective_params,\n caller_store,\n callee_store\n ) {\n let i;\n let count = 1;\n for (i = index; i < effective_params.length; i += 1) {\n const actualParam = effective_params[i];\n callee_store = await this.associateParameter(\n funcName,\n formalParameter,\n actualParam,\n caller_store,\n callee_store,\n count\n );\n count += 1;\n }\n const variadicCount = new StoreValue(Types.INTEGER, count, undefined, true);\n callee_store.insertStore(`${formalParameter.id}.0`, variadicCount);\n return [i - 1, callee_store];\n }\n\n /**\n *\n * @param {string} funcName\n * @param {import('./../ast/commands/formalParameter').FormalParameter} formalParameter\n * @param {Expression} actualParameter\n * @param {Store} callerStore\n * @param {Store} calleeStore\n * @param {number} variadicCount The number of the current value being assigned to the variadic parameter, default 0\n */\n async associateParameter (\n funcName,\n formalParameter,\n actualParameter,\n callerStore,\n calleeStore,\n variadicCount = 0\n ) {\n const actualValue = await this.evaluateExpression(\n callerStore,\n actualParameter\n );\n\n let shouldTypeCast = false;\n\n if (!formalParameter.type.isCompatible(actualValue.type)) {\n if (\n Config.enable_type_casting &&\n !formalParameter.byRef &&\n Store.canImplicitTypeCast(formalParameter.type, actualValue.type)\n ) {\n shouldTypeCast = true;\n } else {\n throw ProcessorErrorFactory.invalid_parameter_type(\n funcName,\n actualParameter.toString()\n );\n }\n }\n\n if (formalParameter.byRef && !actualValue.inStore()) {\n throw ProcessorErrorFactory.invalid_ref(\n funcName,\n actualParameter.toString()\n );\n }\n\n if (formalParameter.byRef) {\n const realObj = callerStore.getStoreObject(actualValue.id);\n let ref = null;\n if (actualValue instanceof ArrayStoreValue) {\n // it's a vector or matrix...\n const values = actualValue.get();\n const array_type = actualValue.type;\n const addresses = values.map((v) =>\n realObj.getLocAddressOf(v.line, v.column)\n );\n const columns = actualValue.isVector() ? 0 : actualValue.columns;\n ref = new ArrayStoreValueRef(\n array_type,\n values,\n addresses,\n actualValue.lines,\n columns,\n realObj.id\n );\n } else {\n if (actualValue instanceof StoreValueAddress) {\n const line = actualValue.line;\n const column = actualValue.column;\n ref = new StoreValueRef(\n actualValue.type,\n actualValue.get(),\n realObj.getLocAddressOf(line, column),\n realObj.id\n );\n ref.setReferenceDimension(realObj.type.dimensions);\n } else {\n ref = new StoreValueRef(\n actualValue.type,\n actualValue.get(),\n realObj.locAddress,\n realObj.id\n );\n }\n }\n let varID = formalParameter.id;\n if (formalParameter.variadic) varID = `${varID}.${variadicCount}`;\n calleeStore.insertStore(varID, ref);\n } else {\n let realValue = actualValue;\n if (shouldTypeCast) {\n realValue = Store.doImplicitCasting(formalParameter.type, realValue);\n }\n let varID = formalParameter.id;\n if (formalParameter.variadic) varID = `${varID}.${variadicCount}`;\n calleeStore.insertStore(varID, realValue);\n }\n return calleeStore;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Command[]} cmds\n *\n * @returns {Promise<Store>}\n */\n async executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n let sto = store;\n for (let i = 0; i < cmds.length; i += 1) {\n sto = await this.executeCommand(sto, cmds[i]);\n }\n return sto;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Command} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeCommand (store, cmd) {\n this.instruction_count += 1;\n if (this.instruction_count % Config.suspend_threshold == 0) {\n //every Config.suspend_threshold instruction should briefly delay its execution in order to allow the browser to process other things\n await Utils.sleep(3);\n }\n\n // Checks if it must interrupt the execution for some reason\n if (this.instruction_count >= Config.max_instruction_count) {\n throw ProcessorErrorFactory.exceed_max_instructions();\n } else if (this.forceKill) {\n throw \"FORCED_KILL!\";\n } else if (store.mode === Modes.PAUSE) {\n return this.executeCommand(store, cmd);\n } else if (store.mode === Modes.RETURN) {\n return store;\n } else if (\n this.checkContext(Context.BREAKABLE) &&\n store.mode === Modes.BREAK\n ) {\n return store;\n } else if (this.mode === Modes.ABORT) {\n throw LocalizedStrings.getMessage(\"aborted_execution\");\n }\n\n if (cmd instanceof Commands.Declaration) {\n return this.executeDeclaration(store, cmd);\n } else if (cmd instanceof Commands.ArrayIndexAssign) {\n return this.executeArrayIndexAssign(store, cmd);\n } else if (cmd instanceof Commands.Assign) {\n return this.executeAssign(store, cmd);\n } else if (cmd instanceof Commands.Break) {\n return this.executeBreak(store, cmd);\n } else if (cmd instanceof Commands.Return) {\n return this.executeReturn(store, cmd);\n } else if (cmd instanceof Commands.IfThenElse) {\n return this.executeIfThenElse(store, cmd);\n } else if (cmd instanceof Commands.RepeatUntil) {\n return this.executeRepeatUntil(store, cmd);\n } else if (cmd instanceof Commands.While) {\n return this.executeWhile(store, cmd);\n } else if (cmd instanceof Commands.For) {\n return this.executeFor(store, cmd);\n } else if (cmd instanceof Commands.Switch) {\n return this.executeSwitch(store, cmd);\n } else if (cmd instanceof Expressions.FunctionCall) {\n return this.executeFunctionCall(store, cmd);\n } else if (cmd instanceof Commands.SysCall) {\n return this.executeSysCall(store, cmd);\n } else {\n throw ProcessorErrorFactory.unknown_command(cmd.sourceInfo);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.SysCall} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.FunctionCall} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeFunctionCall (store, cmd) {\n let func = null;\n if (cmd.isMainCall) {\n func = this.findMainFunction();\n } else {\n func = this.findFunction(cmd.id);\n }\n this.function_call_stack.push(cmd.sourceInfo);\n const sto = await this.runFunction(func, cmd.actualParameters, store);\n sto.destroy();\n if (\n !Types.VOID.isCompatible(func.returnType) &&\n sto.mode !== Modes.RETURN\n ) {\n const funcName =\n func.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : func.name;\n throw ProcessorErrorFactory.function_no_return(funcName);\n } else {\n this.function_call_stack.pop();\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Switch} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const switchCases = cmd.cases;\n let lastStore = store;\n let lastCaseCheckResult = false;\n for (\n let i = 0;\n i < switchCases.length && !this.ignoreSwitchCases(lastStore);\n i += 1\n ) {\n const switchCase = switchCases[i];\n if (lastCaseCheckResult || switchCase.isDefault) {\n lastStore = await this.executeCommands(lastStore, switchCase.commands);\n } else {\n const equalityInfixApp = new Expressions.InfixApp(\n Operators.EQ,\n cmd.expression,\n switchCase.expression\n );\n equalityInfixApp.sourceInfo = switchCase.sourceInfo;\n const result = await this.evaluateExpression(\n lastStore,\n equalityInfixApp\n );\n if (result.get()) {\n lastStore = await this.executeCommands(\n lastStore,\n switchCase.commands\n );\n }\n lastCaseCheckResult = result.get();\n }\n }\n this.context.pop();\n if (lastStore.mode === Modes.BREAK) {\n lastStore.mode = Modes.RUN;\n }\n return lastStore;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.For} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeFor (store, cmd) {\n //BEGIN for -> while rewrite\n const initCmd = new Commands.Assign(cmd.for_id.id, cmd.for_from);\n initCmd.sourceInfo = cmd.sourceInfo;\n // Assume for is iterating forward and that pass is not missing\n let passValue = cmd.for_pass;\n let condition = new Expressions.InfixApp(\n Operators.LT,\n cmd.for_id,\n cmd.for_to\n );\n\n if (cmd.for_pass == null) {\n passValue = new Expressions.IntLiteral(toInt(1));\n const checkEndGTBegin = await this.evaluateExpression(\n store,\n new Expressions.InfixApp(Operators.GE, cmd.for_to, cmd.for_from)\n );\n if (!checkEndGTBegin.get()) {\n passValue = new Expressions.IntLiteral(toInt(-1));\n condition = new Expressions.InfixApp(\n Operators.GT,\n cmd.for_id,\n cmd.for_to\n );\n }\n } else {\n const isForward = await this.evaluateExpression(\n store,\n new Expressions.InfixApp(\n Operators.GE,\n cmd.for_pass,\n new Expressions.IntLiteral(toInt(0))\n )\n );\n if (!isForward.get()) {\n condition = new Expressions.InfixApp(\n Operators.GT,\n cmd.for_id,\n cmd.for_to\n );\n }\n }\n\n condition.sourceInfo = cmd.sourceInfo;\n const increment = new Commands.Assign(\n cmd.for_id.id,\n new Expressions.InfixApp(Operators.ADD, cmd.for_id, passValue)\n );\n increment.sourceInfo = cmd.sourceInfo;\n const whileBlock = new Commands.CommandBlock(\n [],\n cmd.commands.concat(increment)\n );\n const forAsWhile = new Commands.While(condition, whileBlock);\n forAsWhile.sourceInfo = cmd.sourceInfo;\n //END for -> while rewrite\n const newCmdList = [initCmd, forAsWhile];\n return this.executeCommands(store, newCmdList);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.RepeatUntil} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeRepeatUntil (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const sto = await this.executeCommands(store, cmd.commands);\n if (sto.mode === Modes.BREAK) {\n this.context.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n const checkCondition = await this.evaluateExpression(sto, cmd.expression);\n if (!checkCondition.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo);\n }\n this.context.pop();\n if (checkCondition.get()) {\n return sto;\n } else {\n return this.executeCommand(sto, cmd);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.While} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeWhile (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const checkCondition = await this.evaluateExpression(store, cmd.expression);\n if (!checkCondition.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(\n cmd.expression.toString(),\n cmd.sourceInfo\n );\n }\n if (checkCondition.get()) {\n const sto = await this.executeCommands(store, cmd.commands);\n this.context.pop();\n if (sto.mode === Modes.BREAK) {\n sto.mode = Modes.RUN;\n return sto;\n }\n return this.executeCommand(sto, cmd);\n } else {\n this.context.pop();\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.IfThenElse} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeIfThenElse (store, cmd) {\n const isTrue = await this.evaluateExpression(store, cmd.condition);\n if (!isTrue.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(\n cmd.condition.toString(),\n cmd.sourceInfo\n );\n }\n if (isTrue.get()) {\n return this.executeCommands(store, cmd.ifTrue.commands);\n } else if (cmd.ifFalse !== null) {\n if (cmd.ifFalse instanceof Commands.IfThenElse) {\n return this.executeCommand(store, cmd.ifFalse);\n } else {\n return this.executeCommands(store, cmd.ifFalse.commands);\n }\n } else {\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Return} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeReturn (store, cmd) {\n const funcName =\n store.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : store.name;\n // console.log(funcName, store.name === IVProgProcessor.MAIN_INTERNAL_ID);\n const func = this.findFunction(store.name);\n const funcType = func.returnType;\n const value = await this.evaluateExpression(store, cmd.expression);\n if (value === null && funcType.isCompatible(Types.VOID)) {\n store.mode = Modes.RETURN;\n return store;\n }\n\n let real_value = value;\n if (value === null || !funcType.isCompatible(value.type)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(funcType, value.type)\n ) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n }\n real_value = Store.doImplicitCasting(funcType, value);\n }\n\n store.insertStore(\"$\", real_value);\n store.mode = Modes.RETURN;\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Break} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeBreak (store, cmd) {\n if (this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return store;\n } else {\n throw ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Assign} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeAssign (store, cmd) {\n const inStore = store.applyStore(cmd.id);\n if (inStore.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const value = await this.evaluateExpression(store, cmd.expression);\n let realValue = value;\n if (!inStore.type.isCompatible(realValue.type)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(inStore.type, value.type)\n ) {\n realValue = Store.doImplicitCasting(inStore.type, realValue);\n } else {\n const stringInfo = inStore.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n }\n\n if (inStore instanceof ArrayStoreValue) {\n const columns = realValue.columns == null ? 0 : realValue.columns;\n if (inStore.lines !== realValue.lines || inStore.columns !== columns) {\n const exp = cmd.expression.toString();\n if (inStore.isVector()) {\n throw ProcessorErrorFactory.invalid_vector_assignment_full(\n cmd.id,\n inStore.lines,\n exp,\n realValue.lines,\n cmd.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.invalid_matrix_assignment_full(\n cmd.id,\n inStore.lines,\n inStore.columns,\n exp,\n realValue.lines,\n realValue.columns,\n cmd.sourceInfo\n );\n }\n }\n }\n\n store.updateStore(cmd.id, realValue);\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.ArrayIndexAssign} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n let used_dims = 0;\n if (mustBeArray.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (!(mustBeArray.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const lineSV = await this.evaluateExpression(store, cmd.line);\n if (!Types.INTEGER.isCompatible(lineSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n used_dims += 1;\n const line = lineSV.get().toNumber();\n const columnSV = await this.evaluateExpression(store, cmd.column);\n let column = null;\n if (columnSV != null) {\n if (!Types.INTEGER.isCompatible(columnSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n column = columnSV.get().toNumber();\n used_dims += 1;\n }\n const value = await this.evaluateExpression(store, cmd.expression);\n let actualValue = value;\n if (line >= mustBeArray.lines) {\n if (mustBeArray.isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds_full(\n cmd.id,\n line,\n mustBeArray.lines,\n cmd.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(\n cmd.id,\n line,\n mustBeArray.lines,\n cmd.sourceInfo\n );\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n if (column != null && mustBeArray.columns === 0) {\n throw ProcessorErrorFactory.vector_not_matrix_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (column != null) {\n if (column >= mustBeArray.columns) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(\n cmd.id,\n column,\n mustBeArray.columns,\n cmd.sourceInfo\n );\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n }\n\n if (!mustBeArray.type.canAccept(value.type, used_dims)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(mustBeArray.type.innerType, value.type)\n ) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n actualValue = Store.doImplicitCasting(mustBeArray.type.innerType, value);\n }\n\n const current_value = mustBeArray.getAt(line, column);\n if (current_value instanceof ArrayStoreValue) {\n if (\n current_value.lines !== actualValue.lines ||\n current_value.columns !== actualValue.columns\n ) {\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.invalid_matrix_index_assign_full(\n cmd.id,\n line,\n current_value.lines,\n exp,\n actualValue.lines,\n cmd.sourceInfo\n );\n }\n }\n\n return store.updateStoreArray(cmd.id, actualValue, line, column);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Declaration} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeDeclaration (store, cmd) {\n if (cmd instanceof Commands.ArrayDeclaration) {\n return this.executeArrayDeclaration(store, cmd);\n } else {\n let temp = new StoreValue(cmd.type, null, null, cmd.isConst);\n if (cmd.initial !== null) {\n const value = await this.evaluateExpression(store, cmd.initial);\n let realValue = value;\n if (!value.type.isCompatible(cmd.type)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(cmd.type, value.type)\n ) {\n realValue = Store.doImplicitCasting(cmd.type, realValue);\n } else {\n const stringInfo = value.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n }\n temp = new StoreValue(cmd.type, realValue.get(), null, cmd.isConst);\n }\n store.insertStore(cmd.id, temp);\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.ArrayDeclaration} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeArrayDeclaration (store, cmd) {\n const linesSV = await this.evaluateExpression(store, cmd.lines);\n if (!Types.INTEGER.isCompatible(linesSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n const line = linesSV.get().toNumber();\n const columnsSV = await this.evaluateExpression(store, cmd.columns);\n let column = null;\n if (columnsSV !== null) {\n if (!Types.INTEGER.isCompatible(columnsSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n column = columnsSV.get().toNumber();\n if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n }\n let temp = new ArrayStoreValue(\n cmd.type,\n [],\n line,\n column,\n null,\n cmd.isConst\n );\n if (cmd.initial !== null) {\n // array can only be initialized by a literal....\n const valueList = await this.evaluateArrayLiteral(\n store,\n cmd.initial,\n cmd.type,\n line,\n column\n );\n temp = new ArrayStoreValue(\n cmd.type,\n valueList,\n line,\n column,\n null,\n cmd.isConst\n );\n }\n store.insertStore(cmd.id, temp);\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expression} exp\n *\n * @returns {Promise<import('./store/value/istore_value').IStoreValue>}\n */\n async evaluateExpression (store, exp) {\n this.instruction_count += 1;\n if (this.instruction_count % Config.suspend_threshold == 0) {\n //every Config.suspend_threshold instruction should briefly delay its execution in order to allow the browser to process other things\n await Utils.sleep(3);\n }\n if (this.mode === Modes.ABORT) {\n throw LocalizedStrings.getMessage(\"aborted_execution\");\n }\n if (this.instruction_count >= Config.max_instruction_count) {\n throw new Error(\n \"Número de instruções excedeu o limite definido. Verifique se seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"\n );\n }\n if (exp instanceof Expressions.UnaryApp) {\n return this.evaluateUnaryApp(store, exp);\n } else if (exp instanceof Expressions.InfixApp) {\n return this.evaluateInfixApp(store, exp);\n } else if (exp instanceof Expressions.ArrayAccess) {\n return this.evaluateArrayAccess(store, exp);\n } else if (exp instanceof Expressions.VariableLiteral) {\n return this.evaluateVariableLiteral(store, exp);\n } else if (exp instanceof Expressions.IntLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.RealLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.BoolLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.StringLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.CharLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.ArrayLiteral) {\n throw new Error(\n \"Internal Error: The system should not eval an array literal.\"\n );\n } else if (exp instanceof Expressions.FunctionCall) {\n return this.evaluateFunctionCall(store, exp);\n }\n return null;\n }\n\n async evaluateFunctionCall (store, exp) {\n if (exp.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(\n LanguageDefinedFunction.getMainFunctionName(),\n exp.sourceInfo\n );\n }\n const func = this.findFunction(exp.id);\n if (Types.VOID.isCompatible(func.returnType)) {\n throw ProcessorErrorFactory.void_in_expression_full(\n exp.id,\n exp.sourceInfo\n );\n }\n if (this.function_call_stack.length >= Config.max_call_stack) {\n throw ProcessorErrorFactory.exceeded_recursive_calls(exp.sourceInfo);\n }\n this.function_call_stack.push(exp.sourceInfo);\n const sto = await this.runFunction(func, exp.actualParameters, store);\n if (sto.mode !== Modes.RETURN) {\n throw new Error(\n \"!!!Internal error: the function that was called did not have a return command or did not set the store mode properly -> \" +\n exp.id\n );\n }\n const val = sto.applyStore(\"$\");\n sto.destroy();\n this.function_call_stack.pop();\n return val;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exp\n * @param {ArrayType} type\n *\n * @returns {Promise<StoreValue[]>}\n */\n async evaluateArrayLiteral (store, exp, type, lines, columns) {\n if (!exp.isVector) {\n if (columns == null) {\n throw new Error(\n \"This should never happen: Vector cannot be initialized by a matrix\"\n );\n }\n const storeValueMatrix = await this.evaluateMatrix(\n store,\n exp,\n type,\n lines,\n columns\n );\n return storeValueMatrix.reduce((prev, next) => prev.concat(next), []);\n } else {\n if (columns != null) {\n throw new Error(\n \"This should never happen: Matrix cannot be initialized by a vector\"\n );\n }\n return this.evaluateVector(store, exp, type, lines);\n }\n }\n\n /**\n * Evalautes a list of literals and expression composing the vector\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exps\n * @param {ArrayType} type\n * @param {number} n_elements\n *\n * @returns {Promise<StoreValue[]>} store object list\n */\n async evaluateVector (store, exps, type, n_elements) {\n const values = exps.value;\n if (n_elements !== values.length) {\n throw ProcessorErrorFactory.invalid_number_elements_vector(\n n_elements,\n exps.toString(),\n values.length,\n exps.sourceInfo\n );\n }\n const actualValues = await Promise.all(\n values.map((exp) => this.evaluateExpression(store, exp))\n );\n return actualValues.map((v, index) => {\n if (!type.canAccept(v.type, 1)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type.innerType, v.type)\n ) {\n // const stringInfo = v.type.stringInfo();\n // const info = stringInfo[0];\n const exp_str = values[index].toString();\n // TODO - fix error message\n throw ProcessorErrorFactory.invalid_array_literal_type_full(\n exp_str,\n values[index].sourceInfo\n );\n }\n const newValue = Store.doImplicitCasting(type.innerType, v);\n return newValue;\n }\n return v;\n });\n }\n\n /**\n * Evaluates a list of array literals composing the matrix\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exps\n * @param {ArrayType} type\n *\n * @returns {Promise<StoreValue[][]>}\n */\n async evaluateMatrix (store, exps, type, lines, columns) {\n const values = exps.value;\n if (values.length !== lines) {\n throw ProcessorErrorFactory.invalid_number_lines_matrix(\n lines,\n exps.toString(),\n values.length,\n exps.sourceInfo\n );\n }\n const vectors = values.map((vector) => {\n const vec_type = new ArrayType(type.innerType, 1);\n return this.evaluateVector(store, vector, vec_type, columns);\n });\n return await Promise.all(vectors);\n }\n\n /**\n *\n * @param {Store} _\n * @param {import('../ast/expressions/literal').Literal} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateLiteral (_, exp) {\n return new StoreValue(exp.type, exp.value);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.VariableLiteral} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateVariableLiteral (store, exp) {\n const val = store.applyStore(exp.id);\n return val;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.ArrayAccess} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateArrayAccess (store, exp) {\n const mustBeArray = store.getStoreObject(exp.id);\n if (!(mustBeArray.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n exp.id,\n exp.sourceInfo\n );\n }\n const lineSV = await this.evaluateExpression(store, exp.line);\n if (!Types.INTEGER.isCompatible(lineSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo);\n }\n const line = lineSV.get().toNumber();\n const columnSV = await this.evaluateExpression(store, exp.column);\n let column = null;\n if (columnSV !== null) {\n if (!Types.INTEGER.isCompatible(columnSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n exp.sourceInfo\n );\n }\n column = columnSV.get().toNumber();\n }\n if (line >= mustBeArray.lines) {\n if (mustBeArray.isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds_full(\n exp.id,\n line,\n mustBeArray.lines,\n exp.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(\n exp.id,\n line,\n mustBeArray.lines,\n exp.sourceInfo\n );\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n exp.sourceInfo\n );\n }\n if (column !== null && mustBeArray.columns === 0) {\n throw ProcessorErrorFactory.vector_not_matrix_full(\n exp.id,\n exp.sourceInfo\n );\n }\n if (column !== null) {\n if (column >= mustBeArray.columns) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(\n exp.id,\n column,\n mustBeArray.columns,\n exp.sourceInfo\n );\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n exp.sourceInfo\n );\n }\n }\n const result = mustBeArray.getAt(line, column);\n const type = mustBeArray.type.innerType;\n if (Array.isArray(result)) {\n const values = result.map((val, col) => {\n return new StoreValueAddress(\n type,\n val,\n line,\n col,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n });\n return new ArrayStoreValue(\n new ArrayType(type, 1),\n values,\n mustBeArray.columns,\n null,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n } else {\n return new StoreValueAddress(\n type,\n result,\n line,\n column,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.UnaryApp} unaryApp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateUnaryApp (store, unaryApp) {\n const left = await this.evaluateExpression(store, unaryApp.left);\n const resultType = resultTypeAfterUnaryOp(unaryApp.op, left.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfo = left.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_unary_op_full(\n unaryApp.op,\n info.type,\n info.dim,\n unaryApp.sourceInfo\n );\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreValue(resultType, left.get());\n case Operators.SUB.ord:\n return new StoreValue(resultType, left.get().negated());\n case Operators.NOT.ord:\n return new StoreValue(resultType, !left.get());\n default:\n throw new RuntimeError(\"!!!Critical Invalid UnaryApp \" + unaryApp.op);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.InfixApp} infixApp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateInfixApp (store, infixApp) {\n const left = await this.evaluateExpression(store, infixApp.left);\n const right = await this.evaluateExpression(store, infixApp.right);\n let shouldImplicitCast = false;\n let resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(left.type, right.type)\n ) {\n shouldImplicitCast = true;\n } else {\n const stringInfoLeft = left.type.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = right.type.stringInfo();\n const infoRight = stringInfoRight[0];\n throw ProcessorErrorFactory.invalid_infix_op_full(\n infixApp.op,\n infoLeft.type,\n infoLeft.dim,\n infoRight.type,\n infoRight.dim,\n infixApp.sourceInfo\n );\n }\n }\n let result = null;\n switch (infixApp.op.ord) {\n case Operators.ADD.ord: {\n if (Types.STRING.isCompatible(left.type)) {\n const rightStr = convertToString(right.get(), right.type);\n return new StoreValue(resultType, left.get() + rightStr);\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.get(), left.type);\n return new StoreValue(resultType, leftStr + right.get());\n } else if (Types.CHAR.isCompatible(left.type)) {\n const strLeft = convertToString(left.get(), left.type);\n const strRight = convertToString(right.get(), right.type);\n return new StoreValue(resultType, strLeft + strRight);\n } else {\n return new StoreValue(resultType, left.get().plus(right.get()));\n }\n }\n case Operators.SUB.ord:\n return new StoreValue(resultType, left.get().minus(right.get()));\n case Operators.MULT.ord: {\n result = left.get().times(right.get());\n return new StoreValue(resultType, result);\n }\n case Operators.DIV.ord: {\n if (right.get() == 0) {\n throw ProcessorErrorFactory.divsion_by_zero_full(\n infixApp.toString(),\n infixApp.sourceInfo\n );\n }\n if (Types.INTEGER.isCompatible(resultType))\n result = left.get().divToInt(right.get());\n else result = left.get().div(right.get());\n return new StoreValue(resultType, result);\n }\n case Operators.MOD.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (shouldImplicitCast) {\n resultType = Types.INTEGER;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.modulo(rightValue);\n return new StoreValue(resultType, result);\n }\n case Operators.GT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length > rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) > rightValue.charCodeAt(0);\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gt(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.GE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length >= rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) >= rightValue.charCodeAt(0);\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gte(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.LT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length < rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) < rightValue.charCodeAt(0);\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lt(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.LE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length <= rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) <= rightValue.charCodeAt(0);\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lte(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.EQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (\n Types.INTEGER.isCompatible(left.type) ||\n Types.REAL.isCompatible(left.type)\n ) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.eq(rightValue);\n } else {\n result = leftValue === rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.NEQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (\n Types.INTEGER.isCompatible(left.type) ||\n Types.REAL.isCompatible(left.type)\n ) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = !leftValue.eq(rightValue);\n } else {\n result = leftValue !== rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreValue(resultType, left.get() && right.get());\n case Operators.OR.ord:\n return new StoreValue(resultType, left.get() || right.get());\n default:\n throw new RuntimeError(\"!!!Critical Invalid InfixApp \" + infixApp.op);\n }\n }\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = async (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreValue(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(numElementsFun)]);\n const func = new Commands.Function('$numElements', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = async (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixLinesFun)]);\n const func = new Commands.Function('$matrixLines', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = async (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixColumnsFun)]);\n const func = new Commands.Function('$matrixColumns', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import * as Commands from \"./../../ast/commands\";\nimport { Modes } from \"../modes\";\nimport * as Parsers from \"./../../typeSystem/parsers\";\nimport { Types } from \"./../../typeSystem/types\";\nimport { ProcessorErrorFactory } from \"./../error/processorErrorFactory\";\nimport { StoreValue } from \"../store/value/store_value\";\n\nexport function createOutputFun () {\n const writeFunction = async function (store, _) {\n const totalSV = store.applyStore(\"p1.0\");\n const total = totalSV.get();\n for (let i = 1; i < total; i += 1) {\n const val = store.applyStore(`p1.${i}`);\n this.output.sendOutput(Parsers.convertToString(val.get(), val.type));\n }\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(writeFunction)]\n );\n const func = new Commands.Function(\n \"$write\",\n Types.VOID,\n [new Commands.FormalParameter(Types.ALL, \"p1\", false, true)],\n block\n );\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = async function (store, _) {\n const text = await this.input.requestInput();\n const typeToConvert = store.applyStore(\"p1\").type;\n let type = null;\n let result = null;\n try {\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n result = Parsers.toInt(text.trim()).trunc();\n type = Types.INTEGER;\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n result = Parsers.toReal(text.trim());\n type = Types.REAL;\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n result = Parsers.toBool(text.trim());\n type = Types.BOOLEAN;\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n result = Parsers.toString(text);\n type = Types.STRING;\n } else if (typeToConvert.isCompatible(Types.CHAR)) {\n result = Parsers.toChar(text);\n type = Types.CHAR;\n } else {\n throw new Error(\"!!!!Critical error: Unknown type in readFunction!!!!\");\n }\n } catch (_) {\n if (this.mode == Modes.ABORT) {\n store.mode = Modes.RETURN;\n return store;\n }\n const stringInfo = typeToConvert.stringInfo()[0];\n const realObject = store.getStoreObject(\"p1\");\n if (realObject.getReferenceDimension() > 0) {\n const arrayInfo = realObject.type.stringInfo()[0];\n const dim = realObject.getReferenceDimension();\n throw ProcessorErrorFactory.invalid_read_type_array(\n text,\n stringInfo.type,\n stringInfo.dim,\n realObject.getRefObj(),\n arrayInfo.type,\n dim,\n this.function_call_stack.pop()\n );\n }\n throw ProcessorErrorFactory.invalid_read_type(\n text,\n stringInfo.type,\n stringInfo.dim,\n realObject.getRefObj(),\n this.function_call_stack.pop()\n );\n }\n const stoValue = new StoreValue(type, result);\n store.updateStore(\"p1\", stoValue);\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(readFunction)]\n );\n const func = new Commands.Function(\n \"$read\",\n Types.VOID,\n [new Commands.FormalParameter(Types.ALL, \"p1\", true)],\n block\n );\n return func;\n}\n","import * as Commands from \"./../../ast/commands\";\nimport { Types } from \"./../../typeSystem/types\";\nimport * as Parsers from \"./../../typeSystem/parsers\";\nimport { IVProgParser } from \"../../ast/ivprogParser\";\nimport { RealLiteral, IntLiteral, BoolLiteral } from \"../../ast/expressions\";\nimport { Modes } from \"../modes\";\nimport { MultiType } from \"../../typeSystem/multiType\";\nimport { ProcessorErrorFactory } from \"../error/processorErrorFactory\";\nimport { StoreValue } from \"../store/value/store_value\";\n\n/**\n *\n * is_real\n * is_int\n * is_bool\n * cast_real\n * cast_int\n * cast_bool\n * cast_string\n * cast_char\n */\n\nexport function createIsRealFun () {\n const isRealFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) {\n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(isRealFun)]\n );\n const func = new Commands.Function(\n \"$isReal\",\n Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, \"str\", false)],\n block\n );\n return func;\n}\n\nexport function createIsIntFun () {\n const isIntFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch {\n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isIntFun)]);\n const func = new Commands.Function(\n \"$isInt\",\n Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, \"str\", false)],\n block\n );\n return func;\n}\n\nexport function createIsBoolFun () {\n const isBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) {\n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(isBoolFun)]\n );\n const func = new Commands.Function(\n \"$isBool\",\n Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, \"str\", false)],\n block\n );\n return func;\n}\n\nexport function createCastRealFun () {\n const castRealFun = async (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n value = value.toNumber();\n const temp = new StoreValue(Types.REAL, Parsers.toReal(value));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof RealLiteral) {\n const temp = new StoreValue(\n Types.REAL,\n Parsers.toReal(result.value)\n );\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) {\n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.REAL.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw ProcessorErrorFactory.invalid_type_conversion(\n value,\n typeInfo.type,\n typeInfo.dim\n );\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(castRealFun)]\n );\n const func = new Commands.Function(\n \"$castReal\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.STRING]),\n \"val\",\n false\n ),\n ],\n block\n );\n return func;\n}\n\nexport function createCastIntFun () {\n const castIntFun = async (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.REAL.ord: {\n value = value.toNumber();\n const temp = new StoreValue(\n Types.INTEGER,\n Parsers.toInt(Math.floor(value))\n );\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n case Types.CHAR.ord: {\n const temp = new StoreValue(\n Types.INTEGER,\n Parsers.toInt(value.charCodeAt(0))\n );\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof IntLiteral) {\n const temp = new StoreValue(\n Types.INTEGER,\n Parsers.toInt(result.value)\n );\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) {\n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.INTEGER.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw ProcessorErrorFactory.invalid_type_conversion(\n value,\n typeInfo.type,\n typeInfo.dim\n );\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(castIntFun)]\n );\n const func = new Commands.Function(\n \"$castInt\",\n Types.INTEGER,\n [\n new Commands.FormalParameter(\n new MultiType([Types.REAL, Types.STRING, Types.CHAR]),\n \"val\",\n false\n ),\n ],\n block\n );\n return func;\n}\n\nexport function createCastBoolFun () {\n const castBoolFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const value = str.get();\n const parser = IVProgParser.createParser(value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreValue(Types.BOOLEAN, val.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) {\n // ignore\n }\n const typeStringInfoArray = Types.BOOLEAN.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw ProcessorErrorFactory.invalid_type_conversion(\n value,\n typeInfo.type,\n typeInfo.dim\n );\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(castBoolFun)]\n );\n const func = new Commands.Function(\n \"$castBool\",\n Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, \"str\", false)],\n block\n );\n return func;\n}\n\nexport function createCastStringFun () {\n const castStringFun = async function (store, _) {\n const val = store.applyStore(\"str\");\n const result = Parsers.convertToString(val.get(), val.type);\n const temp = new StoreValue(Types.STRING, result);\n store.insertStore(\"$\", temp);\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(castStringFun)]\n );\n const func = new Commands.Function(\n \"$castString\",\n Types.STRING,\n [new Commands.FormalParameter(Types.ALL, \"str\", false)],\n block\n );\n return func;\n}\n\nexport function createCastCharFun () {\n const castCharFun = (store, _) => {\n const valSV = store.applyStore(\"charCode\");\n // Force the int value to the range [0, 255]\n const value = valSV.get().toNumber() & 0xff;\n const result = String.fromCharCode(value);\n const temp = new StoreValue(Types.CHAR, result);\n store.insertStore(\"$\", temp);\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(castCharFun)]\n );\n const func = new Commands.Function(\n \"$castChar\",\n Types.CHAR,\n [new Commands.FormalParameter(Types.INTEGER, \"charCode\", false)],\n block\n );\n return func;\n}\n\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport * as Parsers from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/**\n * sin\n * cos\n * tan\n * sqrt\n * pow\n * log\n * abs\n * negate\n * invert\n * max\n * min\n */\n\nfunction convertToRadians(degrees) {\n return degrees.times(Decimal.acos(-1)).div(180);\n}\n\nexport function createSinFun () {\n const sinFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(1);\n } else if (angle.eq(180)) {\n result = new Decimal(0);\n } else if (angle.eq(270)) {\n result = new Decimal(-1);\n } else {\n result = Decimal.sin(convertToRadians(angle));\n }\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function(\n \"$sin\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n let result = null;\n if (angle.eq(90)) {\n result = new Decimal(0);\n } else if (angle.eq(180)) {\n result = new Decimal(-1);\n } else if (angle.eq(270)) {\n result = new Decimal(0);\n }\n result = Decimal.cos(convertToRadians(angle));\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function(\n \"$cos\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = async function (sto, _) {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n throw ProcessorErrorFactory.undefined_tanget_value(x.get().toNumber(),\n this.function_call_stack.pop());\n }\n const result = Decimal.tan(convertToRadians(angle));\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function(\n \"$tan\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = async function (sto, _) {\n const x = sto.applyStore('x');\n if(x.get().isNeg()) {\n return Promise.reject(ProcessorErrorFactory.negative_sqrt_value(this.function_call_stack.pop()));\n }\n const result = x.get().sqrt();\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function(\n \"$sqrt\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createPowFun () {\n const powFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n const result = x.get().pow(y.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function(\n \"$pow\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n ),\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"y\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createLogFun () {\n const logFun = async function (sto, _) {\n const x = sto.applyStore('x');\n if (x.get().isNegative()) {\n return Promise.reject(\n ProcessorErrorFactory.negative_log_value(this.function_call_stack.pop())\n );\n }\n const result = Decimal.log10(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function(\n \"$log\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().abs();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function(\n \"$abs\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().negated();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(negateFun)]\n );\n const func = new Commands.Function(\n \"$negate\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createInvertFun() {\n const invertFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = Parsers.toReal(1).dividedBy(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(invertFun)]\n );\n const func = new Commands.Function(\n \"$invert\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.max(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const paramType = new ArrayType(\n new MultiType([Types.INTEGER, Types.REAL]),\n 1\n );\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function(\n \"$max\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, \"x\", false)],\n block\n );\n return func;\n}\n\nexport function createMinFun () {\n const minFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.min(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const paramType = new ArrayType(\n new MultiType([Types.INTEGER, Types.REAL]),\n 1\n );\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function(\n \"$min\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, \"x\", false)],\n block\n );\n return func;\n}\n\nlet seed = Date.now();\nexport function createRandFun() {\n const a = 16807;\n const m = 2147483647;\n const c = 12345;\n const randFun = async (sto, _) => {\n seed = (a * seed + c) % m;\n const val = seed / (m - 1);\n const temp = new StoreValue(Types.REAL, new Decimal(val));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const block = new Commands.CommandBlock([], [new Commands.SysCall(randFun)]);\n const func = new Commands.Function(\"$rand\", Types.REAL, [], block);\n return func;\n}\n\nexport function createSetSeedFun() {\n const setSeedFun = async (sto, _) => {\n const value = sto.applyStore(\"x\");\n seed = value.get().toNumber();\n sto.mode = Modes.RETURN;\n return sto;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(setSeedFun)]\n );\n const func = new Commands.Function(\n \"$setSeed\",\n Types.VOID,\n [new Commands.FormalParameter(Types.INTEGER, \"x\", false)],\n block\n );\n return func;\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.get().substring(start.get(), end.get());\n const temp = new StoreValue(Types.STRING, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(substringFun)]);\n const func = new Commands.Function('$substring', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'start', false),\n new Commands.FormalParameter(Types.INTEGER, 'end', false)],\n block);\n return func;\n}\n\nexport function createLengthFun () {\n const lengthFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.INTEGER, toInt(str.value.length));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lengthFun)]);\n const func = new Commands.Function('$length', Types.INTEGER,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createUppercaseFun () {\n const uppercaseFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toUpperCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(uppercaseFun)]);\n const func = new Commands.Function('$uppercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createLowercaseFun () {\n const lowercaseFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toLowerCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lowercaseFun)]);\n const func = new Commands.Function('$lowercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createrCharAtFun () {\n const charAtFun = async function (sto, _) {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.get().toNumber() < 0 || idx.get().toNumber() >= str.get().length) {\n throw ProcessorErrorFactory.invalid_string_index(idx.get().toNumber(), str.get(),\n this.function_call_stack.pop());\n }\n const temp = new StoreValue(Types.CHAR, str.get().charAt(idx.get().toNumber()));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.CHAR,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","import { ProcessorErrorFactory } from \"./../error/processorErrorFactory\";\nimport { LanguageDefinedFunction } from \"./../definedFunctions\";\nimport {\n ArrayDeclaration,\n While,\n For,\n Switch,\n Assign,\n Break,\n IfThenElse,\n Return,\n ArrayIndexAssign,\n} from \"../../ast/commands\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from \"./../../ast/expressions/expression\";\nimport {\n InfixApp,\n UnaryApp,\n FunctionCall,\n IntLiteral,\n RealLiteral,\n StringLiteral,\n BoolLiteral,\n VariableLiteral,\n ArrayAccess,\n CharLiteral,\n} from \"../../ast/expressions\";\nimport { Literal } from \"../../ast/expressions/literal\";\nimport {\n resultTypeAfterInfixOp,\n resultTypeAfterUnaryOp,\n} from \"../compatibilityTable\";\nimport { Types } from \"../../typeSystem/types\";\nimport { ArrayType } from \"../../typeSystem/array_type\";\nimport { MultiType } from \"../../typeSystem/multiType\";\nimport { Config } from \"../../util/config\";\nimport { Store } from \"../store/store\";\nimport { IVProgParser } from \"../../ast/ivprogParser\";\n\nexport class SemanticAnalyser {\n static analyseFromSource (stringCode) {\n const parser = IVProgParser.createParser(stringCode);\n const semantic = new SemanticAnalyser(parser.parseTree());\n return semantic.analyseTree();\n }\n\n constructor (ast) {\n this.ast = ast;\n this.symbolMap = null;\n this.currentFunction = null;\n }\n\n pushMap () {\n if (this.symbolMap === null) {\n this.symbolMap = { map: {}, next: null };\n } else {\n const n = { map: {}, next: this.symbolMap };\n this.symbolMap = n;\n }\n }\n\n popMap () {\n if (this.symbolMap !== null) {\n this.symbolMap = this.symbolMap.next;\n }\n }\n\n insertSymbol (id, typeInfo) {\n this.symbolMap.map[id] = typeInfo;\n }\n\n findSymbol (id, symbol_map) {\n if (!symbol_map.map[id]) {\n if (symbol_map.next) {\n return this.findSymbol(id, symbol_map.next);\n }\n return null;\n } else {\n return symbol_map.map[id];\n }\n }\n\n getMainFunction () {\n return this.ast.functions.find((v) => v.isMain);\n }\n\n findFunction (name) {\n if (name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if (!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find((v) => v.name === name);\n if (!val) {\n return null;\n }\n return val;\n }\n }\n\n analyseTree () {\n const globalVars = this.ast.global;\n this.pushMap();\n this.assertDeclarations(globalVars);\n const functions = this.ast.functions;\n const mainFunc = functions.filter((f) => f.name === null);\n if (mainFunc.length <= 0) {\n throw ProcessorErrorFactory.main_missing();\n }\n for (let i = 0; i < functions.length; i++) {\n const fun = functions[i];\n this.assertFunction(fun);\n }\n return this.ast;\n }\n\n assertDeclarations (list) {\n for (let i = 0; i < list.length; i++) {\n this.assertDeclaration(list[i]);\n }\n }\n\n assertDeclaration (declaration) {\n if (declaration instanceof ArrayDeclaration) {\n this.assertArrayDeclaration(declaration);\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n lines: declaration.lines,\n columns: declaration.columns,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n } else {\n if (declaration.initial === null) {\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n return;\n }\n const resultType = this.evaluateExpressionType(declaration.initial);\n if (resultType instanceof MultiType) {\n if (!resultType.isCompatible(declaration.type)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n result_info.type,\n result_info.dim,\n exp.toString(),\n declaration.sourceInfo\n );\n }\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n } else if (\n (!declaration.type.isCompatible(resultType) &&\n !Config.enable_type_casting) ||\n (!declaration.type.isCompatible(resultType) &&\n Config.enable_type_casting &&\n !Store.canImplicitTypeCast(declaration.type, resultType))\n ) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n result_info.type,\n result_info.dim,\n exp.toString(),\n declaration.sourceInfo\n );\n } else {\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n }\n }\n }\n\n assertArrayDeclaration (declaration) {\n if (declaration.initial === null) {\n const lineType = this.evaluateExpressionType(declaration.lines);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n declaration.sourceInfo\n );\n }\n if (declaration.columns !== null) {\n const columnType = this.evaluateExpressionType(declaration.columns);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n declaration.sourceInfo\n );\n }\n }\n } else {\n this.evaluateArrayLiteral(declaration);\n }\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n lines: declaration.lines,\n columns: declaration.columns,\n type: declaration.type,\n });\n return;\n }\n\n evaluateExpressionType (expression) {\n // TODO: Throw operator error in case type == UNDEFINED\n if (expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n const finalResult = resultTypeAfterUnaryOp(op, resultType);\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfo = resultType.stringInfo();\n const info = stringInfo[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_unary_op_full(\n expString,\n op,\n info.type,\n info.dim,\n expression.sourceInfo\n );\n }\n return finalResult;\n } else if (expression instanceof InfixApp) {\n const op = expression.op;\n const resultTypeLeft = this.evaluateExpressionType(expression.left);\n const resultTypeRight = this.evaluateExpressionType(expression.right);\n const finalResult = resultTypeAfterInfixOp(\n op,\n resultTypeLeft,\n resultTypeRight\n );\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfoLeft = resultTypeLeft.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = resultTypeRight.stringInfo();\n const infoRight = stringInfoRight[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_infix_op_full(\n expString,\n op,\n infoLeft.type,\n infoLeft.dim,\n infoRight.type,\n infoRight.dim,\n expression.sourceInfo\n );\n }\n return finalResult;\n } else if (expression instanceof Literal) {\n return this.evaluateLiteralType(expression);\n } else if (expression instanceof FunctionCall) {\n if (expression.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(\n LanguageDefinedFunction.getMainFunctionName(),\n expression.sourceInfo\n );\n }\n const fun = this.findFunction(expression.id);\n if (fun === null) {\n throw ProcessorErrorFactory.function_missing_full(\n expression.id,\n expression.sourceInfo\n );\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(\n expression.id,\n expression.sourceInfo\n );\n }\n this.assertParameters(fun, expression.actualParameters);\n return fun.returnType;\n } else if (expression instanceof ArrayAccess) {\n const arrayTypeInfo = this.findSymbol(expression.id, this.symbolMap);\n if (arrayTypeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n expression.id,\n expression.sourceInfo\n );\n }\n if (!(arrayTypeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n expression.id,\n expression.sourceInfo\n );\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n expression.sourceInfo\n );\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(\n expression.id,\n expression.sourceInfo\n );\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n expression.sourceInfo\n );\n }\n }\n const arrType = arrayTypeInfo.type;\n if (expression.column !== null) {\n // indexing matrix\n return arrType.innerType;\n } else {\n if (arrayTypeInfo.columns === null) {\n return arrType.innerType;\n }\n return new ArrayType(arrType.innerType, 1);\n }\n }\n }\n\n evaluateLiteralType (literal) {\n if (literal instanceof IntLiteral) {\n return literal.type;\n } else if (literal instanceof RealLiteral) {\n return literal.type;\n } else if (literal instanceof StringLiteral) {\n return literal.type;\n } else if (literal instanceof BoolLiteral) {\n return literal.type;\n } else if (literal instanceof CharLiteral) {\n return literal.type;\n } else if (literal instanceof VariableLiteral) {\n const typeInfo = this.findSymbol(literal.id, this.symbolMap);\n if (typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n literal.id,\n literal.sourceInfo\n );\n }\n if (typeInfo.type instanceof ArrayType) {\n return typeInfo.type;\n }\n return typeInfo.type;\n } else {\n // console.warn(\"Evaluating type only for an array literal...\");\n let last = null;\n if (literal.value.length === 1) {\n last = this.evaluateExpressionType(literal.value[0]);\n } else {\n for (let i = 0; i < literal.value.length; i++) {\n const e = this.evaluateExpressionType(literal.value[i]);\n if (last === null) {\n last = e;\n } else if (!last.isCompatible(e)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(\n strExp,\n info.type,\n info.dim,\n literal.sourceInfo\n );\n }\n }\n }\n if (last instanceof ArrayType) {\n return new ArrayType(last.innerType, last.dimensions + 1);\n }\n return new ArrayType(last, 1);\n }\n }\n\n evaluateArrayLiteral (arrayDeclaration) {\n const type = arrayDeclaration.type;\n const literal = arrayDeclaration.initial;\n // console.log(arrayDeclaration);\n if (arrayDeclaration.isVector) {\n this.evaluateVectorLiteralType(literal, type);\n } else {\n // TODO matrix type check\n for (let i = 0; i < literal.lines; ++i) {\n const line_literal = literal.value[i];\n this.evaluateVectorLiteralType(\n line_literal,\n new ArrayType(type.innerType, 1)\n );\n }\n }\n return true;\n }\n\n assertFunction (fun) {\n this.pushMap();\n this.currentFunction = fun;\n fun.formalParameters.forEach((formalParam) => {\n if (formalParam.type instanceof ArrayType) {\n if (formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n lines: -1,\n columns: -1,\n type: formalParam.type,\n });\n } else {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n lines: -1,\n columns: null,\n type: formalParam.type,\n });\n }\n } else {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n type: formalParam.type,\n });\n }\n });\n this.assertDeclarations(fun.variablesDeclarations);\n const optional = fun.returnType.isCompatible(Types.VOID);\n const valid = this.assertReturn(fun, optional);\n if (!valid) {\n throw ProcessorErrorFactory.function_no_return(fun.name);\n }\n this.popMap();\n }\n\n assertReturn (fun, optional) {\n return fun.commands.reduce(\n (last, next) => this.checkCommand(fun.returnType, next, optional) || last,\n optional\n );\n }\n\n checkCommand (type, cmd, optional) {\n if (cmd instanceof While) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(\n cmd.expression.toString(),\n cmd.sourceInfo\n );\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n const var_type = this.evaluateExpressionType(cmd.for_id);\n if (!var_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_variable(\n cmd.for_id,\n cmd.sourceInfo\n );\n }\n const from_type = this.evaluateExpressionType(cmd.for_from);\n if (!from_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_from(\n cmd.for_from,\n cmd.sourceInfo\n );\n }\n const to_type = this.evaluateExpressionType(cmd.for_to);\n if (!to_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_to(cmd.for_to, cmd.sourceInfo);\n }\n if (cmd.for_pass != null) {\n const pass_type = this.evaluateExpressionType(cmd.for_pass);\n if (!pass_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_pass(\n cmd.for_pass,\n cmd.sourceInfo\n );\n }\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof Switch) {\n const sType = this.evaluateExpressionType(cmd.expression);\n let result = optional;\n let hasDefault = false;\n for (let i = 0; i < cmd.cases.length; i++) {\n const aCase = cmd.cases[i];\n if (aCase.expression !== null) {\n const caseType = this.evaluateExpressionType(aCase.expression);\n if (!sType.isCompatible(caseType)) {\n const strInfo = sType.stringInfo();\n const info = strInfo[0];\n const strExp = aCase.expression.toString();\n throw ProcessorErrorFactory.invalid_case_type_full(\n strExp,\n info.type,\n info.dim,\n aCase.sourceInfo\n );\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result);\n }\n return result && hasDefault;\n } else if (cmd instanceof ArrayIndexAssign) {\n // TODO - rework!!!!!\n let used_dims = 0;\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if (typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (!(typeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const exp = cmd.expression;\n const lineExp = cmd.line;\n const lineType = this.evaluateExpressionType(lineExp);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n used_dims += 1;\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(\n cmd.id,\n cmd.sourceInfo\n );\n } else if (columnExp !== null) {\n const columnType = this.evaluateExpressionType(columnExp);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n used_dims += 1;\n }\n // exp a single value exp or an array access\n const exp_type = this.evaluateExpressionType(exp);\n const access_type = typeInfo.type;\n\n let compatible = false;\n let type = access_type;\n if (exp_type instanceof MultiType) {\n if (access_type.dimensions - used_dims == 0) {\n type = access_type.innerType;\n } else {\n type = new ArrayType(\n access_type.innerType,\n Math.max(0, access_type.dimensions - used_dims)\n );\n }\n compatible = exp_type.isCompatible(type);\n } else {\n compatible = access_type.canAccept(exp_type, used_dims);\n }\n if (!compatible) {\n if (0 === access_type.dimensions - used_dims) {\n type = access_type.innerType; // enable a valid attempt to cast real <--> integer\n }\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type, exp_type)\n ) {\n const access_type_string_info = access_type.stringInfo();\n const access_type_info = access_type_string_info[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n access_type_info.type,\n access_type_info.dim - used_dims,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n }\n return optional;\n } else if (cmd instanceof Assign) {\n // TODO - rework since there is no literal array assignment\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if (typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const exp = cmd.expression;\n const exp_type = this.evaluateExpressionType(exp);\n if (exp_type instanceof ArrayType) {\n if (!(typeInfo.type instanceof ArrayType)) {\n // TODO better error message\n throw new Error(\"Cannot assign an array to a non-array variable \");\n }\n // Both are arrays...\n // if both don't have same dimensions and type, cannot perform assignment\n if (!exp_type.isCompatible(typeInfo.type)) {\n if (\n exp_type.dimensions === typeInfo.type.dimensions &&\n !exp_type.innerType.isCompatible(typeInfo.type.innerType)\n ) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(\n typeInfo.type.innerType,\n exp_type.innerType\n )\n ) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n } else {\n switch (exp_type.dimensions) {\n case 1: {\n throw ProcessorErrorFactory.vector_to_matrix_attr(\n cmd.id,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n case 2: {\n throw ProcessorErrorFactory.matrix_to_vector_attr(\n cmd.id,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n }\n }\n }\n } else if (!exp_type.isCompatible(typeInfo.type)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(typeInfo.type, exp_type)\n ) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n }\n return optional;\n } else if (cmd instanceof Break) {\n return optional;\n } else if (cmd instanceof IfThenElse) {\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(\n cmd.condition.toString(),\n cmd.sourceInfo\n );\n }\n if (cmd.ifFalse instanceof IfThenElse) {\n return (\n this.checkCommands(type, cmd.ifTrue.commands, optional) &&\n this.checkCommand(type, cmd.ifFalse, optional)\n );\n } else if (cmd.ifFalse != null) {\n return (\n this.checkCommands(type, cmd.ifTrue.commands, optional) &&\n this.checkCommands(type, cmd.ifFalse.commands, optional)\n );\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional);\n }\n } else if (cmd instanceof FunctionCall) {\n let fun = null;\n if (cmd.isMainCall) {\n fun = this.getMainFunction();\n } else {\n fun = this.findFunction(cmd.id);\n }\n if (fun === null) {\n throw ProcessorErrorFactory.function_missing_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain\n ? LanguageDefinedFunction.getMainFunctionName()\n : this.currentFunction.name;\n if (cmd.expression === null && !type.isCompatible(Types.VOID)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_void_return_full(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type, resultType)\n ) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n }\n }\n return true;\n } else {\n return true;\n }\n }\n }\n\n checkCommands (type, cmds, optional) {\n return cmds.reduce(\n (last, next) => this.checkCommand(type, next, optional) || last,\n optional\n );\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {Expression[]} actualParametersList\n */\n assertParameters (fun, actualParametersList) {\n const parameterList = fun.formalParameters;\n if (\n parameterList.length > actualParametersList.length ||\n (parameterList.length !== actualParametersList.length &&\n !fun.hasVariadic())\n ) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(\n fun.name,\n actualParametersList.length,\n fun.formalParameters.length,\n null\n );\n }\n\n for (\n let i = 0, j = 0;\n i < parameterList.length && j < actualParametersList.length;\n i += 1, j += 1\n ) {\n const formalParam = parameterList[i];\n if (formalParam.variadic && i + 1 !== parameterList.length) {\n throw \"A function variadic parameter must be its last parameter!\";\n }\n if (formalParam.variadic) {\n j = this.assertVariadicParameter(\n fun,\n formalParam,\n j,\n actualParametersList\n );\n } else {\n const param = actualParametersList[j];\n this.assertParameter(fun, formalParam, param);\n }\n }\n }\n\n evaluateVectorLiteralType (literal, type) {\n // console.log(literal);\n for (let i = 0; i < literal.value.length; i += 1) {\n const exp = literal.value[i];\n const expType = this.evaluateExpressionType(exp);\n let compatible = false;\n if (expType instanceof MultiType) {\n compatible = expType.isCompatible(type.innerType);\n } else {\n compatible = type.canAccept(expType, 1);\n }\n if (!compatible) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type.innerType, expType)\n ) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = expType.stringInfo();\n const result_info = result_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n 0,\n result_info.type,\n result_info.dim,\n exp.toString(),\n literal.sourceInfo\n );\n }\n }\n }\n return type;\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {import('./../../ast/commands/formalParameter').FormalParameter} formalParam\n * @param {number} index\n * @param {Expression[]} actualParametersList\n */\n assertVariadicParameter (fun, formalParam, index, actualParametersList) {\n let i;\n for (i = index; i < actualParametersList.length; i += 1) {\n this.assertParameter(fun, formalParam, actualParametersList[i]);\n }\n return i - 1;\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {import('./../../ast/commands/formalParameter').FormalParameter} formalParam\n * @param {Expression} actualParameter\n */\n assertParameter (fun, formalParam, actualParameter) {\n // const id = formalParam.id;\n if (formalParam.byRef) {\n if (actualParameter instanceof VariableLiteral) {\n const variable = this.findSymbol(actualParameter.id, this.symbolMap);\n if (variable.isConst) {\n throw ProcessorErrorFactory.invalid_const_ref_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n } else if (\n !(\n actualParameter instanceof VariableLiteral ||\n actualParameter instanceof ArrayAccess\n )\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n const resultType = this.evaluateExpressionType(actualParameter);\n if (\n resultType instanceof MultiType &&\n formalParam.type instanceof MultiType\n ) {\n let shared = 0;\n for (let j = 0; j < resultType.types.length; ++j) {\n const element = resultType.types[j];\n if (formalParam.type.types.indexOf(element) !== -1) {\n shared += 1;\n }\n }\n if (shared <= 0) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (\n (!resultType.isCompatible(Types.INTEGER) &&\n !resultType.isCompatible(Types.REAL)) ||\n formalParam.type.isCompatible(Types.INTEGER) ||\n formalParam.type.isCompatible(Types.REAL)\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n } else if (resultType instanceof MultiType) {\n if (!resultType.isCompatible(formalParam.type)) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (\n (!resultType.isCompatible(Types.INTEGER) &&\n !resultType.isCompatible(Types.REAL)) ||\n formalParam.type.isCompatible(Types.INTEGER) ||\n formalParam.type.isCompatible(Types.REAL)\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n } else if (!formalParam.type.isCompatible(resultType)) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (!Store.canImplicitTypeCast(formalParam.type, resultType)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n }\n}\n","import { IVProgParser } from './ast/ivprogParser';\nimport { IVProgProcessor } from './processor/ivprogProcessor';\nimport {DOMConsole} from './io/domConsole';\nimport { SemanticAnalyser } from './processor/semantic/semanticAnalyser';\nimport { Location } from \"./memory/location\";\n\nexport function runner () {\n\n\n// const lexer = new ivprogLexer(new InputStream(input));\n// const stream = new CommonTokenStream(lexer);\n// stream.fill();\n// let i = 1;\n// let token = null;\n// while ((token = stream.LT(i)).type !== ivprogLexer.EOF && token.type !== ivprogLexer.WHITESPACE) {\n// console.log(`${token.type}-${token.text}`);\n// console.log('\\n')\n// i++;\n// }\n// const anaSin = new IVProgParser(input, ivprogLexer);\nconst editor = new window.JsonEditor('#json-renderer', {});\nconst domConsole = new DOMConsole(\"#console\", true);\ndomConsole.hide();\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n window.$('#btn').click( () => {\n const input = window.$('#input').val();\n const analiser = IVProgParser.createParser(input);\n try {\n analiser.fill();\n //console.debug(analiser.tokenStream)\n const data = analiser.parseTree();\n const semAna = new SemanticAnalyser(data);\n const proc = new IVProgProcessor(semAna.analyseTree());\n proc.registerInput(domConsole);\n domConsole.clear();\n proc.registerOutput(domConsole);\n proc.interpretAST().then(sto => {\n console.log(sto);\n editor.load(sto.store);\n console.log(Location.size());\n }).catch( e => {\n alert(e);\n console.log(e);\n console.log(Location.size());\n });\n } catch (error) {\n alert(error);\n console.log(error);\n console.log(Location.size());\n }\n\n });\n} catch(a) {\n console.log(a);\n}\n}\n","import line_i18n from \"line-i18n\";\nimport { LocalizedStrings } from \"./localizedStringsService\";\n\nconst StringTypes = line_i18n.StringTypes;\n\nexport const i18nHelper = Object.freeze({\n i18n: (identifier) => {\n var opts = identifier.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return LocalizedStrings.getError(id);\n } else if (StringTypes.MESSAGE === type) {\n return LocalizedStrings.getMessage(id); \n } else if (StringTypes.UI === type) {\n return LocalizedStrings.getUI(id);\n } else {\n console.warn(\"A string has been passed to the i18n helper function that was not in the form type:id -> \" + identifier);\n return LocalizedStrings.getString(identifier, type);\n }\n }\n});","import line_i18n from \"line-i18n\";\nimport { LanguageService } from \"./languageService\";\nimport { LanguageDefinedFunction } from \"./../processor/definedFunctions\";\nimport Langs from \"./../../i18n\";\nimport { Operators } from \"./../ast/operators\";\n\nclass IVProgLocalizedStrings extends line_i18n.LocalizedStrings {\n constructor (langService, langsJsons, shouldListenToChange = false) {\n super(langService, langsJsons, shouldListenToChange);\n }\n\n translateType (type, dim) {\n const type_string = this.getUI(`type_${type}`);\n switch (dim) {\n case 0:\n return type_string;\n default:\n if (dim > 1) return this.getUI(\"matrix_info_string\", [type_string]);\n else return this.getUI(\"vector_info_string\", [type_string]);\n }\n }\n\n translateOp (op) {\n switch (op.ord) {\n case Operators.AND.ord:\n case Operators.OR.ord:\n case Operators.NOT.ord:\n return this.getUI(`logic_operator_${op.value}`);\n default:\n return op.value;\n }\n }\n\n translateInternalFunction (name, category = null) {\n if (category == null) {\n return LanguageDefinedFunction.getLocalName(name);\n } else {\n return LanguageDefinedFunction.getLocalName(`${category}.${name}`);\n }\n }\n}\n\nexport const LocalizedStrings = Object.freeze(\n new IVProgLocalizedStrings(LanguageService, Langs, true)\n);\n\nlet _instance = null;\n\nexport function getInstance () {\n if (_instance == null) {\n _instance = new IVProgLocalizedStrings(LanguageService, Langs);\n }\n return _instance;\n}\n","let clicks = [];\nlet inRebuildMode = false;\n\nexport const ActionTypes = Object.freeze({\n // registerUserEvent payload:\n // (function_name, insert action)\n INSERT_FUNCTION:\"INSERT_FUNCTION\",\n // (function_name, remove action)\n REMOVE_FUNCTION:\"REMOVE_FUNCTION\",\n // (var_name,insert action, type, dim)\n INSERT_GLOBAL_VAR:\"INSERT_GLOBAL_VAR\",\n // (var name, remove action)\n REMOVE_GLOBAL_VAR:\"REMOVE_GLOBAL_VAR\",\n // (old function name, rename action, new function name)\n RENAME_FUNCTION:\"RENAME_FUNCTION\",\n // (old var name, rename action. new var name)\n RENAME_GLOBAL_VAR:\"RENAME_GLOBAL_VAR\",\n // (var name, set const action)\n SET_GLOBAL_CONST:\"SET_GLOBAL_CONST\",\n // (function name, change return action, type, dim)\n CHANGE_FUNCTION_RETURN:\"CHANGE_FUNCTION_RETURN\",\n // (var name, change type action, type, dim, rows?, columns?)\n CHANGE_GLOBAL_TYPE:\"CHANGE_GLOBAL_TYPE\",\n // (var name, change value action, value)\n CHANGE_GLOBAL_VALUE:\"CHANGE_GLOBAL_VALUE\",\n // (function name, insert param action, param varname, type, dim)\n INSERT_FUNCTION_PARAM:\"INSERT_FUNCTION_PARAM\",\n // (function name, remove param action, param varname)\n REMOVE_FUNCTION_PARAM:\"REMOVE_FUNCTION_PARAM\",\n // (function name, change param type action, type, dim)\n CHANGE_PARAM_TYPE:\"CHANGE_PARAM_TYPE\",\n // (function name, rename param action, old param name, new param name)\n RENAME_FUNCTION_PARAM:\"RENAME_FUNCTION_PARAM\",\n // (function name, insert var action, var name, type, dim)\n INSERT_FUNCTION_VAR:\"INSERT_FUCNTION_VAR\",\n // (function name, remove var action, var name)\n REMOVE_FUNCTION_VAR:\"REMOVE_FUNCTION_VAR\",\n // (function name, rename var action, old var name, new var name)\n RENAME_FUNCTION_VAR:\"RENAME_FUNCTION_VAR\",\n // (function name, change var type action, var name, type, dim, rows?, columns?)\n CHANGE_VAR_TYPE:\"CHANGE_VAR_TYPE\",\n // (function name, change var value action, var name, value)\n CHANGE_VAR_VALUE:\"CHANGE_VAR_VALUE\",\n // (function name, insert command action, command, path)\n INSERT_COMMAND:\"INSERT_COMMAND\",\n // (function name, remove command action, path)\n REMOVE_COMMAND:\"REMOVE_COMMAND\",\n // (function name, change command exp action, path, exp)\n CHANGE_COMMAND_EXP:\"CHANGE_COMMAND_EXP\",\n // (function name, change attrib exp action, path, exp)\n CHANGE_ATTRIB_EXP:\"CHANGE_ATTRIB_EXP\",\n // (function name, change attrib var action, path, var name, row_exp?, column_exp?)\n CHANGE_ATTRIB_VAR:\"CHANGE_ATTRIB_VAR\",\n // (function name, move command action, old path, new path)\n MOVE_COMMAND:\"MOVE_COMMAND\",\n // (function name, enter change name action, var name)\n ENTER_CHANGE_VAR_NAME:'ENTER_CHANGE_VAR_NAME',\n // (function name, enter change value action, var name)\n ENTER_CHANGE_VAR_VALUE:'ENTER_CHANGE_VAR_VALUE',\n // (var name, enter change name action)\n ENTER_CHANGE_GLOBAL_NAME:'ENTER_CHANGE_GLOBAL_NAME',\n // (var name, enter change value action)\n ENTER_CHANGE_GLOBAL_VALUE:'ENTER_CHANGE_GLOBAL_VALUE',\n // (function name, enter change name action, param name)\n ENTER_CHANGE_PARAM_NAME:'ENTER_CHANGE_PARAM_NAME',\n});\n\nexport function registerClick (x, y, details) {\n if (inRebuildMode) {\n return;\n }\n clicks.push([x, y, Date.now(), details]);\n}\n\nexport function registerUserEvent (command, action, ...params) {\n registerEvent('user_event', command, action, params);\n}\n\nexport function registerSystemEvent (command, action, ...params) {\n registerEvent('system_event', command, action, params);\n}\n\nfunction registerEvent (tag, command, action, params) {\n if (inRebuildMode) {\n return;\n }\n const event = {context: command, action: action, params:params};\n clicks.push([tag, Date.now(), event]);\n}\n\nexport function getLogs () {\n return clicks;\n}\n\nexport function setRebuildMode (flag) {\n inRebuildMode = flag;\n}\n\nexport function getLogsAsString () {\n return JSON.stringify(clicks);\n}\n\nexport function parseLogs (logData) {\n clicks = JSON.parse(logData);\n}\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\nimport { Config } from \"../util/config\";\n\nexport function toInt (str) {\n return new Decimal(str);\n}\n\nexport function toString (str) {\n let value = str.replace(/^\"/, \"\");\n value = value.replace(/\"$/, \"\");\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\"/g, '\"');\n value = value.replace(/\\\\'/g, \"'\");\n value = value.replace(/\\\\\\\\/g, \"\\\\\");\n return value;\n}\n\nexport function toChar (str) {\n //console.debug(str, str.length);\n let value = str.replace(/^'/, \"\");\n value = value.replace(/'$/, \"\");\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\"/g, '\"');\n value = value.replace(/\\\\'/g, \"'\");\n value = value[0];\n return value;\n}\n\nexport function toReal (value) {\n return new Decimal(value);\n}\n\nexport function toBool (str) {\n const val = str;\n const lexer = LanguageService.getCurrentLexer();\n if (lexer.getReservedKeys()[lexer.getRules().RK_TRUE] === val) {\n return true;\n } else if (lexer.getReservedKeys()[lexer.getRules().RK_FALSE] === val) {\n return false;\n } else {\n // TODO: better error message\n throw new Error(str + \"not a valid boolean\");\n }\n}\n\nexport function convertBoolToString (bool) {\n const lexer = LanguageService.getCurrentLexer();\n let result = null;\n if (bool) {\n result = lexer.getReservedKeys()[lexer.getRules().RK_TRUE];\n } else {\n result = lexer.getReservedKeys()[lexer.getRules().RK_FALSE];\n }\n //console.debug(result)\n return result.replace(/'/g, \"\");\n}\n\nexport function convertToString (value, type) {\n switch (type.ord) {\n case Types.INTEGER.ord:\n return value.toString();\n case Types.REAL.ord: {\n if (value.dp() <= 0) {\n return value.toFixed(1);\n } else {\n return value.toFixed(Config.decimalPlaces);\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(value);\n default:\n return value;\n }\n}\n\n","import {SemanticAnalyser} from './../processor/semantic/semanticAnalyser';\nimport {IVProgProcessor} from './../processor/ivprogProcessor';\nimport { InputTest } from './inputTest';\nimport { OutputTest } from './outputTest';\nimport { LocalizedStrings } from './../services/localizedStringsService'\n\nexport function autoGenerateTestCaseOutput (program_text, testCases) {\n let copyTestCases = testCases.map((test) => Object.assign({}, test));\n try {\n const program = SemanticAnalyser.analyseFromSource(program_text);\n const resultList = testCases.map((test, id) => {\n const input = new InputTest(test.input);\n const output = new OutputTest();\n const exec = new IVProgProcessor(program);\n exec.registerInput(input);\n exec.registerOutput(output);\n return exec.interpretAST().then(_ => {\n return {id: id, program: exec};\n });\n });\n return Promise.all(resultList).then(result_final => {\n for(let i = 0; i < result_final.length; ++i) {\n const result = result_final[i];\n const output = result.program.output.list;\n const input = result.program.input;\n if(input.index != input.inputList.length) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_unused_input\", [result.id+1]));\n return Promise.resolve(false);\n }\n if(output.length == 0) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_empty\", [result.id+1]));\n }\n copyTestCases[result.id].output = output;\n }\n window.outputGenerated(copyTestCases);\n return Promise.resolve(true);\n });\n }catch (error) {\n return Promise.reject(error)\n }\n}","\nimport * as Models from '../visualUI/ivprog_elements';\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport * as VariableValueMenuManagement from '../visualUI/commands/variable_value_menu';\nimport * as CodeParser from '../visualUI/commands/generic_expression';\n\nfunction parseBoolean (var_value, dimensions) {\n if (dimensions == 0)\n return var_value == LocalizedStrings.getUI(\"logic_value_true\");\n if (dimensions == 1) {\n var final_array = [];\n var_value.forEach(function(el){\n final_array.push(el == LocalizedStrings.getUI(\"logic_value_true\"));\n });\n return final_array;\n }\n if (dimensions == 2) {\n var final_array = [];\n var_value.forEach(function(row){\n var temp = [];\n row.forEach(function(el){\n temp.push(el == LocalizedStrings.getUI(\"logic_value_true\"));\n });\n final_array.push(temp);\n });\n return final_array;\n }\n}\n\nfunction parseGlobal (global_obj) {\n\n var new_global = new Models.Variable(\n global_obj.type, \n global_obj.name, \n global_obj.value);\n \n new_global.is_constant = global_obj.is_const;\n new_global.columns = global_obj.columns;\n new_global.dimensions = global_obj.dimension;\n new_global.rows = global_obj.rows;\n\n if (global_obj.type == \"boolean\")\n new_global.value = parseBoolean(global_obj.value, global_obj.dimension);\n\t\n\twindow.program_obj.addGlobal(new_global);\n}\n\nfunction parseParameter (parameter_obj) {\n\n const new_parameter = new Models.Variable(\n parameter_obj.type,\n parameter_obj.name,\n null,\n parameter_obj.dimension,\n parameter_obj.is_const,\n parameter_obj.rows,\n parameter_obj.columns,\n parameter_obj.reference\n );\n\n new_parameter.value = parameter_obj.value;\n\n if (parameter_obj.type == \"boolean\" && parameter_obj.value)\n new_parameter.value = parseBoolean(parameter_obj.value, parameter_obj.dimension);\n\n return new_parameter;\n}\n\nfunction parseFunction (function_obj) {\n\n const new_function = new Models.Function(\n function_obj.name, \n function_obj.return_type, \n function_obj.return_dimensions, \n [], \n false, \n false, \n []);\n \n if (!new_function.name) {\n new_function.name = LocalizedStrings.getUI(\"start\");\n new_function.is_main = true;\n }\n\n if (function_obj.parameters_list) {\n function_obj.parameters_list.forEach(function(el){\n new_function.parameters_list.push(parseParameter(el));\n });\n }\n\n if (function_obj.variables_list) {\n function_obj.variables_list.forEach(function(el){\n new_function.variables_list.push(parseParameter(el));\n });\n }\n\n window.program_obj.addFunction(new_function);\n \n}\n\nexport function parserCodeVisual (code_obj = null) {\n\n window.conteudo = code_obj\n\n // Globals:\n window.program_obj.globals = [];\n code_obj.globals.forEach(parseGlobal);\n\n // Functions:\n window.program_obj.functions = [];\n code_obj.functions.forEach(parseFunction);\n\n // Commands: \n window.program_obj.functions.forEach(function(preparedFunction) {\n code_obj.functions.forEach(function(rawFunction) {\n if ((preparedFunction.name == rawFunction.name) \n || \n (!rawFunction.name && preparedFunction.name == LocalizedStrings.getUI(\"start\"))) {\n preparedFunction.commands = parseCommands(rawFunction.commands, preparedFunction);\n }\n })\n });\n\n}\n\nfunction parseCommands (commands_block, function_obj) {\n\n if (Array.isArray(commands_block)) {\n var temp = [];\n commands_block.forEach(function(command) {\n temp.push(parseCommands(command, function_obj));\n });\n return temp;\n }\n else {\n switch (commands_block.type) {\n case Models.COMMAND_TYPES.reader:\n return parseReader(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.return:\n return parseReturn(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.writer:\n return parseWriter(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.break:\n return parseBreak(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.comment:\n return parseComment(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.attribution:\n return parseAttribution(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.functioncall:\n return parseFunctionCall(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.iftrue:\n return parseIfTrue(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.repeatNtimes:\n return parseRepeatNTimes(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.whiletrue:\n return parseWhileTrue(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.dowhiletrue:\n return parseDoWhileTrue(commands_block, function_obj);\n\n case Models.COMMAND_TYPES.switch:\n return parseSwitch(commands_block, function_obj);\n }\n return null;\n }\n \n}\n\nfunction parseReader (command, function_obj) {\n var temp = CodeParser.expressionParserCodeVisual(command.variable, function_obj);\n\n if (Array.isArray(temp) && temp[0])\n temp = temp[0];\n\n return new Models.Reader(\n temp\n );\n}\n\nfunction parseReturn (command, function_obj) {\n\n var temp = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n\n return new Models.Return(\n temp\n );\n\n}\n\nfunction parseWriter (command, function_obj) {\n\n var temp = CodeParser.expressionParserCodeVisual(command.content[0], function_obj);\n\n return new Models.Writer(\n temp,\n command.newLine\n );\n}\n\nfunction parseBreak (command, function_obj) {\n return new Models.Break();\n}\n\nfunction parseAttribution (command, function_obj) {\n\n var variable = CodeParser.expressionParserCodeVisual(command.variable, function_obj);\n var expression = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n\n if (Array.isArray(variable)) \n variable = variable[0];\n\n return new Models.Attribution(\n variable,\n expression\n );\n}\n\nfunction parseComment (command, function_obj) {\n // TODO\n return new Models.Comment(\n null\n );\n}\n\nfunction parseFunctionCall (command, function_obj) {\n\n var parameters = [];\n if (command.parameters_list) {\n command.parameters_list.forEach(function(el) {\n var temp = CodeParser.expressionParserCodeVisual(el, function_obj);\n if (temp.content === 0) temp.content = \"0\";\n parameters.push(temp[0]);\n });\n }\n\n var function_called = CodeParser.searchFunction(command.name);\n\n var temp = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false);\n temp.function_called = function_called;\n temp.parameters_list = parameters;\n \n return new Models.FunctionCall(\n temp, \n null\n );\n}\n\nfunction parseIfTrue(command, function_obj) {\n\n var expression = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n var ifTrueBlock = parseCommands(command.ifTrue, function_obj);\n var ifFalseBlock = parseCommands(command.ifFalse, function_obj);\n\n return new Models.IfTrue(expression, ifTrueBlock, ifFalseBlock);\n\n}\n\nfunction parseRepeatNTimes(command, function_obj) {\n\n var var_attribution = CodeParser.expressionParserCodeVisual(command.var_attribution, function_obj);\n var_attribution = var_attribution[0];\n\n var expression1 = CodeParser.expressionParserCodeVisual(command.var_initial, function_obj);\n expression1 = expression1[0];\n\n var expression2 = CodeParser.expressionParserCodeVisual(command.condition, function_obj);\n\n if (expression2[0].item == 'minus') {\n expression2 = expression2[1];\n expression2.content *= -1;\n } else\n expression2 = expression2[0];\n\n var var_step = CodeParser.expressionParserCodeVisual(command.step_expression, function_obj);\n\n var commands_block = parseCommands(command.commands, function_obj);\n\n var operator = command.step_expression[0].value == '+' \n ? Models.ARITHMETIC_TYPES.plus\n : Models.ARITHMETIC_TYPES.minus;\n\n var expression3 = new Models.ExpressionElement(\n Models.EXPRESSION_ELEMENTS.exp_op_exp, \n [ \n null,\n operator, \n var_step[1]\n ]);\n\n return new Models.RepeatNTimes(\n var_attribution,\n new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),\n expression1,\n expression2,\n expression3, \n commands_block);\n\n}\n\nfunction parseWhileTrue (command, function_obj) {\n\n var expression = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n var commands = parseCommands(command.commands, function_obj);\n\n return new Models.WhileTrue(\n expression, \n commands\n );\n}\n\nfunction parseDoWhileTrue (command, function_obj) {\n \n var expression = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n var commands = parseCommands(command.commands, function_obj);\n\n return new Models.DoWhileTrue(\n expression, \n commands\n );\n}\n\nfunction parseSwitch (command, function_obj) {\n\n var expression = CodeParser.expressionParserCodeVisual(command.expression, function_obj);\n\n var sc = [];\n if (command.cases) {\n command.cases.forEach(function(case_el) {\n\n var temp_exp = CodeParser.expressionParserCodeVisual(case_el.expression, function_obj);\n var temp_commands = parseCommands(case_el.commands, function_obj);\n var temp_case = new Models.SwitchCase(temp_exp[0], temp_commands);\n\n sc.push(temp_case);\n })\n }\n\n\treturn new Models.Switch(\n expression[0], \n sc\n );\n}\n","export function processData () {\n const folderInput = document.querySelector(\"#folder\");\n const header = [\n \"submissionid\",\n \"file\",\n \"filesize\",\n \"timestamp\",\n \"humandate\",\n \"grade\",\n \"userid\",\n \"exerciseid\",\n ];\n\n function generateSubCode (algorithmInIlm) {\n window.program_obj.functions = JSON.parse(algorithmInIlm).functions;\n window.program_obj.globals = JSON.parse(algorithmInIlm).globals;\n return window.ivprogCore.generateCode();\n }\n\n function prepareData (map, submission) {\n if (!submission) {\n return map;\n }\n const exercID = submission[\"exerciseid\"];\n const studentID = submission[\"userid\"];\n let exercMap = null;\n if (map.has(exercID)) {\n exercMap = map.get(exercID);\n } else {\n exercMap = new Map();\n map.set(exercID, exercMap);\n }\n if (exercMap.has(studentID)) {\n exercMap.get(studentID).push(submission);\n } else {\n exercMap.set(studentID, [submission]);\n }\n return map;\n }\n\n folderInput.addEventListener(\"change\", async () => {\n const files = Array.from(folderInput.files);\n const idx = files.find((f) => f.name == \"index.csv\");\n const folderName = idx.webkitRelativePath.replace(idx.name, \"\");\n //console.debug(idx);\n //console.debug(folderName);\n const data = await idx.text();\n //console.debug(data);\n const csvEntries = data\n .split(\"\\n\")\n .slice(1)\n .filter((line) => line.length > 0)\n .map((line) => line.split(\",\"))\n .map((vec) => {\n const obj = {};\n vec.forEach((val, i) => (obj[header[i]] = val));\n return obj;\n });\n //console.debug(csvEntries);\n const blockExercMap = csvEntries.reduce(prepareData, new Map());\n //console.log(Array.from(blockExercMatrix.entries()));\n const getFilePath = async function (submission) {\n const path = `${folderName}${submission[\"file\"]}`;\n const file = files.find((f) => f.webkitRelativePath == path);\n const text = await file.text();\n return text;\n };\n const matrix = {};\n let counter = 0;\n blockExercMap.forEach((studentsMap, exercID) => {\n const column = [];\n studentsMap.forEach(async (submissions, studentID) => {\n submissions = submissions.sort((a, b) => {\n return parseInt(a[\"timestamp\"]) - parseInt(b[\"timestamp\"]);\n });\n counter++;\n submissions.forEach(async (submission, index, array) => {\n counter++;\n const student = {};\n student[\"grade\"] = Math.max(0, parseFloat(submission[\"grade\"]));\n student[\"timestamp\"] = parseInt(submission[\"timestamp\"]);\n student[\"student_id\"] = studentID;\n student[\"TES\"] = 0;\n student[\"DES\"] = 0;\n student[\"D/T\"] = 0;\n let previousCode = \"\";\n if (index > 0) {\n student[\"TES\"] =\n parseInt(submission[\"timestamp\"]) -\n parseInt(array[index - 1][\"timestamp\"]);\n const previousFile = await getFilePath(array[index - 1]);\n const previous = window.ivprogCore\n .prepareActivityToStudentHelper(previousFile)\n .getOrElse(1);\n if (previous == 1) {\n console.error(\n `A submission from ${studentID} to ${exercID} is invalid`\n );\n return;\n }\n previousCode = generateSubCode(previous.algorithmInIlm);\n }\n const currentFile = await getFilePath(submission);\n const current = window.ivprogCore\n .prepareActivityToStudentHelper(currentFile)\n .getOrElse(2);\n if (current == 2) {\n console.error(\n `A submission from ${studentID} to ${exercID} is invalid`\n );\n return;\n }\n const currentCode = generateSubCode(current.algorithmInIlm);\n if (previousCode === \"\") {\n const logs = JSON.parse(currentFile.split(\"::logs::\")[1]);\n const event = logs[0];\n if (event == null) {\n // empty submission\n student[\"TES\"] = 0;\n } else if (event.length === 4) {\n student[\"TES\"] =\n parseInt(submission[\"timestamp\"]) -\n Math.floor(parseInt(event[2]) / 1000);\n } else {\n student[\"TES\"] =\n parseInt(submission[\"timestamp\"]) -\n Math.floor(parseInt(event[1]) / 1000);\n }\n }\n student[\"DES\"] = window.ivprogCore.levenshteinDistance(\n previousCode,\n currentCode\n );\n const ratio =\n student[\"TES\"] === 0 ? 0 : student[\"DES\"] / student[\"TES\"];\n student[\"D/T\"] = isNaN(ratio) ? 0 : ratio;\n column.push(student);\n counter--;\n });\n counter--;\n });\n matrix[exercID] = column;\n });\n function download (file, text) {\n //creating an invisible element\n const element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", file);\n element.innerHTML = file;\n element.classList.add(\"ui\", \"primary\", \"button\");\n\n // Above code is equivalent to\n // <a href=\"path of file\" download=\"file name\">\n\n document.querySelector(\"#downloads\").appendChild(element);\n }\n function getExercHeader (id) {\n const props = [\"TES\", \"DES\", \"grade\", \"D/T\", \"timestamp\"];\n return props.reduce((acc, prop) => acc + `${id}_${prop},`, \"\");\n }\n const id = setInterval(() => {\n if (counter == 0) {\n clearInterval(id);\n for (const exercID in matrix) {\n let csv = \"\";\n let firstLine = \"student_id,\";\n firstLine += getExercHeader(exercID);\n for (const submission of matrix[exercID]) {\n csv += `${submission[\"student_id\"]},`;\n csv += `${submission[\"TES\"]},`;\n csv += `${submission[\"DES\"]},`;\n csv += `${submission[\"grade\"]},`;\n csv += `${submission[\"D/T\"]},`;\n csv += `${submission[\"timestamp\"]}`;\n csv += \"\\n\";\n }\n download(`${exercID}.csv`, `${firstLine}\\n${csv}`);\n }\n }\n }, 1000);\n });\n}\n","import { getCodeEditorModeConfig } from \"./utils\";\n\n/**\n * Source: https://raw.githubusercontent.com/codemirror/CodeMirror/master/mode/clike/clike.js\n * @author arijn Haverbeke and others\n * @author Lucas de Souza\n * @param {CodeMirror} CodeMirror \n */\nexport function CodeEditorMode (CodeMirror) {\n \"use strict\";\n\n function Context(indented, column, type, info, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.info = info;\n this.align = align;\n this.prev = prev;\n }\n\n function pushContext(state, col, type, info) {\n let indent = state.indented;\n if (state.context && state.context.type == \"statement\" && type != \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, info, null, state.context);\n }\n \n function popContext(state) {\n const t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n }\n\n function typeBefore(stream, state, pos) {\n if (state.prevToken == \"variable\" || state.prevToken == \"type\") return true;\n if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, pos))) return true;\n if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;\n }\n\n function isTopScope(context) {\n for (; ;) {\n if (!context || context.type == \"top\") return true;\n if (context.type == \"}\" && context.prev.info != \"namespace\") return false;\n context = context.prev;\n }\n }\n\n function contains(words, word) {\n if (typeof words === \"function\") {\n return words(word);\n } else {\n return Object.propertyIsEnumerable.call(words, word);\n }\n }\n\n function tokenComment(stream, state) {\n let maybeEnd = false, ch;\n while ((ch = stream.next())) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n CodeMirror.defineMode(\"ivprog\", function (config, parserConfig) {\n const indentUnit = config.indentUnit,\n statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n dontAlignCalls = parserConfig.dontAlignCalls,\n keywords = parserConfig.keywords || {},\n switchKeyword = parserConfig.switchKeyword,\n caseKeyword = parserConfig.caseKeyword,\n defaultKeyword = parserConfig.defaultKeyword,\n caseRegex = new RegExp(`^\\\\s*(?:${caseKeyword} .*?:|${defaultKeyword}:|\\\\{\\\\}?|\\\\})$`),////,\n types = parserConfig.types || {},\n builtin = parserConfig.builtin || {},\n blockKeywords = parserConfig.blockKeywords || {},\n defKeywords = parserConfig.defKeywords || {},\n atoms = parserConfig.atoms || {},\n hooks = parserConfig.hooks || {},\n multiLineStrings = parserConfig.multiLineStrings,\n indentStatements = false,\n namespaceSeparator = null,\n isPunctuationChar = /[[\\]{}(),;:\\n]/,\n numberStart = /[\\d.]/,\n number = /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)$/i,\n isOperatorChar = /[+\\-*%=<>!/&]/,\n isIdentifierChar = /[a-zA-Z0-9_]/,\n // An optional function that takes a {string} token and returns true if it\n // should be treated as a builtin.\n isReservedIdentifier = parserConfig.isReservedIdentifier || false;\n\n let curPunc, isDefKeyword;\n let tokenString = function () { /*SKIP*/};\n function tokenBase(stream, state) {\n const ch = stream.next();\n if (hooks[ch]) {\n const result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == '\"') {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (isPunctuationChar.test(ch)) {\n curPunc = ch;\n return null;\n }\n if (numberStart.test(ch)) {\n stream.backUp(1)\n if (stream.match(number)) return \"number\"\n stream.next()\n }\n if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n }\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (isOperatorChar.test(ch)) {\n while (!stream.match(/^\\/[/*]/, false) && stream.eat(isOperatorChar)) { /* SKIP */}\n return \"operator\";\n }\n stream.eatWhile(isIdentifierChar);\n if (namespaceSeparator) while (stream.match(namespaceSeparator))\n stream.eatWhile(isIdentifierChar);\n\n const cur = stream.current();\n if (contains(keywords, cur)) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n if (contains(defKeywords, cur)) isDefKeyword = true;\n return \"keyword\";\n }\n if (contains(types, cur)) return \"type\";\n if (contains(builtin, cur)\n || (isReservedIdentifier && isReservedIdentifier(cur))) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n return \"builtin\";\n }\n if (contains(atoms, cur)) return \"atom\";\n return \"variable\";\n }\n\n tokenString = function (quote) {\n return function (stream, state) {\n let escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) { end = true; break; }\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function maybeEOL(stream, state) {\n if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))\n state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)\n }\n\n // Interface\n\n return {\n startState: function (basecolumn) {\n return {\n tokenize: null,\n context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", null, false),\n indented: 0,\n startOfLine: true,\n prevToken: null\n };\n },\n\n token: function (stream, state) {\n let ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) { maybeEOL(stream, state); return null; }\n curPunc = isDefKeyword = null;\n let style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\" || style == \"meta\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if (curPunc == \";\" || curPunc == \":\" || (curPunc == \",\" && stream.match(/^\\s*(?:\\/\\/.*)?$/, false)))\n while (state.context.type == \"statement\") popContext(state);\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements &&\n (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != \";\") ||\n (ctx.type == \"statement\" && curPunc == \"newstatement\"))) {\n pushContext(state, stream.column(), \"statement\", stream.current());\n }\n\n if (style == \"variable\" &&\n ((state.prevToken == \"def\" ||\n (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&\n isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n style = \"def\";\n\n if (hooks.token) {\n const result = hooks.token(stream, state, style);\n if (result !== undefined) style = result;\n }\n\n if (style == \"def\" && parserConfig.styleDefs === false) style = \"variable\";\n\n state.startOfLine = false;\n state.prevToken = isDefKeyword ? \"def\" : style || curPunc;\n maybeEOL(stream, state);\n return style;\n },\n\n indent: function (state, textAfter) {\n if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;\n let ctx = state.context;\n const firstChar = textAfter && textAfter.charAt(0)\n const closing = firstChar == ctx.type;\n if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n if (parserConfig.dontIndentStatements)\n while (ctx.type == \"statement\" && parserConfig.dontIndentStatements.test(ctx.info))\n ctx = ctx.prev\n if (hooks.indent) {\n const hook = hooks.indent(state, ctx, textAfter, indentUnit);\n if (typeof hook == \"number\") return hook\n }\n const switchBlock = ctx.prev && ctx.prev.info == switchKeyword;\n if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n while (ctx.type != \"top\" && ctx.type != \"}\") ctx = ctx.prev\n return ctx.indented\n }\n if (ctx.type == \"statement\")\n return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n if (ctx.align && (!dontAlignCalls || ctx.type != \")\"))\n return ctx.column + (closing ? 0 : 1);\n if (ctx.type == \")\" && !closing)\n return ctx.indented + statementIndentUnit;\n const caseTestRegex = new RegExp(`^(?:${caseKeyword}|${defaultKeyword})\\b`)\n return ctx.indented + (closing ? 0 : indentUnit) +\n (!closing && switchBlock && !caseTestRegex.test(textAfter) ? indentUnit : 0);\n },\n\n electricInput: caseRegex,\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"brace\"\n };\n });\n\n function words(str) {\n const obj = {}, words = str.split(\" \");\n for (let i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n \n const codeConfig = getCodeEditorModeConfig();\n\n const ivprogKeywords = codeConfig.keywords.join(\" \");\n\n const basicTypes = words(codeConfig.types.join(\" \"));\n\n function ivprogTypes(identifier) {\n return contains(basicTypes, identifier);\n }\n\n const ivprogBlockKeywords = codeConfig.blocks.join(\" \");\n const ivprogDefKeywords = \"funcao const\";\n\n function def(mimes, mode) {\n if (typeof mimes == \"string\") mimes = [mimes];\n const words = [];\n function add(obj) {\n if (obj) {\n for (const prop in obj) if (Object.hasOwnProperty.call(obj, prop)) {\n words.push(prop);\n }\n }\n }\n add(mode.keywords);\n add(mode.types);\n add(mode.builtin);\n add(mode.atoms);\n if (words.length) {\n mode.helperType = mimes[0];\n CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n }\n\n for (let i = 0; i < mimes.length; ++i)\n CodeMirror.defineMIME(mimes[i], mode);\n }\n \n def([\"text/x-ivprog\"], {\n name: \"ivprog\",\n keywords: words(ivprogKeywords),\n types: ivprogTypes,\n blockKeywords: words(ivprogBlockKeywords),\n defKeywords: words(ivprogDefKeywords),\n typeFirstDefinitions: true,\n atoms: words(codeConfig.atoms.join(\" \")),\n switchKeyword: codeConfig.switchString,\n caseKeyword: codeConfig.case_default[0],\n defaultKeyword: codeConfig.case_default[1],\n modeProps: { fold: [\"brace\"] }\n });\n\n}\n","import { setTestCases, getTestCases } from \"../visualUI/functions\";\nimport { generate } from \"../visualUI/code_generator\";\nimport { IVProgAssessment } from \"../assessment/ivprogAssessment\";\nimport { TestConsole } from \"./testConsole\";\nimport { parseLogs } from \"./../services/userLog\";\nimport { SemanticAnalyser } from \"../processor/semantic/semanticAnalyser\";\nimport { Maybe } from \"./maybe\";\nimport { parserCodeVisual } from \"./codeParser\";\n\nfunction parseActivityData (data, ignore_logs=false) {\n let algorithm_in_ilm = null;\n if (data.split(\"\\n::algorithm::\")[1]) {\n algorithm_in_ilm = data.split(\"\\n::algorithm::\")[1].split(\"\\n::logs::\")[0];\n const logs = data.split(\"\\n::algorithm::\")[1].split(\"\\n::logs::\")[1];\n if (logs != null && ignore_logs == false) {\n parseLogs(logs);\n }\n }\n let content;\n try {\n content = JSON.parse(data.split(\"\\n::algorithm::\")[0]);\n content[\"algorithm_in_ilm\"] = algorithm_in_ilm;\n } catch (e) {\n console.error(e);\n return Maybe.none();\n }\n return Maybe.some(content);\n}\n\nfunction configAuxiliar (obj_config) {\n\n return new Map(\n Object\n .keys(obj_config)\n .map(\n key => [key, obj_config[key]]\n )\n )\n}\n \nfunction setActivityConfig (config_json) {\n\n ivprogCore.Config.activity_commands = configAuxiliar(config_json.commands);\n ivprogCore.Config.activity_functions = configAuxiliar(config_json.functions);\n ivprogCore.Config.activity_datatypes = configAuxiliar(config_json.datatypes);\n ivprogCore.Config.activity_filter = configAuxiliar(config_json.filter);\n ivprogCore.Config.activity_programming_type = configAuxiliar(config_json.programming);\n\n}\n\nexport function setPreviousAlgorithm (code) {\n \n var code_obj = null;\n try {\n code_obj = ivprogCore.parseCode(code)\n parserCodeVisual(code_obj)\n }\n catch(e) {\n showInvalidData()\n console.log(e)\n return\n }\n}\n\nexport function prepareActivityToStudentHelperJSON (ilm_cont) {\n \n setTestCases(ilm_cont.test_cases)\n\n setActivityConfig(ilm_cont.settings)\n\n if (ilm_cont.code)\n setPreviousAlgorithm(ilm_cont.code)\n else \n if (ilm_cont.algorithm)\n setPreviousAlgorithm(ilm_cont.algorithm)\n\n}\n\nexport function prepareActivityToStudentHelper (ilm_cont, ignore_logs=false) {\n const maybe_content = parseActivityData(ilm_cont, ignore_logs);\n return maybe_content.map((content) => {\n const testCases = content.testcases;\n setTestCases(testCases);\n\n let prog_type = null;\n if (content.settings_programming_type) {\n prog_type = content.settings_programming_type[0].value;\n } else {\n prog_type = \"visual\";\n }\n\n return {\n settingsProgrammingType: prog_type,\n settingsDataTypes: content.settings_data_types,\n settingsCommands: content.settings_commands,\n settingsFunctions: content.settings_functions,\n algorithmInIlm: content.algorithm_in_ilm,\n settingsFilter: content.settings_filter,\n };\n });\n}\n\nfunction compareArray (a, b) {\n for (let i = 0; i < a.length; ++i) {\n const elementA = a[i];\n const elementB = b[i];\n if (elementA != elementB) {\n return false;\n }\n }\n return true;\n}\n\nfunction compareTestcases (original, student) {\n if (original.length != student.length) {\n return false;\n }\n for (let i = 0; i < original.length; ++i) {\n const elementO = original[i];\n const elementS = student[i];\n if (!compareArray(elementO.input, elementS.input)) {\n return false;\n }\n if (!compareArray(elementO.output, elementS.output)) {\n return false;\n }\n }\n return true;\n}\n\nexport function autoEval (originalData, callback) {\n const code = generate();\n //console.debug(code);\n const original = parseActivityData(originalData).getOrElse(undefined);\n if (original == null) {\n alert(\"iAssign did not provide the original activity data!\");\n return callback(null);\n }\n if (code == null) {\n return callback(-1); // @FeedbackConvention Casos de teste vazios\n } else {\n if (!compareTestcases(original.testcases, getTestCases())) {\n return callback(-2); // @FeedbackConvention Casos de teste alterados pelo aluno\n }\n try {\n const ast_code = SemanticAnalyser.analyseFromSource(code);\n const con = new TestConsole([]);\n const autoAssessment = new IVProgAssessment(\n ast_code,\n original.testcases,\n con\n );\n autoAssessment\n .runTest()\n .then((grade) => callback(grade))\n .catch((err) => {\n console.log(err);\n callback(-5); // @FeedbackConvention Falha na execução\n });\n } catch (e) {\n console.error(e);\n callback(-5);\n }\n }\n}\n","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputTest extends Input {\n\n constructor (inputList) {\n super();\n this.index = 0;\n this.inputList = inputList;\n }\n\n requestInput () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.inputList.length) { \n resolve(this.inputList[this.index]);\n this.index++;\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n}","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputAssessment extends Input {\n\n constructor (input_list) {\n super();\n this.index = 0;\n this.input_list = input_list.map((val) => {\n return {\"value\": val, \"read\": false};\n });\n }\n\n requestInput () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.input_list.length) {\n const input = this.input_list[this.index];\n input.read = true;\n this.index += 1;\n resolve(input.value);\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n\n isInputAvailable () {\n return this.index < this.input_list.length;\n }\n}","import { Output } from \"./../io/output\";\n\nexport class OutputTest extends Output {\n constructor () {\n super();\n this.list = [];\n this.currentLine = null;\n }\n\n write (text, newLine = false) {\n if (this.currentLine == null) {\n this.currentLine = this.list.push(\"\") - 1;\n }\n\n this.list[this.currentLine] += text;\n if (newLine) {\n this.currentLine = null;\n }\n }\n\n sendOutput (text) {\n const output = \"\" + text;\n if (output.indexOf(\"\\n\") !== -1) {\n const outputList = output.split(\"\\n\");\n const last = outputList.pop();\n outputList.forEach((t) => {\n //t = t.replace(/\\t/g, '&#x0020;&#x0020;');\n //t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length == 0) this.currentLine = null;\n else this.write(t, true);\n });\n //last = last.replace(/\\t/g, '&#x0020;&#x0020;');\n //last = last.replace(/\\s/g, \"&#x0020;\");\n if (last.length != 0) this.write(last);\n } else {\n //output = output.replace(/\\t/g, '&#x0020;&#x0020;');\n //output = output.replace(/\\s/g, \"&#x0020;\");\n this.write(output);\n }\n }\n}\n","import { IVProgParser } from \"../ast/ivprogParser\";\nimport * as Expressions from \"../ast/expressions\";\nimport { Types } from \"../typeSystem/types\";\nimport { convertBoolToString } from \"../typeSystem/parsers\";\nimport * as Commands from \"../ast/commands\";\nimport { ArrayType } from \"../typeSystem/array_type\";\nimport { Literal } from \"../ast/expressions/literal\";\n\nconst TYPES = {\n VARIABLE: \"var\",\n CONST: \"const\",\n FUNCTION: \"function\",\n RELATIONAL: \"relational\",\n LOGIC: \"logic\",\n ARITHMETIC: \"arithmetic\",\n};\n\nfunction translateOp (type, op) {\n switch (type) {\n case TYPES.ARITHMETIC:\n return op.value;\n case TYPES.RELATIONAL:\n return op.value;\n case TYPES.LOGIC: {\n if (op.ord === 11) {\n return \"and\";\n } else if (op.ord === 12) {\n return \"or\";\n } else {\n return \"not\";\n }\n }\n }\n}\n\nfunction getOpType (op) {\n switch (op.ord) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n return TYPES.ARITHMETIC;\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n return TYPES.RELATIONAL;\n default:\n return TYPES.LOGIC;\n }\n}\n\n/**\n * @param {Commands.Case} switchCase\n * */\nfunction switchCaseWalker (switchCase) {\n const commands = switchCase.commands.map(commandWalker);\n const expression = switchCase.isDefault\n ? null\n : expressionWalker(switchCase.expression);\n return {\n type: \"switchcase\",\n line: switchCase.sourceInfo.line,\n expression,\n commands,\n };\n}\n\n/**\n * @param {Commands.Switch} switchCommand\n * */\nfunction switchWalker (switchCommand) {\n const expression = expressionWalker(switchCommand.expression);\n const cases = switchCommand.cases.map(switchCaseWalker);\n return {\n type: \"switch\",\n expression,\n cases,\n };\n}\n\n/**\n * @param {Commands.Return} returnCommand\n * */\nfunction returnWalker (returnCommand) {\n const expression = expressionWalker(returnCommand.expression);\n return {\n type: \"return\",\n expression,\n };\n}\n\nfunction breakWalker (_) {\n return { type: \"break\" };\n}\n\n/**\n * @param {Commands.For} forLoop\n * */\nfunction forWalker (forLoop) {\n const var_attribution = expressionWalker(forLoop.for_id);\n const var_initial = expressionWalker(forLoop.for_from);\n const condition = expressionWalker(forLoop.for_to);\n const step_expression = forLoop.for_pass\n ? expressionWalker(forLoop.for_pass)\n : [];\n const commands = forLoop.commands.map(commandWalker);\n return {\n type: \"repeatNtimes\",\n var_attribution,\n var_initial,\n condition,\n step_expression,\n commands,\n };\n}\n\n/**\n * @param {Commands.While} whileLoop\n * */\nfunction whileWalker (whileLoop) {\n const expression = expressionWalker(whileLoop.expression);\n const commands = whileLoop.commands.map(commandWalker);\n let type = whileLoop.testFirst ? \"whiletrue\" : \"dowhiletrue\";\n return {\n type,\n expression,\n commands,\n };\n}\n\n/**\n * @param {Commands.IfThenElse} ifthenelse\n * */\nfunction ifThenElseWalker (ifthenelse) {\n //ifthenelse.\n const expression = expressionWalker(ifthenelse.condition);\n const ifTrue = ifthenelse.ifTrue.commands.map(commandWalker);\n let ifFalse = [];\n if (ifthenelse.ifFalse) {\n if (ifthenelse.ifFalse instanceof Commands.CommandBlock) {\n ifFalse = ifthenelse.ifFalse.commands.map(commandWalker);\n } else {\n ifFalse = [ifThenElseWalker(ifthenelse.ifFalse)];\n }\n }\n return {\n type: \"iftrue\",\n expression,\n ifTrue,\n ifFalse,\n };\n}\n\n/**\n * @param {Commands.Assign} assingment\n * */\nfunction assignmentWalker (assingment) {\n let variable = null;\n if (assingment instanceof Commands.ArrayIndexAssign) {\n const line = expressionWalker(assingment.line);\n let arrayClass = \"vector\";\n let column = null;\n if (assingment.column) {\n arrayClass = \"matrix\";\n column = expressionWalker(assingment.column);\n }\n variable = [\n {\n instance: \"expression\",\n type: TYPES.VARIABLE,\n class: arrayClass,\n column: column,\n line: line,\n value: assingment.id,\n },\n ];\n } else {\n variable = [\n { instance: \"expression\", type: TYPES.VARIABLE, value: assingment.id },\n ];\n }\n const expression = expressionWalker(assingment.expression);\n return {\n type: \"attribution\",\n variable,\n expression,\n };\n}\n\n/**\n * @param {Command} command\n * */\nfunction commandWalker (command) {\n let parsedCommand = null;\n if (command instanceof Commands.FunctionCall) {\n parsedCommand = functionCallWalker(command);\n } else if (command instanceof Commands.Assign) {\n parsedCommand = assignmentWalker(command);\n } else if (command instanceof Commands.IfThenElse) {\n parsedCommand = ifThenElseWalker(command);\n } else if (command instanceof Commands.While) {\n parsedCommand = whileWalker(command);\n } else if (command instanceof Commands.Break) {\n parsedCommand = breakWalker(command);\n } else if (command instanceof Commands.Return) {\n parsedCommand = returnWalker(command);\n } else if (command instanceof Commands.Switch) {\n parsedCommand = switchWalker(command);\n } else if (command instanceof Commands.For) {\n parsedCommand = forWalker(command);\n } else {\n throw new Error(\"not implemented\");\n }\n parsedCommand.line = command.sourceInfo.line;\n return parsedCommand;\n}\n\n/**\n * @param {Commands.FunctionCall} functionCall\n * */\nfunction functionCallWalker (functionCall) {\n let name = functionCall.id;\n if (name.indexOf(\".\") !== -1) {\n name = name.split(\".\")[1];\n }\n const parameters = functionCall.actualParameters.map(expressionWalker);\n if (name === \"$write\") {\n const lastInput = parameters[parameters.length - 1][0];\n // if lastInput is an object with value === '\\n', newLine is true\n const newLine = lastInput.value && lastInput.value.match(/^\\n$/) !== null;\n const content = newLine\n ? parameters.slice(0, parameters.length - 1)\n : parameters;\n return {\n type: \"writer\",\n newLine,\n content,\n };\n }\n if (name === \"$read\") {\n return {\n type: \"reader\",\n variable: parameters[0],\n };\n }\n return {\n type: \"functioncall\",\n parameters_list: parameters,\n name: functionCall.id,\n };\n}\n/**\n * @param {Commands.Function} func\n * */\nfunction functionWalker (func) {\n const funcDeclaration = {\n name: func.name,\n line: func.sourceInfo.line,\n return_type: \"\",\n return_dimensions: 0,\n parameters_list: [],\n variables_list: [],\n commands: [],\n };\n if (func.returnType instanceof ArrayType) {\n funcDeclaration.return_type = func.returnType.innerType.value;\n funcDeclaration.return_dimensions = func.returnType.dimensions;\n } else {\n funcDeclaration.return_type = func.returnType.value;\n }\n funcDeclaration.parameters_list = func.formalParameters.map(\n functionParameterWalker\n );\n funcDeclaration.variables_list = func.variablesDeclarations.map(\n variableDeclarationWalker\n );\n funcDeclaration.commands = func.commands.map(commandWalker);\n return funcDeclaration;\n}\n\n/**\n * @param {Commands.FormalParameter} formalParameter\n * */\nfunction functionParameterWalker (formalParameter) {\n const variable = {\n name: formalParameter.id,\n line: formalParameter.sourceInfo.line,\n type: \"\",\n rows: 0,\n columns: 0,\n dimension: 0,\n value: 0,\n is_const: false,\n reference: formalParameter.byRef,\n };\n if (formalParameter.type instanceof ArrayType) {\n variable.type = formalParameter.type.innerType.value;\n variable.dimension = formalParameter.type.dimensions;\n } else {\n variable.type = formalParameter.type.value;\n }\n return variable;\n}\n\n/**\n * @param {Commands.Declaration} command\n * @param {boolean} global\n * */\nfunction variableDeclarationWalker (command, global = false) {\n const variable = {\n name: command.id,\n line: command.sourceInfo.line,\n type: \"\",\n rows: 0,\n columns: 0,\n dimension: 0,\n value: 0,\n is_const: false,\n };\n variable.is_const = global && command.isConst;\n if (command instanceof Commands.ArrayDeclaration) {\n // array\n const lines = expressionWalker(command.lines).pop();\n variable.type = command.type.innerType.value;\n if (command.isVector) {\n variable.columns = lines.value;\n variable.dimension = 1;\n const values = command.initial.value.map((exp) =>\n variableInitialWalker(exp)\n );\n variable.value = values;\n } else {\n const columns = expressionWalker(command.columns).pop();\n variable.dimension = 2;\n variable.rows = lines.value;\n variable.columns = columns.value;\n const values = command.initial.value.map((rows) =>\n rows.value.map((exp) => variableInitialWalker(exp))\n );\n variable.value = values;\n }\n } else {\n // atomic\n variable.type = command.type.value;\n variable.value = variableInitialWalker(command.initial);\n }\n return variable;\n}\n\n/**\n * @param {any} expression\n * */\nfunction variableInitialWalker (expression) {\n if (expression instanceof Expressions.UnaryApp) {\n const left = variableInitialWalker(expression.left);\n const opType = getOpType(expression.op);\n if (opType !== TYPES.ARITHMETIC) {\n throw new Error(\n \"invalid variable initial value: \" + expression.toString()\n );\n }\n return `${expression.op.value}${left}`;\n } else if (expression instanceof Expressions.BoolLiteral) {\n const value = expression.value;\n return convertBoolToString(value);\n } else if (expression instanceof Literal) {\n let value = expression.value;\n if (expression.value.toNumber) {\n if (\n Types.REAL.isCompatible(expression.type) &&\n expression.value.decimalPlaces() == 0\n ) {\n value = expression.value.toFixed(2);\n } else {\n value = expression.value.toNumber();\n }\n }\n return value;\n }\n throw new Error(\"invalid variable initial value: \" + expression.toString());\n}\n\n/**\n *\n * @return {[]}\n **/\nfunction expressionWalker (expression) {\n let result;\n if (expression instanceof Expressions.VariableLiteral) {\n result = [\n { instance: \"expression\", type: TYPES.VARIABLE, value: expression.id },\n ];\n } else if (expression instanceof Expressions.FunctionCall) {\n const funcObj = {\n instance: \"expression\",\n type: TYPES.FUNCTION,\n value: expression.id,\n };\n const paramsList = expression.actualParameters.map((e) =>\n expressionWalker(e)\n );\n //const params = Array.prototype.concat.apply([], paramsList);\n funcObj.params = paramsList;\n result = [funcObj];\n } else if (expression instanceof Expressions.UnaryApp) {\n console.log(expression);\n const left = expressionWalker(expression.left);\n const opType = getOpType(expression.op);\n const opValue = translateOp(opType, expression.op);\n result = [{ instance: \"operator\", type: opType, value: opValue }, ...left];\n } else if (expression instanceof Expressions.InfixApp) {\n const left = expressionWalker(expression.left);\n const right = expressionWalker(expression.right);\n const opType = getOpType(expression.op);\n const opValue = translateOp(opType, expression.op);\n result = [\n ...left,\n { instance: \"operator\", type: opType, value: opValue },\n ...right,\n ];\n } else if (expression instanceof Expressions.ArrayAccess) {\n const line = expressionWalker(expression.line);\n let arrayClass = \"vector\";\n let column = null;\n if (expression.column) {\n arrayClass = \"matrix\";\n column = expressionWalker(expression.column);\n }\n result = [\n {\n instance: \"expression\",\n type: TYPES.VARIABLE,\n class: arrayClass,\n column: column,\n line: line,\n value: expression.id,\n },\n ];\n } else if (expression instanceof Expressions.BoolLiteral) {\n const value = expression.value;\n result = [\n {\n instance: \"expression\",\n class: \"simple\",\n type: TYPES.CONST,\n value: convertBoolToString(value),\n },\n ];\n } else {\n let value = expression.value;\n if (expression.value.toNumber) {\n if (\n Types.REAL.isCompatible(expression.type) &&\n expression.value.decimalPlaces() == 0\n ) {\n value = expression.value.toFixed(2);\n } else {\n value = expression.value.toNumber();\n }\n }\n result = [\n {\n instance: \"expression\",\n class: \"simple\",\n type: TYPES.CONST,\n value: value,\n },\n ];\n }\n if (expression.parenthesis) return [\"(\", ...result, \")\"];\n else return result;\n}\n\nexport function parseExpression (text) {\n const parser = IVProgParser.createParser(text);\n const expressionAST = parser.parseExpressionOR();\n return expressionWalker(expressionAST);\n}\n\n/**\n * @param {string} text\n * */\nexport function parseCode (text) {\n const parser = IVProgParser.createParser(text, false);\n const codeLinesMap = new Map();\n const tokens = Array.from(parser.lexer.reset(text));\n const tokenStream = [];\n for (const token of tokens) {\n if (token.type === parser.ruleNames.ERROR) {\n return null;\n }\n if (token.type === parser.ruleNames.COMMENTS) {\n for (let i = 0; i <= token.lineBreaks; i++) {\n if (codeLinesMap.has(i + token.line))\n codeLinesMap.get(i + token.line).push(token);\n else codeLinesMap.set(i + token.line, [token]);\n }\n continue;\n }\n if (token.type !== parser.ruleNames.WHITESPACE) {\n tokenStream.push(token);\n }\n }\n parser.fill(tokenStream);\n try {\n const program = parser.parseTree();\n const globals = program.global.map((decl) =>\n variableDeclarationWalker(decl, true)\n );\n const functions = program.functions.map(functionWalker);\n return { globals, functions };\n } catch (e) {\n console.error(e);\n return null;\n }\n}\n","/**\n * Author: @jhchen - https://github.com/jhchen\n * Modified by: @lucascalion - 23/07/2019\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nconst DIFF_DELETE = -1;\nconst DIFF_INSERT = 1;\nconst DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int|Object} [cursor_pos] Edit position in text1 or object with more info\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\n // Check for equality\n if (text1 === text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n if (cursor_pos != null) {\n const editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n if (editdiff) {\n return editdiff;\n }\n }\n\n // Trim off common prefix (speedup).\n let commonlength = diff_commonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n const diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs, _fix_unicode);\n return diffs;\n}\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n let diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n const i = longtext.indexOf(shorttext);\n if (i !== -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length === 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n}\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n const text1_length = text1.length;\n const text2_length = text2.length;\n const max_d = Math.ceil((text1_length + text2_length) / 2);\n const v_offset = max_d;\n const v_length = 2 * max_d;\n const v1 = new Array(v_length);\n const v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n const delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n const front = (delta % 2 !== 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n let k1start = 0;\n let k1end = 0;\n let k2start = 0;\n let k2end = 0;\n for (let d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1_offset = v_offset + k1;\n let x1;\n if (k1 === -d || (k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n let y1 = x1 - k1;\n while (\n x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) === text2.charAt(y1)\n ) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n const k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n // Mirror x2 onto top-left coordinate system.\n const x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detfrontected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2_offset = v_offset + k2;\n let x2;\n if (k2 === -d || (k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n let y2 = x2 - k2;\n while (\n x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\n ) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n const k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n const x1 = v1[k1_offset];\n const y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n}\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n const text1a = text1.substring(0, x);\n const text2a = text2.substring(0, y);\n const text1b = text1.substring(x);\n const text2b = text2.substring(y);\n\n // Compute both diffs serially.\n const diffs = diff_main(text1a, text2a);\n const diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n}\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerstart = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)\n ) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerend = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)\n ) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n const seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n let j = -1;\n let best_common = '';\n let best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {\n const prefixLength = diff_commonPrefix(\n longtext.substring(i), shorttext.substring(j));\n const suffixLength = diff_commonSuffix(\n longtext.substring(0, i), shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(\n j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [\n best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common\n ];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n const hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n const hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n let hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n let text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n const mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n}\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n let pointer = 0;\n let count_delete = 0;\n let count_insert = 0;\n let text_delete = '';\n let text_insert = '';\n let commonlength;\n let previous_equality;\n while (pointer < diffs.length) {\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n diffs.splice(pointer, 1);\n continue;\n }\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n previous_equality = pointer - count_insert - count_delete - 1;\n if (fix_unicode) {\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\n // we assume that the old and new text in the diff are complete and correct\n // unicode-encoded JS strings, but the tuple boundaries may fall between\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\n // of the previous equality and the beginning of this equality. this may create\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\n // particular case, both equalities go away, we absorb any previous inequalities,\n // and we keep scanning for the next equality before rewriting the tuples.\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n const stray = diffs[previous_equality][1].slice(-1);\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\n text_delete = stray + text_delete;\n text_insert = stray + text_insert;\n if (!diffs[previous_equality][1]) {\n // emptied out previous equality, so delete it and include previous delete/insert\n diffs.splice(previous_equality, 1);\n pointer--;\n var k = previous_equality - 1;\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n count_insert++;\n text_insert = diffs[k][1] + text_insert;\n k--;\n }\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n count_delete++;\n text_delete = diffs[k][1] + text_delete;\n k--;\n }\n previous_equality = k;\n }\n }\n if (starts_with_pair_end(diffs[pointer][1])) {\n const stray = diffs[pointer][1].charAt(0);\n diffs[pointer][1] = diffs[pointer][1].slice(1);\n text_delete += stray;\n text_insert += stray;\n }\n }\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n // for empty equality not at end, wait for next equality\n diffs.splice(pointer, 1);\n break;\n }\n if (text_delete.length > 0 || text_insert.length > 0) {\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n if (text_delete.length > 0 && text_insert.length > 0) {\n // Factor out any common prefixes.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if (previous_equality >= 0) {\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixes.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] =\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n const n = count_insert + count_delete;\n if (text_delete.length === 0 && text_insert.length === 0) {\n diffs.splice(pointer - n, n);\n pointer = pointer - n;\n } else if (text_delete.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 1;\n } else if (text_insert.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n pointer = pointer - n + 1;\n } else {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 2;\n }\n }\n if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n let changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL &&\n diffs[pointer + 1][0] === DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs, fix_unicode);\n }\n}\n\nfunction is_surrogate_pair_start(charCode) {\n return charCode >= 0xD800 && charCode <= 0xDBFF;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\n}\n\nfunction starts_with_pair_end(str) {\n return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n const ret = [];\n for (let i = 0; i < tuples.length; i++) {\n if (tuples[i][1].length > 0) {\n ret.push(tuples[i]);\n }\n }\n return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n return null;\n }\n return remove_empty_tuples([\n [DIFF_EQUAL, before],\n [DIFF_DELETE, oldMiddle],\n [DIFF_INSERT, newMiddle],\n [DIFF_EQUAL, after]\n ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n // note: this runs after equality check has ruled out exact equality\n const oldRange = typeof cursor_pos === 'number' ?\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n const newRange = typeof cursor_pos === 'number' ?\n null : cursor_pos.newRange;\n // take into account the old and new selection to generate the best diff\n // possible for a text edit. for example, a text change from \"xxx\" to \"xx\"\n // could be a delete or forwards-delete of any one of the x's, or the\n // result of selecting two of the x's and typing \"x\".\n const oldLength = oldText.length;\n const newLength = newText.length;\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n // see if we have an insert or delete before or after cursor\n const oldCursor = oldRange.index;\n const oldBefore = oldText.slice(0, oldCursor);\n const oldAfter = oldText.slice(oldCursor);\n const maybeNewCursor = newRange ? newRange.index : null;\n editBefore: {\n // is this an insert or delete right before oldCursor?\n const newCursor = oldCursor + newLength - oldLength;\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n break editBefore;\n }\n if (newCursor < 0 || newCursor > newLength) {\n break editBefore;\n }\n const newBefore = newText.slice(0, newCursor);\n const newAfter = newText.slice(newCursor);\n if (newAfter !== oldAfter) {\n break editBefore;\n }\n const prefixLength = Math.min(oldCursor, newCursor);\n const oldPrefix = oldBefore.slice(0, prefixLength);\n const newPrefix = newBefore.slice(0, prefixLength);\n if (oldPrefix !== newPrefix) {\n break editBefore;\n }\n const oldMiddle = oldBefore.slice(prefixLength);\n const newMiddle = newBefore.slice(prefixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n }\n editAfter: {\n // is this an insert or delete right after oldCursor?\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n break editAfter;\n }\n const cursor = oldCursor;\n const newBefore = newText.slice(0, cursor);\n const newAfter = newText.slice(cursor);\n if (newBefore !== oldBefore) {\n break editAfter;\n }\n const suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n const oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n const newSuffix = newAfter.slice(newAfter.length - suffixLength);\n if (oldSuffix !== newSuffix) {\n break editAfter;\n }\n const oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n const newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n }\n }\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\n replaceRange: {\n // see if diff could be a splice of the old selection range\n const oldPrefix = oldText.slice(0, oldRange.index);\n const oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n const prefixLength = oldPrefix.length;\n const suffixLength = oldSuffix.length;\n if (newLength < prefixLength + suffixLength) {\n break replaceRange;\n }\n const newPrefix = newText.slice(0, prefixLength);\n const newSuffix = newText.slice(newLength - suffixLength);\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n break replaceRange;\n }\n const oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n const newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n }\n }\n\n return null;\n}\n\nfunction diff(text1, text2, cursor_pos) {\n // only pass fix_unicode=true at the top level, not when diff_main is\n // recursively invoked\n return diff_main(text1, text2, cursor_pos, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nexport default diff;\n","import { DOMConsole } from \"../io/domConsole\";\nimport { getInstance } from \"../services/localizedStringsService\";\n\nconst LocalizedStrings = getInstance();\n\nexport class TestConsole {\n\n\n constructor (inputList) {\n this.index = 0;\n this.inputList = inputList;\n this.list = [];\n this.currentLine = null;\n }\n\n writeRawHTML (text) {\n this._appendTextLn(text);\n }\n write (text, newLine = false) {\n this._appendText(text, DOMConsole.USER, newLine);\n }\n\n info (text) {\n this._appendTextLn(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendTextLn(text, DOMConsole.ERR);\n }\n\n _appendText (text, _type, newLine = false) {\n if (this.currentLine == null) {\n this.currentLine = this.list.push('') - 1;\n }\n\n this.list[this.currentLine] += text;\n if (newLine) {\n this.currentLine = null;\n }\n }\n\n _appendTextLn (text) {\n this.list.push(text);\n this.currentLine = null;\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n requestInput () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.inputList.length) {\n resolve(this.inputList[this.index]);\n this.index++;\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n\n sendOutput (text) {\n let output = '' + text;\n if (output.indexOf('\\n') !== -1) {\n const outputList = output.split('\\n');\n let last = outputList.pop();\n outputList.forEach( t => {\n t = t.replace(/\\t/g, '&#x0020;&#x0020;');\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length == 0)\n this.currentLine = null;\n else\n this.write(t, true);\n });\n last = last.replace(/\\t/g, '&#x0020;&#x0020;');\n last = last.replace(/\\s/g, \"&#x0020;\");\n if (last.length != 0)\n this.write(last);\n } else {\n output = output.replace(/\\t/g, '&#x0020;&#x0020;');\n output = output.replace(/\\s/g, \"&#x0020;\");\n this.write(output);\n }\n }\n}\n","import { LanguageService } from \"./../services/languageService\";\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport { Operators } from \"./../ast/operators\";\n\n/**\n * source: https://pawelgrzybek.com/page-scroll-in-vanilla-javascript/\n *\n */\nexport function scrollIt (\n destination,\n duration = 200,\n easing = \"linear\",\n callback = null\n) {\n const easings = {\n linear (t) {\n return t;\n },\n easeInQuad (t) {\n return t * t;\n },\n easeOutQuad (t) {\n return t * (2 - t);\n },\n easeInOutQuad (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic (t) {\n return t * t * t;\n },\n easeOutCubic (t) {\n return --t * t * t + 1;\n },\n easeInOutCubic (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart (t) {\n return t * t * t * t;\n },\n easeOutQuart (t) {\n return 1 - --t * t * t * t;\n },\n easeInOutQuart (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n },\n easeInQuint (t) {\n return t * t * t * t * t;\n },\n easeOutQuint (t) {\n return 1 + --t * t * t * t * t;\n },\n easeInOutQuint (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n },\n };\n\n const start = window.pageYOffset;\n const startTime =\n \"now\" in window.performance ? performance.now() : new Date().getTime();\n\n const documentHeight = Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n );\n const windowHeight =\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.getElementsByTagName(\"body\")[0].clientHeight;\n const destinationOffset =\n typeof destination === \"number\" ? destination : destination.offsetTop;\n const destinationOffsetToScroll = Math.round(\n documentHeight - destinationOffset < windowHeight\n ? documentHeight - windowHeight\n : destinationOffset\n );\n\n if (\"requestAnimationFrame\" in window === false) {\n window.scroll(0, destinationOffsetToScroll);\n if (callback) {\n callback();\n }\n return;\n }\n\n function scroll () {\n const now =\n \"now\" in window.performance ? performance.now() : new Date().getTime();\n const time = Math.min(1, (now - startTime) / duration);\n const timeFunction = easings[easing](time);\n window.scroll(\n 0,\n Math.ceil(timeFunction * (destinationOffsetToScroll - start) + start)\n );\n\n if (window.pageYOffset === destinationOffsetToScroll) {\n if (callback) {\n callback();\n }\n return;\n }\n\n requestAnimationFrame(scroll);\n }\n\n scroll();\n}\n\n/**\n *\n * source: https://stackoverflow.com/a/16270434\n */\nexport function isElementInViewport (el) {\n const rect = el.getBoundingClientRect();\n\n return (\n rect.bottom > 0 &&\n rect.right > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.top < (window.innerHeight || document.documentElement.clientHeight)\n );\n}\n\nlet cacheMainList = null;\nlet cacheOp = null;\n\nfunction fillCache () {\n if (cacheMainList == null) {\n cacheMainList = [];\n const mainList = [\n \"RK_PROGRAM\",\n \"RK_REAL\",\n \"RK_VOID\",\n \"RK_BOOLEAN\",\n \"RK_STRING\",\n \"RK_INTEGER\",\n \"RK_CHARACTER\",\n \"RK_SWITCH\",\n \"RK_CASE\",\n \"RK_DEFAULT\",\n \"RK_CONST\",\n \"RK_FUNCTION\",\n \"RK_RETURN\",\n \"RK_FOR\",\n \"RK_BREAK\",\n \"RK_DO\",\n \"RK_WHILE\",\n \"RK_IF\",\n \"RK_ELSE\",\n \"RK_FALSE\",\n \"RK_TRUE\",\n ];\n const lexer = LanguageService.getCurrentLexer();\n const names = lexer.getReservedKeys();\n for (let key = 0; key < mainList.length; ++key) {\n const word = mainList[key];\n const keyword = names[word];\n cacheMainList.push(keyword);\n }\n }\n if (cacheOp == null) {\n cacheOp = [];\n const logicOpList = [\n Operators.AND.value,\n Operators.OR.value,\n Operators.NOT.value,\n ];\n for (let op = 0; op < logicOpList.length; ++op) {\n const lOp = `logic_operator_${logicOpList[op]}`;\n cacheOp.push(LocalizedStrings.getUI(lOp));\n }\n }\n}\n\nexport function isKeyword (text) {\n fillCache();\n for (let key = 0; key < cacheMainList.length; ++key) {\n const keyword = cacheMainList[key];\n if (keyword == text) {\n return true;\n }\n }\n // not in main list, check op\n for (let op = 0; op < cacheOp.length; op++) {\n const lOp = cacheOp[op];\n if (lOp == text) {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidIdentifier (identifier_str) {\n const validRegex = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n if (!validRegex) {\n return false;\n }\n return !isKeyword(identifier_str);\n}\n\nexport function getCodeEditorModeConfig () {\n const blockList = [\n \"RK_SWITCH\",\n \"RK_PROGRAM\",\n \"RK_CASE\",\n \"RK_DEFAULT\",\n \"RK_FOR\",\n \"RK_FOR_ALT\",\n \"RK_FUNCTION\",\n \"RK_DO\",\n \"RK_WHILE\",\n \"RK_WHILE_ALT\",\n \"RK_IF\",\n \"RK_ELSE\",\n ];\n const keywordsList = [\n \"RK_CONST\",\n \"RK_RETURN\",\n \"RK_BREAK\",\n \"RK_FOR_FROM\",\n \"RK_FOR_TO\",\n \"RK_FOR_PASS\",\n \"RK_DO_UNTIL\",\n ];\n const typeList = [\n \"RK_REAL\",\n \"RK_VOID\",\n \"RK_BOOLEAN\",\n \"RK_STRING\",\n \"RK_INTEGER\",\n \"RK_CHARACTER\",\n ];\n const atomList = [\"RK_FALSE\", \"RK_TRUE\"];\n\n const case_default = [];\n const blocks = [];\n const keywords = [];\n const types = [];\n const atoms = [];\n let switchString = \"\";\n\n cacheMainList = [];\n const lexer = LanguageService.getCurrentLexer();\n const names = lexer.getReservedKeys();\n //console.debug(names);\n blockList.forEach((v) => {\n const keyword = names[v];\n const value = keyword;\n cacheMainList.push(value);\n keywords.push(value);\n blocks.push(value);\n if (v == \"RK_SWITCH\") {\n switchString = value;\n } else if (v == \"RK_CASE\" || v == \"RK_DEFAULT\") {\n case_default.push(value);\n }\n });\n keywordsList.forEach((v) => {\n const keyword = names[v];\n const value = keyword;\n cacheMainList.push(value);\n keywords.push(value);\n });\n typeList.forEach((v) => {\n const keyword = names[v];\n const value = keyword;\n cacheMainList.push(value);\n types.push(value);\n });\n atomList.forEach((v) => {\n const keyword = names[v];\n const value = keyword;\n cacheMainList.push(value);\n atoms.push(value);\n });\n\n cacheOp = [];\n const logicOpList = [\"NOT_OPERATOR\", \"OR_OPERATOR\", \"AND_OPERATOR\"];\n\n logicOpList.forEach((v) => {\n const keyword = names[v];\n const value = keyword;\n cacheOp.push(value);\n keywords.push(value);\n });\n cacheMainList.push(lexer.getLangFuncs().main_function);\n return {\n case_default: case_default,\n atoms: atoms,\n keywords: keywords,\n switchString: switchString,\n types: types,\n blocks: blocks,\n };\n}\n\n/**\n * Source: https://gist.github.com/andrei-m/982927\n * @param {string} a\n * @param {string} b\n */\nexport function levenshteinDistance (a, b) {\n if (a.length == 0) return b.length;\n if (b.length == 0) return a.length;\n\n const matrix = [];\n\n // increment along the first column of each row\n let i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n let j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charCodeAt(i - 1) == a.charCodeAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1, // substitution\n Math.min(\n matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j] + 1\n )\n ); // deletion\n }\n }\n }\n return matrix[b.length][a.length];\n}\n\nlet win = null;\nexport function openAssessmentDetail (event) {\n event.preventDefault();\n const page_code = event.currentTarget.dataset.page;\n if (win != null) {\n win.close();\n }\n win = window.open(\"\", \"DetailWindow\", \"width=550,height=600\");\n win.document.open();\n win.document.write(page_code);\n win.document.close();\n}\n\nexport function range (size, startAt = 0) {\n return [...Array(size).keys()].map((i) => i + startAt);\n}\n\n/**\n *\n * @param {number} ms\n */\nexport async function sleep (ms) {\n return new Promise((res, _) => setTimeout(res, ms));\n}\n","import * as GlobalsManagement from './globals';\nimport * as FunctionsManagement from './functions';\n\nwindow.block_render = false;\n\nexport function renderAlgorithm () {\n\tif (window.block_render) {\n\t\treturn;\n\t}\n\tif (window.draging) {\n\t\treturn;\n\t}\n\twindow.block_render = true;\n\n \t$('.all_functions').children().off();\n\t$('.all_functions').empty();\n\n\t$('.list_globals').children().off();\n\t$('.list_globals').empty();\t\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tFunctionsManagement.renderFunction(window.program_obj.functions[i]);\n\t}\n\n\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\tGlobalsManagement.renderGlobal(window.program_obj.globals[i]);\n\t}\t\n\n\tsetTimeout(function(){ window.block_render = false; }, 100);\n\n\tif (settingsFilter && settingsFilter[0]) {\n blockAllEditingOptions();\n\t\t} \n\t\n\t$('.command_drag').popup({\n content : LocalizedStrings.getUI(\"text_move_command\"),\n delay: {\n show: 1000,\n hide: 0\n }\n });\n\t\t\n}","/* eslint-disable @typescript-eslint/no-use-before-define */\n/* globals $*/\nimport { Types } from \"./types\";\nimport * as Models from \"./ivprog_elements\";\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport * as Utils from \"./utils\";\n\nexport function generate () {\n $(\".ivprog_visual_panel\")\n .find(\".error_icon\")\n .remove();\n\n let code = LocalizedStrings.getUI(\"program\") + \" { \";\n\n code += globalsCode();\n\n code += \"\\n\";\n\n let has_error = false;\n\n for (let i = 0; i < window.program_obj.functions.length; i++) {\n const n_code = functionsCode(window.program_obj.functions[i]);\n if (n_code == null) {\n has_error = true;\n }\n code += n_code;\n code += \"\\n\";\n }\n\n code += \"\\n}\";\n\n if (has_error) {\n return null;\n } else {\n return code;\n }\n}\n\nfunction functionsCode (function_obj) {\n let ret = \"\\n\\t\" + LocalizedStrings.getUI(\"function\") + \" \";\n\n const has_error = false;\n\n switch (function_obj.return_type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\");\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\");\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\");\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\");\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\");\n break;\n case Types.VOID:\n ret += LocalizedStrings.getUI(\"type_void\");\n break;\n }\n ret += \" \";\n\n if (function_obj.return_dimensions == 1) {\n ret += \"[] \";\n } else if (function_obj.return_dimensions == 2) {\n ret += \"[][] \";\n }\n if (function_obj.is_main) {\n ret += LocalizedStrings.getUI(\"start\");\n } else {\n ret += function_obj.name;\n }\n ret += \" ( \";\n for (let j = 0; j < function_obj.parameters_list.length; j++) {\n ret += parametersCode(function_obj.parameters_list[j]);\n if (j + 1 < function_obj.parameters_list.length) {\n ret += \", \";\n }\n }\n\n ret += \" ) {\";\n\n for (let j = 0; j < function_obj.variables_list.length; j++) {\n ret += variablesCode(function_obj.variables_list[j]);\n }\n\n for (let j = 0; j < function_obj.commands.length; j++) {\n //try {\n ret += commandsCode(function_obj.commands[j]);\n /*} catch (err) {\n\n has_error = true;\n\n console.error(err.message);\n\n var todos = $('body').find('.command_container');\n\n for (var i = 0; i < todos.length; i++) {\n if ($(todos[i]).data('command') == function_obj.commands[j]) {\n $( todos[i] ).prepend( ' <i class=\"ui icon red exclamation triangle error_icon\"></i> ' );\n break;\n }\n }\n\n }*/\n }\n\n ret += \"\\n\\t}\";\n\n if (has_error) {\n return null;\n } else {\n return ret;\n }\n}\n\nfunction commandsCode (command_obj, indentation = 2) {\n switch (command_obj.type) {\n case Models.COMMAND_TYPES.break:\n return breaksCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.comment:\n return commentsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.reader:\n return readersCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.writer:\n return writersCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.functioncall:\n return functioncallsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.attribution:\n return attributionsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.whiletrue:\n return whiletruesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.dowhiletrue:\n return doWhilesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.iftrue:\n return iftruesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.repeatNtimes:\n return repeatNtimesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.switch:\n return switchsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.return:\n return returnsCode(command_obj, indentation);\n }\n}\n\nfunction returnsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_return\");\n\n if (command_obj.variable_value_menu) {\n try {\n ret += \" \" + elementExpressionCode(command_obj.variable_value_menu);\n //ret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);\n } catch (err) {\n //Empty block\n }\n }\n\n return ret;\n}\n\nfunction breaksCode (_command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_break\");\n\n return ret;\n}\n\nfunction switchsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_switch\") + \" ( \";\n\n ret += variableValueMenuCode(command_obj.variable);\n\n ret += \" ) { \";\n\n if (command_obj.cases) {\n for (let i = 0; i < command_obj.cases.length; i++) {\n ret += switchcasesCode(command_obj.cases[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n ret += \"} \";\n\n return ret;\n}\n\nfunction switchcasesCode (switchcase, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_case\") + \" \";\n ret += variableValueMenuCode(switchcase.variable_value_menu);\n ret += \" :\";\n\n if (switchcase.commands_block) {\n for (let i = 0; i < switchcase.commands_block.length; i++) {\n ret += commandsCode(switchcase.commands_block[i], indentation + 1);\n }\n }\n\n return ret;\n}\n\nexport function repeatNtimesHeader (command_obj) {\n let ret = \"\";\n if (command_obj.var_attribution) {\n ret += '<span class=\"repeatN_text_par_1\">';\n ret += variableValueMenuCode(command_obj.var_attribution);\n ret += '</span>';\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_from\")} `;\n ret += '<span class=\"repeatN_text_par_2\">';\n ret += variableValueMenuCode(command_obj.expression1);\n ret += '</span>';\n }\n\n if (command_obj.expression2) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_to\")} `;\n ret += '<span class=\"repeatN_text_par_3\">';\n ret += variableValueMenuCode(command_obj.expression2);\n ret += '</span>';\n }\n\n if (command_obj.expression3) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_pass\")} `;\n ret += '<span class=\"repeatN_text_par_4\">';\n switch (command_obj.expression3.itens[1]) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += \" +\";\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += \" -\";\n break;\n }\n ret += variableValueMenuCode(command_obj.expression3.itens[2]);\n ret += '</span>';\n }\n return ret;\n}\n\nfunction repeatNtimesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_for\") + \" \";\n\n if (command_obj.var_attribution) {\n ret += variableValueMenuCode(command_obj.var_attribution);\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_from\")} `;\n ret += variableValueMenuCode(command_obj.expression1);\n }\n\n if (command_obj.expression2) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_to\")} `;\n ret += variableValueMenuCode(command_obj.expression2);\n }\n\n if (command_obj.expression3) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_pass\")} `;\n switch (command_obj.expression3.itens[1]) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += \" +\";\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += \" -\";\n break;\n }\n ret += variableValueMenuCode(command_obj.expression3.itens[2]);\n }\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n return ret;\n}\n\nfunction iftruesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_if\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n } else {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"} \" + LocalizedStrings.getUI(\"text_else\") + \" {\";\n\n if (command_obj.commands_else) {\n for (let i = 0; i < command_obj.commands_else.length; i++) {\n ret += commandsCode(command_obj.commands_else[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n\n return ret;\n}\n\nfunction doWhilesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_do\") + \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"} \" + LocalizedStrings.getUI(\"text_code_do_until\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n\n if (command_obj.expression) {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n return ret;\n}\n\nfunction whiletruesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_while\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n if (command_obj.expression) {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n\n return ret;\n}\n\nfunction logicExpressionCode (expression) {\n let ret = \" ( \";\n\n if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.first_operand);\n } else if (\n expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.first_operand);\n } else {\n ret += variableValueMenuCode(expression.first_operand);\n }\n\n if (expression.operator) {\n switch (expression.operator) {\n case Models.LOGIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n case Models.LOGIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n case Models.LOGIC_COMPARISON.and:\n ret += \" && \";\n break;\n case Models.LOGIC_COMPARISON.or:\n ret += \" || \";\n break;\n }\n\n if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.second_operand);\n } else if (\n expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.second_operand);\n } else {\n ret += variableValueMenuCode(expression.second_operand);\n }\n }\n\n ret += \" ) \";\n\n return ret;\n}\n\nfunction arithmeticExpressionCode (expression) {\n let ret = \" ( \";\n\n if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.first_operand);\n } else if (\n expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.first_operand);\n } else {\n ret += variableValueMenuCode(expression.first_operand);\n }\n\n switch (expression.operator) {\n case Models.ARITHMETIC_COMPARISON.greater_than:\n ret += \" > \";\n break;\n case Models.ARITHMETIC_COMPARISON.less_than:\n ret += \" < \";\n break;\n case Models.ARITHMETIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n case Models.ARITHMETIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n ret += \" >= \";\n break;\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n ret += \" <= \";\n break;\n }\n\n if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.second_operand);\n } else if (\n expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.second_operand);\n } else {\n ret += variableValueMenuCode(expression.second_operand);\n }\n\n ret += \" ) \";\n\n return ret;\n}\n\nfunction attributionsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += variableValueMenuCode(command_obj.variable) + \" <- \";\n\n /*for (var i = 0; i < command_obj.expression.length; i++) {\n ret += elementExpressionCode(command_obj.expression[i]);\n }*/\n ret += elementExpressionCode(command_obj.expression);\n\n return ret;\n}\n\nexport function elementExpressionCode (expression_obj) {\n let ret = \"\";\n\n for (let i = 0; i < expression_obj.length; i++) {\n if (expression_obj[i].type) {\n ret += variableValueMenuCode(expression_obj[i]);\n } else if (expression_obj[i].type_op) {\n switch (expression_obj[i].item) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += \" + \";\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += \" - \";\n break;\n case Models.ARITHMETIC_TYPES.multiplication:\n ret += \" * \";\n break;\n case Models.ARITHMETIC_TYPES.division:\n ret += \" / \";\n break;\n case Models.ARITHMETIC_TYPES.module:\n ret += \" % \";\n break;\n\n case Models.LOGIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n\n case Models.LOGIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n\n case Models.LOGIC_COMPARISON.and:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_and\") + \" \";\n break;\n\n case Models.LOGIC_COMPARISON.or:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_or\") + \" \";\n break;\n\n case Models.LOGIC_COMPARISON.not:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_not\") + \" \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.greater_than:\n ret += \" > \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.less_than:\n ret += \" < \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n ret += \" >= \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n ret += \" <= \";\n break;\n case Models.EXPRESSION_TYPES.write_sep:\n ret += ', \" \", ';\n break;\n }\n } else {\n ret += \" \" + expression_obj[i] + \" \";\n }\n }\n\n return ret;\n}\n\nfunction functioncallsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += variableValueMenuCode(command_obj.function_called);\n\n return ret;\n}\n\nfunction readersCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_command_read\") + \" ( \";\n\n ret += variableValueMenuCode(command_obj.variable_value_menu);\n\n ret += \" ) \";\n return ret;\n}\n\nexport function variableValueMenuCode (variable_obj, is_return = false) {\n let ret = \"\";\n try {\n if (variable_obj.function_called) {\n if (variable_obj.function_called.name) {\n ret += variable_obj.function_called.name + \" ( \";\n } else {\n ret +=\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) + \" ( \";\n }\n\n if (variable_obj.parameters_list) {\n for (let i = 0; i < variable_obj.parameters_list.length; i++) {\n ret += variableValueMenuCode(variable_obj.parameters_list[i]);\n if (i + 1 < variable_obj.parameters_list.length) {\n ret += \", \";\n }\n }\n }\n\n ret += \" )\";\n } else if (variable_obj.content.type) {\n ret += variable_obj.content.name;\n\n if (\n variable_obj.content.dimensions == 1 &&\n variable_obj.dimensions != 1\n ) {\n ret += \" [ \" + variableValueMenuCode(variable_obj.column) + \" ] \";\n }\n\n if (\n variable_obj.content.dimensions == 2 &&\n variable_obj.dimensions != 2 && \n variable_obj.reference_dimensions == 1\n ) {\n ret += \" [ \" + variableValueMenuCode(variable_obj.row) + \" ] \";\n } else if (\n variable_obj.content.dimensions == 2 &&\n variable_obj.dimensions != 2\n ) {\n ret += \" [ \" + variableValueMenuCode(variable_obj.row) + \" ] \";\n ret += \" [ \" + variableValueMenuCode(variable_obj.column) + \" ] \";\n }\n } else {\n const content = String(variable_obj.content);\n if (isNaN(content)) {\n // console.debug(\"Content length: \", content.length);\n // console.debug(\"Char code at 0\", content.charCodeAt(0));\n const isBackslash = content.charCodeAt(0) === 92;\n if (content.length === 1 || (content.length === 2 && isBackslash)) {\n ret += `'${content}'`;\n } else {\n ret += '\"' + variable_obj.content + '\"';\n }\n } else if (content.length == 0) {\n ret += '\"\"';\n } else if (content.trim().length == 0) {\n ret += '\"' + content + '\"';\n } else {\n ret += variable_obj.content;\n }\n }\n } catch (err) {\n if (!is_return) {\n Utils.renderErrorMessage(\n variable_obj.dom_object,\n LocalizedStrings.getUI(\"inform_valid_content\")\n );\n throw err;\n }\n }\n\n return ret;\n}\n\nfunction writersCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_command_write\") + \" ( \";\n\n /*for (var i = 0; i < command_obj.content.length; i++) {\n ret += variableValueMenuCode(command_obj.content[i]);\n\n if ((i + 1) < command_obj.content.length) {\n ret += ' + ';\n }\n }*/\n\n ret += elementExpressionCode(command_obj.content);\n if (command_obj.newline) {\n ret += ', \"\\\\n\"';\n }\n\n ret += \" ) \";\n return ret;\n}\n\nfunction commentsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"// \";\n\n ret += command_obj.comment_text.content;\n return ret;\n}\n\nfunction parametersCode (parameter_obj) {\n let ret = \"\";\n switch (parameter_obj.type) {\n case Types.INTEGER:\n ret += \" \" + LocalizedStrings.getUI(\"type_integer\") + \" \";\n break;\n case Types.REAL:\n ret += \" \" + LocalizedStrings.getUI(\"type_real\") + \" \";\n break;\n case Types.TEXT:\n ret += \" \" + LocalizedStrings.getUI(\"type_text\") + \" \";\n break;\n case Types.BOOLEAN:\n ret += \" \" + LocalizedStrings.getUI(\"type_boolean\") + \" \";\n break;\n case Types.CHAR:\n ret += \" \" + LocalizedStrings.getUI(\"type_char\") + \" \";\n break;\n }\n if (parameter_obj.reference)\n ret += \"&\";\n\n ret += parameter_obj.name + \"\";\n\n if (parameter_obj.dimensions == 1) {\n ret += \" []\";\n } else if (parameter_obj.dimensions == 2) {\n ret += \" [][]\";\n }\n return ret;\n}\n\nfunction variablesCode (variable_obj) {\n let ret = \"\";\n\n const temp = variable_obj;\n\n ret += \"\\n\\t\\t\";\n\n if (temp.is_constant) {\n ret += \"const \";\n }\n switch (temp.type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\") + \" \";\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\") + \" \";\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\") + \" \";\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\") + \" \";\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\") + \" \";\n break;\n }\n ret += temp.name + \" \";\n\n if (temp.dimensions == 1) {\n ret += \"[\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j];\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += parseFloat(temp.value[j]).toFixed(2);\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += '\"' + temp.value[j] + '\"';\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n if (temp.value[j]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += \"'\" + temp.value[j] + \"'\";\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else if (temp.dimensions == 2) {\n ret += \"[\" + temp.rows + \"][\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k];\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += parseFloat(temp.value[j][k]).toFixed(2);\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += '\"' + temp.value[j][k] + '\"';\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n if (temp.value[j][k]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += \"'\" + temp.value[j][k] + \"'\";\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else {\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- \" + temp.value;\n break;\n case Types.REAL:\n ret += \"<- \" + parseFloat(temp.value).toFixed(2);\n break;\n case Types.TEXT:\n ret += '<- \"' + temp.value + '\"';\n break;\n case Types.BOOLEAN:\n ret += \"<- \";\n if (temp.value) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n break;\n case Types.CHAR:\n ret += \"<- '\" + temp.value + \"'\";\n break;\n }\n }\n\n return ret;\n}\n\nfunction globalsCode () {\n let ret = \"\";\n\n if (window.program_obj.globals) {\n for (let i = 0; i < window.program_obj.globals.length; i++) {\n const temp = window.program_obj.globals[i];\n\n ret += \"\\n\\t\";\n\n if (temp.is_constant) {\n ret += \"const \";\n }\n switch (temp.type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\");\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\");\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\");\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\");\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\");\n break;\n }\n ret += \" \" + temp.name + \" \";\n\n if (temp.dimensions == 1) {\n ret += \"[\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j];\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += parseFloat(temp.value[j]).toFixed(2);\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += '\"' + temp.value[j] + '\"';\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n if (temp.value[j]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += \"'\" + temp.value[j] + \"'\";\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else if (temp.dimensions == 2) {\n ret += \"[\" + temp.rows + \"][\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k];\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += parseFloat(temp.value[j][k]).toFixed(2);\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += '\"' + temp.value[j][k] + '\"';\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n if (temp.value[j][k]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += \"'\" + temp.value[j][k] + \"'\";\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else {\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- \" + temp.value;\n break;\n case Types.REAL:\n ret += \"<- \" + parseFloat(temp.value).toFixed(2);\n break;\n case Types.TEXT:\n ret += '<- \"' + temp.value + '\"';\n break;\n case Types.BOOLEAN:\n ret += \"<- \";\n if (temp.value) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n break;\n case Types.CHAR:\n ret += \"<- '\" + temp.value + \"'\";\n break;\n }\n }\n }\n }\n\n return ret;\n}\n","import * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as CommentsManagement from './commands/comment';\nimport * as ReadersManagement from './commands/reader';\nimport * as WritersManagement from './commands/writer';\nimport * as AttributionsManagement from './commands/attribution';\nimport * as IftruesManagement from './commands/iftrue';\nimport * as RepeatNtimesManagement from './commands/repeatNtimes';\nimport * as WhiletruesManagement from './commands/whiletrue';\nimport * as DowhiletruesManagement from './commands/dowhiletrue';\nimport * as SwitchesManagement from './commands/switch';\nimport * as FunctioncallsManagement from './commands/functioncall';\nimport * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport * as BreaksManagement from './commands/break';\nimport * as ReturnsManagement from './commands/return';\nimport { registerUserEvent, ActionTypes } from \"./../services/userLog\";\n\n// let has_element_created_draged = false;\n// let which_element_is_draged = null;\n\nexport function removeCommand (command, function_obj, dom_obj) {\n\n\tregisterUserEvent(function_obj.name, ActionTypes.REMOVE_COMMAND, command.type, '/', 0);\n\n\tif (function_obj.commands.indexOf(command) > -1) {\n\t\tfunction_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\t// Utilize dois parantNode, pois o primeiro é o div de comandos\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').commands_block.indexOf(command) > -1) {\n\t\t\tdom_obj.parent().parent().data('command').commands_block.splice\n\t\t\t(dom_obj.parent().parent().data('command').commands_block.indexOf(command), 1);\n\t\t\treturn true;\n\t\t}\t\n\t} catch (err) {}\n\t\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').type == Models.COMMAND_TYPES.iftrue) {\n\t\t\tif (dom_obj.parent().parent().data('command').commands_else.indexOf(command) > -1) {\n\t\t\t\tdom_obj.parent().parent().data('command').commands_else.splice\n\t\t\t\t(dom_obj.parent().parent().data('command').commands_else.indexOf(command), 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (err) {}\n\n\tif (dom_obj.parent().data('switchcase')) {\n\t\tdom_obj.parent().data('switchcase').commands_block.splice(dom_obj.parent().data('switchcase').commands_block.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nwindow.function_container_active = null;\n\nexport function createFloatingCommand (function_obj, function_container, command_type, mouse_event) {\n\n\tvar floatingObject;\n\n\tswitch (command_type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tfloatingObject = BreaksManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tfloatingObject = CommentsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tfloatingObject = ReadersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tfloatingObject = WritersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tfloatingObject = AttributionsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tfloatingObject = IftruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tfloatingObject = RepeatNtimesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tfloatingObject = WhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tfloatingObject = DowhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tfloatingObject = SwitchesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tfloatingObject = FunctioncallsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tfloatingObject = ReturnsManagement.createFloatingCommand();\n\t\t\tbreak;\n\t}\n\n\tfloatingObject.draggable().appendTo(\"body\");\n\n\t$('body').mouseup(function(evt) {\n\t manageCommand(function_obj, function_container, evt, command_type);\n\t $('body').off('mouseup');\n\t $('body').off('mouseover');\n\t});\n\n\tif (!function_container.hasClass('function_div') || function_container.length < 1) {\n\t\twindow.mouse_event = mouse_event;\n\t\tfunction_container = $(mouse_event.originalEvent.srcElement.closest('.function_div'));\n\t}\n\n\tfunction_container_active = function_container;\n\n\tfunction_container.find('.commands_list_div').on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\tfunction_container.find('.commands_list_div').find(\"*\").on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\n\tfunction_container.on('mouseout', function(event) {\n\t\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\t\tif (el.closest('.commands_list_div').length < 1) {\n\t\t\twindow.ghostDiv.remove();\n\t\t}\n\t});\n\t\n\tfloatingObject.css(\"position\", \"absolute\");\n\tmouse_event.type = \"mousedown.draggable\";\n\tmouse_event.target = floatingObject[0];\n\tfloatingObject.css(\"left\", mouse_event.pageX - window.divx);\n\tfloatingObject.css(\"top\", mouse_event.pageY);\n\tfloatingObject.trigger(mouse_event);\n}\n\nwindow.divx = 100;\nwindow.ghostDiv = $('<div class=\"ghost_div\">');\nwindow.active_container = null;\n\nfunction addGhostToEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.command_container');\n\n\tif (container.hasClass('switch')) {\n\t\tcontainer = $(evt.target).closest('.case_div');\t\t\n\t}\n\n\tif (!container.hasClass('dowhiletrue') && !container.hasClass('iftrue') && !container.hasClass('repeatNtimes') \n\t\t\t\t&& !container.hasClass('case_div') && !container.hasClass('whiletrue')) {\n\t\taddGhostToNotEmptyBlock(element, evt);\n\t\treturn;\n\t}\n\n\tif (window.active_container != null) {\n\t\tif (window.active_container.is(container)) {\n\t\t\t//console.log('é o mesmo, não mudou!');\n\t\t} else {\n\t\t\tif (container.length < 1) {\n\t\t\t\tcontainer = element.closest('.commands_list_div');\n\t\t\t\tif (window.active_container.is(container)) {\n\t\t\t\t\t//console.log('é o mesmo command list');\n\t\t\t\t} else {\n\t\t\t\t\t//console.log('mudou para um command list');\n\t\t\t\t\twindow.active_container = container;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//console.log('mudou para um outro container?');\n\t\t\t}\n\t\t}\n\t}\n\n\twindow.active_container = container;\n\tif (container.hasClass('iftrue')) {\n\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t$(containerIf).append(window.ghostDiv);\n\t\t} else {\n\t\t\t$(containerElse).append(window.ghostDiv);\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tcontainer.find('.case_commands_block').append(window.ghostDiv);\n\t} else {\n\t\tcontainer.find('.block_commands').append(window.ghostDiv);\n\t}\n\t\n}\n\nfunction addGhostToNotEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.dowhiletrue, .iftrue, .repeatNtimes, .case_div, .whiletrue');\n\n\t//console.log(\"\\n\\nNOT EMPTY: \", container);\n\n\t//if (window.active_container != null) {\n\t\t\n\t\t\n\t//}\n\n\tif (container.length < 1) {\n\t\tcontainer = element.closest('.commands_list_div');\n\t\twindow.active_container = container;\n\t\taddGhostToFunctionArea(element, evt);\n\t} else {\n\t\t//console.log('mudou para um outro container?');\n\t}\n\n\twindow.active_container = container;\n\n\t// quem está mais próximo? // Essa regra se aplica somente quando o over está sobre um comando\n\tvar allfilhos;\n\tif (container.hasClass('iftrue')) {\n\t\t\n\t\tif ($(evt.target).closest('.data_block_if').length > 0) {\n\t\t\tallfilhos = container.find('.commands_if').children('.command_container');\n\t\t} else if ($(evt.target).closest('.data_block_else').length > 0) {\n\t\t\tallfilhos = container.find('.commands_else').children('.command_container');\n\t\t} else {\n\n\t\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t\tallfilhos = $(containerIf).children('.command_container');\n\t\t\t} else {\n\t\t\t\tallfilhos = $(containerElse).children('.command_container');\n\t\t\t}\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tallfilhos = container.children('.case_commands_block').children('.command_container');\n\t} else if (container.hasClass('commands_list_div')) {\n\t\tallfilhos = container.children('.command_container');\n\t} else {\n\t\tallfilhos = container.children('.block_commands').children('.command_container');\n\t}\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n}\n\nfunction addGhostToFunctionArea (undermouse, evt) {\n\t$('.ghost_div').remove();\n\tvar allfilhos = undermouse.closest('.commands_list_div').children('.command_container');\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n}\n\nfunction addGhostDiv (evt) {\n\n\tvar undermouse = $(evt.target);\n\n\tif (undermouse.hasClass('ghost_div')) {\n\t\treturn;\n\t} else if (undermouse.hasClass('commands_list_div')) {\n\t\taddGhostToFunctionArea(undermouse, evt);\n\t\treturn;\n\t} else if (undermouse.hasClass('block_commands')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else if (undermouse.hasClass('case_div')) {\n\t\tif (undermouse.find('.case_commands_block').find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else {\n\t\t\n\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t\n\t} \n}\n\nfunction borderMouseDragCommand (function_obj, function_container, evt) {\n\n\tfunction_container.find('.over_command_drag').each(function( index ) {\n\t\t$(this).removeClass('over_command_drag');\n\t});\n\n\tvar prev = null;\n\n\tfunction_container.find('.commands_list_div').each(function( index ) { \n\t\tprev = $(this);\n\t\tif (prev) {\n\t\t\tvar objLeft = prev.offset().left;\n\t var objTop = prev.offset().top;\n\t var objRight = objLeft + prev.width();\n\t var objBottom = objTop + prev.height();\n\t if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n\t \tprev.addClass(\"over_command_drag\"); \n\t }\n\t }\n\t});\n\n\tfunction_container.find('.command_container').each(function( index ) { \n\t\tvar obj = $(this);\n\t\tvar objLeft = obj.offset().left;\n var objTop = obj.offset().top;\n var objRight = objLeft + obj.width();\n var objBottom = objTop + obj.height();\n if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n \tif (prev) {\n \t\tprev.removeClass('over_command_drag');\n \t}\n \tobj.addClass(\"over_command_drag\"); \n \treturn;\n }\n\t});\n}\n\n// before_after_inside: 1 -> before, 2 -> after, 3 -> inside\nexport function renderCommand (command, element_reference, before_after_inside, function_obj) {\n\tvar createdElement;\n\tswitch (command.type) {\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tcreatedElement = CommentsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tcreatedElement = BreaksManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tcreatedElement = ReadersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tcreatedElement = WritersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tcreatedElement = AttributionsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tcreatedElement = FunctioncallsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tcreatedElement = IftruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tcreatedElement = RepeatNtimesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tcreatedElement = WhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tcreatedElement = DowhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tcreatedElement = SwitchesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tcreatedElement = ReturnsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\t}\n\tswitch (before_after_inside) {\n\t\tcase 1:\n\t\t\tcreatedElement.insertBefore(element_reference);\n\t\t\tbreak;\n\n\t\tcase 2:\n\t\t\tcreatedElement.insertAfter(element_reference);\n\t\t\tbreak;\n\n\t\tcase 3: \n\t\t\telement_reference.append(createdElement);\n\t\t\tbreak;\n\t}\n\n}\n\nexport function genericCreateCommand (command_type) {\n\n\tswitch (command_type) {\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn new Models.Break();\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn new Models.Comment(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_value, LocalizedStrings.getUI('text_comment'), null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn new Models.Reader(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn new Models.Writer([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn new Models.Attribution(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t[]);\n \n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn new Models.FunctionCall(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false), null);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn new Models.IfTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n//(var_attribution, var_incrementation, expression1, expression2, expression3, commands_block)\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn new Models.RepeatNTimes(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),\n\t\t\t\t\t\t\t\t\t\t null, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), null, null);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn new Models.WhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], null);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn new Models.DoWhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], null);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\n\t\t\tvar sc = [new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true))];\n\n\t\t\treturn new Models.Switch(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true), sc);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn new Models.Return([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\t}\n}\n\nfunction dragTrash (event) {\n\n\t$('.ghost_div').remove();\n\n\tvar trash = $('<i class=\"ui icon trash alternate outline\"></i>');\n\t$('body').append(trash);\n\ttrash.css('position', 'absolute');\n\ttrash.css('top', event.clientY);\n\ttrash.css('left', event.clientX - 20);\n\ttrash.css('font-size', '3em');\n\ttrash.css('display', 'none');\n\n\tfunction_container_active.find('.commands_list_div').off('mousemove');\n\tfunction_container_active.find('.commands_list_div').find(\"*\").off('mousemove');\n\n\ttrash.fadeIn( 200, function() {\n\t\ttrash.fadeOut( 200, function() {\n\t\t\ttrash.remove();\n\t\t} );\n });\n}\n\nfunction findSingleElement (searching, query) {\n\n\tif (!searching || !query) {\n\t\treturn '';\n\t}\n\n\tif (searching.type == Models.COMMAND_TYPES.repeatNtimes || \n\t\tsearching.type == Models.COMMAND_TYPES.whiletrue ||\n\t\tsearching.type == Models.COMMAND_TYPES.dowhiletrue) {\n\n\t\tif (searching.commands_block) {\n\t\t\treturn '' + searching.commands_block.indexOf(query);\n\t\t} else {\n\t\t\treturn '0';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tif (searching.commands_block == null) {\n\t\t\tsearching.commands_block = [];\n\t\t}\n\t\tif (searching.commands_else == null) {\n\t\t\tsearching.commands_else = [];\n\t\t}\n\n\t\tif (searching.commands_block.indexOf(query) >= 0) {\n\t\t\treturn 'if[' + searching.commands_block.indexOf(query) + ']';\n\t\t} else {\n\t\t\treturn 'else[' + searching.commands_else.indexOf(query) + ']';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.switch) {\n\n\t\tfor (var i = 0; i < searching.cases.length; i++) {\n\t\t\tif (searching.cases[i].commands_block.indexOf(query) >= 0) {\n\t\t\t\treturn 'case[' + searching.cases[i].commands_block.indexOf(query) + ']';\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\nfunction findPathRecursive (starter_index, hierarquia_bottom_up, function_obj, index_command = -1, actual = null) {\n\tvar full_path = '';\n\t\n\tfor (var i = 0; i <= hierarquia_bottom_up.length; i ++) {\n\t\tfull_path += findSingleElement(hierarquia_bottom_up[i], hierarquia_bottom_up[i + 1]) + '-';\n\t}\n\n\treturn full_path;\n}\n\nfunction manageCommand (function_obj, function_container, event, command_type) {\n\n\t$( \".created_element\" ).each(function( index ) { \n\t\t$(this).remove();\n\t});\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tif (el.hasClass('ghost_div')) {\n\t\tif (el.closest('.command_container').length < 1) {\n\t\t\t\n\t\t\tel.closest('.commands_list_div').css('height', el.closest('.commands_list_div').css('height') + 30);\n\t\t\t\n\t\t\t//$('.ghost_div').remove();\n\n\t\t\tel = el.closest('.commands_list_div');\n\t\t}\n\t}\n\n\t// Primeiro verificar se ele soltou no espaço da função correta:\n\tvar hier = el.parentsUntil(\".all_functions\");\n\tvar esta_correto = false;\n\tvar esta_na_div_correta = false;\n\tif (el.hasClass(\"commands_list_div\")) {\n\t\testa_na_div_correta = true;\n\t} \n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (temp.hasClass(\"commands_list_div\")) {\n\t\t\testa_na_div_correta = true;\n\t\t} \n\t\tif (temp.data('fun') == function_obj) {\n\t\t\testa_correto = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!esta_correto) {\n\t\t// has_element_created_draged = false;\n\t\t// which_element_is_draged = null;\n\t\tdragTrash(event);\n\t\treturn;\n\t} else {\n\t\tif (!esta_na_div_correta) {\n\t\t\t// has_element_created_draged = false;\n\t\t\t// which_element_is_draged = null;\n\t\t\tdragTrash(event);\n\t\t\treturn;\n\t\t}\n\t}\n\tvar hierarquia_bottom_up = null;\n\t// Agora é descobrir qual o escopo para adicionar o comando:\n\t// Se o elemento clicado possuir o atributo \"fun\", então, é direto na div dos comandos:\n\tif (typeof el.data('fun') !== 'undefined') {\n\n\t\t// Se a lista de comandos estiver vazia, então é o primeiro.\n\t\t// Portanto, ele deve soltar o elemento obrigatoriamente no objeto vazio\n\t\tif ((el.data('fun').commands == null) || (el.data('fun').commands.length == 0)) {\n\t\t\t\t// pode adicionar \n\t\t\t\tel.data('fun').commands = [];\n\n\t\t\t\tvar new_cmd = genericCreateCommand(command_type);\n\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', 0);\n\n\t\t\t\tel.data('fun').commands.push(new_cmd);\n\n\t\t\t\trenderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj);\n\t\t\t\n\t\t} else { // Entra nesse else, caso já existam outros comandos no bloco:\n\n\t\t\tfindNearbyCommandToAddInFunctionScope(el, event, $(function_container).find('.commands_list_div'), function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\t// descobrir em qual comando ele soltou: \n\t\tvar hier_find = el.parentsUntil(\".commands_list_div\");\n\t\thierarquia_bottom_up = [];\n\t\tif (typeof el.data('command') !== 'undefined') {\n\t\t\thierarquia_bottom_up.push(el.data('command'));\n\t\t}\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\thierarquia_bottom_up.push($(hier_find[i]).data('command'));\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Se for do tipo break, verificar se está no contexto correto: \n\t\t// Caso não esteja no contexto, apenas retorna sem dar continuidade:\n\t\tvar is_correct_context = false;\n\t\tif (command_type == Models.COMMAND_TYPES.break) {\n\t\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\t\tif ((hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.repeatNtimes)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.whiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.dowhiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.switch)) {\n\n\t\t\t\t\tis_correct_context = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!is_correct_context) {\n\t\t\t\tconsole.error(\"Context not allowed to insert BREAK COMMAND!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// se a hierarquia possuir apenas um elemento, então está na raiz dos comandos: \n\t\tif (hierarquia_bottom_up.length == 1) {\n\t\t\tvar sub_elemento = false;\n\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\tfindBeforeOrAfterCommandToAdd(hier_find[i], event, function_obj, command_type);\n\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!sub_elemento) {\n\t\t\t\tfindBeforeOrAfterCommandToAdd(el[0], event, function_obj, command_type);\n\t\t\t}\n\t\t} else {\n\t\t\t// caso exista mais de um elemento na hierarquia:\n\t\t\tif (typeof $(el).data('command') !== 'undefined') {\n\t\t\t\tinsertCommandInBlockHierar(el[0], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t} else {\n\t\t\t\tvar sub_elemento = false;\n\t\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\t\tinsertCommandInBlockHierar(hier_find[i], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\t// has_element_created_draged = false;\n\t// which_element_is_draged = null;\n\n\tif (hierarquia_bottom_up) {\n\t\tvar i = hierarquia_bottom_up.length - 1;\n\t\tvar starter_index = window.program_obj.functions[window.program_obj.functions.indexOf(function_obj)].commands.indexOf(hierarquia_bottom_up[i]);\n\t\tvar all_str_path = starter_index + '-' + findPathRecursive(starter_index, hierarquia_bottom_up, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' , all_str_path);\n\t}\n\n\trenderAlgorithm();\n}\n\nfunction insertCommandInBlockHierar (el, event, function_obj, command_type, hier_dom, hier_obj) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\t\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.switch) ) {\n\n\t\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' + el_jq.data('command').type, 0);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindNearbyCommandToAddInBlockScope(el, event, el, function_obj, command_type, command_parent);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// QUANDO FOR BLOCO DO TIPO IF OU SWITCH/CASE:\n\t\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\t// entra neste bloco, se soltou o comando sobre outro comando dentro de um subbloco:\n\t\tfindBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, command_type);\n\t}\n}\n\nfunction findNearbyCommandToAddInBlockScope (el, event, node_list_commands, function_obj, command_type, command_parent) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tcommand_parent.commands_block.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, command_type) {\n\n\tvar el_jq = $(el);\n\tvar command_parent = $(el.parentNode.parentNode).data('command');\n\tvar command_target = el_jq.data('command');\n\tvar temp_parent = $(el.parentNode.parentNode);\n\n\tvar is_in_else = false;\n\n\tif (!command_parent) {\n\t\tcommand_parent = el_jq.data('command');\n\t\ttemp_parent = el_jq;\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t}\n\t\t\tif (typeof temp.data('command') != 'undefined') {\n\t\t\t\tcommand_parent = temp.data('command');\n\t\t\t\ttemp_parent = temp;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tvar hier = el_jq.parentsUntil(\".command_container\");\n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\tis_in_else = true;\n\t\t}\n\t}\n\n\tif (command_parent == command_target) {\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ((command_parent.type != Models.COMMAND_TYPES.iftrue) && (command_parent.type != Models.COMMAND_TYPES.switch)) {\n\t\tvar hier = temp_parent.parentsUntil(\".all_cases_div\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('switchcase') !== 'undefined') {\n\t\t\t\tcommand_parent = temp.data('switchcase');\n\t\t\t\tis_in_else = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tif (is_in_else) {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t} else {\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t}\n\n\t\t\n\n\t} else {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tif (is_in_else) {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\n\t\t} else {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\t}\n\n\t\t\n\t}\n}\n\nfunction insertCommandInBlock (el, event, function_obj, command_type) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\tcommand_parent.commands_block = [];\n\n\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t} else { // Se já tem algum comando no bloco:\n\t\t\tfindInBlockCorrectPlace(el, event, function_obj, command_type);\n\t\t}\n\n\t} else if (el_jq.data('command').type == Models.COMMAND_TYPES.iftrue) {\n\n\t\t// no if ou no else?\n\t\tvar correct_div = $(document.elementFromPoint(event.pageX, event.pageY));\n\t\tvar is_in_if = true;\n\t\tif (correct_div.data('if')) {\n\t\t\tis_in_if = true;\n\t\t} else if (correct_div.data('else')) {\n\t\t\tis_in_if = false;\n\t\t} else {\n\t\t\tvar hier = correct_div.parentsUntil(\".command_container\");\n\t\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\t\tvar temp = $(hier[i]);\n\t\t\t\tif (typeof temp.data('if') !== 'undefined') {\n\t\t\t\t\tis_in_if = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\t\tis_in_if = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (is_in_if) {\n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_if'), event, function_obj, command_type);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_else'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_else'), event, function_obj, command_type, true);\n\t\t\t}\n\n\t\t}\n\n\t} else { // é do tipo switch\n\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t}\n}\n\nfunction addCommandToSwitchCase (event, function_obj, command_type) {\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tvar which_case = el.data('switchcase');\n\tvar case_div = el;\n\t\n\tif (!which_case) {\n\t\tvar hier_find = el.parentsUntil(\".all_cases_div\");\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('switchcase') !== 'undefined') {\n\t\t\t\twhich_case = $(hier_find[i]).data('switchcase');\n\t\t\t\tcase_div = $(hier_find[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (which_case.commands_block == null || which_case.commands_block.length < 1) {\n\t\twhich_case.commands_block = [];\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\twhich_case.commands_block.push(recentComand);\n\t\trenderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj);\n\t} else {\n\t\tfindInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type);\n\t}\n\n}\n\n\n\n\nfunction findInBlockCorrectPlaceInSwitchCase (which_case, case_div, event, function_obj, command_type) {\n\n\tvar all_sub = case_div.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\twhich_case.commands_block.push(recentComand);\n\n\t\trenderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = which_case.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t which_case.commands_block.splice(index, 0, recentComand);\n\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t}\n\t}\n}\n\nfunction findInBlockCorrectPlace (el, event, function_obj, command_type, is_in_else = false) {\n\tvar el_jq = $(el);\n\tvar all_sub = el_jq.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\n\t\t} else {\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\n\t\t\tvar index = command_parent.commands_else.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t} else {\n\t\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAdd (el, event, function_obj, command_type) {\n\tswitch ($(el).data('command').type) {\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tinsertCommandInBlock(el, event, function_obj, command_type);\n\t\t\treturn;\n\t}\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\n\t} else {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice((index + 1), 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\t}\n}\n\nfunction findNearbyCommandToAddInFunctionScope (el, event, node_list_commands, function_obj, command_type) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tfunction_obj.commands.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', function_obj.commands.length - 1);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\t}\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as ExpressionManagement from './generic_expression';\nimport * as CodeGenerator from '../code_generator';\nimport { renderAlgorithm } from '../algorithm';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui attribution created_element\"> <i class=\"ui icon small arrow left\"></i> <span> x <&#8212; 1 + 1 </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui attribution command_container\"><i class=\"ui icon small arrow left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_attributed\"></div> <span class=\"text_attr_receives span_command_spec\">'+LocalizedStrings.getUI('text_receives')+'</span> '\n\t\t + '<div class=\"expression_elements\"></div> <span class=\"textual_expression\"></span> <i class=\"ui icon i cursor button_write_expression\"></i> <i class=\"ui icon unlock button_alternate_expression\"></i> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.var_attributed'), function_obj);\n\n\tif (!command.expression || command.expression.length < 1) {\n\t\tvar exp = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\tcommand.expression.push(exp);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\n\tExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.expression);\n\n\tif (command.lockexpression) {\n\t\tif (command.expression) {\n\t\t\ttry {\n\t\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\tif (text) {\n\t\t\t\t\t$(el.find('.expression_elements')[0]).toggle();\n\t\t\t\t\t$(el.find('.textual_expression')[0]).text(text);\n\t\t\t\t\t$(el.find('.textual_expression')[0]).toggle();\n\t\t\t\t\t$(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tcommand.lockexpression = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tel.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.button_write_expression').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n\n\treturn el;\n\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, selectedItem, expression_element) {\n\t\n\tvar index_to_move = expression_element.itens.indexOf(ref_object);\n\n\tswitch (selectedItem.data('exp')) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [expression_element.itens[index_to_move],\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\texpression_element.itens[index_to_move] ]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [expression_element.itens[index_to_move]]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\t}\n\n\trenderExpressionElements(command, function_obj, dom_object);\n\n}\n\nfunction renderExpressionElements (command, function_obj, el) {\n\tvar expression_div = el.find('.expression_elements');\n\tvar command_container;\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tcommand_container = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\texpression_div = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (command_container) {\n\t\texpression_div = command_container.find('.expression_elements');\n\t}\n\n\texpression_div.text('');\n\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\ttemp.data('ref_element', command.expression[i]);\n\t\ttemp.data('ref_index', i);\n\n\t\texpression_div.append(temp);\n\n\t\trenderElement(command, function_obj, temp, command.expression[i]);\n\t}\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\">';\n\n\tswitch (expression_element.itens[index_op]) {\n\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\tcontext_menu += '+';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\tcontext_menu += '-';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\tcontext_menu += '*';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\tcontext_menu += '/';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\tcontext_menu += '%';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.none:\n\t\t\tcontext_menu += '...';\n\t\t\tbreak;\n\t}\n\t\n\tcontext_menu += '</div><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.none+'\" data-text=\"...\">Nenhum</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\ttemp_op.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t expression_element.itens[index_op] = value;\n }\n\t});\n\n}\n\nfunction renderMenuAddExpression (command, function_obj, el, dom_append_menu, expression_append_new_expression) {\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tel = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom_append_menu.hasClass(\"expression_elements\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\tdom_append_menu = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"ui icon arrow alternate circle right outline\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_append_menu.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t switch (value) {\n\t \tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t \tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\n\t\t\tbreak;\n\t\t}\n\t\t\n\t\trenderExpressionElements(command, function_obj, el);\n }\n\t});\n\n}\n\nfunction renderElement (command, function_obj, el, expression_element) {\n\n\tswitch (expression_element.type_exp) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_1 = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_2 = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_exp_1);\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp_2);\n\t\t\t\n\t\t\tif (expression_element.itens[0].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[0], temp_exp_1, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_1, expression_element.itens[0]);\n\t\t\t}\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 1);\n\n\t\t\tif (expression_element.itens[2].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[2], temp_exp_2, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_2, expression_element.itens[2]);\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp);\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 0);\n\n\t\t\tif (expression_element.itens[1].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[1], temp_exp, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[1]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar temp_par_1 = $('<div class=\"component_element\"> ( </div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_par_2 = $('<div class=\"component_element\"> ) </div>');\n\n\t\t\tel.append(temp_par_1);\n\t\t\tel.append(temp_exp);\n\n\t\t\tfor (var j = 0; j < expression_element.itens.length; j++) {\n\t\t\t\tif (expression_element.itens[j].type) {\n\t\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[j], temp_exp, function_obj, 2, expression_element);\n\t\t\t\t} else {\n\t\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t//renderMenuAddExpression(command, function_obj, el, el, expression_element.itens);\n\n\t\t\tel.append(temp_par_2);\n\n\t\t\tbreak;\n\t}\n\n}\n\n\nfunction renderExpression (command, function_obj, el) {\n\n\tvar expression_div = el.find('.expression_elements');\n\texpression_div.text('');\n\n\tvar menu_add_item = $('<div class=\"menu_add_item\"></div>');\n\tmenu_add_item.data('index_add', 0);\n\n\texpression_div.append(menu_add_item);\n\t\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tif (command.expression[i].type) {\n\n\t\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t\tVariableValueMenu.renderMenu(command, command.expression[i], temp, function_obj);\n\n\t\t} else if (command.expression[i] == \"(\" || command.expression[i] == \")\") {\n\n\t\t\tvar temp = $('<div class=\"expression_element\">'+command.expression[i]+'</div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t} else {\n\n\t\t\tvar temp = '<div class=\"expression_element\">';\n\n\t\t\tswitch(command.expression[i]) {\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\ttemp += '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\ttemp += '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\ttemp += '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\ttemp += '/';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\ttemp += '%';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttemp += '</div>';\n\t\t\ttemp = $(temp);\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t}\n\t\t\n\t\tvar menu_add_item_seq = $('<div class=\"menu_add_item\"></div>');\n\t\tvar index_temp = (i + 1);\n\t\tmenu_add_item_seq.data('index_add', index_temp);\n\t\texpression_div.append(menu_add_item_seq);\n\n\t}\n\n\taddMenuItens(command, function_obj, el);\n\n}\n\nfunction addMenuItens (command, function_obj, expression_div) {\n\tvar divs_expression = expression_div.find('.menu_add_item');\n\n\tfor (var i = 0; i < divs_expression.length; i++) {\n\n\t\tvar temp = $(divs_expression[i]).data('index_add');\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><i class=\"ui icon plus square outline\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"value\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"operator\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_operator')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"parentheses\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_parentheses')+'</div>';\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\t$(divs_expression[i]).append(context_menu);\n\n\t\tcontext_menu.dropdown({\n\t on: 'hover',\n\t onChange: function(value, text, $selectedItem) {\n \t\tswitch ($selectedItem.data('option')) {\n \t\t\tcase \"value\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"operator\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, Models.ARITHMETIC_TYPES.plus);\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"parentheses\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, \"(\");\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 2, 0, \")\");\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t }\n \t}\n\t });\n\n\t}\n}\n\n\nfunction addHandlers (command, function_obj, attribution_dom) {\n\n\tattribution_dom.find('.button_write_expression').on('click', function() {\n\n\t\twindow.expressionEdition = true;\n\t\twindow.inputExpression = null;\n\t\t\n\t\tvar afterWhichElement;\n\t\tvar lockButton = $(attribution_dom.find('.button_alternate_expression')[0]);\n\t\tvar editButton = $(this);\n\n\t\tafterWhichElement = attribution_dom.find('.expression_elements');\n\n\t\tif (command.lockexpression) {\n\t\t\tafterWhichElement = attribution_dom.find('.textual_expression');\n\t\t}\n\n\t\tvar text = \"\";\n\t\tif (command.expression) {\n\t\t\tif (command.expression.length == 1 && command.expression[0].content == null && !command.expression[0].function_called) {\n\t\t\t\ttext = \"\";\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\ttext = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\ttext = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar ok_button = $('<i class=\"ui icon check circle expression-edit-confirm\"></i>');\n\t\tvar cancel_button = $('<i class=\"ui icon undo expression-edit-cancel\"></i>');\n\t\tvar input = $('<input type=\"text\" spellcheck=\"false\" autocomplete=\"off\" class=\"input-expression-field\" >');\n\t\tinput.val(text);\n\n\t\tinput.focusout(function(evt) {\n\t\t\tconsole.log('focosout event!');\n\t\t\tok_button.click();\n\t\t\tevt.preventDefault();\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\tinput.keyup(function(evt) {\n\t\t\tif (evt.keyCode == 27) { // esc\n\t\t\t\tcancel_button.click();\n\t\t\t} \n\t\t\tif (evt.keyCode == 13) { // enter\n\t\t\t\tok_button.click();\n\t\t\t}\n\t\t});\n\n\t\tok_button.click(function() {\n\t\t\tvar parsed = null;\n\t\t\tparsed = ExpressionManagement.expressionParserToVisual(input.val(), function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tcancel_button.mousedown(function(evt) {\n\t\t\tvar parsed = ExpressionManagement.expressionParserToVisual(text, function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tinput.insertAfter(afterWhichElement);\n\t\tinput.focus();\n\t\tcancel_button.insertAfter(input);\n\t\tok_button.insertAfter(input);\n\t\tvar len = text.length; \n\t\tinput[0].setSelectionRange(len, len); \n\n\t\tafterWhichElement.css('display', 'none');\n\t\tlockButton.css('display', 'none');\n\t\teditButton.css('display', 'none');\n\n\t\tok_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_confirm\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t\tcancel_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_cancel\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t});\n\n\t$(attribution_dom.find('.textual_expression')[0]).toggle();\n\t\n\tattribution_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.expression) {\n\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\tif (text) {\n\t\t\t\t$(attribution_dom.find('.expression_elements')[0]).toggle();\n\t\t\t\t$(attribution_dom.find('.textual_expression')[0]).text(text);\n\t\t\t\t$(attribution_dom.find('.textual_expression')[0]).toggle();\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t\t}\n\t\t\tif (command.lockexpression) {\n\t\t\t\tattribution_dom.find('.lock').popup({\n\t\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\t\tdelay: {\n\t\t\t\t\t\tshow: 750,\n\t\t\t\t\t\thide: 0\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tattribution_dom.find('.unlock').popup({\n\t\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\t\tdelay: {\n\t\t\t\t\t\tshow: 750,\n\t\t\t\t\t\thide: 0\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tattribution_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, attribution_dom)) {\n\t\t\tattribution_dom.fadeOut(400, function() {\n\t\t\t\tattribution_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tattribution_dom.find('.button_refresh_attribution').on('click', function() {\n\t\trenderExpressionElements(command, function_obj, attribution_dom);\n\t});\n}\n\nexport function renderMenuOperations (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected) {\n\n\t/*console.log(\"recebido o seguinte DOM: \");\n\tconsole.log(dom_object);\n\n\tif (dom_object.hasClass('var_attributed')) {\n\t\treturn;\n\t} else {\n\t\tvar hier = dom_object.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass('var_attributed') || $(hier[i]).hasClass('parameters_function_called')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\t\n\t}\n\n\tdom_object.find('.context_menu_clear').remove();\n\n\n\tvar menu_operations = '<div class=\"ui dropdown menu_operations\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tfor (var tm in Models.ARITHMETIC_TYPES) {\n\n\t\tmenu_operations += '<div class=\"item\" data-option=\"'+tm+'\">'+LocalizedStrings.getUI('btn_arithmetic_' + tm)+'</div>';\n }\n menu_operations += '<div class=\"item\" data-option=\"clear\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\t\n menu_operations += '</div></div>';\n\n menu_operations = $(menu_operations);\n\n dom_object.append(menu_operations);\n\n menu_operations.dropdown({\n \tonChange: function(value, text, $selectedItem) {\n \t\tswitch ($($selectedItem).data('option')) {\n \t\t\tcase \"clear\":\n\t \t\t\t$(dom_object).text('');\n\t\t \t \tVariableValueMenu.renderMenu(command, ref_object, dom_object, function_obj);\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\tcreateExpressionAround(command, ref_object, dom_object, function_obj);\n \t\t\t\tmenu_operations.find('.text').text('');\n \t\t}\n }\n });*/\n}\n\nfunction createExpressionAround (command, ref_object, dom_object, function_obj) {\n\t$('<span> ( </span>').insertBefore(dom_object);\n\t$('<span> ) </span>').insertAfter(dom_object);\n\n\tVariableValueMenu.renderMenu(command, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), dom_object, function_obj);\n}\n\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small pause\"></i> <span> '+LocalizedStrings.getUI('text_break')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small pause\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span>'+LocalizedStrings.getUI('text_break')+'</span> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, break_dom) {\n\n\tbreak_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, break_dom)) {\n\t\t\tbreak_dom.fadeOut(400, function() {\n\t\t\t\tbreak_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span class=\"span_comment_text\" \"> '+LocalizedStrings.getUI('text_comment')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> <div class=\"div_comment_text\">'+'</div> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\trenderTextComment(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction renderTextComment (command, function_obj, el) {\n\tVariableValueMenu.renderMenu(command, command.comment_text, el.find('.var_value_menu_div'), function_obj, 20);\n}\n\nfunction addHandlers (command, function_obj, comment_dom) {\n\n\tcomment_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, comment_dom)) {\n\t\t\tcomment_dom.fadeOut(400, function() {\n\t\t\t\tcomment_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenuManagement from './variable_value_menu';\n\n\nexport function renderExpression (command, expression, function_obj, initial_el_to_render) {\n\n\texpression.dom_object = initial_el_to_render;\n\n\tif (expression.expression == null || expression.expression.length < 1) {\n\n\t\trenderStartMenu(command, expression, function_obj, initial_el_to_render);\n\n\t} else {\n\t\t\n\t\tvar main_div = $('<div class=\"expression_elements\"></div>');\n\n\t\tswitch (expression.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\trenderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\trenderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tinitial_el_to_render.append(main_div);\t\n\t\tvar restartMenu = $('<div class=\"ui restart_expression\"><i class=\"ui icon undo\"></i></div>');\n\t\tinitial_el_to_render.append(restartMenu);\t\n\t\trestartMenu.on('click', function(e){\n\t \texpression.expression = null;\n\t \tinitial_el_to_render.empty();\n\t \trenderExpression(command, expression, function_obj, initial_el_to_render);\n\t \t});\n\t}\n}\n\nfunction renderArithmeticOperator (command, all_expression, expression_arithmetic, arithmetic_operator, function_obj, element_to_append) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '>',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)\n\t },\n\t {\n\t name : '<',\n\t value : Models.ARITHMETIC_COMPARISON.less_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)\n\t },\n\t {\n\t name : '==',\n\t value : Models.ARITHMETIC_COMPARISON.equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.ARITHMETIC_COMPARISON.not_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '>=',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)\n\t },\n\t {\n\t name : '<=',\n\t value : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_arithmetic.operator = value;\n\t }\n\t })\n\t;\n\n\telement_to_append.append(menu_operator);\n}\n\nfunction renderLogicOperator (command, all_expression, expression_logic, logic_operator, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '==',\n\t value : Models.LOGIC_COMPARISON.equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.LOGIC_COMPARISON.not_equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '&&',\n\t value : Models.LOGIC_COMPARISON.and,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.and)\n\t },\n\t {\n\t name : '||',\n\t value : Models.LOGIC_COMPARISON.or,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.or)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem) {\n\t\t \texpression_logic.operator = value;\n\t\t \tif (expression_logic.second_operand == null) {\n\t\t \t\texpression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t \t\tinitial_el_to_render.empty();\n\t\t \t\trenderExpression(command, all_expression, function_obj, initial_el_to_render);\n\t\t \t}\n\t \t}\n\t }\n\t });\n\n\telement_to_append.append(menu_operator);\n\n}\n\n\nfunction renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\tif (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\n\trenderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);\n\n\telement_to_append.append(exp_el_expr_operand);\n\n\tif (expression_logic.second_operand) {\n\t\tif (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\trenderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\trenderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else {\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);\n\t\t}\n\n\t\telement_to_append.append(exp_el_expr_el_2);\n\t}\n\n\telement_to_append.append(exp_el_par_2);\n\n}\n\nfunction renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\n\tif (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\tif (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);\n\t}\n\n\trenderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\telement_to_append.append(exp_el_expr_operand);\n\telement_to_append.append(exp_el_expr_el_2);\n\telement_to_append.append(exp_el_par_2);\n}\n\nfunction renderStartMenu (command, expression, function_obj, initial_el_to_render) {\n\tvar start_menu = '';\n\tstart_menu += '<div class=\"ui dropdown menu_start_rendered\"><div class=\"text\"><i>'+LocalizedStrings.getUI('expression_menu_select')+'</i></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_logic+'\">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';\n\tstart_menu += '</div></div>';\n\tstart_menu = $(start_menu);\n\n\tstart_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tswitch ($selectedItem.data('exp')) {\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.LogicExpression(false, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tinitial_el_to_render.html('');\n\n\t\t\trenderExpression(command, expression, function_obj, initial_el_to_render);\n \t},\n \tselectOnKeydown: false\n\t});\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n\t\n\tinitial_el_to_render.append(start_menu);\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n}","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as SwitchManagement from './switch';\n\nexport function renderMenu (command, dom_where_render, function_obj, dom_command) {\n\n\tvar menu_div = '<div class=\"ui dropdown menu_commands pause\" ><button><i class=\"icon code\"></i></button> <div class=\"menu\"> ';\n\n\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"pause icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\n\t} else {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"pause icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switchcase+'\"><i class=\"plus icon\"></i> '+LocalizedStrings.getUI('btn_case')+' </a>';\n\n\t}\n\n\tmenu_div += '</div></div>';\n\n\tmenu_div = $(menu_div);\n \t\n\tdom_where_render.append(menu_div);\n\n\taddHandlers(command, dom_where_render, function_obj, dom_command);\n\n\tif (command.collapsed) {\n\t\tdom_command.children('.ui.block_commands').toggle();\n\t}\n}\n\nfunction addHandlers (command, dom_where_render, function_obj, dom_command) {\n\n\tdom_where_render.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\t\n\tdom_where_render.find('.menu_commands a').on('click', function(evt){\n\n\t\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\t\t\tif (command.commands_block == null || command.commands_block.length == 0) {\n\n\t\t\t command.commands_block = [];\n\n\t\t\t var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n\t\t\t command.commands_block.push(new_cmd);\n\n\t\t\t CommandsManagement.renderCommand(new_cmd, dom_command.find('.block_commands'), 3, function_obj);\n\n\t\t\t } else {\n\t\t\t CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t }\n\n\t\t} else {\n\n\t\t\tswitch ($(this).data('command')) {\n\t\t\t\tcase Models.COMMAND_TYPES.break:\n\t\t\t\t\tCommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.COMMAND_TYPES.switchcase:\n\t\t\t\t\taddCaseToSwitch(command, dom_where_render, function_obj, dom_command);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t});\n}\n\nfunction addCaseToSwitch (command, dom_where_render, function_obj, dom_command) {\n\t\n\tif ((command.cases == null)) {\n\t\tcommand.cases = [];\n\t}\n\t\n\tvar sc = new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\n\tcommand.cases.push(sc);\n\n\tSwitchManagement.renderCase(sc, command, function_obj, dom_command.find('.all_cases_div'));\n\n}\n\n\n\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui dowhiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> '+ LocalizedStrings.getUI('text_command_do') +' <br> ' + LocalizedStrings.getUI('text_command_do_until') +'(x < 10) </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui dowhiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do') + ' </span>';\n\tret += '<div class=\"ui block_commands\" data-subblock=\"\" data-idcommand=\"\">';\n\tret += '</div>';\n\tret += ' <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do_until') + ' </span> <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"textual_expression\"></span> <span class=\"span_command_spec\"> ) </span>';\n\tret += ' <i class=\"ui icon i cursor button_write_expression\" style=\"display: inline !important;\"></i> <i class=\"ui icon unlock button_alternate_expression\" style=\"margin-left: 1rem !important;\"></i> <div class=\"ui context_menu\"></div> ';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.expression) {\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tif (command.lockexpression) {\n\t\tif (command.expression) {\n\t\t\ttry {\n\t\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\tif (text) {\n\t\t\t\t\t$(el.find('.conditional_expression')[el.find('.conditional_expression').length - 1]).toggle();\n\t\t\t\t\t$(el.find('.textual_expression')[el.find('.textual_expression').length - 1]).text(text);\n\t\t\t\t\t$(el.find('.textual_expression')[el.find('.textual_expression').length - 1]).toggle();\n\t\t\t\t\t$(el.find('.button_alternate_expression')[el.find('.button_alternate_expression').length - 1]).toggleClass('unlock').toggleClass('lock');\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tcommand.lockexpression = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tel.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.button_write_expression').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, dowhiletrue_dom) {\n\n\tdowhiletrue_dom.find('.button_write_expression').on('click', function() {\n\n\t\twindow.expressionEdition = true;\n\t\twindow.inputExpression = null;\n\t\t\n\t\tvar afterWhichElement;\n\t\tvar lockButton = $(dowhiletrue_dom.find('.button_write_expression')[dowhiletrue_dom.find('.button_write_expression').length - 1]);\n\t\tvar editButton = $(this);\n\n\t\tafterWhichElement = $(dowhiletrue_dom.find('.conditional_expression')[dowhiletrue_dom.find('.conditional_expression').length - 1]);\n\n\t\tif (command.lockexpression) {\n\t\t\tafterWhichElement = $(dowhiletrue_dom.find('.textual_expression')[dowhiletrue_dom.find('.textual_expression').length - 1]);\n\t\t}\n\n\t\tvar text = \"\";\n\t\tif (command.expression) {\n\t\t\tif (command.expression.length == 1 && command.expression[0].content == null && !command.expression[0].function_called) {\n\t\t\t\ttext = \"\";\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\ttext = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\ttext = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar ok_button = $('<i class=\"ui icon check circle expression-edit-confirm\"></i>');\n\t\tvar cancel_button = $('<i class=\"ui icon undo expression-edit-cancel\"></i>');\n\t\tvar input = $('<input type=\"text\" spellcheck=\"false\" autocomplete=\"off\" class=\"input-expression-field\" >');\n\t\tinput.val(text);\n\n\t\tinput.focusout(function(evt) {\n\t\t\tok_button.click();\n\t\t\tevt.preventDefault();\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\tinput.keyup(function(evt) {\n\t\t\tif (evt.keyCode == 27) { // esc\n\t\t\t\tcancel_button.click();\n\t\t\t} \n\t\t\tif (evt.keyCode == 13) { // enter\n\t\t\t\tok_button.click();\n\t\t\t}\n\t\t});\n\n\t\tok_button.click(function() {\n\t\t\tvar parsed = null;\n\t\t\tparsed = GenericExpressionManagement.expressionParserToVisual(input.val(), function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tcancel_button.mousedown(function(evt) {\n\t\t\tvar parsed = GenericExpressionManagement.expressionParserToVisual(text, function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tinput.insertAfter(afterWhichElement);\n\t\tinput.focus();\n\t\tcancel_button.insertAfter(input);\n\t\tok_button.insertAfter(input);\n\t\tvar len = text.length; \n\t\tinput[0].setSelectionRange(len, len); \n\n\t\tafterWhichElement.css('display', 'none');\n\t\tlockButton.css('display', 'none');\n\t\teditButton.css('display', 'none');\n\n\t\tok_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_confirm\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t\tcancel_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_cancel\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t});\n\n\tdowhiletrue_dom.find('.minimize_block_button').on('click', function(evt){\n\t\tdowhiletrue_dom.children('.ui.block_commands').toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\n\n\t$(dowhiletrue_dom.find('.textual_expression')[0]).toggle();\n\t\n\tdowhiletrue_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.expression) {\n\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\tif (text) {\n\t\t\t\t$(dowhiletrue_dom.find('.conditional_expression')[dowhiletrue_dom.find('.conditional_expression').length - 1]).toggle();\n\t\t\t\t$(dowhiletrue_dom.find('.textual_expression')[dowhiletrue_dom.find('.textual_expression').length - 1]).text(text);\n\t\t\t\t$(dowhiletrue_dom.find('.textual_expression')[dowhiletrue_dom.find('.textual_expression').length - 1]).toggle();\n\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t\t}\n\t\t}\n\n\t\tif (command.lockexpression) {\n\t\t\tdowhiletrue_dom.find('.lock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tdowhiletrue_dom.find('.unlock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tdowhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, dowhiletrue_dom)) {\n\t\t\tdowhiletrue_dom.fadeOut(400, function() {\n\t\t\t\tdowhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui functioncall created_element\"> <i class=\"hand point right icon\"></i> <span> funcao() </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui functioncall command_container\"> <i class=\"hand point right icon command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.function_called, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, functioncall_dom) {\n\n\tfunctioncall_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, functioncall_dom)) {\n\t\t\tfunctioncall_dom.fadeOut(400, function() {\n\t\t\t\tfunctioncall_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import { Types } from \"../types\";\nimport * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as VariableValueMenuManagement from \"./variable_value_menu\";\nimport { registerUserEvent, ActionTypes } from \"../../services/userLog\";\nimport WatchJS from \"melanke-watchjs\";\nimport * as Utils from '../utils';\n\nwindow.timer = false;\n\nexport function renderExpression (\n command,\n function_obj,\n div_to_render,\n expression_array\n) {\n div_to_render.empty();\n\n WatchJS.unwatch(command, \"expression\");\n WatchJS.watch(\n command,\n \"expression\",\n function () {\n if (window.timer) return;\n const m = div_to_render\n .find(\".single_element_expression\")\n .not(\".mouse_distance\")\n .not(\".add_parentheses\");\n let s = \"\";\n m.each(function (e) {\n if ($(this).hasClass(\"parentheses_in_expression\")) {\n s += $(this).text() + \" \";\n } else {\n s += $(this)\n .find(\".text\")\n .text();\n\n s += $(this)\n .find(\".var_name\")\n .text();\n\n s += $(this)\n .find(\".parameters_function_called\")\n .text();\n\n s += $(this)\n .find(\".value_rendered\")\n .text();\n\n s += \" \";\n }\n });\n if (s) {\n window.timer = true;\n } else {\n return;\n }\n registerUserEvent(\n function_obj.name,\n ActionTypes.CHANGE_COMMAND_EXP,\n command.type,\n \"/\",\n s\n );\n setTimeout(function () {\n window.timer = false;\n }, 200);\n },\n 20,\n true\n );\n\n if (command.type === Models.COMMAND_TYPES.attribution) {\n WatchJS.unwatch(command.variable);\n WatchJS.watch(\n command.variable,\n function () {\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n },\n 0\n );\n\n if (command.variable.content) {\n const types_included = [];\n\n if (\n command.variable.content.type == Types.INTEGER ||\n command.variable.content.type == Types.REAL\n ) {\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else if (command.variable.content.type == Types.BOOLEAN) {\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else if (command.variable.content.type == Types.TEXT) {\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else {\n //console.log(\"NÃO RECONHECI! VEJA: \", command.variable.content.type);\n }\n\n renderElements(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n } else {\n div_to_render.text(\n LocalizedStrings.getUI(\"var_menu_select_var\").toLowerCase()\n );\n }\n } else {\n const types_included = [];\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n if (command.type === Models.COMMAND_TYPES.writer)\n types_included.push(Models.EXPRESSION_TYPES.write_sep);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n renderElements(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n }\n\n div_to_render.children(\".mouse_distance\").addClass(\"mouse_distance_hidden\");\n div_to_render.children(\".higher_element\").on(\"mousemove\", function (evt) {\n if (!window.open_or_close) {\n $(this).css(\"position\", \"relative\", \"!important\");\n $(this)\n .children(\".mouse_distance\")\n .css(\"opacity\", \"1\");\n }\n });\n div_to_render.children(\".higher_element\").on(\"mouseout\", function (evt) {\n if (!window.open_or_close) {\n $(this).css(\"position\", \"absolute\", \"!important\");\n $(this)\n .children(\".mouse_distance\")\n .css(\"opacity\", \"0\");\n }\n });\n const lixeira = $('<div class=\"lixeira\" draggable=\"true\"></div>');\n\n div_to_render\n .find(\".single_element_expression\")\n .on(\"mousedown\", function (evt) {\n window.posX = evt.clientX;\n window.posY = evt.clientY;\n });\n\n Sortable.create(div_to_render[0], {\n animation: 100,\n ghostClass: \"ghost\",\n group: {\n name: \"shared\",\n put: false, // Do not allow items to be put into this list\n },\n draggable: \".single_element_expression\",\n sort: false,\n filter: \".not_allowed\",\n\n onStart: function () {\n $(\"body\").append(lixeira);\n lixeira.css(\"display\", \"block\");\n lixeira.css(\"top\", window.posY + 70, \"!important\");\n lixeira.css(\"left\", window.posX - 20, \"!important\");\n },\n onMove: function () {\n lixeira.addClass(\"color_test\");\n },\n onEnd: function () {\n lixeira.remove();\n div_to_render.find(\".ghost\").removeClass(\"ghost\");\n },\n });\n new Sortable(lixeira[0], {\n group: \"shared\",\n animation: 150,\n onAdd: function (evt) {\n lixeira.css(\"display\", \"none\");\n lixeira.find(\".single_element_expression\").remove();\n lixeira.css(\"background-color\", \"\");\n lixeira.remove();\n removeElement(evt, expression_array);\n renderExpression(command, function_obj, div_to_render, expression_array);\n },\n });\n}\n\nfunction removeElement (event, expression_array) {\n const indice = $(event.item).data(\"index\");\n const first = expression_array[0];\n if (expression_array[indice].type) {\n // if is alone in expression:\n if (expression_array.length == 1) {\n //function_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n expression_array.splice(0, 1);\n } else if (expression_array.length > 1) {\n if (indice > 0 && expression_array[indice - 1].type_op) {\n if (\n indice < expression_array.length &&\n expression_array[indice - 2] == \"(\" &&\n expression_array[indice + 1].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n }\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n if (\n indice - 2 < expression_array.length &&\n expression_array[indice - 2] == \"(\" &&\n expression_array[indice - 1] == \")\"\n ) {\n expression_array.splice(indice - 1, 1);\n expression_array.splice(indice - 2, 1);\n if (\n indice - 3 >= 0 &&\n indice - 3 < expression_array.length &&\n expression_array[indice - 3].type_op\n ) {\n expression_array.splice(indice - 3, 1);\n }\n }\n } else if (\n indice < expression_array.length - 1 &&\n expression_array[indice + 1].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n } else if (\n indice < expression_array.length - 1 &&\n indice > 0 &&\n expression_array[indice - 1] == \"(\" &&\n expression_array[indice + 1] == \")\"\n ) {\n if (indice > 1 && expression_array[indice - 2].type_op) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n expression_array.splice(indice - 2, 1);\n } else if (\n indice < expression_array.length - 2 &&\n expression_array[indice + 2].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n } else {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n }\n }\n }\n } else if (expression_array[indice].type_op) {\n // iVProg doesn't support operator remove\n } else {\n let opening = -1;\n let closing = -1;\n\n if (expression_array[indice] == \"(\") {\n opening = indice;\n for (var i = indice + 1; i < expression_array.length; i++) {\n if (expression_array[i] == \")\") {\n closing = i;\n break;\n }\n }\n } else {\n closing = indice;\n for (var i = indice - 1; i >= 0; i--) {\n if (expression_array[i] == \"(\") {\n opening = i;\n break;\n }\n }\n }\n\n if (expression_array[opening + 1].type_op) {\n expression_array.splice(closing, 1);\n expression_array.splice(opening + 1, 1);\n expression_array.splice(opening, 1);\n } else {\n expression_array.splice(closing, 1);\n expression_array.splice(opening, 1);\n }\n }\n // if expression is empty, add a new var value:\n if (expression_array.length == 0) {\n expression_array.push(\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n if (first != expression_array[0] && expression_array[0].type_op) {\n expression_array.splice(0, 1);\n }\n}\n\nfunction renderElements (\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n) {\n /*if (expression_array.length > 0) {\n\t\tif (!expression_array[0].type_op) {\n\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n\t\t}\n\t}*/\n\n let i = 0;\n for (i = 0; i < expression_array.length; i++) {\n if (expression_array[i].type == \"var_value\") {\n const div_temp = $(\n '<div class=\"single_element_expression\" data-index=\"' + i + '\"></div>'\n );\n if (i == 0) {\n if (expression_array.length > 0 && !expression_array[0].type_op) {\n //renderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n }\n }\n VariableValueMenuManagement.renderMenu(\n command,\n expression_array[i],\n div_temp,\n function_obj\n );\n div_to_render.append(div_temp);\n } else if (expression_array[i] == \"(\" || expression_array[i] == \")\") {\n if (expression_array[i] == \")\") {\n renderFinalAddElements(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i\n );\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n } else if (\n expression_array[i] == \"(\" &&\n !expression_array[i + 1].type_op\n ) {\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n renderStartAddOperator(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i + 1\n );\n } else {\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n }\n } else {\n if (i == 0) {\n } else if (expression_array[i - 1] == \"(\") {\n }\n renderOperatorMenu(\n command,\n function_obj,\n div_to_render,\n expression_array[i],\n types_included,\n i,\n expression_array\n );\n }\n }\n\n renderFinalAddElements(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i,\n true\n );\n\n renderAddParenthesis(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n}\n\nwindow.parentheses_activate = false;\nwindow.open_or_close = null;\nfunction renderAddParenthesis (\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n) {\n const addParentheses = $(\n '<div class=\"single_element_expression add_parentheses not_allowed\"><img style=\"width: 15px; position: relative; top: 3px; left: 1px; height: 15px;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAAEjCAYAAAA48U27AAAasXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZtZkhw5km3/sYpeAkYFsByMIm8Hvfw+Fx4kg6zM7HolHaykOz3MzWA63EFh5c5//7/r/osfK8m7XGqzbub5yT33OHjT/Ofn8xp8fn+/n/Pjd+H3z11MX28jr4nX9PmFna/jB5+XX1+o+evz+fvnrq7Pm9i+TvT1C078fpKurPf7a5FfJ0rx83n4+rfrX18Y9u12vv6L6+u0Xyf/89+5EoxdOF+KLp4Ukv/8/blSYhWpp8Grvb9L1CeJ9+n9HVL71/g5/Wutvw7gz3d/xM//WFn6FQ73iezXAfZHnL4+D+WPz9PPy8TfVhTizyvH7yuyEZr//vMtfvfudu/53N3I5giXfd3Uj1t57zhwEs70vmb8qfxXeF/fn86f5odfZG1zq9P5yT96iMT6hhx2GOGG815XWCwxxxMrrzGumN5nLdXY43pJyfoTbqyO/OzUyNUic4mP48+1hHfdrutxscaVd+DIGDhZ4Bu//XF/fvCf/vntRPeqDkLw7RMnyoJ1RZUsy1Dm9DdHkZBwv2JaXnyD+7z4P3+U2EQGywtz4waHn59TzBJ+1VZ6eU6+OA7N/tMvoe6vExAirl1YTEhkwFtIJVjwNcYaAnFs5Gew8phynGQgFFfiZpUxp2Qkp0Vdm+/U8I6NJX4+Bl5IRKFpKqmhgUhWziUb/dYooeFKKrmUYqWWVnoZlixbMbNqwqlRU821VKu1ttrraKnlVpq12lrrbfTYEzBWXLdee+u9j8FFRx6ca3D84IMZZ5p5lmmzzjb7HIvyWXmVZauutvoaO+60gQC3bdfddt/jhEMpnXzKsVNPO/2MS63ddPMt12697fY7fmYtfLXtb1n7M3P/nLXwlbX4EqXj6q+s8XGtP04RBCdFOSNjMQcyXpUBCjoqZ76FnKMyp5z5HpNL4BarLErODsoYGcwnxHLDz9z9ytzf5s0R3f/fvMW/ypxT6v4vMueUum+Z+9e8/UXW9nhw+yEydSExBSET7cdBIzZWA1MBNoQnLSu+tlhBoVpHT7kH8KX0vLhLP2s0Cvr61M7xdR+XzqKg2rht2eGnzjt3PzeectfiZhrRJnRXnGmWeqz68rC5/T0gBidKNzRX2/BllkZgbl473ZpL6H53fTndlNpSUy6gjTscu/ZZRIuF/4kWdqrNzwUe8WbPRcAnd0Zci59mmYWUGnqD71jvukQszVvWSW2wsHnGui3M47tdv2/LrtmYZJHc+11KZmGA6lo11DQF87OtRAI5AyyQsg+ndwqje2qFFShDy2bYbrIc3uTc5g6cydRG2UfST/SlCf769RKsk5AyKRLyeR3XynM3i34OI4aUUAPiCSjHkS3uzOi0um+t5cx2k41LYR2+3/JWco8fc7sNxrU74febzi6QnmpkDH/SDGeullbNkaBE1kA8aYA21BidFqMdLLQ4qHyHpLCknvaLAp35hnWhTjhuQ3W1ndx2o75ZYxcAL0D0VhZFpIPdRp4PQHydNyK289mdAjI6f8509wEH6nqkQnXNFjbNfcOk5SYRqcsqSydFRGar+roLvebNre/FvQbUUgynkdmdRz91IGEW/7DmqVxascOXJGVpbay8iXFjbDW7HsSeE2x5K9/8R92RlUjR3jRi3aOudK2ONSj3swEYosIdLTXhruH2XZe7FViZCeAIjbR0An6BmMZHrexKzZK601F80eqsZLAfiqqXdMlt4H43qyjm4ljQkz9U2x7cAPdTYjulNJTDEZjdQyufDVI2muX4u200NfdWhsvhNbTrwJV9uBsfy2rT1Nwcdo/tsTdg5QtkTlNIMMbwwDEszkY15UCr62SURqUgF6GnrnoK0+omImDfAcWo0RYhi3qAjYys9CtXQkyt3NAJ4/le7u69OZuiKNw0nQjs2bZpO64qONwNKOFNo4CR6wOMArG5y2sLPOxUSCmSfgjL5QFC8I8bDqVPMuJtAbMsDxS/xWqIi0YiTlRBjpSpn5DLLUgv1n4AJ2eUiB9vjf/wenum9TprPoTzgjzlltxQcUb7D+rEFc8r51+DNs1n3mxAz7nw4t5UM/hSIxAY70J3UBZzcaJN8CO33EgOt3g2WVNhEgAliw6Fx1YQ7NxQAUGKEKKgFiA+r5DTop6SVPIzzRLBoOvPnMcFOsSPA/NXoYM4hSWSypoA896oaE5Ookal4WKcVBGZOYTxtk6XAcEnjunoo7FXSnTgZSkZDj5GT4IX1G5l5RmWf/W+VVo5URhg+i4TOEZO0Vkdq+RCW0N9RsyjJd1HXT2Jj3KjndQCZ3RbIv65BrmBN9ZeKkQOV+TOpDoREVTnHplqKUlgwc/y/SRrZd3RyyFfTd2/LJZGFSAkAIgMpKVBMqOWGZYrFa1BpsYCZDuVh/Hw7dR0pkJOyy2jktPqh45q9O2MhaXFNNecWleGy1p3yWYEmULvFFb2hOSACiDYqqxmTGxAXcUSyyN8m+uPGgUqRcVFNYeZSc1x75xJfEUfdwl+qnx8p41ZLxFiPf0SshMn58NkrPYoFAZNyIbgAH5KiMuS3AaoDvVLPRfonSuNAaoY5QiCj77boq8NWAYb+fpGLKsGPX2PFzlHodwXT9XV8KkZZIiJaWpGhFq+/0xx79V95zxWB6FepYuTnQgg+IaGI98mVKWNGyAWIRBQ/f2p1GAAbqejbSCJQaI5ydFJbCaamxI/kSDXgqTrFWJIaDE8+qqUB3Cy6aVLUR60U1zbSVHcgkJZH6xDHE4o1IygnGieqyEGxfMIAXofYTSVWgJR0QHrKnuVFpGqsM1XOjhPHaJs4t0xS2bEPCZCrbDk6PFziDQAAjTiJBPseLJMkAowO6rjwiJoLrhwokWopzCRqVOEg0AMWulGD6sbNnGDvWjElxb+4s6oN4IN9yNGYN9dUoZao52IVsEpdUnoSx0+UEGr4IFDiQ9KEpjWgbwUVM2DWnaT2tf7ghLGvD6dZ2qZQ73GjPjsCen00WdfOg1B1vaxXigRGp5ujMEVaSJ14ubALTifcDeozb03lhhoQfTtjM+hUZGZRpxUN5naxBuZFERs7kwxMNp1b+QSij9cgGDkPShn6AcctIY1N/nrCn48FUemrX7XktmV3xb9d6+lgKz5zgqe5TX7Tuds2mHuBXkFVLHLT/cYSlN1DEgFhY7b2PuePqNyNhbqv3cWPSkcIL5kBC+iZkPt3M9d9brtDQGnfugbpgF8NqkFPUs7nwGW7BBNjN6hZmeRHiWun5ViGKCANhe3xiXR9DT6TiAbbY4+seUl3jqdxCIQ0hJy5BI9SEWNg4yDWJEdHg6AH+lD1zduLpvYX30Fvx1ACQz1ZbCyFJK4AO0NDmhcBSVD2XvQJ+Nu7KyKjGp38jp3Js4Txiy4AKXroEzAZd9B9+03YF2feDlrUu0wAxAFw1C3aJiL7k3XjYK34LR030sRGfq8BrX1TNAGDE83gQkRjlwxIk9NoM21N5VxLram4WnpKVYJo4A8c2GvEDKN66EqUL/5iO4q5D1REbNFMARu8wAEMS2h4Cmg+eH+F+D7q9cp4jOFGpdEG+AkS3T8ljYDHfpKE74lZ7fbvhHhfQ0XA8dt4XiRWLqAFFYEDPKFm8Vn3I6ptImq5UqAVqWPqSgaclICpsY+YX/JGizHSmUQJXRKtEejInIMKuIwnxxw2UB10m1Lzd2JoqOCj5BOINdlFNKgvS1KQBx5golqCLiL8WYJCWknKHU9ofBx6bPyrV5BNeS3EVO6QMNO1OAAGPB7NALsG9TUNdP/Xg4H6OZ7SDc3aClYF26EX3elFeGxOXPdAYPMxaljEn6VW3w6TRI3MlLnxsL+aO0DjHDd7xBlUnAjoRe6BsWQHt5z424QUiwAQXxuTsATMLsWNp8eXdkqsibNOWBk1bpmBnQ/eiJLL2B1YCZNGmD8jcsqBfnVNOhdwEP4Xhb/QR1dAWeuA6Mx8CtSvTseFzWpQCpezB3VjP5ba2AhUOg0OVDEr7LEFcte2xBeJV7hdfdj42uoNvRcrA5bYF4ThrpkwjyKrc/9aBNBjTajfnBs+JuqlMQgbZgk+9AhaL6K/SUp3XFtg9H5oICbVN6VR+r3iax2SW3r6PUMyhS6irsos3JC0jo0uQaZ8LAXWUNdKJeA6sIe1osSg64w/gcUOm1zGPp410syLwIBy08mep6qWs350EzgkxPuAsTwsCEbB9jExWkTLCDV0KlrAxMewZSj1V18FaX0TLQBTJqswIBu8KUCrABy9CuW6+UGFoWf6TcPX65UATPEJhFGBeADKLMCPVXlhUwgaHCQBwleqaAG9WnYA5thjMbAxCCoeTuxr8imVbDdROMKSGY99WnV9AMO3R+4+O++hotSIO1BUpgK7m5kgZOdjJPs+oyF3MoLVoVuItRWj/QG2l+OeEcKCmOIQJmiN0RSWShmNyGdWelM4CV1MReqFLU/T/3AYU4Z80vwK0Att2AjLsgWH09MdsaCHA1ZHir1hUduHCafuTUTglsznzQh1JYVyfT11D7NQmfTr01CGy6k+jFw40Et4nGBDsApGh9pSIYzgvkjsUADEBp4p5hOupTAFHtFgKUuurqhyrhJrOilJLqpThRCzS7/o+i7XzQWuVSm4N6qISOKrj/ZJzV3BSH7rw95Bzgd8Uu+YEK2LEMd8C8JuOiFCBDaGxYA1F6vE6TsJaOsChYrHYl+V9HcOg3yRNoCraJqWxKR8DJWjYaa3mqEEqwZFIG/IeUBz5o0BcBAgEndIVSQeOA1/EoB34thle6+05f8bm0k0+4dXvT8A+S5v/kFxQg8HY2TML9UJOqCrqv8G55tpF/sERqW8UJVO7rZyForA2KBpS5E+voZOnmvyEkkL+KbuuOMWN2F2R3aaaEINjoVbM2cwf3TKaj4InhG1wB3pukv+m+gp1gv8nAi6yB3j7X2DurCN2+0GiWrzYutkR6RsohtwOmxeIqMwt7gx4Emn2dpMsQaLnPX7xD3xzG/jsCU1DfToCpQFxRJ1pyWk9z8/PvvJeF+1kSQ+GHh6D3YICMrwSTxe4HsybMGCp+03a6BWwb58msimPwkZ4BfKobJPbSRlZ63rNkyCej+kOxtRqBYuqEAIRrM8doCobQJUjaueaozze8bDhGBh3a2z3wv/6/zm99fU3N2icLVjK8MNc9uH1uFNMXukAUU0esuJeRq0i4s8KaJEzc+F3yxd6+APxhCilGWqgSv7yylXadDZ/MGLzPWoXZgA3JjlN/LHMSpXT1x6sAdoTm5abwnuMiH5FIDAPj9kBCocbYWuhmSDmYoaFFKH3wlM3AgRcp/lNl2dNKNGgUHAlg6Kq1P9M8KhgpOxKtYhdQX+F27DEOnN8/GTinxoLZuNQbS/yhuaHhB+YFrmg6N10MBGT2GXz1gKxOBSSwii+CGrG9GbmgcfDCn9Ti0yf7CEaItwQ9MCpw0HLnG92RUKe7ONy8qDq2IR2U1CbmNekgRSPLDUb6ULNqEEpC5fQpIN9CxaBzk8cEywTJjtACGpeVaHmjieEc6I9LBjRjhWUgwIeTQ2UvQ+f69UeCPEnoV9KY1vxXR35YQOP8iyx38axkN97dl9FVEXPlTRnOPlOkJhE0nmKhzdBY2TGYUtHCJHPKDj0M8fYQskN6wmCdA36FzXiShRtbopdEiJK6x2o17robiKJLEcXGihGUAOzVXJa6I9xPj0IRuQMoUw7h1DjQwiJD2wS1RpT6HxsWRYBhW6dLtClDRMqCpWsJMdFu4DWyLYT3BNoq0JYAs6Bt0NdJqoakIkLgam9nRh3cSoxG1rYefQaWnFoOSizL7rA2ttmCtiaaaODPgJInOub/tz/qQxR0FyeLykwDfFcBXVo/y2OHP3oRJSFlkV28tI2vK21hR/yAW+z4Ukju6G/N0EgDFgiVde/8gX1AFUAnxaHwgn0ZIkCAZKYu81WfYDozPbubQz+CBVNT6q0kEIkriflm3TvOg51OmqAyrDxBqwIWVJy/HsZw3NATZUf50AapGaj0N7U1QZU2XxglrwwckME1w0L3cnLR5WHn1SYYcbgHlQ7dJHVMLHPrwAOFZuEiUvjKkEQ6Ptt0iU1LGa6WQsF5wx0ENFBQbN00P4xLEjJqtIUGyjN7ZT2qRvvN2iAztQQKWkAczqd+1dwhiXxrynKLfX7WHTW4ev0MpwK8aH9MYFA7X1RswEry1OV/8UWxBGWEJVDYuBXhMHmm3tOHBl6emC0IklPUo+p/SvJ/13FMbbTQm5YYNWJ1DqC5MDURHdyQac2qzcVDfJFlb4fQVcaoEAEnWg6qISkCVVhnV/kKEAXlEMI+kHzj4AVy8VnsBxHYQAgs69Eq7eZqWGy6ajKrYABtbbxca+UnTWHbAsaZejbp7BJzgp68zfzsv3abNfQoeXaaReFxcJ1b+gPXt5OWK9kQR1MRA2w77hdq/LO43qtd20Rk4b67EjWCUh/yhjBJ6ARD3EkrEiCRj9NGgx3S7tFysYXbNmVEOmFRgRGwXtUMWRQgkaeCQITpIa9aI5wbYoBZ8eH17mVgOlnUDqjS2H7J5brwWVh9dALYl6HMQZkMFZnqLxuGyAIrbaBRoUU5KKLaRHVvcaDmnjkqBPw7ldbCu2BQMHIHT80IqGmAf0J00DVkj1Je+SChcjfaoAyEuyiiAa/IsELR88e/TRKMckQFoSxRoEbZryJK1PZomaB/gWPRkS/F8ZEKbH6Gnjdoq2iC/l+4HE8C5qZ3DLwRzc2vi9m8PEbrH0MruYRJGJR0rFQnX6rRZSV1tPFkhchEopaj0MEb3b/MEyAO9LkRAb3VkWwfHQAPcK/kHPvGEaB2n/eS0C5JPfbY8AKmNN4VuD/wz1W0ekU0/kY1M5vrcECGttjpeXQ80YDqj85am8p/0jAFOsra+fxgoDQO4NERG62ryQehy1lMJVhrLYeUwJIhneBHkTAFIyBTthPTe2jKjCMGQQXFDlW8zaHSLINIx6uI9TdQXzhNZQuFDPumi/KU+lqGEirRF1b4qZ7EKKY5MMUzN91G0qOak7WV+UymgUva3LAy3/ynhHXm4/TvE+6+DPof8OIClz9gpKwdGXw05NdKJ4BHFqT0TDf5or904WJt/+kI65+dvPp/7r09x4q7ngfiI6LmSbK+KCodcJ8psk2X6m/oWiGVMTh+w+YxohTww5KAemENzPgvRtR0tERNTxrYaZhxMTmm8rVCRr/pqa+wBYj/fFCRuYLm6S8IeWSo4IccxQawHa+VOy+O3PKuRupYsAX9FhcPC1qMgOQJ34AxkPzWpJ2FBOnctd1BfWiIa6dhZKNV9tUMGqGf+WWA503BeZEAlIqUpNcyRtr2bxZ5oG8NKucQxY68dEWLaziPSFE7A5KCw6BYkFWhETdaA6eVe1zoUIi4SFirAXkEf7DEc0pSqxczst58X0pSPr8gbTeFw1Z7O7Nr7L2VS5Agv3zU7qW/ChaLpevJhOCRcxGLrwZyFe00ShQVRpx2eBt7OTxcCe8j5RF60LxxvowGgfCJveqDlwv23PX0b9UARgLT1tAgcCKg16gI38X2+ALmTGQ3wkMGsAAjxEg/LQ0dyC3r2JLSOTjTRek3vISJ6j0rQzJ73NLUkA1gCXyHaKXoLYy0PCwM7GtVHYk+7EQuPjqWX2oFTkfv0x4RgatdDn6gVVCkNEVfnHWC6Zpga0xdFEi9y3vZz/ZJ8iBh6sO+EpffwWRA2f7XVSK35BYA1hHHSzFmPoPQKdk+XA3456ymzSbQXugnz1SX4OU5pyVvPniXkPSe0maFJvaJ5P4O68sThr2Fdex0XgaWMncF2Uwmosvh5aCf+7KlvLYUWKJ2be5NIx82QUaoxDO0RkwPq7QAcS9NwHOI+7ykvDErUeKwTKu0Doq2ORsifp0eWwSJyV7r0yPGg6jLCdyQ/qwYVNwKkXc81QMOz8l1Sqi1UeGLO52O0HYDWckhmwPNj9Qxpif+RPChqtXYjHlFj04wFAnXoNYInB/BAEIskOuV/qTs9OpOQGHpgpGhGCWUQk6anGOhubaNMkO3u5wSq8peCBNLYZcbNbQMaOCgE+yC4h6JLBxWqJ/7IsLY/3+Zpk22kX99DR7jaZ7x46SklPZgEtOBOiIvm2RVLaXHODAClqefrNNMB46ES9Dz9PULAH2x7vaiBZTVt+Ohxifd0D+Xl9PTV1OM6zQZuBKaNEiUggl8IkojUxq3Xq+0GAcDQbJ41ovaQoVyWTAEL3rXaVHwoGzB7In8KgkgO/YAAoyCCaFTUrlp2JY3r9QAf8SLo5waiSIVg6/XoOWUfPEUx3wb3rYXuBsWSniKBFge64SIqIeaQgacWjyeFsVmmqrP+yU26o82/g0nA7X/4OaHntH9KgGESIAkX2KwPzYFWgFq0CXA02NHRGhrLTTnVf8/aD3r+Od5nG5bo8GrOtjVvhjGADWEPmpFzTk35fdMOUtGeIqgN9yuWjZsDish2EA29saMMYtOuA0aNUPB69CzLMT3rA5nLo4ZGxhb2OLugh4T1QBHZEoBEgTrr5x/FtBGBm4JWpRvxECjNQ1/DLW1YBwq49I42REeEVs/cNNHLVEpK0VYfSB370wEUtNT/fTtxehAOXrE5MMOo+gHVXxZ5XYUEWOmTCRKu+DdZKtT6J2pH+u7zMGj+2K6/PrHTmZFCoNs7sWbAxdrXoAM/FDX61R4XzFHPBmejdHxRE0MfiL+lmcBwkK/cPNUtoXWh01W69mKgPm0vPXuHPBsbINva9FR5kHoZbc3mDvDa9EAcYH9Mj1NphF/04EddtDlYCXN3aATYwe8iDjwcpL2BqF6cVqGENMbGfpUNi+hhJD15kXpASmqIFkIpA0+WsVqdLszEXNH7PNuTiB/Vg/Oqg/vS4ASl+ClIjZo/yEttocbuwX97Pc82QJwDnIMWiImsjYuZc2ifspZe69qZAwsdQRCzvHxAmPXqwUcKTVu8UaERSkOBVfYKkb+XJEhqtExGMXNm/X8ZRnHBss+yI5Y+o8zOK8aV+G2EFIKFkAB2VTN8SKj3ni2gUE1EhBjCN2A8ktMOPQV/QugDsc0dY4/CM+aqGQRZ258pFrfI4jEzS0yUMObYTQilyYMpRgSdGuydXNdrQxa/qM5whf8DWb3GXCqgM7cAAAGEaUNDUElDQyBwcm9maWxlAAAokX2RPUjDQBzFX1NrRSoKBhRxyFCdLIiKOGoVilAh1AqtOpiPfkGThiTFxVFwLTj4sVh1cHHW1cFVEAQ/QFxcnRRdpMT/JYUWMR4c9+PdvcfdO4CrlxXN6hgHNN02U4m4kMmuCuFXdCKEPvAYkBTLmBPFJHzH1z0CbL2LsSz/c3+OHjVnKUBAIJ5VDNMm3iCe3rQNxvvEvFKUVOJz4jGTLkj8yHTZ4zfGBZc5lsmb6dQ8MU8sFNpYbmOlaGrEU8RRVdMpn8t4rDLeYqyVq0rznuyFkZy+ssx0msNIYBFLECFARhUllGEjRqtOioUU7cd9/EOuXySXTK4SFHIsoAINkusH+4Pf3Vr5yQkvKRIHQi+O8zEChHeBRs1xvo8dp3ECBJ+BK73lr9SBmU/Say0tegT0bgMX1y1N3gMud4DBJ0MyJVcK0uTyeeD9jL4pC/TfAt1rXm/NfZw+AGnqKnkDHBwCowXKXvd5d1d7b/+eafb3AxZ8coJmdd3gAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wYFECEioUMxaQAAHgNJREFUeF7t3Xm4nVV59/HvOgMZSMKQwXAQODs0QmQKU2QeLCAiin0FqW/r++JQx2odKwJqqx5RK6iFFrWVCh0EHAEVWuDibRVQKK+nKMrFYMIUpkAgA2Q4yeof+xx6kpyz72evda+19nB/rst/cn4neO08v+d+9jOsx3nvyck5J0WaMQP4LfBSKRjpPO/9kBTqZs65q4HXSblIN3jvT5JCqaxZs4aDDjqIkZERKQrA0qVLpYioRwq0uM+QvpwPARdKIcNHgY1SKNKJzrk3SaFUZsyYwbHHHivFXlSr1aSIKGtBlafngcD7pJCCs733L0ihbue9vxe4RMopuNA5t4MUSuW1r32tFNlCbEmzFVS5nD3A14FeKRjp58AVUsi86C+BlVIo0nzgc1IolZNOOokpU6ZIMTXZCqrsvcChUkjBh3zuL+ltzHv/DPBZKafgXc65HP/+25g6dSonnHCCFNtCzBTNUlDl6TlAno3g297726SQ2cbFwANSKFIP8DXnXOojqAk1e5gbI0tBlX0VmCWFIq0DzpZCZlve+w3Ax6ScgoOAP5VCKRx//PFsv/32UmwLoVM0eUGVp+cpwOlSSMGF3vuHpJCZmPf+e8BPpZyCzzjnBqSQtv7+fk4++WQppiJpQZXLOR34Gymk4HHgfClkRB8CUn9/n0n9iCq7kMPckCmatKDKPgEMSiEFf+G9XyOFTGPe+/8ErpRyCk53zr1KCmk74ogjmDZtmhSLlqygytNzT+p75NTuB74phUxlnwCq3XYT5yvOuX4ppKmvr4+jjjpKim2j2SmarKDKvgxsJ4UUfMJ7n2OD6gre+/uBS6Wcgr0pcMLomGOOkSLRXIrLfMrT81XA9VJIwTBwkF331OWc25X6kclUKRvpOWCh9/4pKahl+fLlQVMUqt+n2+oTtB/4ihRSco6VU5/3/lHynNzbgcx3GA0MDDA4OCjFoqgXVHl6vp/64UtqP/XeXyeFTLDzgVVSSMFbnXMHSSFNoYe5Vb+LqhZUuZzzgE9KISUflwImnPf+aeACKaegh8yXXUILWpVqQZV9nvR3DAH8yHt/ixQy0S4Ecnw/PCrnI2mHHXYYvb1hdxxWmaJqBVWenocAZ0khBZuBc6SQiTd6bTnXDSBfdM5Nl0Iapk+fzpIlS6RYMLWCKvtrQLXxk7jKe/8rKWTU/C2wXAopeCkZ76U++uijpcikpCmqUlDl6XkGcLgUUuDJ81SMGeW9Xw98Ucop+bBzbhcppKGZVRaapVJQRf3kO1X+Pe/93VLIqPsG8IQUUjCd+gPkyS1atIjZs2dLsUk1mqLRBVWenu8Cfk8KKfDU1zMymY0uH/MlKafkrc65RVJIQ6opGl1QRTOp37uZww+993dJIZPMJcAKKaSgl0wnpmIvt0w2RaMKqjw9PwbMlUJKbHoW5L1fS76VEk9zzh0phWIdd9xxUiRIVEEVDQAflEJKrvXe/1IKmeQuBp6RQkqSn5iaNWsW+++/vxRraKIpGlxQ5en5aepf6nP4tBQw6XnvV5Pvrp8jnHN/IIVixVxumUxwQRW9nDw3JQBcN/ogsWkNX6X+FEoO5zvn+qRQjNjvobDtFA0qqPL0/Dzp17cdY9c9W4j3/jnyPOkCsBfwNikU48ADD1RfZSGooIoOA5pf3CXMrd77W6WQye4iYL0UUvIJ51yyVaf7+vpUDnPHT9GmC6o8PXN+H/wrKWDy894/DvyTlFOyK/AOKRRD4zB3vKYLquhI4EQppORe4BopZIr5EulXABzzcedcstUdtC+3NFVQ5emZ81rkBd77zVLIlOG9vwf4sZRTsgv1O9aSGBgYEG+Ar2Ls72iqoIqOBY6XQkqeBC6XQqa4nF9Bzk75OJrmYW7lgipPz5zfPS/23q+TQqYs7/1/ALdLOSUvAd4thUJpFbRWq1Vf1U+xoL8P3CiFlDwP7D665IZpcc65M4CrpJySJ4EFo7cdqlq3bh377LMPVbvVSKUJqlhOyPQI0KhLrZxt5fvA76SQknnUX2OpburUqey1115SrJJKBVV0EvWztzl48i3ZaRR47zeR7/Y/gI8652ZIoRAHHnigFKlELKjy9My1Sh/Ub+tL/Z5Ko+8yQP2wcxJzSHRGd/HixVKkErGgio4k3/SEfLeQGUWjt//lunEB4IPOOfXXimQpqPL0zLn27AOALUTdvnLuXAeAN0uhZi1cuJCZM2dKMVGuCbov9Zfv5nKJvcahfY2utJjjBcBjPuqcU+9C7POh0KCgytPzbPIsown1Sys53qhl0so5RfcC1J8X1ThRpL7XmMAewJlSSNG/eO9XSiHT8r4PPCaFFH1MCjSrXQr6USDpg7JbybnnNYl47zdSX6Izl0Odc6+UQs045JBDpIhowoIqHt7OBd4qhRTd4r0flkKmbXyDPG/oHqM6RWfOnMkee+whxRpKPUH/DNB9xLyxr0kB0z6898uBq6WcopOcc/HHpePEXm7ZpqCK03MaCW9InsBzwPekkGk7/yAFlH1ECjRDvaCK/hjYWQopumJ01XLTWa4nzwuXxpzhnJsvhaqKPVG0RUEVpyfA+6SAMru00oFG78/N+TxvP4q3/y1atIi+vvBzpKkm6HHAflJI0d3e+1zPEpr8cu9836l1+19/fz8HHHCAFJtUqoK+Xwooy/0PaDLy3t8H/EzKKZoPvFEKVaVSUMXD292B10khRRuBf5RCpu3l3gmrfUWL+R6aYoK+l3wLUQP82Hv/lBQybe8qYI0UUrTEOfcKKVRFdEEVp+c04O1SSFnuPaspYHRpklzLoYxR+ao2MDAQ/IJf7Qma+9LKk9hjZd3kW1JAmdoll4MPPliKTEi7oDlvTAD4rvc+561gpqyfAY9IIUX9wJ9IoSpCb1joUTy8PRgIP9gO820pYDrH6DO+V0o5ZW91CiUJLqgUaELSN0dN4GHgFilkOk7unfIgcIIUkixevDjoXI9WQacB/1sKKbvSVk3oPt77O4H7pJyy6OEzdepU9t57bym2Da2CngHsIIWUXSEFTMfK/W//eudc2GnYcRYtWiRFtqFV0Og9TJPuG92Tmu6U+zB3CgoLi+25555SZBsaBV0I6LyMorrce1DTQrz3vwXuknLKoofQggULpMg2NAoa/X88QO49qGk9ubeBfWPvLCpR0D7g/0ohZXeP7kFNd8t9VxFE3iW3YMECenqaq1xz6W2dTP3O/5xyLoFhWpT3/nfAr6WcsjOdc8FL+PT29rL77rtLsS3EFjT3pRWwgpr/kXtbmAmcKoUaafYwN6ag08n7WBnU10m9QwqZrpG7oBA5lHIW9HXA9lJI2bV2c4IZ5z+BR6WQslc754Kv+ecs6JukQAIl9pimRY3urK+RcsqmAG+QQpNp9lpoaEF3pH6CKKc1wE1SyHSdH0qBBIIPc3NN0DcAKosqNeHfvPfrpZDpOjdTXxM5p+NDnxOdPXs2M2ZUf6l3aEHt8Na0hNF3uOR+aL+HiBeCLVy4UIq8KKSg86kvq5mTJ/8/gmkfP5ICCQQPqWa+h4YU9A3kXRQMYNgWBjMN3Eh9J57TK5xzQW9GauZ7aEhBT5MCCfybFDDdy3v/BPArKZdAUBdSFnQH8h/eAtwgBUzXK7ETb7mCvpr6Qko5vUDeVcVNeypR0GOccztJoa3VarXKN81XS/2PoD1GpP+wyyumgp9S35nn1Ae8Rgptrbe3t/KLfZspaD/1CZqbHd4akfd+HfWS5hY0tKoe5jZT0GPJv+4QWEFNdSW2lZOdc1Ok0NZSFDRoTxHpCe997qUtTPsq8T10BvBKKbS1qtdCmylo7kfLAP6fFDBmzOjOfIWUS6Dp4aU9Qfel/lrB3OzsrWlWicXMm36IW7ugJ0qBRKygplkltpldnXNNLXq78847V7ppvpULuor8Syua9leioBDQkcHBQSlSqaD95F/3FuA27/1mKWTMVu4EnpdCCTRd0Dlz5kiRSgU9nPxLm0CZ7xKmzY0+fna7lEvgWOdcU3fZzZ07V4pUKmjTewYlpQ5VTPsrse3MBJpa2Fprgka/ei3ARuAXUsiYSZS4owiaHGYaBd0BOFTIpPBL732J7xGmM9wGbJJCCTRVUI1D3OPJ/3A22PQ0Ebz3q4HfSLkEljSzJKdGQY8Vfp6KvVrQxPr/UiCBXuBoKTRGo6BHCj9PpcSHazpLqZ38EVJgTOx30GnA4gY/T+UFwN5eZmK1fEFnzZpFf3/jKzONCnoo+VdPALjLez8ihYwRDFPmRNGSZq6Hzps3r+HPGxW08p5AWak9n+kgo1cB7pFyCTR15Ckd5rZiQe37p9FSamdfuTvSiaJGBT2swc9SKvWhms5TaluqfHI1tKAvA+RzwPrWA3dLIWMqKlXQyhM09BD38En+PLV7Rm92NkZDicWsof58aKUFDkInaInb+8AurxhF3vtV5H/B75glUgDCC3rAJH+emhXUaCu1TVU6kzt79uyGP5+ooA7Yf4I/z6HE/ZOms5XapioVNGSC1oBZE/x5DqX2dqZztXRBd9lll4Y/n6igpQ5vNwH3SSFjmlRqp7+rc0682Xa77bZj++0nX7BkooJWan4CD3jvN0ghY5pUaoJCxS41utTSShO01J7OdDDv/QrKLGYNFQva6Hto3wR/ZgU1neY3lFmZslJBL7vsMjZunPjy/9YF3QEYnCCXw/1SwJhA91OmoAf84T/FbdZbF3TvCVN5LJMCxgRaJgUSedmVb17YWxsaDn7sbevvoAsnTOWxTAoYE2iZFEhkO6Dam3on0SoF3Qw8JIWMCbRMCiQU1alWKehyu0neJLRUCiQU1alWKegyKWBMhOVAqWvsUZ2ygpqON/oSroelXCJRnRpf0LnUL7OUsEwKGBNpmRRIRK2gUX9RpGVSwJhIy6RAIoNLz11ceZW/rbVKQR+RAsZEKrWN9RFx88/4glZaoiGRJ6WAMZGekAIJBXdrfEF3nTSVXskPz3SHkttYcLfGF3Rg0lRaHnhKChkTqe0LGvyXRFppNymYDEoWNHj4tcIELfnBme5R8jxH8PAbK2gf0PgtLulYQU1yo0twviDlEoku6Hy2nKY5WUFNLqWmaHRBg/8CBaU+NNN9Sg2D+UvPXRw0AMd+qfHaf2k9LQWMUVJqbaJeAr9CjhW08fLWaa2SAsYoWS0FEgrq2FhBd2yYSqvkh2a6S8lhENSxVihoyQ/NdJeSwyCoY1ZQ001KbmtBHWuFgpbcq5nuYgUNUPJDM92l5DAI6thYQUutpABlPzTTXUoOg6iCBv2ykpIfmukuJbe1oI6NFbTU+0AB1koBY5SU3NaCjlLHCjqlYSote9TM5FJyWwvq2FhBgxc1iuRHl0Q0JocRKZBQUMfGCrpdw1Q6JfdopvuU3N6iChr0ywpK7tFM9ylZ0KAhaAU13aTk9hbUsR7AUX8cpoSSezTTfUpub8ETNOgXlZTco5nuU3J7C56gQb+opOQezXSfkttb0CDsodxaRADBrwY3JkDJ7S3oa2QPZcd+nxQwRlHbHS32EPiLSkp+YKb7lBwIQT0rXdCSH5jpPiUHQtAbvse+f5YqackPzHSfkgMhqGOlC1ryAzPdp+RAsAlqjKDkQAjq2FhBg9qtoOQHZrpPyYEQVdCgX9bgnLOSmlxKFjRoCI4VtNRbnyDwDgtjApQs6DopMJGxgj7XMJXWDClgjJKZUiChZ6XARMYKGvTLSkquh2S6S8ltLahjVlDTTUpua0Eda4WCljzsMN2l5LYW1LGxM6hBv6yk5F7NJHTKu598t3PubVJOk9/kz/zJ1+c9MMmPS25rQR2zgpqE3K7AwVJKU0+Pn9bgxyW3taCOtcIhbskPzXSXkttaUMdaoaAlvxeY7lJyWwvq2FhBn2qYSitoSXxjApScoCukwETGCvpYw1Rac6WAMUrmSYFE1teGhp+WQhMZK+ijDVNplfrQTPd5iRRIZLkUmMxYQVcA6xsFEyr1oZku4pxzwBwpl0jwABy/ol+pw1wrqMlhNuUeb4yeoBDxl0SygpocSm5nKhM0+C+JNN05t70UMiZS2xe01ASFsh+e6Q4lt7HgbrXCBIWyH57pDiW3seBujS/osslCGZT88Ex3KLmNPSgFJjO+oPdNmkpvdylgTKRS29h64GEpNJnxBb1/0lR6NSlgTKRBKZDIA7Wh4c1SaDLjC7qGctdCB6WAMZEGpUAiUUemW796MOovizAoBYwJ5ZzbDthFyiUS1SkrqOkGewBOCiUS1alWKeiOzjl77MykMigFEorqVKsUFOxEkUlnUAokFNWpVirooBQwJtCgFEjkBSJuUoBtC3ovMDJRMINBKWBMoEEpkMhvakPDXgo1snVB1wP3TBTMYC8pYEygUtvWsBSQbF1QUPhLAy2SAsY0a/RB7b2lXCL/JQUkVlDT6XYHSj3OGN2liQoa3fpA85xzO0shY5pUasfvUehSK01QKPdhms71cimQyNLa0PAqKSSZqKAriHjANFKpD9N0rlI7/ejpCRMXFMpN0VIfpulcpbYplQ5ZQU2nK7VNqXRosoLeMcmfp2aHuEaNc+4lQKkTj7dLgSomK+itk/x5ars753aSQsZUtFgKJLK0NjT8uBSqYrKCPglM9hLU1A6SAsZUlPXdpOOoDbjJCgqK/5EmWUGNllLbklp3WrGgpfZ6pvOU2pbUumMFNR1p9K60QSmXwGrgV1KoqkYF/TUQfSdEgD1tdQWjoNTh7e21oeFNUqiqRgXdDPyiwc9TccCBUsgYQakjMdUjz0YFBbhF+HkqpT5c0zlKTVDVzkgFvVn4eSpWUBOrxDa0kcwFvQ1YK2RSOFwKGDMZ59xcYE8pl8DPa0PDa6RQM6SCbgT+XcikMOic21UKGTOJo6RAIjdIgWZJBQW4UQokUupDNu2v1LZjBTWmghLbznMkeMikTwpQv+j6ODBfCior8SG3hYef3cBN961i2cr1PL12hGeeH2GTj1rdMZH8l7M3rH92CmUu092sef1zTJWCAtwE/JEUUra/c26W977EzRIt6fI7V3DZHStY+sx6KdoS9i5Q0KeX334A0C/lEkhypFm1oDeQv6A91M/m/qsU7HQ337+K8657hMdWb5SiXe/5VY+WmJ6Q4PsnVPsOCon+4xV0/WHuxT97grddtdTKWdGGdStL3KDwcG1o+F4pFKLqBF1OfQmH3A/AdnVBz/7xw1z1X89IMTPOyMa1+0uZBH4kBUJVnaAAV0uBBA5zzk2TQp3o0tufsnIG8H7TDCmTQLJutHpBpwJHS6FO88CKdXzuplIrn5omrSbhLbHNvnX4QepL6ed0gff+I1KoU5z67if29a5H7XlC08Y2u0ObmaAA10iBBE6UAsZ0qmYLWuIwdz/nXO6bJIxpCc0W9N+p39KUkwNOkEKdYP3IZiliukyzBd0I/EQKJdAVh7n3rmiPO4RMPs0WFMoc5nZFQR9fZTcjmC2FFPRHwPNSSNkuzrn9pFC7e2zVBiliukxIQdcC10qhBF4jBdrdyhfUH4YwbS6koADflgIJnCYF2p2nFR8ZMyWFFvQ64FkppOwVo2+rMqZrhBZ0A/B9KaTMAa+VQsZ0ktCCAvyLFEig4w9zjRkvpqA3U18KJacTnHPTpZAxnaLHh69lsxm4SgopmwqcJIWM6RQxExTsMNeYpGIL+gvgHimk7FTnXK8UMqYT9ABEHOYCfFMKKJsDHCeFjOkEsRMU4HLqN9Hn9CYpYEwneLGgEVP0SfLf+ve/nHMl1j41JiuNCQr5D3N3Al4lhYxpd1oFvR54RAops8Nc0/G2KGjEYe5m4FtSSNnrunVJTtM9tCYo1A9zgxseYAZwqhQypp1tU9CIKbqM+kuWcvpDKWBMO9OcoACXSAFlpzjnZkkhY9rVhAWNmKJXU1/cOpepwJlSyJh2pT1BNwF/K4WUvUUKGNOutAsK8PfAC1JI0eHOub2lkDHtaNLXD3rvca7ZV7cA8Azwz8DbpaCitwAfk0LtYLvekcc2bJ7yQSnXDrzzp+DzLpn61KO3MbIu/qXsM3ZacOWsnV/2cymX0ka36aGq7wdt1kXkLej/cc6d670fkYKtbnhgxdPAV6RcO9j74YE5zuUt6OMPXMfDd39NikmeBt5SGxrOeSQ4oYaHuBEni+6i/pqIXOYDr5ZCxlT0961QTkjzHXTMRVJAmZ0sMhpKnOiclFjQiCn6Q+AhKaToVOfcXClkjODq2tBwzu22IbGgETYBX5VCivqBN0shYwQXSIGcKhU0Yop+g/pZ3Vze4QJPPRsD/LQ2NHyrFMqpUkEjrAH+Rgop2osueZeoSeILUiC3ygWNmKJ/Td63ob1XChgzgV/VhoZ/LIVyWnru4uoFjbACuFQKKTrVObe7FDJmK1+UAiU0VdCIKfolINdNBL3Au6SQMeM8CFwhhXJaeu5ioMmCRngQuFIKKXq7c26KFDJm1AW1oeFcA6QpTRc0Yop+nnwrLswF3iiFjKH+FSz3oneVNV3QCL8GfiKFFNnJIlPFRbWh4ZwnMUVjh7cQWNCIKfpZKaDoFc65Q6SQ6WqryH9LalOCChrh59SX6MylIx7bMsl8pTY0vFIK5TR+ekJEQSOm6CelgKI3Oud2k0KmKz0LfFkKlRZc0Ah3ALkuCPcBH5BCpit9uTY0/KwUymnr6QmRBY2Yop+SAor+xDm3gxQyXWUlbfJQfFRBI9wJXCOFlMwE3imFTFe5oDY0HL8uiqKJpicoFDRiiv4F+a6Lvt/ehmZGPU39/vC2EF3QCL+kvo5uDrtiL1sydV+qDQ2vlkI5TTY9QamgEVP0U+Sboh+RAqbjraDFr3tuTaWgEe4CviOFlOznnGvpd4o67FnzxM6vDQ2vlUI5NZqeoFjQiCl6DrBRCik5RwqUtMPUXiliwj1I3sUDVKgVNMIDwNelkJJjnHPHSqFSZm+fapliA5xXGxpeL4VykqYnKBc0Yop+Gsj1xT3nnUxNmWMFTWWY+tsO2o5qQSG4pE+R74n2VzrnjpRCJew3fxr9PfY9NIE/rw0NB22YqVSZnpCgoBEuBJZLISUtOUVnTOnl6AUzpZhpzg21oeEbpFCrSlLQwCn6PPWbF3I4yTm3RAqVcNahtva2Ig/8uRTKrer0hEQFjXAp8FsppKQlp+hRtRkcutv2UsxU88+1oeFhKdTKkhU0cIpuAs6WQkpe45w7SAqVcM7vD0gRI1sPnCeFcmtmekLCgka4hnxvRmvJKXrAwHTee+RLpJhp7KLa0PCDUqjVJS1o4BSF+jOcm6WQgtNadVmUDx87nzMO2FmKmYk9AXxGCuXW7PSExAWF4JIOA38nhZR8TgqU8oXX7MZHjtvFbgBs3sdb7XGyUMkLGuE86g/Wpnaic+54KVTKe46YxzfPXMAuM+1puSp6+6bfDXxLyuUWMj0hU0EDp+gK8q28cL4UKOm4PWdyy/tezqdPfim1nW097kbmDCw5v9VuSojhAsvTtMC3AvZRP9zdRwoqeL33PtfzqVEefnYDN923imUr17Ni7Qgrnx9hU6Z/x2asumWHzzrHuVJOk/Ob95tx5OpfS7mtLXtmPU+uSbO4fOj0hHoBsvDeh5R0BPgz4EYpqGDIOXet9z7Hyakou+24HWcdOkeKFXfKLU9JkSSu+OPfkyLb+NS/Pso/3rlCimWX5RB3TOC0vgn4gRRSsA/wR1LImGbETE/IXNAIHwbWSSEFf2lrF+kZ2bh2RynTyWLLCQUKGjhFl1J/hWFqNeAdUshUs/bZpcdIGdNYz8aNuRYziPY56kVN7ZPOuVlSyDTmnFu8Yf1z+0q5TqUxPQF6brwxx/mXLQVO0ReA90ghBfNo8aVR2sSF4Js+K2i21HPttddKmSQCS3o9cJUUUvAB59ygFDITc86dBrTszR+paU1PGJ2ga9askXKt5APUXxuX0hTgC1LIbGv0JFuu1TE6Xt/IyAjXX389p59+upRVFzhFH3POnQNcLAUjvdE591Xv/a1S0GzhPcDLpFAnqw3pPYLaA/Cd7+RamlbNJdTfkpbal13A3RXdyjm3Ey36CF+76gG44447uPfee6Vsyxi92+ed1B/wTmkJ9sqIZnwKsGfkFL14HfSyyy5rlGs53vtfkuclOJ93zk2TQt3OObeQPGfZu8qLBf3BD37A6tW5lqZV80ngESkUaTfgQ1LI8FeA3YWl7MWCrlu3ju9+97uNsi3He7/Ge7+b994l/t+Q9P+l23nvX7/15zb3pUfZ5xZpi6dZLr/8cs4666yQp06M2Ubf5r5vbOwbuV7KaerftPl3Uqad/DepALQulhENnAAAAABJRU5ErkJggg==\"></div>'\n );\n div_to_render.append(addParentheses);\n addParentheses.popup({\n content: \"Adicionar parênteses\",\n delay: {\n show: 750,\n hide: 0,\n },\n });\n\n addParentheses.on(\"click\", function (mouse_event) {\n // verificar se já está ativado\n if (window.parentheses_activate) {\n return;\n }\n\n div_to_render.find(\".usepointer\").off(\"click\");\n\n window.parentheses_activate = true;\n\n window.open_or_close = \"open\";\n\n div_to_render.find(\".dropdown\").addClass(\"disabled\");\n\n div_to_render.find(\".ghost_element\").addClass(\"temp_class\");\n div_to_render.find(\".ghost_element\").removeClass(\"ghost_element\");\n\n const floatingObject = $('<div class=\"floating_parenthesis\"> ( </div>');\n floatingObject.draggable().appendTo(\"body\");\n floatingObject.css(\"position\", \"absolute\");\n mouse_event.type = \"mousedown.draggable\";\n mouse_event.target = floatingObject[0];\n floatingObject.css(\"left\", mouse_event.pageX + 10);\n floatingObject.css(\"top\", mouse_event.pageY + 10);\n floatingObject.trigger(mouse_event);\n\n div_to_render.on(\"mousemove\", function (evt) {\n let actual_target = null;\n if ($(evt.target).hasClass(\"single_element_expression\")) {\n actual_target = $(evt.target);\n } else {\n actual_target = $(evt.target).closest(\".single_element_expression\");\n }\n\n if (\n $(evt.target).hasClass(\"temp_class\") ||\n actual_target.length < 1 ||\n actual_target.hasClass(\"add_parentheses\") ||\n actual_target.hasClass(\"rendered_parentheses\") ||\n $(evt.target).hasClass(\"expression_elements\")\n ) {\n return;\n }\n renderGhostParentheses(\n actual_target,\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n });\n\n div_to_render.on(\"mouseleave\", function () {\n /*window.open_parentheses.remove();\n\t\t\twindow.close_parentheses.remove();*/\n });\n\n let floating;\n\n $(\"body\").on(\"mouseup\", function (evt) {\n if (window.open_or_close == \"open\") {\n window.open_or_close = \"close\";\n\n floatingObject.remove();\n\n var comando_que_esta = $(evt.target).closest(\".command_container\");\n var comando_certo = div_to_render.closest(\".command_container\");\n if (!comando_que_esta.is(comando_certo)) {\n window.parentheses_activate = false;\n div_to_render.find(\".temp_class\").addClass(\"ghost_element\");\n div_to_render.find(\".temp_class\").removeClass(\"temp_class\");\n div_to_render.off(\"mousemove\");\n div_to_render.off(\"mouseleave\");\n $(\"body\").off(\"mouseup\");\n window.open_parentheses.remove();\n window.close_parentheses.remove();\n window.inserir_open = -1;\n window.inserir_close = -1;\n window.open_or_close = null;\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n\n return;\n }\n\n window.open_parentheses.addClass(\"parentheses_fixed\");\n\n floating = $('<div class=\"floating_parenthesis\"> ) </div>');\n floating.draggable().appendTo(\"body\");\n floating.css(\"position\", \"absolute\");\n floating.css(\"left\", evt.pageX + 10);\n floating.css(\"top\", evt.pageY + 10);\n\n $(\"body\").on(\"mousemove\", function (evts) {\n floating.css(\"left\", evts.pageX + 10);\n floating.css(\"top\", evts.pageY + 10);\n });\n } else {\n floating.remove();\n\n window.open_parentheses.removeClass(\"parentheses_fixed\");\n\n div_to_render.off(\"mousemove\");\n div_to_render.off(\"mouseleave\");\n $(\"body\").off(\"mouseup\");\n\n setTimeout(function () {\n window.parentheses_activate = false;\n }, 50);\n\n var comando_que_esta = $(evt.target).closest(\".command_container\");\n var comando_certo = div_to_render.closest(\".command_container\");\n let is_correct = false;\n if (comando_que_esta.is(comando_certo)) {\n is_correct = true;\n }\n\n if (is_correct) {\n expression_array.splice(window.inserir_open, 0, \"(\");\n expression_array.splice(window.inserir_close, 0, \")\");\n }\n\n window.inserir_open = -1;\n window.inserir_close = -1;\n window.open_or_close = null;\n\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n }\n });\n });\n}\n\nwindow.open_parentheses = $('<div class=\"parentheses_ghost\">(</div>');\nwindow.close_parentheses = $('<div class=\"parentheses_ghost\">)</div>');\nwindow.inserir_open = -1;\nwindow.inserir_close = -1;\nfunction renderGhostParentheses (\n actual_target,\n command,\n function_obj,\n div_to_render,\n expression_array\n) {\n /*window.open_parentheses.remove();\n\twindow.close_parentheses.remove();*/\n\n const index_in_array = actual_target.data(\"index\");\n\n if (\n expression_array[index_in_array] == \"(\" ||\n expression_array[index_in_array] == \")\"\n ) {\n return;\n }\n\n if (window.open_or_close == \"close\") {\n if (index_in_array < window.inserir_open) {\n return;\n }\n }\n\n // Tratando a situação quando é na primeira posição:\n\n if (index_in_array == 0) {\n if (expression_array[index_in_array].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n\n /*if (expression_array.length == 1) {\n\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\twindow.close_parentheses.insertAfter(actual_target);\n\t\t\t\t\twindow.inserir_close = index_in_array + 2;\n\t\t\t\t}*/\n\n //} else {\n var count_opened = 0;\n var count_closed = 0;\n for (var i = 0; i < expression_array.length; i++) {\n if (expression_array[i] == \"(\") {\n count_opened++;\n }\n if (expression_array[i] == \")\") {\n count_closed++;\n }\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n } else {\n if (expression_array[i].type == \"var_value\") {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n }\n }\n }\n }\n //}\n } else if (expression_array[index_in_array].type_op) {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n\n var count_opened = 0;\n var count_closed = 0;\n for (var i = 1; i < expression_array.length; i++) {\n // $('.slide-link[data-slide=\"0\"]')\n if (expression_array[i] == \"(\") {\n count_opened++;\n }\n if (expression_array[i] == \")\") {\n count_closed++;\n }\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (expression_array[i].type == \"var_value\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n\n break;\n } else {\n if (expression_array[i].type == \"var_value\") {\n if (expression_array[i].type == \"var_value\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n }\n }\n }\n }\n }\n return;\n }\n\n // Tratando quando não é no índice 0:\n if (expression_array[index_in_array].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(actual_target);\n window.inserir_close = index_in_array + 2;\n }\n return;\n }\n\n if (expression_array[index_in_array].type_op) {\n // buscar para a esquerda primeiro:\n if (expression_array[index_in_array - 1] == \"(\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n } else if (expression_array[index_in_array - 1] == \")\") {\n // buscar a abertura\n var count_opened = 0;\n var count_closed = 0;\n for (var j = index_in_array - 1; j >= 0; j--) {\n if (expression_array[j] == \"(\") {\n count_opened++;\n }\n if (expression_array[j] == \")\") {\n count_closed++;\n }\n\n if (count_opened != count_closed) {\n } else {\n if (count_closed > 0) {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + j + '\"]'\n )\n );\n window.inserir_open = j;\n }\n break;\n }\n }\n }\n } else if (expression_array[index_in_array - 1].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(\n div_to_render.find(\n '.single_element_expression[data-index=\"' +\n (index_in_array - 1) +\n '\"]'\n )\n );\n window.inserir_open = index_in_array - 1;\n }\n }\n\n // buscar para a direita agora:\n if (expression_array[index_in_array + 1] == \"(\") {\n // buscar o fechamento:\n\n var count_opened = 0;\n var count_closed = 0;\n for (var j = index_in_array + 1; j < expression_array.length; j++) {\n if (expression_array[j] == \"(\") {\n count_opened++;\n }\n if (expression_array[j] == \")\") {\n count_closed++;\n }\n\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + j + '\"]'\n )\n );\n window.inserir_close = j + 2;\n }\n break;\n }\n }\n }\n } else if (expression_array[index_in_array + 1].type == \"var_value\") {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' +\n (index_in_array + 1) +\n '\"]'\n )\n );\n window.inserir_close = index_in_array + 3;\n }\n }\n }\n}\n\nfunction renderParenthesis (\n div_to_render,\n expression_content,\n command,\n function_obj,\n position,\n expression_array\n) {\n const ghost_parenthesis = $(\n '<div class=\"single_element_expression parentheses_in_expression\" data-index=\"' +\n position +\n '\">' +\n expression_content +\n \"</div>\"\n );\n div_to_render.append(ghost_parenthesis);\n}\n\nfunction renderStartAddOperator (\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n position\n) {\n let menu_final =\n '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n const div_temp = $(\n '<div class=\"single_element_expression ghost_element mouse_distance\"></div>'\n );\n div_temp.append(menu_final);\n const div_higher = $('<div class=\"higher_element\"></div>');\n div_higher.append(div_temp);\n div_to_render.append(div_higher);\n menu_final.dropdown(\"set selected\", Models.ARITHMETIC_TYPES.minus);\n\n div_temp.on(\"click\", function () {\n if (!window.open_or_close) {\n const sera = position;\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic,\n Models.ARITHMETIC_TYPES.minus\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0\n ) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic,\n Models.LOGIC_COMPARISON.equals_to\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0\n ) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional,\n Models.ARITHMETIC_COMPARISON.greater_than\n )\n );\n }\n\n renderExpression(command, function_obj, div_to_render, expression_array);\n }\n });\n}\n\nfunction renderFinalAddElements (\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n position,\n is_last = false\n) {\n let menu_final =\n '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n const div_temp = $('<div class=\"simple_add mouse_distance\"></div>');\n const div_higher = $('<div class=\"higher_element\"></div>');\n\n const button = $(\n '<button class=\"ui button green add_expression\"><i class=\"plus circle inverted icon\"></i></button>'\n );\n div_temp.append(button);\n\n if (!is_last) {\n div_higher.append(div_temp);\n div_to_render.append(div_higher);\n //div_temp.append(menu_final);\n div_temp.css(\"opacity\", \"0\", \"!important\");\n } else {\n div_temp.removeClass(\"mouse_distance\");\n div_temp.css(\"opacity\", \"1\", \"!important\");\n //div_temp.append(menu_final);\n div_to_render.append(div_temp);\n }\n\n menu_final.dropdown(\"set selected\", Models.ARITHMETIC_TYPES.plus);\n\n div_temp.on(\"click\", function () {\n const sera = position;\n\n if (expression_array[sera] == \")\" && expression_array[sera - 1] == \"(\") {\n expression_array.splice(\n sera,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n renderExpression(command, function_obj, div_to_render, expression_array);\n return;\n }\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic,\n Models.ARITHMETIC_TYPES.plus\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n } else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic,\n Models.LOGIC_COMPARISON.equals_to\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0\n ) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional,\n Models.ARITHMETIC_COMPARISON.greater_than\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n\n renderExpression(command, function_obj, div_to_render, expression_array);\n });\n}\n\nfunction renderOperatorMenu (\n command,\n function_obj,\n div_to_render,\n expression_element,\n types_included,\n position,\n expression_array\n) {\n let menu_final =\n '<div class=\"ui dropdown\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.write_sep) >= 0) {\n menu_final += getSeparator();\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n menu_final.find(\".ivprog-write-sep\").popup({\n content: LocalizedStrings.getUI(\"write_seprator_menu_tooltip\"),\n delay: {\n show: 500,\n hide: 0,\n },\n });\n\n const div_temp = $(\n '<div class=\"single_element_expression not_allowed\" data-index=\"' +\n position +\n '\"></div>'\n );\n div_temp.append(menu_final);\n div_to_render.append(div_temp);\n menu_final.dropdown({\n onChange: function (_value, _text, $selectedItem) {\n expression_element.item = $selectedItem.data(\"value\");\n expression_element.type_op = $selectedItem.data(\"type\");\n },\n });\n\n menu_final.dropdown(\"set selected\", expression_element.item);\n}\n\nfunction getArithmeticOperators () {\n let arithmetic_operators;\n arithmetic_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.plus +\n '\">+</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.minus +\n '\">-</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.multiplication +\n '\">*</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.division +\n '\">/</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.module +\n '\">%</div>';\n return arithmetic_operators;\n}\n\nfunction getLogicOperators () {\n let logic_operators;\n logic_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.equals_to +\n '\">==</div>';\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.not_equals_to +\n '\">!=</div>';\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.and +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_and\") +\n \"</div>\";\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.or +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_or\") +\n \"</div>\";\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.not +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_not\") +\n \"</div>\";\n return logic_operators;\n}\n\nfunction getRelationalOperators () {\n let relational_operators;\n relational_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.greater_than +\n '\">></div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.less_than +\n '\"><</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.equals_to +\n '\">==</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.not_equals_to +\n '\">!=</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to +\n '\">>=</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.less_than_or_equals_to +\n '\"><=</div>';\n return relational_operators;\n}\n\nfunction getSeparator () {\n return `<div class=\"item ivprog-write-sep\" data-type=\"${\n Models.EXPRESSION_TYPES.write_sep\n }\" data-value=\"${Models.EXPRESSION_TYPES.write_sep}\">${LocalizedStrings.getUI(\n \"write_seprator_menu_text\"\n )}</div>`;\n}\n\nfunction getVariable (function_obj, search) {\n if (search == \")\" || search == \"(\") {\n return search;\n }\n\n if (search.instance == \"operator\") {\n var obj;\n switch (search.value) {\n case '+':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic, \n Models.ARITHMETIC_TYPES.plus); \n break;\n case '-':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic, \n Models.ARITHMETIC_TYPES.minus); \n break;\n case '*':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic, \n Models.ARITHMETIC_TYPES.multiplication); \n break;\n case '/':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic, \n Models.ARITHMETIC_TYPES.division); \n break;\n case '%':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic, \n Models.ARITHMETIC_TYPES.module); \n break;\n case '>':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.greater_than); \n break;\n case '<':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.less_than); \n break;\n case '>=':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to); \n break;\n case '<=':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.less_than_or_equals_to); \n break;\n case '==':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.equals_to); \n break;\n case '!=':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional, \n Models.ARITHMETIC_COMPARISON.not_equals_to); \n break;\n case 'and':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic, \n Models.LOGIC_COMPARISON.and); \n break;\n case 'or':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic, \n Models.LOGIC_COMPARISON.or); \n break;\n case 'not':\n obj = new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic, \n Models.LOGIC_COMPARISON.not); \n break;\n }\n return obj;\n }\n\n if (search.instance == \"expression\" \n && search.type == \"const\") {\n if (search.value === true) {\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n LocalizedStrings.getUI('logic_value_true'),\n null,\n null,\n true\n );\n return obj;\n }\n if (search.value === false) {\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n LocalizedStrings.getUI('logic_value_false'),\n null,\n null,\n true\n );\n return obj;\n }\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n search.value,\n null,\n null,\n true\n );\n return obj;\n }\n\n var variavel = null;\n if (search.instance == \"expression\"\n && search.type == \"var\") {\n // 1. Procurar a variável na função:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n if (function_obj.variables_list[j].name == search.value) {\n variavel = function_obj.variables_list[j];\n break;\n }\n }\n\n // 2. Procurar a variável nas gloais: \n if (!variavel)\n for (var j = 0; j < program_obj.globals.length; j++) {\n if (program_obj.globals[j].name == search.value) {\n variavel = program_obj.globals[j];\n break;\n }\n }\n \n // 3. Procurar na lista de parâmetros: \n if (!variavel)\n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n if (function_obj.parameters_list[j].name == search.value) {\n variavel = function_obj.parameters_list[j];\n break;\n }\n }\n }\n\n if (search.instance == \"expression\"\n && search.type == \"var\"\n && !search.line) {\n\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n variavel,\n null,\n null,\n true\n );\n return obj;\n }\n\n if (search.instance == \"expression\"\n && search.type == \"var\"\n && search.class == \"vector\") {\n \n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n variavel,\n null,\n getVariable(function_obj, search.line[0]),\n true\n );\n return obj;\n }\n\n if (search.instance == \"expression\"\n && search.type == \"var\"\n && search.class == \"matrix\") {\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n variavel,\n getVariable(function_obj, search.line[0]),\n getVariable(function_obj, search.column[0]),\n true\n );\n return obj;\n }\n\n if (search.instance == \"expression\"\n && search.type == \"function\") {\n var obj = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n variavel,\n null,\n null,\n true\n );\n // Procurar a função para referência:\n for (var i = 0; i < program_obj.functions.length; i++) {\n if (program_obj.functions[i].name == search.value) {\n obj.function_called = program_obj.functions[i];\n }\n }\n\n // Se ainda não foi encontrada, procurar na biblioteca do iVProg:\n if (!obj.function_called) {\n for (var i = 0; i < window.system_functions.length; i++) {\n if (search.value.split(\".\")[1] && search.value.split(\".\")[1] \n == window.system_functions[i].identifier) {\n obj.function_called = window.system_functions[i];\n } else if (search.value == window.system_functions[i].identifier) {\n obj.function_called = window.system_functions[i];\n }\n }\n }\n\n obj.parameters_list = [];\n\n for (var i = 0; i < search.params.length; i++) {\n obj.parameters_list.push(getVariable(function_obj,search.params[i][0]));\n }\n return obj;\n }\n}\n\nexport function expressionParserToVisual (text, function_obj, input_field) {\n\n if (text.trim().length == 0) {\n return [new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )];\n }\n\n var var_not_found = [];\n var fun_not_found = [];\n var parsed;\n try {\n parsed = ivprogCore.parseExpression(text);\n } catch (ex) {\n Utils.renderErrorMessage(input_field, LocalizedStrings.getUI('expression_invalid'));\n }\n if (!parsed) return null;\n\n for (var i = 0; i < parsed.length; i++) {\n var variavel = null;\n if (parsed[i].instance == \"expression\"\n && parsed[i].type == \"var\") {\n // 1. Procurar a variável na função:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n if (function_obj.variables_list[j].name == parsed[i].value) {\n variavel = function_obj.variables_list[j];\n break;\n }\n }\n\n // 2. Procurar a variável nas globais: \n if (!variavel)\n for (var j = 0; j < program_obj.globals.length; j++) {\n if (program_obj.globals[j].name == parsed[i].value) {\n variavel = program_obj.globals[j];\n break;\n }\n }\n\n // 3. Procurar a variável nos parâmetros:\n if (!variavel)\n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n if (function_obj.parameters_list[j].name == parsed[i].value) {\n variavel = function_obj.parameters_list[j];\n break;\n }\n }\n \n if (!variavel)\n var_not_found.push(parsed[i].value);\n }\n\n var funcao;\n if (parsed[i].instance == \"expression\"\n && parsed[i].type == \"function\") {\n \n // Procurar a função para referência:\n for (var j = 0; j < program_obj.functions.length; j++) {\n if (program_obj.functions[j].name == parsed[i].value) {\n funcao = program_obj.functions[j];\n }\n }\n\n // Se ainda não encontrou, procurar na biblioteca do iVProg:\n if (!funcao) {\n for (var j = 0; j < window.system_functions.length; j++) {\n if (parsed[i].value.split(\".\")[1] && parsed[i].value.split(\".\")[1] \n == window.system_functions[j].identifier) {\n funcao = window.system_functions[j];\n } else if (parsed[i].value == window.system_functions[j].identifier) {\n funcao = window.system_functions[j];\n }\n }\n }\n\n if (!funcao) {\n fun_not_found.push(parsed[i].value);\n }\n }\n}\n\n if (fun_not_found.length > 0) {\n let uniqueWords = [...new Set(fun_not_found)];\n Utils.renderErrorMessage(input_field, LocalizedStrings.getUI('expression_undeclared_function') + \" \" + uniqueWords.join(\", \"));\n return null;\n }\n\n if (var_not_found.length > 0) {\n let uniqueWords = [...new Set(var_not_found)];\n Utils.renderErrorMessage(input_field, LocalizedStrings.getUI('expression_undelcared_variable') + \" \" + uniqueWords.join(\", \"));\n return null;\n }\n\n var exp_obj = [];\n for (var i = 0; i < parsed.length; i++) {\n exp_obj.push(getVariable(function_obj, parsed[i]));\n }\n\n return exp_obj;\n}\n\nexport function searchFunction (function_name) {\n\n for (var j = 0; j < program_obj.functions.length; j++) {\n if (program_obj.functions[j].name == function_name) {\n return program_obj.functions[j];\n }\n }\n\n // Se ainda não encontrou, procurar na biblioteca do iVProg:\n for (var j = 0; j < window.system_functions.length; j++) {\n if (function_name.split(\".\")[1] && function_name.split(\".\")[1] \n == window.system_functions[j].identifier) {\n return window.system_functions[j];\n } else if (function_name == window.system_functions[j].identifier) {\n return window.system_functions[j];\n }\n }\n\n}\n\n\nexport function expressionParserCodeVisual (parsed, function_obj) {\n\n if (!parsed) return null;\n\n var var_not_found = [];\n var fun_not_found = [];\n\n for (var i = 0; i < parsed.length; i++) {\n var variavel = null;\n if (parsed[i].instance == \"expression\"\n && parsed[i].type == \"var\") {\n // 1. Procurar a variável na função:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n if (function_obj.variables_list[j].name == parsed[i].value) {\n variavel = function_obj.variables_list[j];\n break;\n }\n }\n\n // 2. Procurar a variável nas globais: \n if (!variavel)\n for (var j = 0; j < program_obj.globals.length; j++) {\n if (program_obj.globals[j].name == parsed[i].value) {\n variavel = program_obj.globals[j];\n break;\n }\n }\n\n // 3. Procurar a variável nos parâmetros:\n if (!variavel)\n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n if (function_obj.parameters_list[j].name == parsed[i].value) {\n variavel = function_obj.parameters_list[j];\n break;\n }\n }\n \n if (!variavel)\n var_not_found.push(parsed[i].value);\n }\n\n var funcao;\n if (parsed[i].instance == \"expression\"\n && parsed[i].type == \"function\") {\n \n // Procurar a função para referência:\n for (var j = 0; j < program_obj.functions.length; j++) {\n if (program_obj.functions[j].name == parsed[i].value) {\n funcao = program_obj.functions[j];\n }\n }\n\n // Se ainda não encontrou, procurar na biblioteca do iVProg:\n if (!funcao) {\n for (var j = 0; j < window.system_functions.length; j++) {\n if (parsed[i].value.split(\".\")[1] && parsed[i].value.split(\".\")[1] \n == window.system_functions[j].identifier) {\n funcao = window.system_functions[j];\n } else if (parsed[i].value == window.system_functions[j].identifier) {\n funcao = window.system_functions[j];\n }\n }\n }\n\n if (!funcao) {\n fun_not_found.push(parsed[i].value);\n }\n }\n}\n\n var exp_obj = [];\n for (var i = 0; i < parsed.length; i++) {\n exp_obj.push(getVariable(function_obj, parsed[i]));\n }\n\n \n\n return exp_obj;\n}\n\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui iftrue created_element\"> <i class=\"ui icon small random\"></i> <span> if (x < 1) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui iftrue command_container\"><div class=\"ui data_block_if\" data-if=\"true\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button>';\n\tret += '<span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_if') + '</span>';\n\tret += ' <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"textual_expression\"></span> <span class=\"span_command_spec\"> ) </span> ';\n\tret += ' <i class=\"ui icon i cursor button_write_expression\" style=\"margin-right: 1rem !important;\"></i> ';\n\tret += '<i class=\"ui icon unlock button_alternate_expression\"></i>';\n\tret += '<span> </span> ';\n\tret += '<div class=\"ui block_commands commands_if conditional_comands_block\" data-if=\"true\">';\n \tret += '</div></div>';\n\tret += '<div class=\"ui data_block_else\" data-else=\"true\"> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_else') + ' </span>';\n\tret += '<div class=\"ui block_commands commands_else conditional_comands_block\" data-else=\"true\">';\n\tret += '</div>';\n\tret += '<span></span></div>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\tel.find('.data_block_if').data('command', command);\n\tel.find('.data_block_else').data('command', command);\n\tel.find('.commands_if').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.commands_if')[0]), 3, function_obj);\n\t\t}\n\t}\n\tif (command.commands_else) {\n\t\tfor (var j = 0; j < command.commands_else.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_else[j], $(el.find('.commands_else')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tif (command.collapsed) {\n\t\tel.children('.data_block_else').toggle();\n\t\t$(el.find('.block_commands')[0]).toggle();\n\t}\n\n\tif (command.lockexpression) {\n\t\tif (command.expression) {\n\t\t\ttry {\n\t\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\tif (text) {\n\t\t\t\t\t$(el.find('.conditional_expression')[0]).toggle();\n\t\t\t\t\t$(el.find('.textual_expression')[0]).text(text);\n\t\t\t\t\t$(el.find('.textual_expression')[0]).toggle();\n\t\t\t\t\t$(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tcommand.lockexpression = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tel.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.button_write_expression').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, iftrue_dom) {\n\n\tiftrue_dom.find('.button_write_expression').on('click', function() {\n\n\t\twindow.expressionEdition = true;\n\t\twindow.inputExpression = null;\n\t\t\n\t\tvar afterWhichElement;\n\t\tvar lockButton = $(iftrue_dom.find('.button_alternate_expression')[0]);\n\t\tvar editButton = $(this);\n\n\t\tafterWhichElement = $(iftrue_dom.find('.conditional_expression')[0]);\n\n\t\tif (command.lockexpression) {\n\t\t\tafterWhichElement = $(iftrue_dom.find('.textual_expression')[0]);\n\t\t}\n\n\t\tvar text = \"\";\n\t\tif (command.expression) {\n\t\t\tif (command.expression.length == 1 && command.expression[0].content == null && !command.expression[0].function_called) {\n\t\t\t\ttext = \"\";\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\ttext = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\ttext = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar ok_button = $('<i class=\"ui icon check circle expression-edit-confirm\"></i>');\n\t\tvar cancel_button = $('<i class=\"ui icon undo expression-edit-cancel\"></i>');\n\t\tvar input = $('<input type=\"text\" spellcheck=\"false\" autocomplete=\"off\" class=\"input-expression-field\" >');\n\t\tinput.val(text);\n\n\t\tinput.focusout(function(evt) {\n\t\t\tok_button.click();\n\t\t\tevt.preventDefault();\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\tinput.keyup(function(evt) {\n\t\t\tif (evt.keyCode == 27) { // esc\n\t\t\t\tcancel_button.click();\n\t\t\t} \n\t\t\tif (evt.keyCode == 13) { // enter\n\t\t\t\tok_button.click();\n\t\t\t}\n\t\t});\n\n\t\tok_button.click(function() {\n\t\t\tvar parsed = null;\n\t\t\tparsed = GenericExpressionManagement.expressionParserToVisual(input.val(), function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tcancel_button.mousedown(function(evt) {\n\t\t\tvar parsed = GenericExpressionManagement.expressionParserToVisual(text, function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tinput.insertAfter(afterWhichElement);\n\t\tinput.focus();\n\t\tcancel_button.insertAfter(input);\n\t\tok_button.insertAfter(input);\n\t\tvar len = text.length; \n\t\tinput[0].setSelectionRange(len, len); \n\n\t\tafterWhichElement.css('display', 'none');\n\t\tlockButton.css('display', 'none');\n\t\teditButton.css('display', 'none');\n\n\t\tok_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_confirm\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t\tcancel_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_cancel\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t});\n\n\t$(iftrue_dom.find('.textual_expression')[0]).toggle();\n\t\n\tiftrue_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.expression) {\n\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\tif (text) {\n\t\t\t\t$(iftrue_dom.find('.conditional_expression')[0]).toggle();\n\t\t\t\t$(iftrue_dom.find('.textual_expression')[0]).text(text);\n\t\t\t\t$(iftrue_dom.find('.textual_expression')[0]).toggle();\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t\t}\n\t\t}\n\n\t\tif (command.lockexpression) {\n\t\t\tiftrue_dom.find('.lock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tiftrue_dom.find('.unlock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tiftrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, iftrue_dom)) {\n\t\t\tiftrue_dom.fadeOut(400, function() {\n\t\t\t\tiftrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tiftrue_dom.find('.minimize_block_button').on('click', function() {\n\t\tiftrue_dom.children('.data_block_else').toggle();\n\t\t$(iftrue_dom.find('.block_commands')[0]).toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\n\n}","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui reader created_element\"> <i class=\"ui icon small download\"></i> <span> '+LocalizedStrings.getUI('text_command_read')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = '<div class=\"ui reader command_container\"> <i class=\"ui icon small download command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_read')+' ( </span> <div class=\"var_value_menu_div\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\t\n\tel = $(el);\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, reader_dom) {\n\treader_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, reader_dom)) {\n\t\t\treader_dom.fadeOut(400, function() {\n\t\t\t\treader_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui repeatNtimes created_element\"> <i class=\"ui icon small sync\"></i> <span> repita_para i de 0 ate 10 passo 1 <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tlet ret = `<div class=\"ui repeatNtimes command_container\"> \n\t\t<i class=\"ui icon small sync command_drag\"></i>\n\t\t<i class=\"ui icon times red button_remove_command\"></i>\n\t\t<button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button>\n\t\t<span class=\"span_command_spec\"> ${LocalizedStrings.getUI('text_for')}\n\t\t</span> <div class=\"ui attribution_expression\">\n\t\t<div class=\"ui variable_attribution\"></div>\n\t\t<span class=\"text_receives span_command_spec\" style=\"margin-left: 10px;margin-right: 20px;\"></span>\n\t\t<div class=\"ui var_value_expression div_expression_st\"></div>\n\t\t</div>\n\t\t<span class=\"span_command_spec separator_character\" style=\"margin-left: 25px; margin-right: 15px;\">\n\t\t${LocalizedStrings.getUI(\"text_for_to\")} </span>\n\t\t<div class=\"conditional_expression\"></div> <div class=\"pass_button\"></div> \n\t\t<div class=\"ui incrementation_field\"><span class=\"text_inc_receives span_command_spec\"></span>\n\t\t<div class=\"ui first_operand\"></div><div class=\"ui operator\"></div>\n\t\t<div class=\"ui second_operand\"></div></div> <span class=\"span_command_spec\"> </span>\n\t\t<span class=\"textual_expression\"></span> <i class=\"ui icon unlock button_alternate_expression\"></i>\n\t\t<div class=\"ui context_menu\"></div>`;\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\t\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.var_attribution, el.find('.variable_attribution'), function_obj);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression2, function_obj, el.find('.conditional_expression'));\n\n\tVariableValueMenu.renderMenu(command, command.expression2, el.find('.conditional_expression'), function_obj);\t\n\t//GenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression2);\n\n\t//VariableValueMenu.renderMenu(command, command.var_incrementation, el.find('.incrementation_variable'), function_obj);\t\n\t//angle double right\n\tif (!command.expression1) {\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\t}\n\n\tel.find('.text_receives').text(LocalizedStrings.getUI(\"text_for_from\"));\n\tVariableValueMenu.renderMenu(command, command.expression1, el.find('.var_value_expression'), function_obj);\n\n\tif (!command.expression3) {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double right\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\t\t/*var exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;*/\n\t} else {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double left\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\n\t\trenderOperator(command, function_obj, el.find('.operator'), command.expression3, 1);\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], el.find('.second_operand'), function_obj);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tif (command.lockexpression) {\n\t\ttry {\n\t\t\tvar text = CodeGenerator.repeatNtimesHeader(command);\n\t\t\tif (text) {\n\t\t\t\t$(el.find('.textual_expression')[0]).html(text);\n\t\t\t\t$(el.find('.textual_expression')[0]).toggle();\n\n\t\t\t\t$(el.find('.attribution_expression')[0]).toggle();\n\t\t\t\t$(el.find('.span_command_spec.separator_character')[0]).toggle();\n\t\t\t\t$(el.find('.conditional_expression')[0]).toggle();\n\t\t\t\t$(el.find('.pass_button')[0]).toggle();\n\t\t\t\t$(el.find('.incrementation_field')[0]).toggle();\n\n\t\t\t\t$(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tcommand.lockexpression = false;\n\t\t}\n\t}\n\n\tel.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n\treturn el;\n}\n\nfunction togglePasso (command) {\n\tif (!command.expression3) {\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;\n\t} else {\n\t\tcommand.expression3 = null;\n\t}\n\trenderAlgorithm();\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\tif (!command.expression3) {\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[command.var_attribution,\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\t\tcommand.expression3 = exp;\n\t\t\tcommand.var_incrementation = command.var_attribution;\n\n\t\t\tvar cond_exp = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tcommand.var_attribution, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\n\t\t\tcommand.expression2.expression = cond_exp;\n\t\t}\n\n\t\tdom_object.parent().find('.text_receives').text('de');\n\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\n\t\tdom_object.parent().find('.var_value_expression').empty();\n\t\t\n\t\tVariableValueMenu.renderMenu(command, command.expression1, dom_object.parent().find('.var_value_expression'), function_obj);\n\n\t\trenderAlgorithm();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\tdom_object.parent().find('.text_inc_receives').text('de');\n\t\t\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], dom_object.parent().find('.first_operand'), function_obj);\n\n\t\trenderOperator(command, function_obj, dom_object.parent().find('.operator'), command.expression3, 1);\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], dom_object.parent().find('.second_operand'), function_obj);\t\t\n\n\t}\n\n}\n\nexport function manageClearExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\t$(dom_object).parent().find('.text_receives').text('');\n\t\tcommand.expression1 = null;\n\t\t$(dom_object).parent().find('.var_value_expression').empty();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\t$(dom_object).parent().find('.text_inc_receives').text('');\n\t\tcommand.expression3 = null;\n\t\t$(dom_object).parent().find('.first_operand').empty();\n\t\t$(dom_object).parent().find('.operator').empty();\n\t\t$(dom_object).parent().find('.second_operand').empty();\n\t}\n}\n\nfunction addHandlers (command, function_obj, repeatNtimes_dom) {\n\n\trepeatNtimes_dom.find('.minimize_block_button').on('click', function(evt){\n\t\trepeatNtimes_dom.children('.ui.block_commands').toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\n\n\t$(repeatNtimes_dom.find('.textual_expression')[0]).toggle();\n\t\n\trepeatNtimes_dom.find('.button_alternate_expression').on('click', function() {\n\t\tvar text = CodeGenerator.repeatNtimesHeader(command);\n\t\tif (text) {\n\t\t\t$(repeatNtimes_dom.find('.textual_expression')[0]).html(text);\n\t\t\t$(repeatNtimes_dom.find('.textual_expression')[0]).toggle();\n\n\t\t\t$(repeatNtimes_dom.find('.attribution_expression')[0]).toggle();\n\t\t\t$(repeatNtimes_dom.find('.span_command_spec.separator_character')[0]).toggle();\n\t\t\t$(repeatNtimes_dom.find('.conditional_expression')[0]).toggle();\n\t\t\t$(repeatNtimes_dom.find('.pass_button')[0]).toggle();\n\t\t\t$(repeatNtimes_dom.find('.incrementation_field')[0]).toggle();\n\n\t\t\t$(repeatNtimes_dom.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\n\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t}\n\n\t\tif (command.lockexpression) {\n\t\t\trepeatNtimes_dom.find('.lock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\trepeatNtimes_dom.find('.unlock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\trepeatNtimes_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, repeatNtimes_dom)) {\n\t\t\trepeatNtimes_dom.fadeOut(400, function() {\n\t\t\t\trepeatNtimes_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '+',\n\t value : Models.ARITHMETIC_TYPES.plus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.plus)\n\t },\n\t {\n\t name : '-',\n\t value : Models.ARITHMETIC_TYPES.minus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.minus)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_element.itens[index_op] = value;\n\t }\n\t });\n\ttemp_op.append(menu_operator);\n}","import { Types } from '../types';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as Models from '../ivprog_elements';\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui return created_element\"> <i class=\"ui icon small reply\"></i> <span> '+LocalizedStrings.getUI('text_return')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui return command_container\"> <i class=\"ui icon small reply command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\"> '+LocalizedStrings.getUI('text_return')+' </span> <div class=\"expression_elements\"></div><span class=\"textual_expression\" style=\"display: none; margin-left: 1rem;\"></span></div>');\n\tel.data('command', command);\n\n\tif (function_obj.return_type != Types.VOID) {\n\t\tif (!command.variable_value_menu) {\n\t\t\tcommand.variable_value_menu = [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)];\n\t\t}\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.variable_value_menu);\n\t\tel.append($('<i class=\"ui icon unlock button_alternate_expression\" style=\"margin-left: 1rem;\"></i>'));\n\n\t\tif (command.lockexpression) {\n\t\t\tif (command.variable_value_menu) {\n\t\t\t\ttry {\n\t\t\t\t\tvar text = CodeGenerator.elementExpressionCode(command.variable_value_menu);\n\t\t\t\t\tif (text) {\n\t\t\t\t\t\t$(el.find('.expression_elements')[0]).toggle();\n\t\t\t\t\t\t$(el.find('.textual_expression')[0]).text(text);\n\t\t\t\t\t\t$(el.find('.textual_expression')[0]).toggle();\n\t\t\t\t\t\t$(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcommand.lockexpression = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tel.find('.expression_elements').remove();\n\t\tcommand.variable_value_menu = null;\n\t}\n\t\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, return_dom) {\n\n\treturn_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.variable_value_menu) {\n var text = CodeGenerator.elementExpressionCode(command.variable_value_menu);\n\t\t\tif (text) {\n\t\t\t\t$(return_dom.find('.expression_elements')[0]).toggle();\n\t\t\t\t$(return_dom.find('.textual_expression')[0]).text(text);\n\t\t\t\t$(return_dom.find('.textual_expression')[0]).toggle();\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, return_dom)) {\n\t\t\treturn_dom.fadeOut(400, function() {\n\t\t\t\treturn_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui switch created_element\"> <i class=\"ui icon small random\"></i> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( x ) { <br> '+LocalizedStrings.getUI('text_code_case')+' 1: <br> '+LocalizedStrings.getUI('text_code_case')+' 2: <br> } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui switch command_container\"> <i class=\"ui icon small random command_drag\" ></i> <i class=\"ui icon times red button_remove_command\"></i> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( <div class=\"ui variable_to_switch\"></div> ) <div class=\"ui context_menu\"></div> <div class=\"ui all_cases_div\"></div></span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.variable_to_switch'), function_obj);\n\n\tif (command.cases) {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\trenderCase(command.cases[i], command, function_obj, el.find('.all_cases_div'));\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function renderCase (switchcase, command, function_obj, el) {\n\n\tvar casediv = $('<div class=\"ui case_div\"><i class=\"ui icon times red button_remove_command\"></i><span>'+LocalizedStrings.getUI('text_code_case')+'</span> <div class=\"ui variable_case\"></div>: <div class=\"case_commands_block\"></div></div>');\n\n\tVariableValueMenu.renderMenu(command, switchcase.variable_value_menu, casediv.find('.variable_case'), function_obj);\n\n\tcasediv.data('switchcase', switchcase);\n\tcasediv.find('.case_commands_block').data('switchcase', switchcase);\n\n\tel.append(casediv);\n\n\tif (switchcase.commands_block) {\n\t\tfor (var j = 0; j < switchcase.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(switchcase.commands_block[j], $(casediv.find('.case_commands_block')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tcasediv.find('.button_remove_command').on('click', function() {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\tif (switchcase == command.cases[i]) {\n\t\t\t\tdelete command.cases[i];\n\t\t\t\tcommand.cases.splice(i, 1);\n\t\t\t\tcasediv.remove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n}\n\nfunction addHandlers (command, function_obj, switch_dom) {\n\n\tswitch_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, switch_dom)) {\n\t\t\tswitch_dom.fadeOut(400, function() {\n\t\t\t\tswitch_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as AttribuitionsManagement from \"./attribution\";\nimport * as RepeatNTimesManagement from \"./repeatNtimes\";\n\nexport const VAR_OR_VALUE_TYPES = Object.freeze({\n only_variable: 1,\n only_value: 2,\n only_function: 3,\n variable_and_function: 4,\n variable_and_value_opt: 5,\n value_and_function: 6,\n all: 7,\n});\n\nexport function renderMenu (\n command,\n ref_object,\n dom_object,\n function_obj,\n size_field = 2,\n expression_element\n) {\n\n // Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros\n // Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:\n if (ref_object.function_called) {\n if (ref_object.function_called.parameters_list) {\n while (\n ref_object.function_called.parameters_list.length !=\n ref_object.parameters_list.length\n ) {\n if (\n ref_object.parameters_list.length >\n ref_object.function_called.parameters_list.length\n ) {\n ref_object.parameters_list.pop();\n } else {\n ref_object.parameters_list.push(\n new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n }\n }\n }\n\n // Verificar agora, quando trata-se de chamada de função, se a passagem de parâmetro é\n // por referência ou por cópia:\n var index_references = [];\n if (ref_object.function_called) {\n if (ref_object.function_called.parameters_list) {\n for (var i = 0; i < ref_object.function_called.parameters_list.length; i++) {\n if (ref_object.function_called.parameters_list[i].reference) {\n index_references.push(i)\n ref_object.parameters_list[i].reference = true\n ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.only_variable;\n if (ref_object.parameters_list[i].column)\n ref_object.parameters_list[i].column.reference_parent = true\n if (ref_object.parameters_list[i].row)\n ref_object.parameters_list[i].row.reference_parent = true\n }\n else {\n ref_object.parameters_list[i].reference = false;\n ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.all;\n if (ref_object.parameters_list[i].column)\n ref_object.parameters_list[i].column.reference_parent = false\n if (ref_object.parameters_list[i].row)\n ref_object.parameters_list[i].row.reference_parent = false\n }\n\n ref_object.parameters_list[i].reference_dimensions = ref_object.function_called.parameters_list[i].dimensions\n } \n }\n }\n\n let menu_var_or_value =\n '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {\n menu_var_or_value =\n '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_vars\">';\n menu_var_or_value += \"</div>\";\n }\n\n if (\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||\n ref_object.variable_and_value ==\n VAR_OR_VALUE_TYPES.variable_and_value_opt ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"variable\");\n menu_var_or_value += '<div class=\"menu menu_only_vars\">';\n menu_var_or_value += \"</div></div>\";\n }\n\n if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {\n menu_var_or_value =\n '<input type=\"text\" class=\"width-dynamic\" size=\"' +\n size_field +\n '\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />';\n }\n\n if (\n ref_object.variable_and_value ==\n VAR_OR_VALUE_TYPES.variable_and_value_opt ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_value +\n '\">' +\n LocalizedStrings.getUI(\"text_value\") +\n \"</div>\";\n }\n\n if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {\n menu_var_or_value =\n '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_functions\">';\n menu_var_or_value += \"</div>\";\n }\n\n if (\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_function +\n '\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"btn_function\");\n menu_var_or_value += '<div class=\"menu menu_only_functions\">';\n menu_var_or_value += \"</div></div>\";\n\n /* if (command.type == Models.COMMAND_TYPES.attribution) {\n menu_var_or_value += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n menu_var_or_value += '<div class=\"menu\">';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n menu_var_or_value += '</div></div>';\n }*/\n }\n\n menu_var_or_value += \"</div></div>\";\n\n menu_var_or_value = $(menu_var_or_value);\n\n menu_var_or_value.find('.width-dynamic').on('input', function() {\n var input_field = $(this);\n var inputWidth = input_field.textWidth()+10;\n inputWidth = inputWidth<50?50:inputWidth;\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n dom_object.append(menu_var_or_value);\n\n ref_object.dom_object = menu_var_or_value;\n\n addHandlers(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n\n addVariablesToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n addFunctionsToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n addIVProgFunctionsToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n if (ref_object.content || ref_object.function_called) {\n if (ref_object.content) {\n // Verificar se a variável ainda existe:\n const variable_fun = isVarInProgram(ref_object.content, function_obj);\n if (variable_fun) {\n ref_object.content = variable_fun;\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n } else {\n if (ref_object.content && ref_object.content.type) {\n ref_object.content = null;\n appendSelectText(ref_object, menu_var_or_value);\n } else {\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n }\n }\n } else if (ref_object.function_called) {\n // Verificar se a função ainda existe:\n const ret_function = isFunctionInProgram(ref_object.function_called);\n if (ret_function) {\n ref_object.function_called = ret_function;\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n } else {\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n appendSelectText(ref_object, menu_var_or_value);\n }\n }\n } else {\n appendSelectText(ref_object, menu_var_or_value);\n }\n}\n\nfunction appendSelectText (ref_object, menu_var_or_value) {\n // if (ref_object.reference_parent) {\n // menu_var_or_value\n // .find(\".text\")\n // .append(\"<i>Opcional</i>\");\n // return;\n // }\n switch (ref_object.variable_and_value) {\n case VAR_OR_VALUE_TYPES.only_variable:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_var\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.all:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_all\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.variable_and_function:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_all\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.only_function:\n menu_var_or_value\n .find(\".text\")\n .append(\n \"<i>\" + LocalizedStrings.getUI(\"var_menu_select_function\") + \"</i>\"\n );\n break;\n }\n}\n\nfunction isFunctionInProgram (function_called_obj) {\n if (function_called_obj.name) {\n if (window.program_obj.functions) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i] == function_called_obj) {\n return window.program_obj.functions[i];\n }\n }\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_called_obj.name) {\n return window.program_obj.functions[i];\n }\n }\n }\n } else if (function_called_obj.identifier) {\n for (var i = 0; i < window.system_functions.length; i++) {\n if (\n window.system_functions[i].identifier == function_called_obj.identifier\n ) {\n return window.system_functions[i];\n }\n }\n }\n\n return null;\n}\n\nfunction isVarInProgram (var_obj, function_obj) {\n // Verify in locals:\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i] == var_obj) {\n return function_obj.variables_list[i];\n }\n }\n }\n // Verify in parameters:\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i] == var_obj) {\n return function_obj.parameters_list[i];\n }\n }\n }\n // Verify in globals:\n if (window.program_obj.globals) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i] == var_obj) {\n return window.program_obj.globals[i];\n }\n }\n }\n\n // If not found, verify if the reference was lost\n if (var_obj) {\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i].name == var_obj.name) {\n return function_obj.variables_list[i];\n }\n }\n }\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i].name == var_obj.name) {\n return function_obj.parameters_list[i];\n }\n }\n }\n if (window.program_obj.globals) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == var_obj.name) {\n return window.program_obj.globals[i];\n }\n }\n }\n }\n\n return null;\n}\n\nfunction renderPreviousContent (\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n) {\n if (ref_object.function_called) {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else if (ref_object.content.type) {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n }\n}\n\nfunction variableValueMenuCode (\n command,\n variable_obj,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n) {\n if (variable_obj.content || variable_obj.function_called) {\n // Verificar se a variável ainda existe:\n const var_fun = isVarInProgram(variable_obj.content, function_obj);\n\n if (var_fun) {\n variable_obj.content = var_fun;\n } else {\n if (variable_obj.content && variable_obj.content.type) {\n variable_obj.content = null;\n appendSelectText(variable_obj, menu_var_or_value);\n }\n }\n } else {\n appendSelectText(variable_obj, menu_var_or_value);\n }\n\n if (variable_obj.content == null && variable_obj.function_called == null) {\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n return;\n }\n\n const ret = \"\";\n if (variable_obj.function_called) {\n if (\n variable_obj.function_called.parameters_list == null ||\n variable_obj.function_called.length == 0\n ) {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (variable_obj.function_called.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n variable_obj.function_called.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n } else {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (variable_obj.function_called.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n variable_obj.function_called.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n for (\n let j = 0;\n j < variable_obj.function_called.parameters_list.length;\n j++\n ) {\n parameters_menu +=\n '<div class=\"render_style_param parameter_' + j + '\"></div>';\n if (j + 1 != variable_obj.function_called.parameters_list.length) {\n parameters_menu += \" , \";\n }\n }\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n for (\n let j = 0;\n j < variable_obj.function_called.parameters_list.length;\n j++\n ) {\n renderMenu(\n command,\n variable_obj.parameters_list[j],\n parameters_menu.find(\".parameter_\" + j),\n function_obj,\n 2,\n expression_element\n );\n }\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(parameters_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n } else if (variable_obj.content.type) {\n let variable_render = \"\";\n\n if (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n\n if (variable_obj.reference_dimensions >= 1)\n variable_render += '';\n else\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n if (!variable_obj.column) {\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n if (variable_obj.reference)\n temp.reference_parent = true\n variable_obj.column = temp;\n }\n\n variableValueMenuCode(\n command,\n variable_obj.column,\n $(variable_render.find(\".column_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else if (\n variable_obj.content.dimensions == 2 &&\n variable_obj.dimensions != 2\n ) {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n \n variable_render +=\n ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span>';\n\n if (variable_obj.reference_dimensions == 0)\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ] </span>';\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n if (!variable_obj.column) {\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n if (variable_obj.reference)\n temp.reference_parent = true\n\n variable_obj.column = temp\n }\n if (!variable_obj.row) {\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n if (variable_obj.reference)\n temp.reference_parent = true\n\n variable_obj.row = temp\n }\n\n variableValueMenuCode(\n command,\n variable_obj.row,\n $(variable_render.find(\".row_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n\n if (variable_obj.reference_dimensions == 1) {\n variable_obj.column = null\n } else {\n variableValueMenuCode(\n command,\n variable_obj.column,\n $(variable_render.find(\".column_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n }\n } else {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n console.log('dom_object6');\n console.log(dom_object);\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n } else {\n let variable_render;\n\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">';\n\n if (isNaN(variable_obj.content)) {\n variable_render += variable_obj.content.split(\" \").join(\"&nbsp;\");\n } else {\n variable_render += variable_obj.content;\n }\n\n variable_render += \"</span>\";\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n if (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n context_menu.insertAfter(variable_render);\n }\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".context_menu_clear\").remove();\n dom_object.find(\".width-dynamic-minus\").remove();\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n variable_render.on(\"click\", function (e) {\n variable_render.remove();\n variable_render.empty();\n variable_render.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n }\n}\n\nfunction addIVProgFunctionsToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_functions\");\n sub_menu.append(\n '<div class=\"divider\"></div><div class=\"header\">' +\n LocalizedStrings.getUI(\"text_header_ivprog_functions\") +\n \"</div>\"\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_math\") +\n '<div class=\"menu menu_math_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_text\") +\n '<div class=\"menu menu_text_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_array\") +\n '<div class=\"menu menu_arrangement_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_conversion\") +\n '<div class=\"menu menu_conversion_functions\"></div></div>'\n );\n\n // Insert Math functions:\n for (let i = 0; i < window.system_functions.length; i++) {\n const t = $('<div class=\"item\"></div>');\n t.data(\"function_reference\", window.system_functions[i]);\n t.data(\"option\", VAR_OR_VALUE_TYPES.only_function);\n t.text(\n LocalizedStrings.translateInternalFunction(\n window.system_functions[i].identifier\n )\n );\n\n switch (window.system_functions[i].category) {\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.math:\n sub_menu.find(\".menu_math_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.text:\n sub_menu.find(\".menu_text_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:\n sub_menu.find(\".menu_arrangement_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:\n sub_menu.find(\".menu_conversion_functions\").append(t);\n break;\n }\n }\n}\n\nfunction addFunctionsToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_functions\");\n sub_menu.text(\"\");\n\n for (let i = 0; i < window.program_obj.functions.length; i++) {\n const temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_function +\n '\">' +\n window.program_obj.functions[i].name +\n \" </div>\"\n );\n temp.data(\"function_reference\", window.program_obj.functions[i]);\n sub_menu.append(temp);\n }\n}\n\nfunction addVariablesToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_vars\");\n sub_menu.text(\"\");\n let is_there = false;\n\n if (window.program_obj.globals) {\n if (ref_object.include_constant) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n window.program_obj.globals[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", window.program_obj.globals[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n } else {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (!window.program_obj.globals[i].is_constant) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n window.program_obj.globals[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", window.program_obj.globals[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n }\n }\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n function_obj.parameters_list[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", function_obj.parameters_list[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n function_obj.variables_list[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", function_obj.variables_list[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n if (!is_there) {\n sub_menu.append(\n $(\n '<div class=\"header\">' +\n LocalizedStrings.getUI(\"text_no_variable\") +\n \"</div>\"\n )\n );\n sub_menu.append(\n $(\n '<div class=\"item disabled\">' +\n LocalizedStrings.getUI(\"text_no_variable_instruction\") +\n \"</div>\"\n )\n );\n }\n}\n\nfunction addHandlers (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n) {\n if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n menu_var_or_value.dropdown({\n onChange: function (value, text, $selectedItem) {\n dom_object.find(\".var_name\").remove();\n switch ($selectedItem.data(\"option\")) {\n case VAR_OR_VALUE_TYPES.only_function:\n openInputToFunction(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $($selectedItem).data(\"function_reference\"),\n expression_element\n );\n break;\n\n case VAR_OR_VALUE_TYPES.only_value:\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n break;\n\n case VAR_OR_VALUE_TYPES.only_variable:\n openInputToVariable(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $($selectedItem).data(\"variable_reference\"),\n expression_element\n );\n break;\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n\n if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n RepeatNTimesManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n\n dom_object\n .find(\".width-dynamic\")\n .on(\"input\", function () {\n const inputWidth = $(this).textWidth() + 10;\n $(this).focus();\n\n const tmpStr = $(this).val();\n $(this).val(\"\");\n $(this).val(tmpStr);\n\n $(this).css({\n width: inputWidth,\n });\n })\n .trigger(\"input\");\n\n if (command.type == Models.COMMAND_TYPES.comment) {\n dom_object.parent().on(\"click\", function (e) {\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".value_rendered\").empty();\n dom_object.find(\".value_rendered\").remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n }\n}\n\nfunction openInputToFunction (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n function_selected,\n expression_element\n) {\n ref_object.function_called = function_selected;\n ref_object.parameters_list = [];\n\n if (\n function_selected.parameters_list != null &&\n function_selected.parameters_list.length > 0\n ) {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n if (function_selected.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n function_selected.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n function_selected.identifier,\n function_selected.category\n ) +\n \"</i> <span> ( </span>\";\n }\n for (var j = 0; j < function_selected.parameters_list.length; j++) {\n parameters_menu +=\n '<div class=\"render_style_param parameter_' + j + '\"></div>';\n if (j + 1 != function_selected.parameters_list.length) {\n parameters_menu += \" , \";\n }\n }\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n for (var j = 0; j < function_selected.parameters_list.length; j++) {\n var temp;\n if (function_selected.parameters_list[j].dimensions > 0) {\n temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.variable_and_function,\n null,\n null,\n null,\n true,\n function_selected.parameters_list[j].dimensions\n );\n } else {\n temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n }\n\n if (function_selected.parameters_list[j].reference == true) {\n temp.reference = true;\n temp.variable_and_value = VAR_OR_VALUE_TYPES.only_variable;\n } else {\n temp.reference = false;\n temp.variable_and_value = VAR_OR_VALUE_TYPES.all;\n }\n temp.reference_dimensions = function_selected.parameters_list[j].dimensions\n \n ref_object.parameters_list.push(temp);\n renderMenu(\n command,\n temp,\n parameters_menu.find(\".parameter_\" + j),\n function_obj,\n 2,\n expression_element\n );\n }\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n } else {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (function_selected.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n function_selected.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n function_selected.identifier,\n function_selected.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n }*/\n}\n\nfunction openInputToVariable (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n variable_selected,\n expression_element\n) {\n ref_object.content = variable_selected;\n\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n let variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_selected.name +\n \"</span>\";\n\n if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n \n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n }\n if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n variable_render +=\n ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span> ';\n \n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n \n }\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n if (ref_object.reference)\n temp.reference_parent = true\n\n ref_object.column = temp\n\n renderMenu(\n command,\n ref_object.column,\n variable_render.find(\".column_container\"),\n function_obj,\n 2,\n expression_element\n );\n }\n if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n if (ref_object.reference)\n temp.reference_parent = true\n\n ref_object.row = temp\n\n renderMenu(\n command,\n ref_object.row,\n variable_render.find(\".row_container\"),\n function_obj,\n 2,\n expression_element\n );\n\n var temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n if (ref_object.reference)\n temp.reference_parent = true\n\n ref_object.column = temp\n \n renderMenu(\n command,\n ref_object.column,\n variable_render.find(\".column_container\"),\n function_obj,\n 2,\n expression_element\n );\n }\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n console.log(\"dom_object 10: \");\n console.log(dom_object);\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".variable_rendered\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n\n if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n RepeatNTimesManagement.manageClearExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);\n }*/\n}\n\nfunction openInputToValue (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n) {\n if (ref_object.content == null) {\n ref_object.content = \"\";\n }\n\n menu_var_or_value.find(\".text\").text(\" \");\n const field = $(\n '<input type=\"text\" size=\"2\" class=\"width-dynamic-minus\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />'\n );\n field.insertBefore(dom_object.find(\".menu_var_or_value_dom\"));\n\n\n field.on('input', function() {\n var input_field = $(this);\n var inputWidth = input_field.textWidth()+10;\n inputWidth = inputWidth<50?50:inputWidth;\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n const rendered = $('<div class=\"value_rendered\"></div>');\n rendered.insertBefore(field);\n\n field.focus();\n field.val(ref_object.content);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n context_menu.insertAfter(field);\n }\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".context_menu_clear\").remove();\n dom_object.find(\".width-dynamic-minus\").remove();\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n dom_object.find(\".width-dynamic-minus\").focusout(function () {\n /*if (\n $(this)\n .val()\n .trim()\n ) {\n ref_object.content = $(this)\n .val()\n .trim();\n }*/\n ref_object.content = $(this)\n .val();\n\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.split(\" \").join(\"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n $(this).remove();\n });\n\n dom_object.find(\".width-dynamic-minus\").on(\"keydown\", function (e) {\n const code = e.keyCode || e.which;\n if (code == 13) {\n /*if (\n $(this)\n .val()\n .trim()\n ) {\n ref_object.content = $(this)\n .val()\n .trim();\n }*/\n ref_object.content = $(this)\n .val();\n\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.split(\" \").join(\"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n\n $(this).remove();\n }\n if (code == 27) {\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.split(\" \").join(\"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n\n $(this).remove();\n }\n });\n\n if (command.type == Models.COMMAND_TYPES.comment) {\n /*rendered.parent().on('click', function(e) {\n rendered.parent().off();\n console.log(\"TTT14\");\n rendered.remove();\n rendered.empty();\n rendered.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n });*/\n }\n\n rendered.on(\"click\", function (e) {\n rendered.empty();\n rendered.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n }*/\n}\n\n$.fn.textWidth = function (text, font) {\n if (!$.fn.textWidth.fakeEl)\n $.fn.textWidth.fakeEl = $(\"<span>\")\n .hide()\n .appendTo(document.body);\n\n $.fn.textWidth.fakeEl\n .text(text || this.val() || this.text() || this.attr(\"placeholder\"))\n .css(\"font\", font || this.css(\"font\"));\n\n return $.fn.textWidth.fakeEl.width();\n};\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui whiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> ' + LocalizedStrings.getUI('text_command_while') + ' ( x < 10 ) <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui whiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i><button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_while') + ' </span>';\n\tret += '<span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"textual_expression\"></span> <span class=\"span_command_spec\"> ) </span>';\n\tret += ' </span>';\n\tret += ' <i class=\"ui icon i cursor button_write_expression\" style=\"margin-right: 1rem !important;\"></i> <i class=\"ui icon unlock button_alternate_expression\"></i> <div class=\"ui context_menu\"></div>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tif (command.lockexpression) {\n\t\tif (command.expression) {\n\t\t\ttry {\n\t\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\tif (text) {\n\t\t\t\t\t$(el.find('.conditional_expression')[0]).toggle();\n\t\t\t\t\t$(el.find('.textual_expression')[0]).text(text);\n\t\t\t\t\t$(el.find('.textual_expression')[0]).toggle();\n\t\t\t\t\t$(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tcommand.lockexpression = false;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tel.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.button_write_expression').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, whiletrue_dom) {\n\n\twhiletrue_dom.find('.button_write_expression').on('click', function() {\n\n\t\twindow.expressionEdition = true;\n\t\twindow.inputExpression = null;\n\t\t\n\t\tvar afterWhichElement;\n\t\tvar lockButton = $(whiletrue_dom.find('.button_alternate_expression')[0]);\n\t\tvar editButton = $(this);\n\n\t\tafterWhichElement = $(whiletrue_dom.find('.conditional_expression')[0]);\n\n\t\tif (command.lockexpression) {\n\t\t\tafterWhichElement = $(whiletrue_dom.find('.textual_expression')[0]);\n\t\t}\n\n\t\tvar text = \"\";\n\t\tif (command.expression) {\n\t\t\tif (command.expression.length == 1 && command.expression[0].content == null && !command.expression[0].function_called) {\n\t\t\t\ttext = \"\";\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\ttext = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\ttext = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar ok_button = $('<i class=\"ui icon check circle expression-edit-confirm\"></i>');\n\t\tvar cancel_button = $('<i class=\"ui icon undo expression-edit-cancel\"></i>');\n\t\tvar input = $('<input type=\"text\" spellcheck=\"false\" autocomplete=\"off\" class=\"input-expression-field\" >');\n\t\tinput.val(text);\n\n\t\tinput.focusout(function(evt) {\n\t\t\tconsole.log('focosout event!');\n\t\t\tok_button.click();\n\t\t\tevt.preventDefault();\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\tinput.keyup(function(evt) {\n\t\t\tif (evt.keyCode == 27) { // esc\n\t\t\t\tcancel_button.click();\n\t\t\t} \n\t\t\tif (evt.keyCode == 13) { // enter\n\t\t\t\tok_button.click();\n\t\t\t}\n\t\t});\n\n\t\tok_button.click(function() {\n\t\t\tvar parsed = null;\n\t\t\tparsed = GenericExpressionManagement.expressionParserToVisual(input.val(), function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tcancel_button.mousedown(function(evt) {\n\t\t\tvar parsed = GenericExpressionManagement.expressionParserToVisual(text, function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.expression = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tinput.insertAfter(afterWhichElement);\n\t\tinput.focus();\n\t\tcancel_button.insertAfter(input);\n\t\tok_button.insertAfter(input);\n\t\tvar len = text.length; \n\t\tinput[0].setSelectionRange(len, len); \n\n\t\tafterWhichElement.css('display', 'none');\n\t\tlockButton.css('display', 'none');\n\t\teditButton.css('display', 'none');\n\n\t\tok_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_confirm\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t\tcancel_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_cancel\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t});\n\n\twhiletrue_dom.find('.minimize_block_button').on('click', function(evt){\n\t\twhiletrue_dom.children('.ui.block_commands').toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\n\n\t$(whiletrue_dom.find('.textual_expression')[0]).toggle();\n\t\n\twhiletrue_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.expression) {\n\t\t\tvar text = CodeGenerator.elementExpressionCode(command.expression);\n\t\t\tif (text) {\n\t\t\t\t$(whiletrue_dom.find('.conditional_expression')[0]).toggle();\n\t\t\t\t$(whiletrue_dom.find('.textual_expression')[0]).text(text);\n\t\t\t\t$(whiletrue_dom.find('.textual_expression')[0]).toggle();\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n\t\t\t}\n\t\t}\n\n\t\tif (command.lockexpression) {\n\t\t\twhiletrue_dom.find('.lock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twhiletrue_dom.find('.unlock').popup({\n\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\tdelay: {\n\t\t\t\t\tshow: 750,\n\t\t\t\t\thide: 0\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\twhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, whiletrue_dom)) {\n\t\t\twhiletrue_dom.fadeOut(400, function() {\n\t\t\t\twhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as VariableValueMenu from \"./variable_value_menu\";\nimport * as VariableValueMenuManagement from \"./variable_value_menu\";\nimport * as CommandsManagement from \"../commands\";\nimport * as GenericExpressionManagement from \"./generic_expression\";\nimport * as CodeGenerator from '../code_generator';\n\nexport function createFloatingCommand () {\n return $(\n '<div class=\"ui writer created_element\"> <i class=\"ui icon small upload\"></i> <span> ' +\n LocalizedStrings.getUI(\"text_command_write\") +\n \" var </span></div>\"\n );\n}\n\nexport function renderCommand (command, function_obj) {\n const ret = `<div class=\"ui writer command_container\">\n <i class=\"ui icon small upload command_drag\"></i>\n <i class=\"ui icon times red button_remove_command\"></i>\n <span class=\"span_command_spec\">${LocalizedStrings.getUI(\n \"text_command_write\"\n )}\n ( </span><div class=\"all_elements_write\"></div> <span class=\"textual_expression\"></span>\n <span class=\"close_parentheses span_command_spec\">)</span>\n <img data-state=\"${command.newline ? \"on\" : \"false\"}\" src=\"${\n command.newline ? \"img/new_line.svg\" : \"img/no_new_line.svg\"\n }\" class=\"ivprog_newline_btn\"/> \n <i class=\"ui icon i cursor button_write_expression\" style=\"margin-left: 3rem !important; margin-right: -1.1rem !important;\"></i> \n <i class=\"ui icon unlock button_alternate_expression\"></i>\n </div>`;\n const el = $(ret);\n el.data(\"command\", command);\n\n //renderExpression (command, function_obj, div_to_render, expression_array)\n\n GenericExpressionManagement.renderExpression(\n command,\n function_obj,\n el.find(\".all_elements_write\"),\n command.content\n );\n\n \n addHandlers(command, function_obj, el);\n\n if (command.content && command.lockexpression) {\n try {\n var text = CodeGenerator.elementExpressionCode(command.content);\n if (text) {\n $(el.find('.all_elements_write')[0]).toggle();\n $(el.find('.textual_expression')[0]).text(text);\n $(el.find('.textual_expression')[0]).toggle();\n $(el.find('.button_alternate_expression')[0]).toggleClass('unlock').toggleClass('lock');\n }\n } catch (e) {\n command.lockexpression = false;\n }\n }\n\n el.find('.unlock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\tel.find('.lock').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n });\n el.find('.button_write_expression').popup({\n\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression\"),\n\t\tdelay: {\n\t\t\tshow: 750,\n\t\t\thide: 0\n\t\t}\n\t});\n\n return el;\n}\n\nfunction addHandlersManager (\n command,\n _function_obj,\n _writer_dom,\n item_div,\n content_element\n) {\n item_div.find(\".times\").on(\"click\", function () {\n for (let i = 0; i < command.content.length; i++) {\n if (command.content[i] == content_element) {\n delete command.content[i];\n command.content.splice(i, 1);\n\n item_div.children().off();\n item_div.off();\n item_div.fadeOut();\n\n if (command.content.length > 0) {\n item_div.next(\".icon_add_item_to_writer\").fadeOut();\n }\n break;\n }\n }\n });\n}\n\nfunction addHandlers (command, function_obj, writer_dom) {\n\n $(writer_dom.find('.textual_expression')[0]).toggle();\n\n writer_dom.find('.button_write_expression').on('click', function() {\n\n\t\twindow.expressionEdition = true;\n\t\twindow.inputExpression = null;\n\t\t\n\t\tvar afterWhichElement;\n\t\tvar lockButton = $(writer_dom.find('.button_alternate_expression')[0]);\n\t\tvar editButton = $(this);\n\n\t\tafterWhichElement = writer_dom.find('.all_elements_write');\n\n\t\tif (command.lockexpression) {\n\t\t\tafterWhichElement = writer_dom.find('.textual_expression');\n\t\t}\n\n\t\tvar text = \"\";\n\t\tif (command.content) {\n\t\t\tif (command.content.length == 1 && command.content[0].content == null && !command.content[0].function_called) {\n\t\t\t\ttext = \"\";\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\ttext = CodeGenerator.elementExpressionCode(command.content);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\ttext = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar ok_button = $('<i class=\"ui icon check circle expression-edit-confirm\"></i>');\n\t\tvar cancel_button = $('<i class=\"ui icon undo expression-edit-cancel\"></i>');\n\t\tvar input = $('<input type=\"text\" spellcheck=\"false\" autocomplete=\"off\" class=\"input-expression-field\" >');\n\t\tinput.val(text);\n\n\t\tinput.focusout(function(evt) {\n\t\t\tok_button.click();\n\t\t\tevt.preventDefault();\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\tinput.keyup(function(evt) {\n\t\t\tif (evt.keyCode == 27) { // esc\n\t\t\t\tcancel_button.click();\n\t\t\t} \n\t\t\tif (evt.keyCode == 13) { // enter\n\t\t\t\tok_button.click();\n\t\t\t}\n\t\t});\n\n\t\tok_button.click(function() {\n\t\t\tvar parsed = null;\n\t\t\tparsed = GenericExpressionManagement.expressionParserToVisual(input.val(), function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.content = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tcancel_button.mousedown(function(evt) {\n\t\t\tvar parsed = GenericExpressionManagement.expressionParserToVisual(text, function_obj, input);\n\t\t\tif (parsed) {\n\t\t\t\twindow.expressionEdition = false;\n\t\t\t\tcommand.content = parsed;\n\t\t\t\trenderAlgorithm();\n\t\t\t}\n\t\t});\n\n\t\tinput.insertAfter(afterWhichElement);\n\t\tinput.focus();\n\t\tcancel_button.insertAfter(input);\n\t\tok_button.insertAfter(input);\n\t\tvar len = text.length; \n\t\tinput[0].setSelectionRange(len, len); \n\n\t\tafterWhichElement.css('display', 'none');\n\t\tlockButton.css('display', 'none');\n\t\teditButton.css('display', 'none');\n\n\t\tok_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_confirm\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t\tcancel_button.popup({\n\t\t\tcontent : LocalizedStrings.getUI(\"text_edit_expression_cancel\"),\n\t\t\tdelay: {\n\t\t\t\tshow: 750,\n\t\t\t\thide: 0\n\t\t\t}\n\t\t});\n\t});\n\n\t\n\twriter_dom.find('.button_alternate_expression').on('click', function() {\n\t\tif (command.content) {\n var text = CodeGenerator.elementExpressionCode(command.content);\n\t\t\tif (text) {\n\t\t\t\t$(writer_dom.find('.all_elements_write')[0]).toggle();\n\t\t\t\t$(writer_dom.find('.textual_expression')[0]).text(text);\n\t\t\t\t$(writer_dom.find('.textual_expression')[0]).toggle();\n\t\t\t\t$(this).toggleClass('unlock').toggleClass('lock');\n\t\t\t\tcommand.lockexpression = !command.lockexpression;\n }\n \n if (command.lockexpression) {\n\t\t\t\twriter_dom.find('.lock').popup({\n\t\t\t\t\tcontent : LocalizedStrings.getUI(\"text_unlock_expression\"),\n\t\t\t\t\tdelay: {\n\t\t\t\t\t\tshow: 750,\n\t\t\t\t\t\thide: 0\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\twriter_dom.find('.unlock').popup({\n\t\t\t\t\tcontent : LocalizedStrings.getUI(\"text_lock_expression\"),\n\t\t\t\t\tdelay: {\n\t\t\t\t\t\tshow: 750,\n\t\t\t\t\t\thide: 0\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n writer_dom.find(\".button_remove_command\").on(\"click\", function () {\n if (CommandsManagement.removeCommand(command, function_obj, writer_dom)) {\n writer_dom.fadeOut(400, function () {\n writer_dom.remove();\n });\n }\n });\n\n Sortable.create(writer_dom.find(\".all_elements_write\")[0], {\n handle: \".ellipsis\",\n animation: 100,\n ghostClass: \"ghost\",\n group: \"writer_\" + Math.floor(Math.random() * 10000000),\n draggable: \".div_parent_handler\",\n onEnd: function (evt) {\n command.content.splice(\n evt.newIndex,\n 0,\n command.content.splice(evt.oldIndex, 1)[0]\n );\n\n writer_dom.empty();\n writer_dom.replaceWith(renderCommand(command, function_obj));\n },\n });\n // Attach event handles for the newline button\n const newlineBtn = writer_dom.find(\".ivprog_newline_btn\");\n newlineBtn.on(\"click\", function () {\n const state = this.dataset.state;\n if (state === \"on\") {\n this.dataset.state = \"off\";\n command.newline = false;\n this.setAttribute(\"src\", \"img/no_new_line.svg\");\n } else {\n this.dataset.state = \"on\";\n command.newline = true;\n this.setAttribute(\"src\", \"img/new_line.svg\");\n }\n writer_dom.data(\"command\", command);\n setPopup(newlineBtn, command.newline);\n });\n // Attach jquery popup\n setPopup(newlineBtn, command.newline);\n}\n\nfunction setPopup (element, state) {\n if (element.popup(\"exists\")) {\n element.popup(\"destroy\");\n }\n const content = state\n ? LocalizedStrings.getUI(\"write_command_newline_on\")\n : LocalizedStrings.getUI(\"write_command_newline_off\");\n element.popup({\n content: content,\n delay: {\n show: 750,\n hide: 0,\n },\n });\n}\n\nfunction _addHandlerIconAdd (\n dom_object,\n command,\n function_obj,\n insert_after = false,\n after_which = null\n) {\n const icon_add_item = $(\n '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> '\n );\n if (!insert_after) {\n dom_object.append(icon_add_item);\n } else {\n icon_add_item.insertAfter(after_which);\n }\n\n icon_add_item.on(\"click\", function (_event) {\n const div_parent_with_handler = $(\n '<div class=\"div_parent_handler\" style=\"display:none;\"></div>'\n );\n const new_div_item = $('<div class=\"var_value_menu_div\"></div>');\n div_parent_with_handler.append(\n $('<i class=\"ui icon ellipsis vertical inverted handler\"></i>')\n );\n div_parent_with_handler.append(new_div_item);\n div_parent_with_handler.append(\n $('<i class=\"white inverted icon times handler\"></i>')\n );\n div_parent_with_handler.insertAfter(icon_add_item);\n\n const new_related_menu = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n VariableValueMenu.renderMenu(\n command,\n new_related_menu,\n new_div_item,\n function_obj\n );\n\n addHandlerIconAdd(\n dom_object,\n command,\n function_obj,\n true,\n div_parent_with_handler\n );\n\n addHandlersManager(\n command,\n function_obj,\n dom_object,\n div_parent_with_handler,\n new_related_menu\n );\n let pos = 1;\n dom_object.find(\".icon_add_item_to_writer\").each(function () {\n if ($(this).get(0) === icon_add_item.get(0)) {\n command.content.splice(pos, 0, new_related_menu);\n } else {\n pos++;\n }\n });\n if (command.content.length == 1) {\n icon_add_item.remove();\n }\n div_parent_with_handler.fadeIn();\n });\n}\n\nexport function addContent (\n command,\n _ref_object,\n dom_object,\n _menu_var_or_value,\n function_obj,\n _ref_object_content\n) {\n if (dom_object.hasClass(\"var_value_menu_div\")) {\n const icon_add_item = $(\n '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> '\n );\n icon_add_item.insertAfter(dom_object);\n\n icon_add_item.on(\"click\", function (_event) {\n const div_parent_with_handler = $(\n '<div class=\"div_parent_handler\"></div>'\n );\n div_parent_with_handler.append(\n $('<i class=\"ui icon ellipsis vertical inverted handler\"></i>')\n );\n div_parent_with_handler.append(new_div_item);\n div_parent_with_handler.append(\n $('<i class=\"white inverted icon times handler\"></i>')\n );\n\n div_parent_with_handler.insertAfter(icon_add_item);\n const new_related_menu = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n VariableValueMenu.renderMenu(\n command,\n new_related_menu,\n new_div_item,\n function_obj\n );\n\n addHandlersManager(\n command,\n function_obj,\n dom_object,\n div_parent_with_handler,\n new_related_menu\n );\n\n command.content.push(new_related_menu);\n\n if (command.content.length == 1) {\n icon_add_item.remove();\n }\n });\n }\n}\n","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport WatchJS from 'melanke-watchjs';\nimport { SemanticAnalyser } from '../processor/semantic/semanticAnalyser';\nimport { IVProgAssessment } from '../assessment/ivprogAssessment';\nimport * as AlgorithmManagement from './algorithm';\nimport * as Utils from './utils';\nimport { registerUserEvent, ActionTypes } from \"./../services/userLog\";\nimport VersionInfo from './../../.ima_version.json';\nimport * as TextEditor from \"./text_editor\";\nimport { isValidIdentifier } from \"./../util/utils\";\nimport { Modes } from '../processor/modes';\n\nvar counter_new_functions = 0;\nvar counter_new_parameters = 0;\nvar ivprog_version = VersionInfo.version;\n\nconst globalChangeListeners = [];\nconst functionsChangeListeners = [];\nlet proc = null;\nlet domConsole = null;\nlet _testCases = [];\nlet isRunning = false;\nwindow.studentGrade = null;\nwindow.LocalizedStrings = LocalizedStrings;\nconst program = new Models.Program();\n\nwindow.system_functions = [];\n// Adding math functions:\nwindow.system_functions.push(new Models.SystemFunction('$sin', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$cos', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$tan', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$sqrt', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$pow', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$log', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$abs', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$negate', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$invert', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$max', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$min', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$rand', Types.REAL, 0, [],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\n// Adding text functions:\nwindow.system_functions.push(new Models.SystemFunction('$substring', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$length', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$uppercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$lowercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$charAt', Types.CHAR, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\n// Adding arrangement functions:\nwindow.system_functions.push(new Models.SystemFunction('$numElements', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 1)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixLines', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixColumns', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\n// Adding conversion functions:\nwindow.system_functions.push(new Models.SystemFunction('$isReal', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isInt', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castReal', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castInt', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castString', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castChar', Types.CHAR, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\n\nconsole.log(' ___ ___ ________ \\n / / / / / ____/ \\n / / / / / / \\n / / / / ______ ___ / /__ \\n / / / / / \\\\ / / / ___/ \\n / /______ / / / /\\\\ \\\\/ / / / \\n / / / / / / \\\\ / / /____ \\n/__________/ /___/ /___/ \\\\___/ /________/ \\n\\n Laboratório de Informática na Educação\\n http://line.ime.usp.br');\n\nconst mainFunction = new Models.Function(LocalizedStrings.getUI(\"start\"), Types.VOID, 0, [], true, false);\nmainFunction.function_comment = new Models.Comment(LocalizedStrings.getUI('text_comment_main'));\nprogram.addFunction(mainFunction);\n\nwindow.program_obj = program;\n\nwindow.generator = CodeManagement.generate;\nwindow.runCodeAssessment = runCodeAssessment;\nwindow.renderAlgorithm = AlgorithmManagement.renderAlgorithm;\nwindow.insertContext = false;\nwindow.watchW = WatchJS;\n\nWatchJS.watch(window.program_obj.globals, function(){\n if (window.insertContext) {\n setTimeout(function() {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }\n}, 1);\n\nWatchJS.watch(window.program_obj.functions, function(){\n if (window.insertContext) {\n setTimeout(function(){\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }\n}, 1);\n\nfunction addFunctionHandler () {\n\n if (window.program_obj.functions) {\n\t\tvar in_use = false;\n\t\tdo {\n\t\t\tin_use = false;\n\t\t\t\n\t\t\tvar temp_name = LocalizedStrings.getUI('new_function') + '_' + counter_new_functions;\n\n\t\t\twindow.program_obj.functions.forEach(function(el) {\n\t\t\t\tif (temp_name == el.name) {\n\t\t\t\t\tin_use = true;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif (in_use)\n counter_new_functions++;\n\n\t\t} while (in_use);\n\t}\n\n\tconst new_function = new Models.Function(LocalizedStrings.getUI(\"new_function\") + \"_\" + counter_new_functions, Types.VOID, 0, [], false, false, [], new Models.Comment(LocalizedStrings.getUI('text_comment_start')));\n\tprogram.addFunction(new_function);\n\n\tcounter_new_functions ++;\n\n window.insertContext = true;\n registerUserEvent(new_function.name, ActionTypes.INSERT_FUNCTION);\n\n // var newe = renderFunction(new_function);\n renderFunction(new_function);\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n}\n\nfunction addParameter (function_obj, function_container/*, is_from_click = false*/) {\n if (function_obj.parameters_list == null) {\n function_obj.parameters_list = [];\n }\n\n if (function_obj.parameters_list) {\n\t\tvar in_use = false;\n\t\tdo {\n\t\t\tin_use = false;\n\t\t\t\n\t\t\tvar temp_name = LocalizedStrings.getUI('new_parameter') + '_' + counter_new_parameters;\n\n\t\t\tfunction_obj.parameters_list.forEach(function(el) {\n\t\t\t\tif (temp_name == el.name) {\n\t\t\t\t\tin_use = true;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif (in_use)\n counter_new_parameters++;\n\n\t\t} while (in_use);\n\t}\n\n const new_parameter = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI(\"new_parameter\") + \"_\" + counter_new_parameters);\n function_obj.parameters_list.push(new_parameter);\n counter_new_parameters ++;\n registerUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_PARAM, new_parameter.name, Types.INTEGER, 0);\n //var newe = renderParameter(function_obj, new_parameter, function_container);\n renderParameter(function_obj, new_parameter, function_container);\n // if (is_from_click) {\n // newe.css('display', 'none');\n // newe.fadeIn();\n // }\n}\n\nfunction updateReturnType (function_obj, new_type, new_dimensions = 0) {\n registerUserEvent(function_obj.name, ActionTypes.CHANGE_FUNCTION_RETURN, new_type, new_dimensions);\n function_obj.return_type = new_type;\n function_obj.return_dimensions = new_dimensions;\n}\n\nfunction removeFunction (function_obj) {\n var index = program.functions.indexOf(function_obj);\n if (index > -1) {\n registerUserEvent(function_obj.name, ActionTypes.REMOVE_FUNCTION);\n program.functions.splice(index, 1);\n }\n}\n\nfunction minimizeFunction (function_obj) {\n function_obj.is_hidden = !function_obj.is_hidden;\n}\n\nfunction addHandlers (function_obj, function_container) {\n\n function_container.find('.ui.dropdown.function_return').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateReturnType(function_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateReturnType(function_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n function_container.find( \".name_function_updated\" ).on('click', function(e){\n enableNameFunctionUpdate(function_obj, function_container);\n });\n\n function_container.find( \".add_parameter_button\" ).on('click', function(e){\n window.insertContext = true;\n addParameter(function_obj, function_container, true);\n });\n\n function_container.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\n function_container.find('.menu_commands a').on('click', function(evt){\n if (function_obj.commands == null || function_obj.commands.length == 0) {\n function_obj.commands = [];\n var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n function_obj.commands.push(new_cmd);\n\n CommandsManagement.renderCommand(new_cmd, function_container.find('.commands_list_div'), 3, function_obj);\n registerUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, $(this).data('command'), '/', 0);\n } else {\n CommandsManagement.createFloatingCommand(function_obj, function_container, $(this).data('command'), evt);\n }\n\n });\n\n function_container.find('.add_var_button_function').on('click', function(e){\n window.insertContext = true;\n VariablesManagement.addVariable(function_obj, function_container, true);\n });\n\n function_container.find('.remove_function_button').on('click', function(e){\n removeFunction(function_obj);\n function_container.fadeOut();\n });\n\n function_container.find('.minimize_function_button').on('click', function(e){\n minimizeFunction(function_obj);\n if (function_obj.is_hidden) {\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n function_container.find(\".function_area\").slideToggle();\n } else {\n function_container.find(\".function_area\").slideToggle(function(){\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n });\n }\n \n });\n}\n\n// Essa função imprime o tipo de retorno da função e cria o menu do tipo 'select' para alteração\nfunction renderFunctionReturn (function_obj, function_element) {\n\n var ret = '<div class=\"ui dropdown function_return\">';\n \n if (function_obj.return_dimensions == 1) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"vector\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] </div>';\n } else if (function_obj.return_dimensions == 2) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"matrix\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] [ ] </div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n for (var tm in Types) {\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions < 1 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n ret += '</div></div>';\n\n ret = $(ret);\n \n function_element.find('.function_return').append(ret);\n}\n\nvar cont = 0;\n\nexport function renderFunction (function_obj) {\n \n var appender = '<div class=\"ui secondary segment function_div list-group-item function_cont_'+cont+'\">';\n\n if (function_obj.function_comment) {\n //appender += renderComment(function_obj.function_comment, sequence, true, -1);\n }\n \n appender += '<span class=\"glyphicon glyphicon-move move_function\" aria-hidden=\"true\"><i class=\"icon sort alternate vertical\"></i></span>';\n\n appender += (function_obj.is_main ? '<div class=\"div_start_minimize_v\"> </div>' : '<button class=\"ui icon button large remove_function_button\"><i class=\"red icon times\"></i></button>')\n + '<button class=\"ui icon button tiny minimize_function_button\"><i class=\"icon window minimize\"></i></button>';\n\n appender += '<div class=\"function_signature_div\">'+LocalizedStrings.getUI(\"function\")+' ';\n\n if (function_obj.is_main) {\n appender += '<div class=\"function_name_div\"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' + LocalizedStrings.getUI('type_void') + ' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class=\"span_name_function\" >'+function_obj.name+'</span> </div> '\n + ' <span class=\"parethesis_function\">( </span> <div class=\"ui large labels parameters_list\">';\n } else {\n appender += '<div class=\"ui function_return\"></div>';\n\n appender += '<div class=\"function_name_div function_name_div_updated\"><span class=\"span_name_function name_function_updated\">'+function_obj.name+'</span> </div> ' \n + ' <span class=\"parethesis_function\"> ( </span> <i class=\"ui icon plus square outline add_parameter_button\"></i> <div class=\"ui large labels parameters_list container_parameters_list\">';\n }\n \n appender += '</div> <span class=\"parethesis_function\"> ) </span> </div>'\n + (function_obj.is_hidden ? ' <div class=\"function_area\" style=\"display: none;\"> ' : ' <div class=\"function_area\"> ');\n\n appender += '<div class=\"ui add_var_context add_var_button_function\" style=\"float: left;\"> <div class=\"ui icon button purple\"> ';\n\n appender += '<i class=\"icons\"><i class=\"icon superscript\" style=\"margin-top: -2px;margin-bottom: 2px;margin-left: 1px;margin-right: 1px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>';\n\n appender += '</div></div>';\n\n appender += '<div class=\"ui top attached segment variables_list_div\"></div>';\n\n appender += '<div class=\"ui bottom attached segment commands_list_div commands_cont_'+cont+'\">'\n + '<div class=\"ui rail\" style=\"width: 35px; margin-left: -36px;\"><div class=\"ui sticky sticky_cont_'+cont+'\" style=\"top: 50px !important;\">';\n\n\n appender += '<div class=\"ui icon button dropdown menu_commands orange\" > '\n + '<i class=\"icons\"><i class=\"icon code\" style=\"margin-top: -1px;margin-bottom: 1px;margin-right: 0px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>'\n + '<div class=\"menu\"> ';\n appender += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.reader+'\"><i class=\"download icon\"></i> ' +LocalizedStrings.getUI('text_read_var')+ '</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.writer+'\"><i class=\"upload icon\"></i> '+LocalizedStrings.getUI('text_write_var')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.comment+'\"><i class=\"quote left icon\"></i> '+LocalizedStrings.getUI('text_comment')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.attribution+'\"><i class=\"arrow left icon\"></i> '+LocalizedStrings.getUI('text_attribution')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.functioncall+'\"><i class=\"hand point right icon\"></i> '+LocalizedStrings.getUI('text_functioncall')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.iftrue+'\" ><i class=\"random icon\"></i> '+LocalizedStrings.getUI('text_iftrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.repeatNtimes+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_repeatNtimes')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.whiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_whiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.dowhiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_dowhiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switch+'\"><i class=\"list icon\"></i> '+LocalizedStrings.getUI('text_switch')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.return+'\"><i class=\"reply icon\"></i> '+LocalizedStrings.getUI('text_btn_return')+'</a>'\n + '</div></div>';\n\n\n appender += '</div></div>'\n +'</div>';\n\n appender += '</div></div>';\n\n appender = $(appender);\n\n $('.all_functions').append(appender);\n\n appender.data('fun', function_obj);\n appender.find('.commands_list_div').data('fun', function_obj);\n\n renderFunctionReturn(function_obj, appender);\n\n addHandlers(function_obj, appender);\n\n // Rendering parameters: \n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n renderParameter(function_obj, function_obj.parameters_list[j], appender);\n }\n\n // Rendering variables:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n VariablesManagement.renderVariable(appender, function_obj.variables_list[j], function_obj);\n }\n // Rendering commands:\n for (var j = 0; j < function_obj.commands.length; j++) {\n CommandsManagement.renderCommand(function_obj.commands[j], $(appender.find('.commands_list_div')[0]), 3, function_obj);\n }\n\n appender.find('.minimize_function_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_hide_function\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('.move_function').popup({\n content : LocalizedStrings.getUI(\"btn_drag_and_drop_function\"),\n delay: {\n show: 1000,\n hide: 0\n }\n });\n\n appender.find('.remove_function_button').popup({\n content : LocalizedStrings.getUI(\"btn_delete_function\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n \n appender.find('.add_var_button_function').popup({\n content : LocalizedStrings.getUI(\"btn_add_var\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"attribution\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_attribution\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"functioncall\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_call_function\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"iftrue\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_if_else\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"comment\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_comments\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"reader\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_read\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"writer\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_write\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"repeatNtimes\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_repeat_n_times\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"whiletrue\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_repeat_whiletrue\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"dowhiletrue\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_repeat_dowhiletrue\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"switch\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_repeat_switch\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n appender.find('a[data-command=\"return\"]').popup({\n content : LocalizedStrings.getUI(\"tooltip_menu_repeat_return\"),\n position: 'right center',\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n var function_index = program.functions.indexOf(function_obj);\n\n Sortable.create(appender.find(\".variables_list_div\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'local_vars_drag_' + function_index,\n onEnd: function (evt) {\n updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n\n addSortableHandler(appender.find(\".commands_list_div\")[0], function_index);\n\n if (!function_obj.is_main) {\n Sortable.create(appender.find(\".container_parameters_list\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'parameters_drag_' + program.functions.indexOf(function_obj),\n onEnd: function (evt) {\n updateSequenceParameters(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n }\n\n if (function_obj.commands.length > 0) {\n var teste = '.ui.sticky.sticky_cont_'+cont;\n $(teste).sticky({\n context: '.ui.bottom.attached.segment.commands_list_div.commands_cont_'+cont,\n scrollContext: '.ivprog_visual_panel',\n observeChanges: true,\n offset: 40,\n onStick: function (evt) {\n $(teste).css('top', '20px', 'important');\n }, \n onBottom: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onUnstick: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onReposition: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onScroll: function (evt) {\n $(teste).css('top', '20px', 'important');\n if (!isVisible($(teste), $(teste).parent())) {\n $(teste).removeClass('fixed');\n }\n },\n onTop: function (evt) {\n $(teste).css('top', '20px', 'important');\n }\n });\n }\n \n cont ++;\n\n appender.find('.add_parameter_button').popup({\n content : LocalizedStrings.getUI(\"text_add_parameters\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n return appender;\n}\n\nfunction isVisible (element, container) {\n\n var elementTop = $(element).offset().top,\n elementHeight = $(element).height(),\n containerTop = $(container).offset().top,\n containerHeight = $(container).height() - 30;\n\n return ((((elementTop - containerTop) + elementHeight) > 0)\n && ((elementTop - containerTop) < containerHeight));\n}\n\n\nwindow.evento_drag;\n\nfunction updateProgramObjDrag () {\n const nodes = Array.prototype.slice.call( $('.all_functions').children() );\n let function_index;\n var start_index;\n let function_obj;\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n const ref = $(this);\n if (ref.hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n start_index = index;\n function_obj = ref;\n }\n });\n\n const path_target = [];\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function () {\n if ($(this).hasClass('command_container')) {\n path_target.push(this);\n }\n });\n if (path_target.length == 0) {\n //console.log('soltou na raiz, na posição: ' + evento_drag.newIndex + ' mas ainda não sei de onde saiu ');\n } else {\n //console.log('soltou dentro de algum bloco, sequência vem logo abaixo (de baixo pra cima): ');\n //console.log(path_target);\n }\n\n var index_each = [];\n var path_relative = [];\n for (var i = path_target.length - 1; i >= 0; i --) {\n if (i == (path_target.length - 1)) { // está na raiz\n var indice_na_raiz = function_obj.find('.command_container').index(path_target[i]);\n } else {\n if ($(path_target[i + 1]).hasClass('iftrue')) {\n if ($(path_target[i]).parent().hasClass('commands_if')) {\n path_relative.push('if');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n } else {\n path_relative.push('else');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n }\n } else if ($(path_target[i + 1]).hasClass('dowhiletrue')) {\n path_relative.push('dowhiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('repeatNtimes')) {\n path_relative.push('repeatNtimes');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('whiletrue')) {\n path_relative.push('whiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('switch')) {\n path_relative.push('switch');\n //index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n }\n }\n }\n // var index_in_block = -1;\n const is_in_else = $(evento_drag.item).parent().hasClass('commands_else');\n\n // index_in_block = $(evento_drag.item).parent().find('.command_container').index(evento_drag.item);\n\n const is_in_case_switch = $(evento_drag.item).parent().hasClass('case_commands_block');\n \n // encontrar o elemento na árvore:\n\n var command_start_point = window.program_obj.functions[function_index].commands[indice_na_raiz];\n var block_to_insert = command_start_point;\n for (var i = 0; i < index_each.length; i++) {\n if (path_relative[i] == \"else\") {\n block_to_insert = block_to_insert.commands_else[index_each[i]];\n } else if (path_relative[i] == \"switch\") {\n\n } else {\n block_to_insert = block_to_insert.commands_block[index_each[i]]\n }\n }\n\n //console.log('command_start_point', command_start_point);\n //console.log('block_to_insert', block_to_insert);\n\n // agora tem que alocar o comando na árvore, mas considerar as quatro situações:\n // (1) se está em um else ou (2) se está em switch ou (3) será um caso padrão ou (4) se será na raiz.\n \n if (path_target.length == 0) { // soltou na raiz:\n window.program_obj.functions[function_index].commands.splice(evento_drag.newIndex - 1, 0, command_in_drag);\n } else if (is_in_else) {\n if (block_to_insert.commands_else) {\n block_to_insert.commands_else.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_else = [];\n block_to_insert.commands_else.push(command_in_drag);\n }\n } else if (is_in_case_switch) {\n\n } else {\n // verificar se tem alguma coisa no bloco:\n if (block_to_insert.commands_block) {\n block_to_insert.commands_block.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_block = [];\n block_to_insert.commands_block.push(command_in_drag);\n }\n }\n\n window.draging = false;\n renderAlgorithm();\n \n\n}\n\nfunction prepareDragHandler (evt) {\n window.draging = true;\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n command_in_drag = $(evt.item).data(\"command\");\n\n //console.log('$(evt.item).parent(): ');\n //console.log($(evt.item).parent());\n\n // descobrir qual das quatro situações:\n if ($(evt.item).parent().hasClass('commands_list_div')) { // está na raiz:\n if (function_obj.commands.indexOf(command_in_drag) > -1) {\n function_obj.commands.splice(function_obj.commands.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('commands_else')) { // está no else:\n if ($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_else.splice($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('case_commands_block')) { // está em um switch:\n\n } else { // caso padrão:\n if ($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_block.splice($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag), 1);\n }\n }\n\n}\n\nvar command_in_drag;\n\nfunction addSortableHandler (element, id_function) {\n \n var n_group = 'commands_drag_' + id_function;\n Sortable.create(element, {\n handle: '.command_drag',\n ghostClass: 'ghost',\n animation: 300,\n group: {name: n_group},\n onEnd: function (evt) {\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n registerUserEvent(function_obj.name, ActionTypes.MOVE_COMMAND, $(evt.item).data('command').type, '/', 'from: ' + evt.oldIndex + ' to: ' + evt.newIndex);\n //updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n var itemEl = evt.item; // dragged HTMLElement\n evt.to; // target list\n evt.from; // previous list\n evt.oldIndex; // element's old index within old parent\n evt.newIndex; // element's new index within new parent\n //console.log('::EVT::');\n //console.log(evt);\n\n window.evento_drag = evt;\n\n try {\n updateProgramObjDrag();\n } catch (e) {\n console.error(e);\n window.draging = false;\n }\n },\n onStart: function (evt) {\n //console.log(\"START::EVT::\");\n //console.log(evt);\n //console.log(\"\\n\\ncommand_in_drag\");\n try {\n prepareDragHandler(evt);\n } catch (e) {\n window.draging = false;\n }\n }\n });\n element = $(element);\n element.find(\".iftrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n addSortableHandler($(this).find(\".block_commands\")[1], id_function);\n });\n\n element.find(\".repeatNtimes\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".dowhiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".whiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".switch\").each(function( index ) {\n\n $(this).find(\".case_div\").each(function( index ) {\n addSortableHandler($(this).find(\".case_commands_block\")[0], id_function);\n });\n\n }); \n}\n\nexport function initVisualUI () {\n // MUST USE CONST, LET, OR VAR !!!!!!\n // const mainDiv = $('#visual-main-div');\n // fill mainDiv with functions and globals...\n // renderAlgorithm()...\n domConsole = new DOMConsole(\"ivprog-term-div\");\n domConsole.hide();\n $(document.getElementById(\"ivprog-term-div\")).draggable()\n $('.add_function_button').on('click', () => {\n addFunctionHandler();\n }).popup({\n content : LocalizedStrings.getUI(\"text_add_function\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n $('.add_global_button').on('click', () => {\n window.insertContext = true;\n GlobalsManagement.addGlobal(program, true);\n });\n\n $('#run_button').on('click', function () {\n showStopButton();\n runCode();\n });\n\n $('#download_file_button').on('click', function () {\n downloadFile();\n });\n\n $('#upload_file_button').on('click', function () {\n $('#ivph_file').click().off('change').change(uploadFile);\n });\n\n $('#stop_button').on('click', function () {\n showRunButton();\n stopExecution();\n });\n\n $('.visual_coding_button').on('click', () => {\n toggleVisualCoding();\n });\n\n $('.textual_coding_button').on('click', () => {\n toggleTextualCoding();\n });\n\n $('.assessment').on('click', () => {\n is_iassign = true;\n runCodeAssessment();\n });\n\n $('.div_toggle_console').on('click', () => {\n toggleConsole();\n });\n $('.expand_button').on('click', () => {\n full_screen();\n });\n $('.help_button').on('click', () => {\n window.open('https://www.usp.br/line/ivprog/', '_blank');\n });\n $('.main_title h2').prop('title', LocalizedStrings.getUI('text_ivprog_description'));\n\n var time_show = 750;\n $('.visual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_visual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.textual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_textual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.upload_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_upload\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.download_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_download\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.undo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_undo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.redo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_redo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.run_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_run\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.assessment_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_evaluate\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.help_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_help\") + ' - ' + LocalizedStrings.getUI(\"text_ivprog_version\") + ' ' + ivprog_version,\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.add_global_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_add_global\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.div_toggle_console').popup({\n content : LocalizedStrings.getUI(\"tooltip_console\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n\n Sortable.create(listWithHandle, {\n handle: '.glyphicon-move',\n animation: 100,\n ghostClass: 'ghost',\n group: 'functions_divs_drag',\n onEnd: function (evt) {\n updateSequenceFunction(evt.oldIndex, evt.newIndex);\n }\n });\n\n var listGlobalsHandle = document.getElementById(\"listGlobalsHandle\");\n Sortable.create(listGlobalsHandle, {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'globals_divs_drag',\n onEnd: function (evt) {\n updateSequenceGlobals(evt.oldIndex, evt.newIndex);\n }\n });\n\n}\n\nexport function setTestCases (testCases) {\n _testCases = testCases;\n}\n\nexport function getTestCases () {\n // Deep clone of test cases to avoid unauthorized modification\n // TODO: It may be not possible to use this once custom test are fully implemented \n return JSON.parse(JSON.stringify(_testCases));\n}\n\nvar is_iassign = false;\n\nfunction updateSequenceParameters (oldIndex, newIndex, function_obj) {\n function_obj.parameters_list.splice(newIndex, 0, function_obj.parameters_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceLocals (oldIndex, newIndex, function_obj) {\n function_obj.variables_list.splice(newIndex, 0, function_obj.variables_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceGlobals (oldIndex, newIndex) {\n program_obj.globals.splice(newIndex, 0, program_obj.globals.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceFunction (oldIndex, newIndex) {\n program_obj.functions.splice(newIndex, 0, program_obj.functions.splice(oldIndex, 1)[0]);\n}\n\nfunction runCodeAssessment () {\n if (isRunning) {\n // cannot run assessment or it's already running\n return -1;\n }\n \n let strCode = null;\n\n is_iassign = false;\n\n window.studentGrade = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\n if (strCode == null) {\n // No code, so no assessment\n return -1;\n }\n\n toggleConsole(true);\n\n try {\n const data = SemanticAnalyser.analyseFromSource(strCode);\n isRunning = true;\n const runner = new IVProgAssessment(data, _testCases, domConsole);\n runner.runTest().then(grade => {\n if (!is_iassign) {\n parent.getEvaluationCallback(grade);\n } else {\n is_iassign = false;\n }\n isRunning = false;\n }).catch( err => {\n console.log(err);\n isRunning = false;\n });\n } catch (error) {\n isRunning = false;\n domConsole.err(error.message);\n console.log(error);\n if (!is_iassign) {\n parent.getEvaluationCallback(0);\n } else {\n is_iassign = false;\n }\n }\n return 0;\n}\n\nfunction runCode () {\n if (isRunning) {\n return;\n }\n let strCode = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\n if (strCode == null) {\n return;\n }\n \n toggleConsole(true);\n\n // if(domConsole == null)\n // domConsole = new DOMConsole(\"#ivprog-term\");\n //$(\"#ivprog-term\").slideDown(500);\n try {\n const data = SemanticAnalyser.analyseFromSource(strCode);\n proc = new IVProgProcessor(data);\n proc.registerInput(domConsole);\n proc.registerOutput(domConsole);\n $(\"#ivprog-term\").addClass('ivprog-term-active');\n isRunning = true;\n proc.interpretAST().then( _ => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(proc.mode === Modes.ABORT) {\n domConsole.info(LocalizedStrings.getMessage(\"aborted_execution\")); \n } else {\n domConsole.info(LocalizedStrings.getMessage(\"success_execution\"));\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }).catch(err => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(err instanceof Error) {\n domConsole.err(err.message);\n } else {\n domConsole.err(err);\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }) \n } catch (error) {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n isRunning = false;\n proc = null;\n showRunButton();\n domConsole.err(error.message);\n console.log(error);\n return true;\n }\n return false;\n },100);\n }\n \n}\n\nfunction toggleConsole (is_running) {\n\n if (is_running) {\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n if(domConsole != null)\n domConsole.focus();\n //$('#ivprog-term').css('margin-top', '-170px');\n return;\n } else {\n domConsole.hide();\n return;\n }\n\n if ($('#ivprog-term').css('min-height') == '160px') {\n // esconder\n $('.ivprog-term-div').css('display', 'none');\n $('#ivprog-term').css('min-height', '0');\n //$('#ivprog-term').css('margin-top', '-30px');\n //$('#ivprog-term').css('padding', '5px');\n } else {\n // mostrar\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n //$('#ivprog-term').css('margin-top', '-170px');\n }\n}\n\n// function waitToCloseConsole () {\n// domConsole.info(\"Aperte qualquer tecla para fechar...\");\n// const p = new Promise((resolve, _) => {\n// domConsole.requestInput(resolve, true);\n// });\n// p.then( _ => {\n// domConsole.dispose();\n// domConsole = null;\n// $(\"#ivprog-term\").hide();\n// })\n// }\n\nfunction toggleTextualCoding () {\n let code = null;\n if (settingsProgrammingTypes != \"textual\") {\n code = CodeManagement.generate();\n if (code == null) {\n return;\n }\n }\n\n\n $('.ivprog_visual_panel').css('display', 'none');\n $('.ivprog_textual_panel').css('display', 'block');\n $('.ivprog_textual_panel').removeClass('loading');\n TextEditor.updateEditor();\n if (code != null)\n TextEditor.setCode(code);\n //$('.ivprog_textual_code').text(code);\n\n $('.visual_coding_button').removeClass('active');\n $('.textual_coding_button').addClass('active');\n}\n\nfunction toggleVisualCoding () {\n $('.ivprog_textual_panel').addClass('loading');\n $('.ivprog_textual_panel').css('display', 'none');\n $('.ivprog_visual_panel').css('display', 'block');\n\n $('.textual_coding_button').removeClass('active');\n $('.visual_coding_button').addClass('active');\n}\n\nfunction removeParameter (function_obj, parameter_obj, parameter_container) {\n registerUserEvent(parameter_obj.name, ActionTypes.REMOVE_FUNCTION_PARAM, function_obj.name);\n var index = function_obj.parameters_list.indexOf(parameter_obj);\n if (index > -1) {\n window.insertContext = true;\n function_obj.parameters_list.splice(index, 1);\n }\n $(parameter_container).fadeOut();\n}\n\nfunction updateParameterType (parameter_obj, new_type, function_name, new_dimensions = 0) {\n registerUserEvent(parameter_obj.name, ActionTypes.CHANGE_PARAM_TYPE, function_name, new_type, new_dimensions);\n parameter_obj.type = new_type;\n parameter_obj.dimensions = new_dimensions;\n\n if (new_dimensions > 0) {\n parameter_obj.rows = new_dimensions;\n parameter_obj.columns = 2;\n }\n\n}\n\nfunction renderParameter (function_obj, parameter_obj, function_container) {\n let ret = \"\";\n\n ret += '<div class=\"ui label function_name_parameter pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n if (parameter_obj.reference)\n ret += '<input type=\"checkbox\" checked class=\"by_reference\">';\n else \n ret += '<input type=\"checkbox\" class=\"by_copy\">';\n\n ret += '<div class=\"ui dropdown parameter_type\">';\n\n if (parameter_obj.dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${parameter_obj.type.toLowerCase()}`);\n if (parameter_obj.dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(`type_${parameter_obj.type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n \n for (const tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n ret += '</div></div>';\n\n ret += '<div class=\"parameter_div_edit\"><span class=\"span_name_parameter label_enable_name_parameter\">'+parameter_obj.name+'</span></div> ';\n\n ret += ' <i class=\"yellow inverted icon times remove_parameter\"></i></div>';\n\n ret = $(ret);\n \n function_container.find('.container_parameters_list').append(ret);\n\n ret.find('.remove_parameter').on('click', function(e){\n removeParameter(function_obj, parameter_obj, ret);\n });\n \n ret.find('.ui.dropdown.parameter_type').dropdown({\n onChange: function(_, __, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n } else {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name);\n }\n },\n selectOnKeydown: false\n });\n\n ret.find('.parameter_div_edit').on('click', function(e){\n registerUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_PARAM_NAME, parameter_obj.name);\n enableNameParameterUpdate(parameter_obj, ret, function_obj);\n });\n\n ret.find('input:checkbox').change(function() {\n parameter_obj.reference = this.checked\n AlgorithmManagement.renderAlgorithm();\n });\n\n ret.find('.by_reference').popup({\n content : LocalizedStrings.getUI(\"text_parameter_reference\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n ret.find('.by_copy').popup({\n content : LocalizedStrings.getUI(\"text_parameter_copy\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n return ret;\n}\n\nfunction updateParameterName (parameter_var, new_name, parameter_obj_dom, function_obj) {\n \n if (parameter_var.name == new_name) {\n return;\n }\n\n if (isValidIdentifier(new_name)) {\n if (variableNameAlreadyExists(new_name, function_obj)) {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getError('inform_valid_param_duplicated', [new_name, function_obj.name]));\n } else {\n registerUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_PARAM, parameter_var.name, new_name);\n parameter_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getError('inform_valid_identifier'));\n }\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction updateFunctionName (function_var, new_name, function_obj_dom) {\n \n if (function_var.name == new_name) {\n return;\n }\n \n if (isValidIdentifier(new_name)) {\n if (functionNameAlreadyExists(new_name)) {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getError('inform_valid_function_duplicated', [new_name]));\n } else {\n registerUserEvent(function_var.name, ActionTypes.RENAME_FUNCTION, new_name);\n function_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getError('inform_valid_identifier'));\n }\n}\n\nfunction functionNameAlreadyExists (function_name) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_name) {\n return true;\n }\n }\n return false;\n}\n\nvar opened_name_parameter = false;\nvar opened_input_parameter = null;\nfunction enableNameParameterUpdate (parameter_obj, parent_node, function_obj) {\n if (opened_name_parameter) {\n opened_input_parameter.focus();\n return;\n }\n opened_name_parameter = true;\n parent_node = $(parent_node);\n\n var input_field;\n\n parent_node.find('.span_name_parameter').text('');\n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+parameter_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_parameter'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input_parameter = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n\n }\n if(code == 27) {\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n }\n });\n input_field.select();\n}\n\nvar opened_name_function = false;\nvar opened_input = null;\nvar previousPadding = null;\nfunction enableNameFunctionUpdate (function_obj, parent_node) {\n if (opened_name_function) {\n opened_input.focus();\n return;\n }\n parent_node = $(parent_node);\n parent_node.find('.span_name_function').text('');\n var input_field;\n if (!previousPadding) {\n previousPadding = parent_node.find('.span_name_function').css('padding-left');\n }\n parent_node.find('.span_name_function').css('padding-left', '0');\n parent_node.find('.span_name_function').css('padding-right', '0');\n \n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+function_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_function'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n if(code == 27) {\n\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n });\n input_field.select();\n \n}\n\nexport function addFunctionChangeListener (callback) {\n functionsChangeListeners.push(callback);\n return functionsChangeListeners.length - 1;\n}\n\nexport function addGlobalChangeListener (callback) {\n globalChangeListeners.push(callback);\n return globalChangeListeners.length - 1;\n}\n\nexport function removeGlobalListener (index) {\n globalChangeListeners.splice(index, 1);\n}\n\nexport function removeFunctionListener (index) {\n functionsChangeListeners.splice(index);\n}\n\nfunction scheduleCall (callback, time) {\n const scheduled_call = () => {\n const id = setInterval(() => {\n if(callback()) {\n clearInterval(id);\n }\n }, time)\n }\n scheduled_call();\n}\n\nfunction showRunButton () {\n document.getElementById('run_button').style.display = 'inline';\n document.getElementById('stop_button').style.display = 'none';\n}\n\nfunction showStopButton () {\n document.getElementById('run_button').style.display = 'none';\n document.getElementById('stop_button').style.display = 'inline';\n}\n\nfunction stopExecution () {\n domConsole.clearPendingWrites();\n domConsole.cancelPendingInputRequests();\n if(!isRunning) {\n return;\n }\n proc.mode = Modes.ABORT;\n}\n\nfunction downloadFile() {\n \n var contentToSend = '{}\\n::algorithm::';\n\n contentToSend = generator();\n\n var date = new Date(); \n var temp = date.toISOString().split('T')[0] + \"_\" + date.toTimeString().split(' ')[0].replaceAll(':', '-');\n var blob = new Blob([contentToSend],\n { type: \"text/plain;charset=utf-8\" });\n \n saveAs(blob, \"ivprog-exported_\" + temp + \".ivph\");\n}\n\nfunction uploadFile (evt) {\n var oFReader = new FileReader();\n oFReader.readAsText(document.getElementById(\"ivph_file\").files[0]);\n oFReader.onload = function (oFREvent) {\n var txt = oFREvent.target.result;\n\n try {\n\n if (txt.indexOf(\"::algorithm::\") >= 0) {\n prepareActivityToStudent(txt, true);\n }\n else {\n ivprogCore.setPreviousAlgorithm(txt);\n window.renderAlgorithm();\n }\n\n }\n catch (e) {\n console.log(e)\n }\n };\n }","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\nimport { isValidIdentifier } from \"./../util/utils\";\nvar counter_new_globals = 0;\n\nexport function addGlobal (program, is_from_click = false) {\n\n\t// Verify if the next global name is in use:\n\tif (program.globals) {\n\t\tvar in_use = false;\n\t\tdo {\n\t\t\tin_use = false;\n\t\t\t\n\t\t\tvar temp_name = LocalizedStrings.getUI('new_global') + '_' + counter_new_globals;\n\n\t\t\tprogram.globals.forEach(function(el) {\n\t\t\t\tif (temp_name == el.name) {\n\t\t\t\t\tin_use = true;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif (in_use)\n\t\t\t\tcounter_new_globals++;\n\n\t\t} while (in_use);\n\t}\n\n\tvar new_global = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_global') + '_' + counter_new_globals, 0);\n\tcounter_new_globals ++;\n\n\tprogram.addGlobal(new_global);\n\n\tregisterUserEvent(new_global.name, ActionTypes.INSERT_GLOBAL_VAR);\n\tvar newe = renderGlobal(new_global);\n\n\tif (is_from_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n\n}\n\nfunction toggleConstant (global_var) {\n\tglobal_var.is_constant = !global_var.is_constant;\n\tregisterUserEvent(global_var.name, ActionTypes.SET_GLOBAL_CONST);\n}\n\nfunction updateName (global_var, new_name, global_obj_dom) {\n\n\tif (global_var.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (globalNameAlreadyExists(new_name)) {\n\t\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_global_duplicated'));\n\t\t} else {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.RENAME_GLOBAL_VAR, new_name);\n\t\t\tglobal_var.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getError('inform_valid_identifier'));\n\t}\n}\n\nfunction globalNameAlreadyExists (global_name) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == global_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction updateType (global_var, new_type, new_dimensions = 0) {\n\tglobal_var.type = new_type;\n\tglobal_var.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tglobal_var.rows = new_dimensions;\n\t\tglobal_var.columns = 2;\n\t}\n\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_VAR_TYPE, new_type,\n\t\tnew_dimensions, global_var.rows, global_var.columns);\n\tupdateInitialValues(global_var);\n}\n\nfunction removeGlobal (global_var, global_container) {\n\tvar index = window.program_obj.globals.indexOf(global_var);\n\tif (index > -1) {\n\t\twindow.insertContext = true;\n\t window.program_obj.globals.splice(index, 1);\n\t}\n\tregisterUserEvent(global_var.name, ActionTypes.REMOVE_GLOBAL_VAR);\n\tglobal_container.children().off();\n\tglobal_container.off();\n\tglobal_container.fadeOut();\n}\n\nfunction updateInitialValues (global_var) {\n\tif (global_var.type == Types.INTEGER) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0, 0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0, 0], [0, 0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.REAL) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 0.0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0.0, 0.0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0.0, 0.0], [0.0, 0.0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = LocalizedStrings.getUI('textvar_default_value');\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = true;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [true, true];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[true, true], [true, true]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.CHAR) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 'A';\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = ['A', 'A'];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [['A', 'A'], ['A', 'A']];\n\t\t}\n\t}\n\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.name,\n\t\tglobal_var.value);\n}\n\nfunction alternateBooleanGlobalValue (global_var, value_container) {\n\tglobal_var.value = !global_var.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value}`));\n}\n\nfunction alternateBooleanGlobalVectorValue (global_var, index, value_container) {\n\tglobal_var.value[index] = !global_var.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value[index]}`));\n}\n\nfunction removeGlobalColumnVector (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addGlobalColumnVector (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tglobal_var.value.push(0);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tglobal_var.value.push(0.0);\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tglobal_var.value.push(true);\n\t}\n\n\tif (global_var.type == Types.CHAR) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('charvar_default_value'));\n\t}\n}\n\nfunction removeColumnGlobalMatrix (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\n\tfor (var i = 0; i < global_var.rows; i++) {\n\t\tglobal_var.value[i].splice(global_var.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnGlobalMatrix (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(0);\n\t\t}\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(0.0);\n\t\t}\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(true);\n\t\t}\n\t}\n\tif (global_var.type == Types.CHAR) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('charvar_default_value'));\n\t\t}\n\t}\n}\n\nfunction removeLineGlobalMatrix (global_var) {\n\tif (global_var.rows == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.rows --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addLineGlobalMatrix (global_var) {\n\tglobal_var.rows ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(0.0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.CHAR) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('charvar_default_value'));\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n}\n\nfunction alternateBooleanGlobalMatrixValue (global_var, row, index, value_container) {\n\tglobal_var.value[row][index] = !global_var.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value[row][index]}`));\n}\n\nfunction renderValues (global_var, global_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (global_var.dimensions == 0) {\n\t\tif (global_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+parseFloat(global_var.value).toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(`logic_value_${global_var.value}`)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (global_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+parseFloat(global_var.value[k]).toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(`logic_value_${global_var.value[k]}`)+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (global_var.dimensions == 2) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+parseFloat(global_var.value[l][k]).toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tif (global_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(`logic_value_${global_var.value[l][k]}`)+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+global_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\tglobal_container.find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\tret.find('.span_value_variable').data('associatedOject', global_var);\n\n\tret.find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanGlobalValue(global_var, this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalValueUpdate(global_var, this.parentNode);\n\t});\n\n\tret.find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalVectorValue(global_var, $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".vector_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalVectorValueUpdate(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddGlobalColumnVector(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalMatrixValue(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalMatrixValueUpdate(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tglobal_container.find( \".div_valor_var\" ).append(ret);\n\n\n\tupdateColumnsAndRowsText(global_container, global_var);\n\n}\n\nfunction addHandlers (global_container) {\n\tvar global_var = global_container.data('associatedOject'); \n\t// Manage constant option:\n\tglobal_container.find( \".alternate_constant\" ).on('click', function(e){\n\t\ttoggleConstant(global_var);\n\n\t\t$( this ).removeClass( \"on off\" );\n\t\tif (global_var.is_constant) {\n\t\t\t$( this ).addClass( \"on\" );\n\t\t} else {\n\t\t\t$( this ).addClass( \"off\" );\n\t\t}\n\t});\n\n\t// Manage global name: \n\tglobal_container.find( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_NAME);\n\t\tenableNameUpdate(global_container);\n\t});\n\n\t// Menu to change type:\n\tglobal_container.find('.ui.dropdown.global_type').dropdown({\n\t onChange: function(_, __, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(global_var, global_container);\n\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove global: \n\tglobal_container.find( \".remove_global\" ).on('click', function(e){\n\t\tremoveGlobal(global_var, global_container);\n\t});\n\n\tglobal_container.find( \".ellipsis\" ).popup({\n content : LocalizedStrings.getUI(\"tooltip_move_var\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n\tglobal_container.find( \".remove_global\" ).popup({\n content : LocalizedStrings.getUI(\"tooltip_remove_var\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n}\n\nfunction updateColumnsAndRowsText (global_container, global_var) {\n\tvar prev = global_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] [ ' + global_var.rows + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n}\n\nexport function renderGlobal (global_var) {\n\n\tvar element = '<div class=\"ui label global_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i><div class=\"global_const\">const: ';\n\n\telement += '<i class=\"ui icon toggle '+(global_var.is_constant?\"on\":\"off\")+' alternate_constant\"></i></div>';\n \t\n \telement += '<div class=\"ui dropdown global_type\">';\n\n \tif (global_var.dimensions == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] ';\n \t\telement += '</div>';\n \t} else if (global_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] [ <span class=\"dimensions_1\"></span> ] ';\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${global_var.type.toLowerCase()}`) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n element += '</div></div> <div class=\"editing_name_var\"> <span class=\"span_name_variable enable_edit_name_parameter\">'+global_var.name+'</span> </div> <span class=\"character_equals\"> <&#8212; </span> ';\n\n\telement += '<div class=\"ui div_valor_var\">'+global_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_global\"></i></div>';\n\n\tvar complete_element = $(element);\n\n\tcomplete_element.data('associatedOject', global_var);\n\n\t$('.list_globals').append(complete_element);\n\n\taddHandlers(complete_element);\n\n\trenderValues(global_var, complete_element);\n\n\tif (global_var.dimensions == 1) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t}\n\tif (global_var.dimensions == 2) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t\tcomplete_element.find('.dimensions_1').text(global_var.rows);\n\t}\n\n\treturn complete_element;\n}\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableGlobalMatrixValueUpdate (global_var, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ parseFloat(global_var.value[row][index]).toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[row][index]).toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[row][index]).toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[row][index]).toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[row][index]).toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableGlobalValueUpdate (global_var, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ parseFloat(global_var.value).toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t\tvar inputWidth = input_field.textWidth()+10;\n\t\topened_input_value_global_ar = input_field;\n\t\tinput_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t\tinput_field.css({\n\t\t\t\twidth: inputWidth\n\t\t})\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value).toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t} else if (global_var.type == Types.CHAR) {\n\t\t\t\t\tglobal_var.value = input_field.val().charAt(0);\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value).toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = true;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value).toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else if (global_var.type == Types.CHAR) {\n\t\t\t\t\t\tglobal_var.value = input_field.val().charAt(0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value).toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value).toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (global_container) {\n\n\tvar global_var = global_container.data('associatedOject'); \n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tglobal_container.find('.span_name_variable').text('');\n\tvar input_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+global_var.name+\"' />\" );\n\tinput_name.insertBefore(global_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t opened_input_global.focus();\n\n\t opened_input_global.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t} else {\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim()) {\n\t\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t} else {\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableGlobalVectorValueUpdate (global_var, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ parseFloat(global_var.value[index]).toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[index]).toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[index]).toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[index]).toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[index]).toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(parseFloat(global_var.value[index]).toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};","import { Types } from \"./types\";\nimport WatchJS from \"melanke-watchjs\";\nimport * as AlgorithmManagement from \"./algorithm\";\n\nexport const COMMAND_TYPES = Object.freeze({\n function: \"function\",\n comment: \"comment\",\n reader: \"reader\",\n writer: \"writer\",\n attribution: \"attribution\",\n iftrue: \"iftrue\",\n repeatNtimes: \"repeatNtimes\",\n whiletrue: \"whiletrue\",\n dowhiletrue: \"dowhiletrue\",\n switch: \"switch\",\n switchcase: \"switchcase\",\n functioncall: \"functioncall\",\n break: \"break\",\n return: \"return\",\n});\n\nexport const ARITHMETIC_TYPES = Object.freeze({\n plus: \"plus\",\n minus: \"minus\",\n multiplication: \"multiplication\",\n division: \"division\",\n module: \"module\",\n none: \"none\",\n});\n\nexport const EXPRESSION_ELEMENTS = Object.freeze({\n exp_op_exp: \"exp_op_exp\",\n op_exp: \"op_exp\",\n par_exp_par: \"par_exp_par\",\n start_point: \"start_point\",\n});\n\nexport const EXPRESSION_TYPES = Object.freeze({\n exp_conditional: \"exp_conditional\",\n exp_logic: \"exp_logic\",\n exp_arithmetic: \"exp_arithmetic\",\n write_sep: \"write_separator\",\n});\n\nexport const ARITHMETIC_COMPARISON = Object.freeze({\n greater_than: \"greater_than\",\n less_than: \"less_than\",\n equals_to: \"equals_to\",\n not_equals_to: \"not_equals_to\",\n greater_than_or_equals_to: \"greater_than_or_equals_to\",\n less_than_or_equals_to: \"less_than_or_equals_to\",\n});\n\nexport const LOGIC_COMPARISON = Object.freeze({\n equals_to: \"equals_to\",\n not_equals_to: \"not_equals_to\",\n and: \"and\",\n or: \"or\",\n not: \"not\",\n});\n\nexport const SYSTEM_FUNCTIONS_CATEGORIES = Object.freeze({\n math: \"$mathLib\",\n text: \"$strLib\",\n arrangement: \"$arrayLib\",\n conversion: \"$langLib\",\n});\n\nexport class Variable {\n constructor (\n type,\n name,\n value,\n dimensions = 0,\n is_constant = false,\n rows = 0,\n columns = 0,\n reference = false\n ) {\n this.type = type;\n this.name = name;\n this.value = value;\n this.dimensions = dimensions;\n this.is_constant = is_constant;\n this.rows = rows;\n this.columns = columns;\n this.reference = reference;\n }\n}\n\nexport class Function {\n constructor (\n name,\n return_type = Types.VOID,\n return_dimensions = 0,\n parameters_list = [],\n is_main = false,\n is_hidden = false,\n variables_list = [],\n function_comment = null,\n commands = []\n ) {\n this.type = COMMAND_TYPES.function;\n this.name = name;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.is_main = is_main;\n this.is_hidden = is_hidden;\n this.variables_list = variables_list;\n this.function_comment = function_comment;\n this.commands = commands;\n }\n}\n\nexport class SystemFunction {\n constructor (\n identifier,\n return_type,\n return_dimensions,\n parameters_list,\n function_comment = null,\n category\n ) {\n this.type = COMMAND_TYPES.function;\n this.identifier = identifier;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.function_comment = function_comment;\n this.category = category;\n }\n}\n\nexport class Comment {\n constructor (comment_text) {\n this.type = COMMAND_TYPES.comment;\n this.comment_text = comment_text;\n }\n}\n\nexport class Break {\n constructor () {\n this.type = COMMAND_TYPES.break;\n }\n}\n\nexport class Reader {\n constructor (variable_value_menu = new VariableValueMenu()) {\n this.type = COMMAND_TYPES.reader;\n this.variable_value_menu = variable_value_menu;\n }\n}\n\nexport class Writer {\n constructor (content, newline = true) {\n this.type = COMMAND_TYPES.writer;\n this.content = content;\n this.newline = newline;\n }\n}\n\nexport class Attribution {\n constructor (variable, expression = []) {\n this.type = COMMAND_TYPES.attribution;\n this.variable = variable;\n this.expression = expression;\n }\n}\n\nexport class ExpressionOperator {\n constructor (type_op, item) {\n this.type_op = type_op; // Logic, Arithmetic OR Relational\n this.item = item;\n }\n}\n\nexport class ExpressionElement {\n constructor (type_exp, itens = []) {\n this.type_exp = type_exp;\n this.itens = itens;\n }\n}\n\nexport class ConditionalExpression {\n constructor (expression) {\n this.type = EXPRESSION_TYPES.exp_conditional;\n this.expression = expression;\n }\n}\n\nexport class LogicExpression {\n constructor (has_neg, first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_logic;\n this.has_neg = has_neg;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class ArithmeticExpression {\n constructor (first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_arithmetic;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class IfTrue {\n constructor (expression, commands_block, commands_else) {\n this.type = COMMAND_TYPES.iftrue;\n this.expression = expression;\n this.commands_block = commands_block;\n this.commands_else = commands_else;\n }\n}\n\nexport class RepeatNTimes {\n constructor (\n var_attribution,\n var_incrementation,\n expression1,\n expression2,\n expression3,\n commands_block\n ) {\n this.type = COMMAND_TYPES.repeatNtimes;\n this.var_attribution = var_attribution;\n this.var_incrementation = var_incrementation;\n this.expression1 = expression1;\n this.expression2 = expression2;\n this.expression3 = expression3;\n this.commands_block = commands_block;\n }\n}\n\nexport class WhileTrue {\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.whiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class DoWhileTrue {\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.dowhiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class Switch {\n constructor (variable, cases = []) {\n this.type = COMMAND_TYPES.switch;\n this.variable = variable;\n this.cases = cases;\n }\n}\n\nexport class Return {\n constructor (variable_value_menu) {\n this.type = COMMAND_TYPES.return;\n this.variable_value_menu = variable_value_menu;\n }\n}\n\nexport class SwitchCase {\n constructor (variable_value_menu, commands_block = []) {\n this.type = COMMAND_TYPES.switchcase;\n this.variable_value_menu = variable_value_menu;\n this.commands_block = commands_block;\n }\n}\n\nexport class FunctionCall {\n constructor (function_called, parameters_list) {\n this.type = COMMAND_TYPES.functioncall;\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class VariableValueMenu {\n constructor (\n variable_and_value = 7,\n content = null,\n row = null,\n column = null,\n include_constant = true,\n dimensions = 0\n ) {\n this.type = \"var_value\";\n this.variable_and_value = variable_and_value;\n this.content = content;\n this.row = row;\n this.column = column;\n this.include_constant = include_constant;\n this.dimensions = dimensions;\n }\n}\n\nexport class FunctionCallMenu {\n constructor (function_called = null, parameters_list = []) {\n this.type = \"function_call\";\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class Program {\n constructor () {\n this.functions = [];\n this.globals = [];\n }\n\n addFunction (function_to_add) {\n WatchJS.watch(\n function_to_add.parameters_list,\n function () {\n if (window.insertContext) {\n setTimeout(function () {\n AlgorithmManagement.renderAlgorithm();\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n },\n 1\n );\n\n WatchJS.watch(\n function_to_add.variables_list,\n function () {\n if (window.insertContext) {\n setTimeout(function () {\n AlgorithmManagement.renderAlgorithm();\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n },\n 1\n );\n\n this.functions.push(function_to_add);\n }\n\n addVariable (function_to_receive, variable) {\n if (this.functions[function_to_receive].variable === null) {\n this.functions[function_to_receive].variables_list = [];\n }\n this.functions[function_to_receive].variables_list.push(variable);\n }\n\n addGlobal (variable) {\n this.globals.push(variable);\n }\n}\n","import * as CodeMirror from \"codemirror\";\nimport \"codemirror/addon/edit/closebrackets\";\nimport \"codemirror/addon/edit/matchbrackets\";\n// import \"codemirror/addon/hint/show-hint\";\n// import \"codemirror/addon/hint/anyword-hint\";\nimport \"codemirror/addon/selection/active-line\";\nimport { CodeEditorMode } from \"./../util/editorMode2\"\nCodeEditorMode(CodeMirror);\n\nlet codeEditor = null;\n\nexport function initTextEditor (element) {\n let id = element;\n if (element[0] == '#') {\n id = element.substring(1);\n }\n codeEditor = CodeMirror.fromTextArea(document.getElementById(id), {\n theme: \"ttcn\",\n value: \"\",\n mode: \"text/x-ivprog\",\n indentUnit: 4,\n lineNumbers: true,\n matchBrackets: true,\n autoCloseBrackets: true,\n fixedGutter: true,\n styleActiveLine: true,\n readOnly: true\n });\n}\n\nexport function disable (flag) {\n codeEditor.setOption(\"readOnly\", flag);\n updateEditor();\n}\n\nexport function updateEditor () {\n codeEditor.refresh();\n}\n\nexport function setCode (code) {\n codeEditor.setValue(code);\n}\n\nexport function getCode () {\n return codeEditor.getValue();\n}\n","export const Types = Object.freeze({\n INTEGER: \"integer\",\n REAL: \"real\",\n TEXT: \"text\",\n CHAR: 'char',\n BOOLEAN: \"boolean\",\n VOID: \"void\"\n});","\nexport function renderErrorMessage (dom_obj_target, message_text) {\n\n\tdom_obj_target.popup({\n\t\thtml : '<i class=\"ui icon inverted exclamation triangle yellow\"></i>' + message_text,\n\t\ttransition : \"fade up\",\n\t\ton : 'click',\n \t\tclosable : true,\n \t\tmovePopup : true,\n \t\tboundary : window,\n \t\tpreserve : false,\n \t\ttarget : false,\n\t\tclassName : {\n\t\t popup : 'ui popup invalid-identifier'\n\t\t},\n\t\tonHidden : function($module) {\n\t\t\tdom_obj_target.popup('destroy');\n\t\t}\n\n\t}).popup('toggle');\n\n}","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\nimport { isValidIdentifier } from \"./../util/utils\";\n\nvar counter_new_variables = 0;\t\n\nexport function addVariable (function_obj, function_container, is_in_click = false) {\n\n\t// Verify if the next variable name is in use:\n\tif (function_obj.variables_list) {\n\t\tvar in_use = false;\n\t\tdo {\n\t\t\tin_use = false;\n\t\t\t\n\t\t\tvar temp_name = LocalizedStrings.getUI('new_variable') + '_' + counter_new_variables;\n\n\t\t\tfunction_obj.variables_list.forEach(function(el) {\n\t\t\t\tif (temp_name == el.name) {\n\t\t\t\t\tin_use = true;\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif (in_use)\n\t\t\t\tcounter_new_variables++;\n\n\t\t} while (in_use);\n\t}\n\n\tvar new_var = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_variable') + '_' + counter_new_variables, 0);\n\tif (function_obj.variables_list == null) {\n\t\tfunction_obj.variables_list = [];\n\t}\n\tfunction_obj.variables_list.push(new_var);\n\n\tcounter_new_variables ++;\n\n\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_VAR, new_var.name, Types.INTEGER, 0);\n\tvar newe = renderVariable(function_container, new_var, function_obj);\n\n\tif (is_in_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n}\n\nfunction updateName (variable_obj, new_name, variable_obj_dom, function_obj) {\n\n\tif (variable_obj.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (variableNameAlreadyExists(new_name, function_obj)) {\n\t\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getError('inform_valid_variable_duplicated', [new_name, function_obj.name]));\n\t\t} else {\n\t\t\tregisterUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_VAR, variable_obj.name, new_name);\n\t\t\tvariable_obj.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getError('inform_valid_identifier'));\n\t}\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction removeVariable (variable_obj, variable_container, function_name) {\n\tvar function_associated = variable_container.data('associatedFunction');\n\tregisterUserEvent(function_name, ActionTypes.REMOVE_FUNCTION_VAR, variable_obj.name);\n\n\tvar index = function_associated.variables_list.indexOf(variable_obj);\n\tif (index > -1) {\n\t window.insertContext = true;\n\t delete function_associated.variables_list[index];\n\t function_associated.variables_list.splice(index, 1);\n\t}\n\tvariable_container.children().off();\n\tvariable_container.off();\n\tvariable_container.fadeOut();\n}\n\nfunction updateType (variable_obj, new_type, function_name, new_dimensions = 0) {\n\tvariable_obj.type = new_type;\t\t\n\tvariable_obj.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tvariable_obj.rows = new_dimensions;\n\t\tvariable_obj.columns = 2;\n\t}\n\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, variable_obj.name,\n\t\tnew_type, new_dimensions, variable_obj.rows, variable_obj.columns);\n\n\tupdateInitialValues(variable_obj, function_name);\n}\n\nfunction addHandlers (variable_obj, variable_container, function_obj) {\n\n\t// Manage variable name: \n\tvariable_container.find( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_VAR_NAME, variable_obj.name);\n\t\tenableNameUpdate(variable_obj, variable_container, function_obj);\n\t});\n\n\t// Menu to change type:\n\tvariable_container.find('.ui.dropdown.variable_type').dropdown({\n\t onChange: function(_, __, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name);\n\t \t}\n\n\t \trenderValues(variable_obj, variable_container, function_obj.name);\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove variable: \n\tvariable_container.find( \".remove_variable\" ).on('click', function(e){\n\t\tremoveVariable(variable_obj, variable_container, function_obj.name);\n\t});\n\n\tvariable_container.find( \".ellipsis\" ).popup({\n content : LocalizedStrings.getUI(\"tooltip_move_var\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n\tvariable_container.find( \".remove_variable\" ).popup({\n content : LocalizedStrings.getUI(\"tooltip_remove_var\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n}\n\nexport function renderVariable (function_container, new_var, function_obj) {\n\n\tvar element = '<div class=\"ui label variable_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n\telement += '<div class=\"ui dropdown variable_type\">';\n\n \tif (new_var.dimensions == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] </div>';\n \t} else if (new_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] [ ] </div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n element += '</div></div> ';\n\n element += '<div class=\"editing_name_var\"><span class=\"span_name_variable enable_edit_name_variable\">'+new_var.name+'</span> </div>';\n\n\telement += ' <span class=\"character_equals\"> <&#8212; </span> <div class=\"ui div_valor_var\">'+new_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_variable\"></i></div>';\n\n\telement = $(element);\n\n\telement.data('associatedFunction', function_obj);\n\n\tfunction_container.find('.variables_list_div').append(element);\n\n\taddHandlers(new_var, element, function_obj);\n\n\trenderValues(new_var, element, function_obj.name);\n\n\treturn element;\n}\n\nfunction updateColumnsAndRowsText (variable_container, variable_var) {\n\tvar prev = variable_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] [ ' + variable_var.rows + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n}\n\nfunction renderValues (new_var, variable_container, function_name) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\t\t\n\tif (new_var.dimensions == 0) {\n\t\tif (new_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(`logic_value_${new_var.value}`)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (new_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(`logic_value_${new_var.value[k]}`)+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (new_var.dimensions == 2) {\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tif (new_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(`logic_value_${new_var.value[l][k]}`)+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (new_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+new_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\t$(ret).find('.span_value_variable').\t\tdata('associatedOject', new_var);\n\n\t$( ret ).find( \".boolean_simple_type\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name, new_var.value);\n\t\talternateBooleanValue(new_var, this.parentNode);\n\t});\n\t$( ret ).find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableValueUpdate(new_var, this.parentNode, function_name);\n\t});\n\n\t$( ret ).find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanVectorValue(new_var, $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".vector_var\" ).on('click', function(e){\n\t\tenableVectorValueUpdate(new_var, $(this).data('index'), this.parentNode, function_name);\n\t});\n\t$( ret ).find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanMatrixValue(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableMatrixValueUpdate(new_var, $(this).data('row'), $(this).data('index'), this.parentNode, function_name);\n\t});\n\t$( variable_container ).find( \".div_valor_var\" ).append(ret);\n\n\tupdateColumnsAndRowsText(variable_container, new_var);\n\n}\n\nfunction alternateBooleanMatrixValue (var_obj, row, index, value_container) {\n\tvar_obj.value[row][index] = !var_obj.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value[row][index]}`));\n}\n\nfunction addLineMatrix (var_obj) {\n\tvar_obj.rows ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(0.0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.CHAR) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('charvar_default_value'));\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n}\n\nfunction removeLineMatrix (var_obj) {\n\tif (var_obj.rows == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.rows --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction addColumnMatrix (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(0.0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(true);\n\t\t}\n\t}\n\tif (var_obj.type == Types.CHAR) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('charvar_default_value'));\n\t\t}\n\t}\n}\n\nfunction removeColumnMatrix (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\n\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\tvar_obj.value[i].splice(var_obj.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnVector (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar_obj.value.push(0);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar_obj.value.push(0.0);\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar_obj.value.push(true);\n\t}\n\tif (var_obj.type == Types.CHAR) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('charvar_default_value'));\n\t}\n}\n\nfunction removeColumnVector (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction alternateBooleanValue (var_obj, value_container) {\n\tvar_obj.value = !var_obj.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value}`));\n}\n\nfunction alternateBooleanVectorValue (var_obj, index, value_container) {\n\tvar_obj.value[index] = !var_obj.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value[index]}`));\n}\n\nfunction updateInitialValues (variable_obj, function_name) {\n\tif (variable_obj.type == Types.INTEGER) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0, 0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0, 0], [0, 0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.REAL) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 0.0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0.0, 0.0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0.0, 0.0], [0.0, 0.0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.TEXT) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = LocalizedStrings.getUI('textvar_default_value');\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.BOOLEAN) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = true;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [true, true];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[true, true], [true, true]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.CHAR) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 'A';\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = ['A', 'A'];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [['A', 'A'], ['A', 'A']];\n\t\t}\n\t}\n\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, variable_obj.name, variable_obj.value);\n}\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableVectorValueUpdate (var_obj, index, parent_node, function_name) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableValueUpdate (var_obj, parent_node, function_name) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tvar input_field;\n\n\tparent_node.find('.span_value_variable').text('');\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tlet changed = false;\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t} else if (var_obj.type == Types.CHAR) {\n\t\t\t\t\tvar_obj.value = input_field.val().charAt(0);\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else{\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else if (var_obj.type == Types.CHAR) {\n\t\t\t\t\t\tvar_obj.value = input_field.val().charAt(0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (variable_obj, variable_container, function_obj) {\n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tvariable_container.find('.span_name_variable').text('');\n\n\tvar input_name;\n\n\tinput_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+variable_obj.name+\"' />\" );\n\tinput_name.insertBefore(variable_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t input_name.focus();\t\t\t\t\t\n\n\t var tmpStr = input_name.val();\n\t\tinput_name.val('');\n\t\tinput_name.val(tmpStr);\n\n\t input_name.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t} else {\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim().length > 0) {\n\t\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t} else {\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableMatrixValueUpdate (var_obj, row, index, parent_node, function_name) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\t\t\t\t\t\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enLexer = void 0;\nconst lexer_1 = require(\"../lexer\");\n// i18n lexer strings for the language.\nconst types = {\n // types\n RK_REAL: \"real\",\n RK_INTEGER: \"int\",\n RK_BOOLEAN: \"bool\",\n RK_CHARACTER: \"char\",\n RK_STRING: \"string\",\n};\nconst commands = {\n // RK_VOID is not formally part of Types since it doesn't have a valid value/instance\n RK_VOID: \"vazio\",\n // commands\n RK_PROGRAM: \"program\",\n RK_SWITCH: \"switch\",\n RK_CASE: \"case\",\n RK_DEFAULT: \"otherwise\",\n RK_CONST: \"const\",\n RK_FUNCTION: \"function\",\n RK_RETURN: \"return\",\n RK_FOR: \"for\",\n RK_FOR_ALT: \"repeat_for\",\n RK_FOR_FROM: \"from\",\n RK_FOR_TO: \"to\",\n RK_FOR_PASS: \"pass\",\n RK_BREAK: \"break\",\n RK_DO: \"repeat\",\n RK_DO_UNTIL: \"until\",\n RK_WHILE: \"while\",\n RK_WHILE_ALT: \"repeat_while\",\n RK_IF: \"if\",\n RK_ELSE: \"else\",\n RK_REFERENCE: \"&\",\n};\nconst boolVal = {\n RK_FALSE: \"false\",\n RK_TRUE: \"true\",\n};\nconst logicOp = {\n RK_LOGICAL_NOT: \"not\",\n RK_LOGICAL_AND: \"AND\",\n RK_LOGICAL_OR: \"OR\",\n};\nconst langLibs = {\n $mathLib: \"Mathematics\",\n $ioLib: \"IO\",\n $strLib: \"Text\",\n $arrayLib: \"Array\",\n $langLib: \"Conversion\",\n};\nconst langFuncs = {\n main_function: \"main\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"substring\",\n $length: \"length\",\n $uppercase: \"uppercase\",\n $lowercase: \"lowercase\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $castChar: \"to_char\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\",\n $rand: \"random\",\n};\n// END i18n lexer strings\nexports.enLexer = lexer_1.makeLexer({\n commands,\n boolVal,\n logicOp,\n types,\n langLibs,\n langFuncs,\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineRegex = void 0;\nfunction combineRegex(strings, ...pieces) {\n return new RegExp(strings.raw\n .map((r, i) => r + (pieces[i] === undefined ? \"\" : \"(?:\" + pieces[i].source + \")\"))\n .join(\"\"));\n}\nexports.combineRegex = combineRegex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ivprog_1 = require(\"./pt/ivprog\");\nconst ivprog_2 = require(\"./en/ivprog\");\n/*import * as ES from \"./es/ivprog.g4\";\nimport ESFuncs from \"./es/langFunctions\";\nimport ESLibs from \"./es/langLibs\";*/\nconst lexers = {};\nlexers[\"pt\"] = ivprog_1.ptLexer;\nlexers[\"en\"] = ivprog_2.enLexer;\nexports.default = lexers;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeLexer = exports.IVProgLexer = void 0;\nconst moo = require(\"moo\");\nconst helper_1 = require(\"./helper\");\nclass IVProgLexer {\n constructor(RKs, lexer, rules, i18nLexer) {\n this.RKs = RKs;\n this.lexer = lexer;\n this.rules = rules;\n this.i18nLexer = i18nLexer;\n }\n getReservedKeys() {\n return this.RKs;\n }\n getRules() {\n return this.rules;\n }\n getTypeKeys() {\n return this.i18nLexer.types;\n }\n getLangLibs() {\n return this.i18nLexer.langLibs;\n }\n getLangFuncs() {\n return this.i18nLexer.langFuncs;\n }\n}\nexports.IVProgLexer = IVProgLexer;\n// General Regex Rules\nconst ID = \"[a-zA-Z_][a-zA-Z0-9_]*\";\nconst HEX_DIGIT = \"[0-9a-fA-F]\";\nconst OCTAL_DIGIT = \"[0-7]\";\nconst ESC_OCTAL = RegExp(`\\\\\\\\[0-3]${OCTAL_DIGIT}${OCTAL_DIGIT}|\\\\\\\\${OCTAL_DIGIT}${OCTAL_DIGIT}|\\\\\\\\${OCTAL_DIGIT}`);\nconst ESC_UNICODE = RegExp(`\\\\\\\\u${HEX_DIGIT}${HEX_DIGIT}${HEX_DIGIT}${HEX_DIGIT}`);\nconst ESC_SEQ_BASE = /\\\\[b,t,n,f,r,\",',\\\\]|/;\nconst ESC_SEQ = helper_1.combineRegex `${ESC_SEQ_BASE}|${ESC_UNICODE}|${ESC_OCTAL}`;\nconst STRING_CHARACTER = helper_1.combineRegex `${ESC_SEQ}|[^\"\\\\\\\\]`;\nfunction makeLexer(lexer) {\n const RKs = {};\n const rules = {};\n Object.entries(lexer.types).forEach(([key, value]) => {\n RKs[key] = value;\n rules[key] = key;\n });\n Object.entries(lexer.boolVal).forEach(([key, value]) => {\n RKs[key] = value;\n rules[key] = key;\n });\n Object.entries(lexer.commands).forEach(([key, value]) => {\n RKs[key] = value;\n rules[key] = key;\n });\n RKs[\"AND_OPERATOR\"] = lexer.logicOp.RK_LOGICAL_AND;\n RKs[\"OR_OPERATOR\"] = lexer.logicOp.RK_LOGICAL_OR;\n RKs[\"NOT_OPERATOR\"] = lexer.logicOp.RK_LOGICAL_NOT;\n const RESERVED_KEYS = moo.keywords(RKs);\n const lexerRules = {\n COMMENTS: { match: /\\/\\/[^$]*?$|\\/\\*[^$]*?\\*\\//, lineBreaks: true },\n OPEN_BRACE: /\\[/,\n CLOSE_BRACE: /\\]/,\n OPEN_PARENTHESIS: /\\(/,\n CLOSE_PARENTHESIS: /\\)/,\n OPEN_CURLY: /\\{/,\n CLOSE_CURLY: /\\}/,\n COMMA: /,/,\n ASSIGNMENT: /<-|←/,\n REAL: /[0-9]+\\.[0-9]*[eE][+-]?[0-9]+|[0-9]+\\.[0-9]+/,\n INTEGER: RegExp(`(?:0x|0X)${HEX_DIGIT}+|(?:0b|0B)[0-1]+|[0-9]+`),\n SUM_OP: /[+-]/,\n MULTI_OP: /[*/%]/,\n RELATIONAL_OPERATOR: />=|==|<=|>|<|!=/,\n COLON: /:/,\n STRING: helper_1.combineRegex `\"(?:${STRING_CHARACTER})*?\"`,\n CHARACTER: helper_1.combineRegex `'(?:${ESC_SEQ}|[^'\\\\\\\\])'`,\n EOS: { match: /;\\r?\\n?|[\\r\\n]+/, lineBreaks: true },\n WHITESPACE: /(?: |\\t)+/,\n RK_REFERENCE: RegExp(lexer.commands.RK_REFERENCE),\n ID: { match: RegExp(ID), type: RESERVED_KEYS },\n DOT: /\\./,\n ERROR: { match: /[\\$?`]/, error: true },\n };\n Object.entries(lexerRules).forEach(([key, _]) => (rules[key] = key));\n const moolexer = moo.compile(lexerRules);\n return new IVProgLexer(RKs, moolexer, rules, lexer);\n}\nexports.makeLexer = makeLexer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ptLexer = void 0;\nconst lexer_1 = require(\"../lexer\");\n// i18n lexer strings for the language.\nconst types = {\n // types\n RK_REAL: \"real\",\n RK_INTEGER: \"inteiro\",\n RK_BOOLEAN: \"logico\",\n RK_CHARACTER: \"caractere\",\n RK_STRING: \"cadeia\",\n};\nconst commands = {\n // RK_VOID is not formally part of Types since it doesn't have a valid value/instance\n RK_VOID: \"vazio\",\n // commands\n RK_PROGRAM: \"programa\",\n RK_SWITCH: \"escolha\",\n RK_CASE: \"caso\",\n RK_DEFAULT: \"contrario\",\n RK_CONST: \"const\",\n RK_FUNCTION: \"funcao\",\n RK_RETURN: \"devolva\",\n RK_FOR: \"para\",\n RK_FOR_ALT: \"repita_para\",\n RK_FOR_FROM: \"de\",\n RK_FOR_TO: \"ate\",\n RK_FOR_PASS: \"passo\",\n RK_BREAK: \"pare\",\n RK_DO: \"repita\",\n RK_DO_UNTIL: \"ate_que\",\n RK_WHILE: \"enquanto\",\n RK_WHILE_ALT: \"repita_enquanto\",\n RK_IF: \"se\",\n RK_ELSE: \"senao\",\n RK_REFERENCE: \"&\",\n};\nconst boolVal = {\n RK_FALSE: \"falso\",\n RK_TRUE: \"verdadeiro\",\n};\nconst logicOp = {\n RK_LOGICAL_NOT: \"nao\",\n RK_LOGICAL_AND: \"E\",\n RK_LOGICAL_OR: \"OU\",\n};\nconst langLibs = {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversao\",\n};\nconst langFuncs = {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_de_elementos\",\n $matrixLines: \"total_de_linhas\",\n $matrixColumns: \"total_de_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"caractere_na_posicao\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $castChar: \"como_caractere\",\n $sin: \"seno\",\n $cos: \"cosseno\",\n $tan: \"tangente\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"potencia\",\n $log: \"logaritmo\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\",\n $rand: \"numero_aleatorio\",\n};\n// END i18n lexer strings\nexports.ptLexer = lexer_1.makeLexer({\n commands,\n boolVal,\n logicOp,\n types,\n langLibs,\n langFuncs,\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Messages = require(\"./message.csv\");\nconst UI = require(\"./ui.csv\");\nconst Errors = require(\"./error.csv\");\nconst MessagesObj = Messages;\nconst UIObj = UI;\nconst ErrorsObj = Errors;\nconst i18n_data = {};\nfor (const key in UIObj) {\n const data = {};\n data['error'] = ErrorsObj[key];\n data['message'] = MessagesObj[key];\n data['ui'] = UIObj[key];\n i18n_data[key] = data;\n}\nexports.default = i18n_data;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertFromString = exports.Operators = void 0;\nexports.Operators = Object.freeze({\n ADD: { ord: 0, value: \"+\" },\n SUB: { ord: 1, value: \"-\" },\n MULT: { ord: 2, value: '*' },\n DIV: { ord: 3, value: '/' },\n MOD: { ord: 4, value: '%' },\n GT: { ord: 5, value: '>' },\n GE: { ord: 6, value: '>=' },\n LT: { ord: 7, value: '<' },\n LE: { ord: 8, value: '<=' },\n EQ: { ord: 9, value: '==' },\n NEQ: { ord: 10, value: '!=' },\n AND: { ord: 11, value: 'and' },\n OR: { ord: 12, value: 'or' },\n NOT: { ord: 13, value: 'not' }\n});\nfunction convertFromString(op) {\n switch (op) {\n case '+': return exports.Operators.ADD;\n case '-': return exports.Operators.SUB;\n case '*': return exports.Operators.MULT;\n case '/': return exports.Operators.DIV;\n case '%': return exports.Operators.MOD;\n case '>': return exports.Operators.GT;\n case '>=': return exports.Operators.GE;\n case '<': return exports.Operators.LT;\n case '<=': return exports.Operators.LE;\n case '==': return exports.Operators.EQ;\n case '!=': return exports.Operators.NEQ;\n case 'and': return exports.Operators.AND;\n case 'or': return exports.Operators.OR;\n case 'not': return exports.Operators.NOT;\n }\n return null;\n}\nexports.convertFromString = convertFromString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nclass Address {\n /**\n *\n * @param {Number} id the address id\n * @param {never} value the value stored at this address\n */\n constructor(id, value) {\n this.id = id;\n this.value = value;\n }\n}\nexports.Address = Address;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Location = void 0;\nconst address_1 = require(\"./address\");\nclass LocationHolder {\n constructor() {\n this.data = [];\n this.address_id = 0;\n }\n /**\n *\n * @param {never} value the value to be allocated\n * @returns {number} - the address id\n */\n allocate(value) {\n const id = this.address_id;\n // console.log(\"Allocation address \"+ id);\n const address = new address_1.Address(id, value);\n this.data.push(address);\n this.address_id += 1;\n return id;\n }\n /**\n *\n * @param {number} id\n */\n deallocate(id) {\n const index = this.findIndex(id);\n // console.log(\"Deallocation address \"+ id);\n if (index !== -1) {\n this.data.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n *\n * @param {number} id\n * @returns {Address} the address identified by id\n */\n find(id) {\n let beg = 0;\n let end = this.data.length;\n // console.log(\"Finding address \"+id);\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return address;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return undefined;\n }\n getAddressAt(pos) {\n return this.data[pos];\n }\n /**\n *\n * @param {number} id address id\n * @returns {number} the index of the address identified by id\n */\n findIndex(id) {\n let beg = 0;\n let end = this.data.length;\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return med;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return -1;\n }\n updateAddress(id, value) {\n const index = this.findIndex(id);\n if (index === -1) {\n throw new Error(\"Invalid address...\" + id);\n }\n this.data[index].value = value;\n }\n clear() {\n for (let i = 0; i < this.data.length; i += 1) {\n delete this.data[i];\n }\n this.data = [];\n this.address_id = 0;\n }\n}\nconst inner_ref = new LocationHolder();\nexports.Location = Object.freeze({\n allocate: inner_ref.allocate.bind(inner_ref),\n deallocate: inner_ref.deallocate.bind(inner_ref),\n find: inner_ref.find.bind(inner_ref),\n updateAddress: inner_ref.updateAddress.bind(inner_ref),\n clear: inner_ref.clear.bind(inner_ref),\n size: () => inner_ref.data.length\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resultTypeAfterUnaryOp = exports.resultTypeAfterInfixOp = void 0;\nconst types_1 = require(\"../typeSystem/types\");\nconst operators_1 = require(\"../ast/operators\");\nconst multiType_1 = require(\"../typeSystem/multiType\");\nconst config_1 = require(\"../util/config\");\nfunction buildInfixAddTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n table[types_1.Types.INTEGER.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.INTEGER.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.REAL.ord][types_1.Types.INTEGER.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.INTEGER.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.REAL.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.CHAR.ord] = types_1.Types.STRING;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.STRING;\n table[types_1.Types.CHAR.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n return table;\n}\nfunction buildInfixMultiDivSubTable() {\n const table = [[], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n table[types_1.Types.INTEGER.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.INTEGER.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n return table;\n}\nfunction buildInfixEqualityInequalityTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.BOOLEAN.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixRelationalTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixAndOrTable() {\n const table = [[], [], [], []];\n table[types_1.Types.BOOLEAN.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixModTable() {\n const table = [[]];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n return table;\n}\nfunction buildUnarySumSubList() {\n const list = [];\n list[types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n list[types_1.Types.REAL.ord] = types_1.Types.REAL;\n return list;\n}\nfunction buildUnaryNegList() {\n const list = [];\n list[types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n return list;\n}\nfunction buildInfixCompatibilityTable() {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(operators_1.Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(operators_1.Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(operators_1.Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(operators_1.Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(operators_1.Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(operators_1.Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\nfunction buildUnaryCompatibilityTable() {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(operators_1.Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(operators_1.Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(operators_1.Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\nfunction resultTypeAfterInfixOp(operator, leftExpressionType, rightExpressionType) {\n try {\n if (leftExpressionType instanceof multiType_1.MultiType && rightExpressionType instanceof multiType_1.MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; ++i) {\n const typeA = leftExpressionType.types[i];\n for (let j = 0; j < rightExpressionType.types.length; ++i) {\n const typeB = rightExpressionType.types[j];\n newMulti.push(resultTypeAfterInfixOp(operator, typeA, typeB));\n }\n }\n newMulti = newMulti.filter(x => !x.isCompatible(types_1.Types.UNDEFINED));\n if (newMulti.length <= 0) {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return new multiType_1.MultiType([types_1.Types.INTEGER, types_1.Types.REAL]);\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n else {\n return new multiType_1.MultiType(newMulti);\n }\n }\n else if (leftExpressionType instanceof multiType_1.MultiType) {\n if (leftExpressionType.isCompatible(rightExpressionType)) {\n return resultTypeAfterInfixOp(operator, rightExpressionType, rightExpressionType);\n }\n else {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return rightExpressionType;\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n }\n else if (rightExpressionType instanceof multiType_1.MultiType) {\n if (rightExpressionType.isCompatible(leftExpressionType)) {\n return resultTypeAfterInfixOp(operator, leftExpressionType, leftExpressionType);\n }\n else {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return leftExpressionType;\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n }\n const resultTable = infixMap.get(operator) || [];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const resultType = resultTable[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n if (operator === operators_1.Operators.MOD) {\n return types_1.Types.INTEGER;\n }\n else if (operator.ord >= 5 && operator.ord <= 10) {\n return types_1.Types.BOOLEAN;\n }\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n return resultType;\n }\n catch (e) {\n if (e instanceof TypeError) {\n return types_1.Types.UNDEFINED;\n }\n else {\n throw e;\n }\n }\n}\nexports.resultTypeAfterInfixOp = resultTypeAfterInfixOp;\nfunction resultTypeAfterUnaryOp(operator, leftExpressionType) {\n try {\n if (leftExpressionType instanceof multiType_1.MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; ++i) {\n const type = leftExpressionType.types[i];\n newMulti.push(resultTypeAfterUnaryOp(operator, type));\n }\n newMulti = newMulti.filter(x => !x.isCompatible(types_1.Types.UNDEFINED));\n if (newMulti.length <= 0) {\n return types_1.Types.UNDEFINED;\n }\n return new multiType_1.MultiType(newMulti);\n }\n const resultTable = unaryMap.get(operator) || [];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const resultType = resultTable[leftExpressionType.ord];\n if (resultType == null) {\n return types_1.Types.UNDEFINED;\n }\n return resultType;\n }\n catch (e) {\n if (e instanceof TypeError) {\n return types_1.Types.UNDEFINED;\n }\n else {\n throw e;\n }\n }\n}\nexports.resultTypeAfterUnaryOp = resultTypeAfterUnaryOp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nexports.Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Modes = void 0;\nexports.Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run'),\n ABORT: Symbol('mode:abort')\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Store = void 0;\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nconst modes_1 = require(\"../modes\");\nconst types_1 = require(\"../../typeSystem/types\");\nconst storeObject_1 = require(\"./storeObject\");\nconst storeObjectRef_1 = require(\"./storeObjectRef\");\nconst array_type_1 = require(\"../../typeSystem/array_type\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nconst store_value_1 = require(\"./value/store_value\");\nconst store_value_address_1 = require(\"./value/store_value_address\");\nconst store_value_ref_1 = require(\"./value/store_value_ref\");\nconst array_store_value_ref_1 = require(\"./value/array_store_value_ref\");\nconst store_object_array_ref_1 = require(\"./store_object_array_ref\");\nclass Store {\n constructor(name) {\n this.name = name;\n this.store = new Map();\n this.mode = modes_1.Modes.RUN;\n }\n static canImplicitTypeCast(castType, sourceType) {\n if (castType.isCompatible(types_1.Types.INTEGER) || castType.isCompatible(types_1.Types.REAL)) {\n if (sourceType.isCompatible(types_1.Types.INTEGER) || sourceType.isCompatible(types_1.Types.REAL)) {\n return true;\n }\n }\n return false;\n }\n static doImplicitCasting(castType, stoObj) {\n if (!Store.canImplicitTypeCast(castType, stoObj.type)) {\n throw new Error(\"!!!Critical error: attempted to type cast invalid types\");\n }\n if (castType.isCompatible(types_1.Types.INTEGER)) {\n return new store_value_1.StoreValue(types_1.Types.INTEGER, stoObj.get().trunc());\n }\n else {\n return new store_value_1.StoreValue(types_1.Types.REAL, stoObj.get());\n }\n }\n extendStore(nextStore) {\n this.nextStore = nextStore;\n }\n applyStore(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.applyStore(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store.get(id);\n let result = null;\n if (val.type instanceof array_type_1.ArrayType) {\n const array = val;\n const array_type = array.type;\n let l = 0, c = 0;\n const values = array.value.map(v => {\n if (array.isVector) {\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l++, undefined, array.id, array.readOnly);\n }\n else {\n if (c >= array.columns) {\n c = 0;\n l += 1;\n }\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l, c++, array.id, array.readOnly);\n }\n });\n result = new array_store_value_1.ArrayStoreValue(array_type, values, array.lines, array.columns, val.id, val.readOnly);\n }\n else {\n result = new store_value_1.StoreValue(val.type, val.value, val.id, val.readOnly);\n }\n return result;\n }\n updateStore(id, stoValue) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStore(id, stoValue);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(id);\n if (oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if (oldObj instanceof storeObjectArray_1.StoreObjectArray) {\n const array_value = stoValue;\n if (oldObj.isCompatible(array_value)) {\n if (oldObj.isVector) {\n array_value.get().forEach((val, index) => {\n oldObj.setAt(val, index, undefined);\n });\n }\n else {\n let line = 0;\n let column = 0;\n array_value.get().forEach((val) => {\n oldObj.setAt(val, line, column);\n column += 1;\n if (column >= oldObj.columns) {\n line += 1;\n column = 0;\n }\n });\n }\n return this;\n }\n }\n else if (oldObj.isCompatible(stoValue)) {\n const loc_address = oldObj.locAddress;\n location_1.Location.updateAddress(loc_address, stoValue.get());\n return this;\n }\n const oldType = oldObj.type;\n const stoType = stoValue.type;\n // TODO: better error message\n throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n }\n }\n /**\n * Method used to update regions of an array (vector or matrix). The should only be used when update an specific\n * possition since it will only update the required addresses.\n * @param {string} id the variable id to be updated\n * @param {IStoreValue} sto_value the value to be used in the update process\n * @param {number} line the line address of the vector/matrix\n * @param {number} column the matrix column, which can be undefined\n */\n updateStoreArray(id, sto_value, line, column) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStoreArray(id, sto_value, line, column);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(id);\n if (oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if (oldObj instanceof storeObjectArray_1.StoreObjectArray) {\n if (sto_value instanceof array_store_value_1.ArrayStoreValue) {\n // this must be a vector or matrix line update\n const actual_values = sto_value.get();\n if (oldObj.isVector && sto_value.isVector()) {\n for (let i = 0; i < sto_value.lines; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, i, undefined);\n }\n }\n else if (!oldObj.isVector && column == null && sto_value.isVector()) {\n for (let i = 0; i < oldObj.columns; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, line, i);\n }\n }\n else {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n }\n else {\n if (!oldObj.isVector && column == null) {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n oldObj.setAt(sto_value, line, column);\n }\n }\n else {\n throw new Error(\"Cannot update a non-array variable using updateStoreArray\");\n }\n // const oldType = oldObj.type;\n // const stoType = sto_value.type;\n // // TODO: better error message\n // throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n return this;\n }\n }\n /**\n * Inserts a new variable into the Store. This method should be used when declaring a new variable,\n * including the special return variable $.\n * @param id variable id\n * @param stoValue the value to be used as the initial value of id\n */\n insertStore(id, stoValue) {\n if (this.store.has(id)) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n // TODO check for array....\n let newObj;\n if (stoValue instanceof store_value_ref_1.StoreValueRef) {\n newObj = new storeObjectRef_1.StoreObjectRef(stoValue);\n }\n else if (stoValue instanceof array_store_value_ref_1.ArrayStoreValueRef) {\n newObj = new store_object_array_ref_1.StoreObjectArrayRef(stoValue, stoValue.lines, stoValue.columns);\n }\n else if (stoValue instanceof array_store_value_1.ArrayStoreValue) {\n const columns = stoValue.isVector() ? 0 : stoValue.columns;\n const addresses = [];\n const all_values = stoValue.get();\n if (all_values.length > 0) {\n for (let i = 0; i < stoValue.get().length; i += 1) {\n const val = all_values[i].get();\n addresses.push(location_1.Location.allocate(val));\n }\n }\n else {\n let total = stoValue.lines;\n total = stoValue.isVector() ? total : total * columns;\n for (let i = 0; i < total; i += 1) {\n addresses.push(location_1.Location.allocate(null));\n }\n }\n newObj = new storeObjectArray_1.StoreObjectArray(stoValue.type, stoValue.lines, columns, addresses, stoValue.isConst);\n }\n else {\n const loc_address = location_1.Location.allocate(stoValue.get());\n newObj = new storeObject_1.StoreObject(stoValue.type, loc_address, stoValue.isConst);\n }\n newObj.setID(id);\n this.store.set(id, newObj);\n return this;\n }\n /**\n * Helper function similar to applyStore. But it returns the actual object in the store be it ref or not\n * applyStore will return the refferenced object if the object in the store is a ref\n */\n getStoreObject(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.getStoreObject(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n return this.store.get(id);\n }\n destroy() {\n this.store.forEach(sto => sto.destroy(), this);\n }\n isDefined(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.isDefined(id);\n }\n else {\n return false;\n }\n }\n return true;\n }\n}\nexports.Store = Store;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObject = void 0;\nconst location_1 = require(\"../../memory/location\");\nclass StoreObject {\n /**\n *\n * @param {Type} type\n * @param {Number} loc_address\n * @param {Boolean} readOnly\n */\n constructor(type, loc_address, readOnly = false) {\n this._loc_address = loc_address;\n this._type = type;\n this._readOnly = readOnly;\n this._id = undefined;\n }\n setID(id) {\n this._id = id;\n }\n get id() {\n return this._id;\n }\n get inStore() {\n return this.id !== null;\n }\n get type() {\n return this._type;\n }\n /**\n * Returns the actual value stored at the loccation address present in this object.\n * The returned value is compatible with @prop{StoreObject.type}\n */\n get value() {\n const address = location_1.Location.find(this._loc_address);\n if (address != null) {\n return address.value;\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n get number() {\n throw new Error(\"DOT NOT USE THIS PROPERTY!\");\n }\n get readOnly() {\n return this._readOnly;\n }\n set readOnly(value) {\n this._readOnly = value;\n }\n isCompatible(another) {\n return this.type.isCompatible(another.type);\n }\n destroy() {\n return location_1.Location.deallocate(this._loc_address);\n }\n get locAddress() {\n return this._loc_address;\n }\n}\nexports.StoreObject = StoreObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectArray = void 0;\nconst storeObject_1 = require(\"./storeObject\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nclass StoreObjectArray extends storeObject_1.StoreObject {\n constructor(type, _lines, _columns, loc_addresses, readOnly = false) {\n super(type, -1, readOnly);\n this._lines = _lines;\n this._columns = _columns;\n this.loc_addresses = loc_addresses;\n }\n get lines() {\n return this._lines;\n }\n get columns() {\n return this._columns;\n }\n isCompatible(another) {\n if (another instanceof array_store_value_1.ArrayStoreValue) {\n const cols = another.columns == null ? 0 : another.columns;\n if (this.lines === another.lines && this.columns === cols) {\n return super.isCompatible(another);\n }\n }\n return false;\n }\n get isVector() {\n return this.type.dimensions === 1;\n }\n /**@override\n * Returns the list of values stored by this array.\n * All returned values are compatible with @prop{StoreObject.type}\n */\n get value() {\n const values = [];\n for (let i = 0; i < this.addresses.length; i += 1) {\n const address = location_1.Location.find(this.addresses[i]);\n if (address != null) {\n values.push(address.value);\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n return values;\n }\n destroy() {\n let bool = true;\n for (let i = 0; i < this.addresses.length; i += 1) {\n bool = bool && location_1.Location.deallocate(this.addresses[i]);\n }\n return bool;\n }\n /**\n * @override\n *\n * Returns the address that contains a list of all addresses of the values present in the array\n */\n get locAddress() {\n throw new Error(\"!!!Internal Error: Cannot invoke locAddress on StoreObjectArray\");\n }\n get addresses() {\n return this.loc_addresses;\n }\n getAt(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n const address = location_1.Location.find(this.addresses[index]);\n values.push(address.value);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n const address = location_1.Location.find(this.addresses[index]);\n return address.value;\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n throw new Error(\"!!!Internal Error: Attempting to insert a line into matrix \" + this.id);\n }\n const pos = this.getIndexOf(line, column);\n location_1.Location.updateAddress(this.addresses[pos], value.get());\n }\n getIndexOf(line, column) {\n return line * this.columns + column;\n }\n getLocAddressOf(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n values.push(this.addresses[index]);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n return this.addresses[index];\n }\n}\nexports.StoreObjectArray = StoreObjectArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectRef = void 0;\nconst storeObject_1 = require(\"./storeObject\");\nclass StoreObjectRef extends storeObject_1.StoreObject {\n /**\n *\n * @param {StoreObject} stoValue\n */\n constructor(stoValue) {\n super(stoValue.type, stoValue.getRefAddress(), false);\n this.refObj = stoValue.id;\n this.reference_dimension = stoValue.getReferenceDimension();\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n getReferenceDimension() {\n return this.reference_dimension;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectRef = StoreObjectRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectArrayRef = void 0;\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nclass StoreObjectArrayRef extends storeObjectArray_1.StoreObjectArray {\n constructor(stoValue, lines, columns) {\n super(stoValue.type, lines, columns, stoValue.getAddresses(), false);\n this.refObj = stoValue.id;\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectArrayRef = StoreObjectArrayRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayStoreValue = void 0;\nconst array_type_1 = require(\"../../../typeSystem/array_type\");\nconst store_value_address_1 = require(\"./store_value_address\");\nclass ArrayStoreValue {\n constructor(type, values, lines, columns, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.values = values;\n this.lines = lines;\n this.columns = columns;\n }\n get() {\n return this.values;\n }\n /**\n * @deprecated\n * Potential not necessary since array access is occuring directly in the StoreObject\n * @param line\n * @param column\n */\n getAt(line, column) {\n console.log(\"Column \", column);\n if (this.isVector()) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = line * this.lines + col;\n values.push(this.values[index]);\n }\n const array_type = this.type;\n const vector_type = new array_type_1.ArrayType(array_type.innerType, array_type.dimensions - 1);\n return new ArrayStoreValue(vector_type, values, this.columns, 0, this.id, this.isConst);\n }\n const index = line * this.lines + column;\n console.log(\"Get at: \", index);\n return this.values[index];\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n let actual_line = line;\n let actual_column = column;\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector()) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n actual_column = actual_line;\n actual_line = 0;\n }\n else if (column == null) {\n if (!(value instanceof ArrayStoreValue)) {\n throw new Error(\"Attempting to insert a single value as a line of matrix \" + this.id);\n }\n const actual_values = value.get();\n for (let i = 0; i < this.columns; i += 1) {\n const pos = actual_line * this.columns + i;\n const val = actual_values[i];\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, val.get(), actual_line, i, this.id, this.isConst);\n }\n }\n const columns = this.columns == null ? 0 : this.columns;\n const pos = actual_line * columns + actual_column;\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, value.get(), line, column, this.id, this.isConst);\n }\n inStore() {\n return this.id != null;\n }\n isVector() {\n return this.type.dimensions == 1;\n }\n}\nexports.ArrayStoreValue = ArrayStoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayStoreValueRef = void 0;\nclass ArrayStoreValueRef {\n constructor(type, values, addresses, lines, columns, id) {\n this.type = type;\n this.values = values;\n this.addresses = addresses;\n this.lines = lines;\n this.columns = columns;\n this.id = id;\n this.isConst = false;\n }\n get() {\n return this.values;\n }\n getAddresses() {\n return this.addresses;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.ArrayStoreValueRef = ArrayStoreValueRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValue = void 0;\nclass StoreValue {\n constructor(type, value, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.value = value;\n }\n get() {\n return this.value;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.StoreValue = StoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValueAddress = void 0;\nconst store_value_1 = require(\"./store_value\");\nclass StoreValueAddress extends store_value_1.StoreValue {\n constructor(type, value, line, column, id, isConst = false) {\n super(type, value, id, isConst);\n this.line = line;\n this.column = column;\n }\n}\nexports.StoreValueAddress = StoreValueAddress;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValueRef = void 0;\nclass StoreValueRef {\n constructor(type, value, loc_address, id) {\n this.type = type;\n this.value = value;\n this.loc_address = loc_address;\n this.id = id;\n this.isConst = false;\n this.reference_dimesion = 0;\n }\n get() {\n return this.value;\n }\n getRefAddress() {\n return this.loc_address;\n }\n inStore() {\n return this.id != null;\n }\n getReferenceDimension() {\n return this.reference_dimesion;\n }\n setReferenceDimension(dimension) {\n this.reference_dimesion = dimension;\n }\n}\nexports.StoreValueRef = StoreValueRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LanguageService = void 0;\nconst grammar_1 = require(\"./../../grammar/\");\nconst line_i18n_1 = require(\"line-i18n\");\nconst config_1 = require(\"./../util/config\");\nclass LanguageServiceExtended extends line_i18n_1.default.LanguageServiceNoLS {\n constructor() {\n super(typeof iLMparameters === \"undefined\"\n ? config_1.Config.default_lang\n : iLMparameters.lang);\n }\n getDefaultLang() {\n return \"en\";\n }\n getCurrentLexer() {\n const langLexer = grammar_1.default[this.getLang()];\n if (langLexer === null || langLexer === undefined) {\n return grammar_1.default[this.getDefaultLang()];\n }\n else {\n return langLexer;\n }\n }\n getCurrentLangFuncs() {\n const langInfo = grammar_1.default[this.getLang()];\n if (langInfo === null || langInfo === undefined) {\n return grammar_1.default[this.getDefaultLang()].getLangFuncs();\n }\n else {\n return langInfo.getLangFuncs();\n }\n }\n getCurrentLangLibs() {\n const langInfo = grammar_1.default[this.getLang()];\n if (langInfo === null || langInfo === undefined) {\n return grammar_1.default[this.getDefaultLang()].getLangLibs();\n }\n return langInfo.getLangLibs();\n }\n}\nexports.LanguageService = new LanguageServiceExtended();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayType = void 0;\nclass ArrayType {\n constructor(type, dimensions) {\n this.dimensions = dimensions;\n this.innerType = type;\n }\n get isVector() {\n return this.dimensions == 1;\n }\n isCompatible(another) {\n if (another instanceof ArrayType) {\n if (this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n stringInfo() {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tmp = v;\n tmp.dim = this.dimensions;\n });\n return list;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\n }\n canAccept(another, used_dims) {\n const free_dims = this.dimensions - used_dims;\n if (another instanceof ArrayType) {\n return free_dims == another.dimensions && this.innerType.isCompatible(another.innerType);\n }\n else {\n return free_dims == 0 && this.innerType.isCompatible(another);\n }\n }\n}\nexports.ArrayType = ArrayType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiType = void 0;\nclass MultiType {\n constructor(types) {\n this.types = types;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\n }\n stringInfo() {\n let list = [];\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n list = list.concat(t.stringInfo());\n }\n return list;\n }\n isCompatible(another) {\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n if (another.isCompatible(t)) {\n return true;\n }\n }\n return false;\n }\n}\nexports.MultiType = MultiType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Type = void 0;\nclass Type {\n constructor(value, ord) {\n this.value = value;\n this.ord = ord;\n }\n stringInfo() {\n return [{ type: this.value, dim: 0 }];\n }\n isCompatible(another) {\n return this.value === another.value && this.ord === another.ord;\n }\n}\nexports.Type = Type;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromOrdToType = exports.Types = void 0;\nconst type_1 = require(\"./type\");\nconst multiType_1 = require(\"./multiType\");\nconst maybe_1 = require(\"../util/maybe\");\nconst INTEGER = new type_1.Type(\"integer\", 0);\nconst REAL = new type_1.Type(\"real\", 1);\nconst STRING = new type_1.Type(\"text\", 2);\nconst BOOLEAN = new type_1.Type(\"boolean\", 3);\nconst CHAR = new type_1.Type(\"char\", 4);\nconst VOID = new type_1.Type(\"void\", 5);\nconst UNDEFINED = new type_1.Type(\"undefined\", 6);\nconst ALL = new multiType_1.MultiType([INTEGER, REAL, STRING, CHAR, BOOLEAN]);\nexports.Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n CHAR: CHAR,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\nfunction fromOrdToType(ord) {\n const typeMap = exports.Types;\n for (const t in typeMap) {\n if (typeMap[t].ord && typeMap[t].ord === ord) {\n return maybe_1.Maybe.some(typeMap[t]);\n }\n }\n return maybe_1.Maybe.none();\n}\nexports.fromOrdToType = fromOrdToType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Config = void 0;\nclass ConfigObject {\n constructor() {\n this.decimalPlaces = 8;\n this.intConvertRoundMode = 2;\n this.default_lang = \"pt\";\n this.enable_type_casting = true;\n this.idle_input_interval = 5000;\n this.suspend_threshold = 1000;\n // this.max_instruction_count = 350250; - automated evaluation limit\n this.max_instruction_count = Number.MAX_SAFE_INTEGER;\n this.activity_programming_type = new Map();\n this.activity_functions = new Map();\n this.activity_datatypes = new Map();\n this.activity_commands = new Map();\n this.activity_filter = new Map();\n }\n setConfig(opts) {\n const otherConfig = opts;\n for (const key in otherConfig) {\n if (Object.prototype.hasOwnProperty.call(this, key)) {\n this[key] = otherConfig[key];\n }\n }\n }\n}\nconst config = new ConfigObject();\nexports.Config = config;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Maybe = void 0;\n/**\n*\n* Maybe Monad\n* @Source: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/\n* @Modified by: @lucascalion - 28/08/2019\n*\n**/\nclass Maybe {\n constructor(value) {\n this.value = value;\n }\n static some(value) {\n if (!value) {\n throw Error(\"Provided value must not be empty\");\n }\n return new Maybe(value);\n }\n static none() {\n return new Maybe(null);\n }\n static fromValue(value) {\n return value ? Maybe.some(value) : Maybe.none();\n }\n getOrElse(defaultValue) {\n return this.value === null ? defaultValue : this.value;\n }\n map(f) {\n if (this.value === null) {\n return Maybe.none();\n }\n else {\n return Maybe.fromValue(f(this.value));\n }\n }\n}\nexports.Maybe = Maybe;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"main\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkivprogCore\"] = self[\"webpackChunkivprogCore\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"vendors-node_modules_babel_runtime_helpers_asyncToGenerator_js-node_modules_babel_runtime_hel-72ab78\"], () => (__webpack_require__(\"./js/main.js\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":["line_i18n","IVProgProcessor","DOMConsole","LocalizedStringsService","OutputMatching","Config","LocalizedStrings","getInstance","StringTypes","AssessmentConfig","max_instruction_count","suspend_threshold","IVProgAssessment","ast_code","testCases","domConsole","old_config","JSON","parse","stringify","setConfig","partialTests","map","t","name","input","output","testResult","om","eval","Promise","all","then","results","grade","i","length","result","writeToConsole","INFO","MESSAGE","generateOutput","status","ERR","ERROR","error_msg","channel","toFixed","error","showErrorMessage","err","message","resolve","errorID","args","getError","msgID","info","getMessage","msgType","msg","getString","processString","writeRawHTML","StringDiff","OutputAssessmentResult","inputs","store","time","template","DETAIL_TEMPLATE","replace","getUI","input_spans","prepareInputList","output_rows","type","formatString","formatNumber","formatBool","prepareOutputTable","failed_text","FAILED_TEMPLATE","input_list","list","INPUT_INFO_TEMPLATE","value","read","join","OUPUT_TABLE_TEMPLATE","assessment_result","prepareResults","page","PAGE_TEMPLATE","result_class","formatOutput","expected_class","generated_class","OUTPUT_TEMPLATE","expected_tmpl","expected","generated_tmpl","generated","EMPTY_OUTPUT_TEMPLATE","final_result","g_string","e_string","g_string_tmpl","e_string_tmpl","diff","diff_vec","part","getDiffStringStyle","diff_string","reduce","prev","actual","text","action","INSERT","DELETE","EQUAL","val","Decimal","InputAssessment","OutputTest","levenshteinDistance","TypeParser","OutputResult","str","RegExp","program","expected_output","test_name","refThis","gen_output","registerInput","registerOutput","start_time","Date","now","interpretAST","sto","final_time","isInputAvailable","getErrorMessage","g_out","OutputMatchResult","getPotentialOutputType","outputMatch","console","log","e_out","push","NUM_REGEX","test","BOOLEAN_REGEX","g_output","e_output","checkStrings","g_num","e_num","checkNumbers","g_bool","toBool","e_bool","checkBoolean","decimalPlaces","Math","min","dp","ROUND_FLOOR","eq","createNumberResult","toNumber","g_bool_text","convertBoolToString","e_bool_text","createBoolResult","e_ouput","assessmentList","e_output_clean","trim","g_output_clean","NUM_IN_STRING_REGEX","expected_numbers","match","generated_numbers","g_val","e_val","numberGrade","r","BOOLEAN_IN_STRING_REGEX","expected_bools","generated_bools","boolGrade","dist","gradeDiff","max","Number","isNaN","assessment_size","gradeAcc","finalGrade","createStringResult","Assign","ArrayIndexAssign","id","lineExpression","columnExpression","expression","line","column","Declaration","ArrayDeclaration","lines","columns","initial","isConst","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","For","for_id","for_from","for_to","for_pass","commandBlock","FormalParameter","byRef","variadic","Types","Function","returnType","formalParameters","some","p","isCompatible","VOID","IfThenElse","condition","ifTrue","ifFalse","Return","While","RepeatUntil","Switch","SysCall","FunctionCall","Expression","cases","langFunc","SyntaxError","_context","Error","captureStackTrace","contextObj","createError","message_id","context","SyntaxErrorFactory","Object","freeze","extra_lines","token_missing_one","token","col","token_missing_list","expectedList","getOR","id_missing","eos_missing","invalid_array_dimension","typeName","invalid_array_size","invalid_main_return","invalid_var_declaration","invalid_break_command","cmdName","invalid_terminal","invalid_type","const_not_init","invalid_id_format","duplicate_function","main_parameters","duplicate_variable","invalid_character","annonymous_array_literal","invalid_matrix_literal_line","exp","cannot_infer_matrix_line","cannot_infer_matrix_column","cannot_infer_vector_size","matrix_to_vector_literal_attr","vector_to_matrix_literal_attr","array_init_not_literal","array_exceeds_2d","invalid_matrix_id_dimension","invalid_vector_init","invalid_matrix_init","invalid_syntax","ArrayAccess","strLine","toString","strColumn","parenthesis","Literal","ArrayLiteral","valid","strList","arrayLiteral","element","validateSize","validateType","BoolLiteral","BOOLEAN","CharLiteral","CHAR","_parenthesis","flag","LanguageDefinedFunction","actualParameters","isMainCall","getMainFunctionName","getLocalName","params","strParams","v","IntLiteral","RealLiteral","StringLiteral","VariableLiteral","InfixApp","UnaryApp","op","left","right","l","convertToString","INTEGER","REAL","STRING","UNDEFINED","Expressions","Commands","Parsers","ArrayType","SourceInfo","convertFromString","LanguageService","IVProgParser","fill","lexer","getCurrentLexer","parser","offset","lineBreaks","ivprogLexer","inputStream","tokenStream","pos","ruleNames","getRules","variableTypes","entries","getTypeKeys","key","_","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","langFuncs","getLangFuncs","definedFuncsNameList","definedVariablesStack","stream","Array","from","reset","filter","WHITESPACE","COMMENTS","parseProgram","index","EOF_TOKEN","BASE","pop","getToken","consumeNewLines","globalVars","functions","RK_PROGRAM","checkOpenCurly","pushVariableStack","RK_CONST","isVariableType","parseGlobalVariables","RK_FUNCTION","parseFunction","popVariableStack","checkCloseCurly","isEOF","global","getReservedKeys","attempt","OPEN_CURLY","CLOSE_CURLY","OPEN_BRACE","CLOSE_BRACE","OPEN_PARENTHESIS","CLOSE_PARENTHESIS","eosToken","EOS","functionID","funcIDToken","indexOf","variableID","getCurrentVariableStack","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","dimensions","createSourceInfo","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","parseArrayDeclaration","assignmentToken","ASSIGNMENT","parseExpressionOR","declaration","commaToken","COMMA","n_lines","n_columns","dim_is_id","parseArrayLiteral","isVector","expString","toInt","find","dimToken","getIntLiteral","ID","parseVariable","RK_INTEGER","toReal","toChar","openCurly","invalid_token","beginArray","data","maybeCurlyOpen","parseVectorList","parseExpressionList","endArray","createSourceInfoFromList","dataDim","lastSize","substring","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","reference","maybeIDToken","RK_REFERENCE","parameter","insideScope","maybeDOT","DOT","anotherID","RK_BOOLEAN","RK_REAL","RK_STRING","RK_CHARACTER","optionalCurly","variablesDecl","hasOpen","parsedCommand","cmd","parseCommand","lastToken","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","RK_WHILE_ALT","parseWhile","RK_FOR","RK_FOR_ALT","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseRepeatUntil","RK_IF","parseIfThenElse","casesList","parseCases","command","whileToken","RK_DO_UNTIL","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","for_token","id_token","parseForParameters","RK_FOR_FROM","RK_FOR_TO","maybePass","RK_FOR_PASS","returnCommand","refToken","parseMaybeLibID","isID","parseExpression","assignmentOrParenthesis","funcCall","parseFunctionCallCommand","keyword_code","from_token","keyword","int_or_id","is_unary_op","SUM_OP","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","CHARACTER","getCharLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","stepBack","parseActualParameters","funcName","getFunctionName","maybeToken","types","x","literalNames","size","Utils","elementID","disableMarginTop","cursorInterval","idleInterval","inputDiv","inputCMD","inputSpan","cursorRef","needInput","clearBtn","hideBtn","showBtn","termDiv","anyKey","actualID","parent","document","getElementById","setup","inputListeners","hideInput","pending_writes","last_clear","_setupDom","_setupEvents","addEventListener","bind","clearBtnClick","hideBtnClick","showBtnClick","event","keyCode","which","clearInterval","notifyListeners","_appendUserInput","innerHTML","currentLine","bashNode","createElement","classList","add","BASH_TEMPLATE","querySelector","INPUT_CARET_TEMPLATE","setAttribute","append","_setupCursor","window","$","popup","content","blinkCaretAndFocus","updateSpanText","stopBlinkCaret","focus","setInterval","style","visibility","scheduleNotify","forEach","splice","_appendTextLn","newLine","_appendText","USER","write_time","sleep","divClass","getClassForType","textDiv","insertBefore","getOutputText","scrollTerm","removeChild","INPUT","getUserInputText","scrollTop","scrollHeight","display","top","marginTop","showInput","isElementInViewport","scrollIntoView","removeEventListener","cNode","cloneNode","parentNode","replaceChild","click","promise","outputList","split","write","clearPendingWrites","parentElement","childNodes","firstChild","clear","hide","notifyIdle","idle_input_interval","Input","Output","runner","initVisualUI","addFunctionChangeListener","addGlobalChangeListener","removeFunctionListener","removeGlobalListener","getTestCases","i18nHelper","ActionTypes","getLogs","getLogsAsString","registerClick","registerUserEvent","parseLogs","prepareActivityToStudentHelper","prepareActivityToStudentHelperJSON","autoEval","setPreviousAlgorithm","openAssessmentDetail","processData","parseCode","CodeEditorAll","autoGenerateTestCaseOutput","generate","CodeEditor","initTextEditor","setCode","getCode","updateEditor","disable","Settings","programming","datatypes","i18n","generateCode","createInputFun","createOutputFun","createLengthFun","createLowercaseFun","createrCharAtFun","createSubstringFun","createUppercaseFun","createMatrixColumnsFun","createMatrixLinesFun","createNumElementsFun","createCastBoolFun","createCastIntFun","createCastRealFun","createCastStringFun","createIsBoolFun","createIsIntFun","createIsRealFun","createCastCharFun","createAbsFun","createCosFun","createInvertFun","createLogFun","createMaxFun","createMinFun","createNegateFun","createPowFun","createSinFun","createSqrtFun","createTanFun","createRandFun","valueToKey","object","prototype","hasOwnProperty","call","concatObjects","obj","libsObject","$mathLib","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$rand","$ioLib","$read","$write","$strLib","$substring","$length","$uppercase","$lowercase","$charAt","$arrayLib","$numElements","$matrixLines","$matrixColumns","$langLib","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$castChar","funcsObject","getCurrentLangFuncs","main_function","localName","names","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","RuntimeError","SemanticError","createRuntimeError","i18n_id","createSemanticError","ProcessorErrorFactory","symbol_not_found_full","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","unknown_command","incompatible_types_full","left_type","left_dim","right_type","right_dim","source_info","translateType","incompatible_types","incompatible_types_array_full","dim","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","if_condition_type_full","if_condition_type","invalid_global_var","not_implemented","invalid_case_type_full","invalid_case_type","void_in_expression_full","void_in_expression","invalid_array_access_full","invalid_array_access","invalid_matrix_access_full","invalid_matrix_access","matrix_column_outbounds_full","matrix_column_outbounds","matrix_line_outbounds_full","matrix_line_outbounds","vector_line_outbounds_full","vector_line_outbounds","vector_not_matrix_full","vector_not_matrix","function_no_return","invalid_void_return_full","invalid_void_return","invalid_return_type_full","invalid_return_type","invalid_parameters_size_full","invalid_parameters_size","invalid_parameter_type_full","fun_name","invalid_parameter_type","invalid_ref_full","invalid_ref","unexpected_break_command_full","unexpected_break_command","invalid_array_literal_type_full","invalid_array_literal_type","invalid_array_literal_line_full","invalid_array_literal_line","invalid_array_literal_column_full","invalid_array_literal_column","invalid_unary_op_full","opName","translateOp","invalid_unary_op","invalid_infix_op_full","typeLeft","dimLeft","typeRight","dimRight","invalid_infix_op","array_dimension_not_positive_full","array_dimension_not_positive","invalid_type_conversion","invalid_read_type","invalid_read_type_array","typePos","dimPos","typeArray","dimArray","invalid_const_ref_full","invalid_const_ref","invalid_const_assignment_full","var_id","invalid_const_assignment","invalid_vector_assignment_full","left_id","left_size","right_id","right_size","invalid_vector_assignment","invalid_matrix_assignment_full","left_line","left_column","right_line","right_column","invalid_matrix_assignment","matrix_to_vector_attr","vector_to_matrix_attr","invalid_matrix_index_assign_full","mat_id","mat_line","mat_size","exp_size","invalid_matrix_index_assign","invalid_number_elements_vector","expected_num","actual_num","invalid_number_lines_matrix","divsion_by_zero_full","divsion_by_zero","undefined_tanget_value","negative_log_value","invalid_string_index","local_fun_name","negative_sqrt_value","exceeded_recursive_calls","invalid_for_variable","invalid_for_from","invalid_for_to","invalid_for_pass","exceed_max_instructions","Store","Modes","Context","Operators","resultTypeAfterInfixOp","resultTypeAfterUnaryOp","Location","StoreValue","StoreValueRef","ArrayStoreValue","ArrayStoreValueRef","StoreValueAddress","ast","globalStore","stores","forceKill","mode","RUN","function_call_stack","instruction_count","function_call_count","RETURN","BREAK","prepareState","initGlobal","mainFunc","findMainFunction","runFunction","checkContext","executeCommands","MAIN_INTERNAL_ID","fun","funcStore","extendStore","associateParameters","variablesDeclarations","stoWithVars","finalSto","formal_params","effective_params","caller_store","callee_store","hasVariadic","j","formalParameter","associateVariadicParameter","actualParam","associateParameter","count","variadicCount","undefined","insertStore","actualParameter","callerStore","calleeStore","evaluateExpression","actualValue","shouldTypeCast","enable_type_casting","canImplicitTypeCast","inStore","realObj","getStoreObject","ref","values","get","array_type","addresses","getLocAddressOf","setReferenceDimension","locAddress","varID","realValue","doImplicitCasting","cmds","executeCommand","PAUSE","ABORT","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeRepeatUntil","executeWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","destroy","switchCases","lastStore","lastCaseCheckResult","ignoreSwitchCases","switchCase","isDefault","equalityInfixApp","EQ","initCmd","passValue","LT","GE","checkEndGTBegin","GT","isForward","increment","ADD","whileBlock","forAsWhile","newCmdList","checkCondition","isTrue","funcType","real_value","stringInfo","applyStore","exp_type_string_info","exp_type_info","updateStore","mustBeArray","used_dims","lineSV","columnSV","canAccept","innerType","current_value","getAt","updateStoreArray","executeArrayDeclaration","temp","linesSV","columnsSV","evaluateArrayLiteral","valueList","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateFunctionCall","max_call_stack","evaluateMatrix","storeValueMatrix","next","evaluateVector","exps","n_elements","actualValues","exp_str","newValue","vectors","vector","vec_type","isArray","readOnly","unaryApp","resultType","ord","SUB","NOT","negated","infixApp","shouldImplicitCast","stringInfoLeft","infoLeft","stringInfoRight","infoRight","MULT","DIV","MOD","LE","NEQ","AND","OR","rightStr","leftStr","strLeft","strRight","plus","minus","times","divToInt","div","leftValue","rightValue","trunc","modulo","charCodeAt","gt","gte","lt","lte","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","writeFunction","totalSV","total","sendOutput","readFunction","requestInput","typeToConvert","realObject","getReferenceDimension","arrayInfo","getRefObj","stoValue","MultiType","isRealFun","createParser","isIntFun","isBoolFun","castRealFun","typeStringInfoArray","typeInfo","castIntFun","floor","castBoolFun","castStringFun","castCharFun","valSV","String","fromCharCode","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","tan","sqrtFun","isNeg","reject","sqrt","powFun","y","pow","logFun","isNegative","log10","absFun","abs","negateFun","invertFun","dividedBy","maxFun","numbers","sto_addrs","paramType","minFun","seed","a","m","c","randFun","createSetSeedFun","setSeedFun","substringFun","start","end","lengthFun","uppercaseFun","toUpperCase","lowercaseFun","toLowerCase","charAtFun","idx","charAt","SemanticAnalyser","stringCode","semantic","parseTree","analyseTree","symbolMap","currentFunction","n","symbol_map","findSymbol","pushMap","assertDeclarations","f","assertFunction","assertDeclaration","assertArrayDeclaration","insertSymbol","evaluateExpressionType","result_string_info","result_info","lineType","columnType","finalResult","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","last","e","strInfo","strExp","arrayDeclaration","evaluateVectorLiteralType","line_literal","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","var_type","from_type","to_type","pass_type","sType","hasDefault","caseType","lineExp","columnExp","exp_type","access_type","compatible","access_type_string_info","access_type_info","getMainFunction","actualParametersList","parameterList","assertVariadicParameter","param","assertParameter","expType","variable","shared","editor","JsonEditor","analiser","semAna","proc","load","alert","identifier","opts","UI","warn","Langs","IVProgLocalizedStrings","langService","langsJsons","shouldListenToChange","type_string","category","_instance","clicks","inRebuildMode","INSERT_FUNCTION","REMOVE_FUNCTION","INSERT_GLOBAL_VAR","REMOVE_GLOBAL_VAR","RENAME_FUNCTION","RENAME_GLOBAL_VAR","SET_GLOBAL_CONST","CHANGE_FUNCTION_RETURN","CHANGE_GLOBAL_TYPE","CHANGE_GLOBAL_VALUE","INSERT_FUNCTION_PARAM","REMOVE_FUNCTION_PARAM","CHANGE_PARAM_TYPE","RENAME_FUNCTION_PARAM","INSERT_FUNCTION_VAR","REMOVE_FUNCTION_VAR","RENAME_FUNCTION_VAR","CHANGE_VAR_TYPE","CHANGE_VAR_VALUE","INSERT_COMMAND","REMOVE_COMMAND","CHANGE_COMMAND_EXP","CHANGE_ATTRIB_EXP","CHANGE_ATTRIB_VAR","MOVE_COMMAND","ENTER_CHANGE_VAR_NAME","ENTER_CHANGE_VAR_VALUE","ENTER_CHANGE_GLOBAL_NAME","ENTER_CHANGE_GLOBAL_VALUE","ENTER_CHANGE_PARAM_NAME","details","registerEvent","registerSystemEvent","tag","setRebuildMode","logData","bool","InputTest","program_text","copyTestCases","assign","analyseFromSource","resultList","exec","result_final","inputList","showAlert","outputGenerated","Models","VariableValueMenuManagement","CodeParser","parseBoolean","var_value","final_array","el","row","parseGlobal","global_obj","new_global","Variable","is_constant","is_const","dimension","rows","program_obj","addGlobal","parseParameter","parameter_obj","new_parameter","function_obj","new_function","return_type","return_dimensions","is_main","parameters_list","variables_list","addFunction","parserCodeVisual","code_obj","conteudo","globals","preparedFunction","rawFunction","parseCommands","commands_block","COMMAND_TYPES","reader","parseReader","writer","parseWriter","comment","parseComment","attribution","parseAttribution","functioncall","parseFunctionCall","iftrue","parseIfTrue","repeatNtimes","parseRepeatNTimes","whiletrue","parseWhileTrue","dowhiletrue","parseDoWhileTrue","parseSwitch","expressionParserCodeVisual","Reader","Writer","Attribution","Comment","parameters","function_called","searchFunction","VariableValueMenu","VAR_OR_VALUE_TYPES","only_function","ifTrueBlock","ifFalseBlock","IfTrue","var_attribution","expression1","var_initial","expression2","item","var_step","step_expression","operator","ARITHMETIC_TYPES","expression3","ExpressionElement","EXPRESSION_ELEMENTS","exp_op_exp","RepeatNTimes","only_variable","WhileTrue","DoWhileTrue","sc","case_el","temp_exp","temp_commands","temp_case","SwitchCase","folderInput","header","generateSubCode","algorithmInIlm","ivprogCore","prepareData","submission","exercID","studentID","exercMap","has","Map","set","download","getExercHeader","props","acc","prop","file","encodeURIComponent","appendChild","files","folderName","webkitRelativePath","csvEntries","slice","vec","blockExercMap","getFilePath","path","counter","studentsMap","submissions","sort","b","parseInt","array","student","parseFloat","previousCode","previousFile","previous","getOrElse","currentFile","current","currentCode","logs","ratio","csv","firstLine","getCodeEditorModeConfig","CodeEditorMode","CodeMirror","indented","align","pushContext","state","indent","popContext","typeBefore","prevToken","string","typeAtEndOfLine","indentation","isTopScope","contains","words","word","propertyIsEnumerable","tokenComment","maybeEnd","ch","tokenize","defineMode","config","parserConfig","indentUnit","statementIndentUnit","dontAlignCalls","keywords","switchKeyword","caseKeyword","defaultKeyword","caseRegex","builtin","blockKeywords","defKeywords","atoms","hooks","multiLineStrings","indentStatements","namespaceSeparator","isPunctuationChar","numberStart","number","isOperatorChar","isIdentifierChar","isReservedIdentifier","curPunc","isDefKeyword","tokenString","tokenBase","backUp","eat","skipToEnd","eatWhile","cur","quote","escaped","maybeEOL","typeFirstDefinitions","eol","startState","basecolumn","startOfLine","ctx","sol","eatSpace","styleDefs","textAfter","Pass","firstChar","closing","dontIndentStatements","hook","switchBlock","allmanIndentation","caseTestRegex","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","codeConfig","ivprogKeywords","basicTypes","ivprogTypes","ivprogBlockKeywords","blocks","ivprogDefKeywords","def","mimes","helperType","registerHelper","defineMIME","switchString","case_default","modeProps","setTestCases","TestConsole","Maybe","parseActivityData","ignore_logs","algorithm_in_ilm","none","configAuxiliar","obj_config","keys","setActivityConfig","config_json","activity_commands","activity_functions","activity_datatypes","activity_filter","activity_programming_type","code","showInvalidData","ilm_cont","test_cases","settings","algorithm","maybe_content","testcases","prog_type","settings_programming_type","settingsProgrammingType","settingsDataTypes","settings_data_types","settingsCommands","settings_commands","settingsFunctions","settings_functions","settingsFilter","settings_filter","compareArray","elementA","elementB","compareTestcases","original","elementO","elementS","originalData","callback","con","autoAssessment","runTest","TYPES","VARIABLE","CONST","RELATIONAL","LOGIC","ARITHMETIC","getOpType","switchCaseWalker","commandWalker","expressionWalker","switchWalker","switchCommand","returnWalker","breakWalker","forWalker","forLoop","whileWalker","whileLoop","testFirst","ifThenElseWalker","ifthenelse","assignmentWalker","assingment","arrayClass","instance","functionCallWalker","functionCall","lastInput","functionWalker","funcDeclaration","functionParameterWalker","variableDeclarationWalker","variableInitialWalker","opType","funcObj","paramsList","opValue","expressionAST","codeLinesMap","tokens","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","_fix_unicode","editdiff","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","unshift","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","delta","front","k1start","k1end","k2start","k2end","d","k1","k1_offset","x1","y1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","pointerend","is_surrogate_pair_end","diff_halfMatchI_","best_common","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","prefixLength","suffixLength","hm1","hm2","fix_unicode","pointer","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","k","starts_with_pair_end","changes","charCode","remove_empty_tuples","tuples","ret","make_edit_splice","before","oldMiddle","newMiddle","after","oldText","newText","oldRange","newRange","oldLength","newLength","oldCursor","oldBefore","oldAfter","maybeNewCursor","editBefore","newCursor","newBefore","newAfter","oldPrefix","newPrefix","editAfter","cursor","oldSuffix","newSuffix","replaceRange","_type","scrollIt","destination","duration","easing","easings","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","pageYOffset","startTime","performance","getTime","documentHeight","body","offsetHeight","documentElement","clientHeight","windowHeight","innerHeight","getElementsByTagName","destinationOffset","offsetTop","destinationOffsetToScroll","round","scroll","timeFunction","requestAnimationFrame","rect","getBoundingClientRect","bottom","innerWidth","clientWidth","cacheMainList","cacheOp","fillCache","mainList","logicOpList","lOp","isKeyword","isValidIdentifier","identifier_str","validRegex","blockList","keywordsList","typeList","atomList","win","preventDefault","page_code","currentTarget","dataset","close","open","range","startAt","ms","res","setTimeout","GlobalsManagement","FunctionsManagement","block_render","renderAlgorithm","draging","children","off","empty","renderFunction","renderGlobal","blockAllEditingOptions","delay","show","remove","globalsCode","has_error","n_code","functionsCode","TEXT","parametersCode","variablesCode","commandsCode","command_obj","breaksCode","commentsCode","readersCode","writersCode","functioncallsCode","attributionsCode","whiletruesCode","doWhilesCode","iftruesCode","repeatNtimesCode","switchsCode","returnsCode","variable_value_menu","elementExpressionCode","_command_obj","variableValueMenuCode","switchcasesCode","switchcase","repeatNtimesHeader","itens","renderErrorMessage","dom_object","commands_else","logicExpressionCode","first_operand","EXPRESSION_TYPES","exp_logic","exp_arithmetic","arithmeticExpressionCode","LOGIC_COMPARISON","equals_to","not_equals_to","second_operand","ARITHMETIC_COMPARISON","greater_than","less_than","greater_than_or_equals_to","less_than_or_equals_to","expression_obj","type_op","multiplication","division","module","write_sep","variable_obj","is_return","translateInternalFunction","reference_dimensions","isBackslash","newline","comment_text","CommentsManagement","ReadersManagement","WritersManagement","AttributionsManagement","IftruesManagement","RepeatNtimesManagement","WhiletruesManagement","DowhiletruesManagement","SwitchesManagement","FunctioncallsManagement","BreaksManagement","ReturnsManagement","removeCommand","dom_obj","function_container_active","createFloatingCommand","function_container","command_type","mouse_event","floatingObject","draggable","appendTo","mouseup","evt","manageCommand","hasClass","originalEvent","srcElement","closest","on","addGhostDiv","elementFromPoint","clientX","clientY","ghostDiv","css","target","pageX","divx","pageY","trigger","active_container","addGhostToEmptyBlock","container","addGhostToNotEmptyBlock","is","containerIf","containerElse","topIfDistance","bottomIfDistance","height","topElseDistance","bottomElseDistance","addGhostToFunctionArea","allfilhos","topDistances","bottomDistances","topD","botD","menorTop","apply","indiceTop","menorBot","indiceBot","insertAfter","undermouse","borderMouseDragCommand","each","removeClass","objLeft","objTop","objRight","width","objBottom","addClass","renderCommand","element_reference","before_after_inside","createdElement","genericCreateCommand","only_value","variable_and_function","dragTrash","trash","fadeIn","fadeOut","findSingleElement","searching","query","findPathRecursive","starter_index","hierarquia_bottom_up","index_command","full_path","hier","parentsUntil","esta_correto","esta_na_div_correta","new_cmd","findNearbyCommandToAddInFunctionScope","hier_find","is_correct_context","sub_elemento","findBeforeOrAfterCommandToAdd","insertCommandInBlockHierar","all_str_path","hier_dom","hier_obj","el_jq","command_parent","recentComand","findNearbyCommandToAddInBlockScope","addCommandToSwitchCase","findBeforeOrAfterCommandToAddInsertBlock","node_list_commands","all_sub","menor_distancia","elemento_menor_distancia","antes","t_bot","t_top","borda_inferior","command_target","temp_parent","is_in_else","d_top","d_bot","findInBlockCorrectPlace","insertCommandInBlock","correct_div","is_in_if","which_case","case_div","findInBlockCorrectPlaceInSwitchCase","CommandsManagement","ExpressionManagement","CodeGenerator","renderMenu","addHandlers","renderExpression","lockexpression","toggle","toggleClass","manageExpressionElements","ref_object","menu_var_or_value","selectedItem","expression_element","index_to_move","op_exp","par_exp_par","renderExpressionElements","expression_div","command_container","renderElement","renderOperator","temp_op","index_op","context_menu","dropdown","onChange","$selectedItem","renderMenuAddExpression","dom_append_menu","expression_append_new_expression","type_exp","temp_exp_1","temp_exp_2","temp_par_1","temp_par_2","menu_add_item","menu_add_item_seq","index_temp","addMenuItens","divs_expression","attribution_dom","expressionEdition","inputExpression","afterWhichElement","lockButton","editButton","ex","ok_button","cancel_button","focusout","keyup","parsed","expressionParserToVisual","mousedown","len","setSelectionRange","renderMenuOperations","variable_selected","createExpressionAround","break_dom","renderTextComment","comment_dom","initial_el_to_render","renderStartMenu","main_div","renderLogicExpression","renderArithmeticExpression","restartMenu","renderArithmeticOperator","all_expression","expression_arithmetic","arithmetic_operator","element_to_append","menu_operator","selected","renderLogicOperator","expression_logic","logic_operator","exp_el_par_1","exp_el_expr_el_1","exp_el_expr_operand","exp_el_expr_el_2","exp_el_par_2","start_menu","LogicExpression","ArithmeticExpression","html","selectOnKeydown","SwitchManagement","dom_where_render","dom_command","menu_div","collapsed","addCaseToSwitch","renderCase","ConditionalExpressionManagement","ContextualizedMenu","GenericExpressionManagement","dowhiletrue_dom","functioncall_dom","WatchJS","timer","div_to_render","expression_array","unwatch","watch","s","types_included","exp_conditional","renderElements","open_or_close","lixeira","posX","posY","Sortable","create","animation","ghostClass","group","put","onStart","onMove","onEnd","onAdd","removeElement","indice","first","opening","div_temp","renderFinalAddElements","renderParenthesis","renderStartAddOperator","renderOperatorMenu","renderAddParenthesis","parentheses_activate","addParentheses","actual_target","renderGhostParentheses","floating","comando_que_esta","comando_certo","open_parentheses","close_parentheses","inserir_open","inserir_close","evts","is_correct","index_in_array","count_opened","count_closed","expression_content","position","ghost_parenthesis","menu_final","getArithmeticOperators","getLogicOperators","getRelationalOperators","div_higher","sera","ExpressionOperator","is_last","button","getSeparator","_value","_text","arithmetic_operators","logic_operators","relational_operators","getVariable","search","variavel","system_functions","input_field","var_not_found","fun_not_found","funcao","uniqueWords","Set","exp_obj","function_name","iftrue_dom","reader_dom","togglePasso","var_incrementation","cond_exp","manageClearExpressionElements","repeatNtimes_dom","return_dom","casediv","switch_dom","AttribuitionsManagement","RepeatNTimesManagement","variable_and_value_opt","value_and_function","size_field","index_references","variable_and_value","reference_parent","inputWidth","textWidth","addVariablesToMenu","addFunctionsToMenu","addIVProgFunctionsToMenu","variable_fun","isVarInProgram","renderPreviousContent","appendSelectText","ret_function","isFunctionInProgram","function_called_obj","var_obj","var_fun","parameters_menu","variable_render","openInputToValue","sub_menu","SYSTEM_FUNCTIONS_CATEGORIES","math","arrangement","conversion","is_there","include_constant","openInputToFunction","openInputToVariable","tmpStr","function_selected","field","rendered","fn","font","fakeEl","attr","whiletrue_dom","addHandlersManager","_function_obj","_writer_dom","item_div","content_element","writer_dom","handle","random","newIndex","oldIndex","replaceWith","newlineBtn","setPopup","_addHandlerIconAdd","insert_after","after_which","icon_add_item","_event","div_parent_with_handler","new_div_item","new_related_menu","addHandlerIconAdd","addContent","_ref_object","_menu_var_or_value","_ref_object_content","VariablesManagement","CodeManagement","AlgorithmManagement","VersionInfo","TextEditor","counter_new_functions","counter_new_parameters","ivprog_version","version","globalChangeListeners","functionsChangeListeners","_testCases","isRunning","studentGrade","Program","SystemFunction","mainFunction","function_comment","generator","runCodeAssessment","insertContext","watchW","addFunctionHandler","in_use","temp_name","addParameter","renderParameter","updateReturnType","new_type","new_dimensions","removeFunction","minimizeFunction","is_hidden","enableNameFunctionUpdate","addVariable","slideToggle","renderFunctionReturn","function_element","tm","cont","appender","renderVariable","function_index","updateSequenceLocals","addSortableHandler","updateSequenceParameters","teste","sticky","scrollContext","observeChanges","onStick","onBottom","onUnstick","onReposition","onScroll","isVisible","onTop","elementTop","elementHeight","containerTop","containerHeight","evento_drag","updateProgramObjDrag","nodes","start_index","path_target","index_each","path_relative","indice_na_raiz","is_in_case_switch","command_start_point","block_to_insert","command_in_drag","prepareDragHandler","id_function","n_group","itemEl","to","showStopButton","runCode","downloadFile","change","uploadFile","showRunButton","stopExecution","toggleVisualCoding","toggleTextualCoding","is_iassign","toggleConsole","full_screen","time_show","listWithHandle","updateSequenceFunction","listGlobalsHandle","updateSequenceGlobals","strCode","settingsProgrammingTypes","getEvaluationCallback","scheduleCall","is_running","removeParameter","parameter_container","updateParameterType","__","enableNameParameterUpdate","checked","updateParameterName","parameter_var","new_name","parameter_obj_dom","variableNameAlreadyExists","name_var","updateFunctionName","function_var","function_obj_dom","functionNameAlreadyExists","opened_name_parameter","opened_input_parameter","parent_node","select","opened_name_function","opened_input","previousPadding","scheduled_call","cancelPendingInputRequests","contentToSend","date","toISOString","toTimeString","replaceAll","blob","Blob","saveAs","oFReader","FileReader","readAsText","onload","oFREvent","txt","prepareActivityToStudent","counter_new_globals","is_from_click","newe","toggleConstant","global_var","updateName","global_obj_dom","globalNameAlreadyExists","global_name","updateType","updateInitialValues","removeGlobal","global_container","alternateBooleanGlobalValue","value_container","alternateBooleanGlobalVectorValue","removeGlobalColumnVector","addGlobalColumnVector","removeColumnGlobalMatrix","addColumnGlobalMatrix","removeLineGlobalMatrix","addLineGlobalMatrix","n_l","alternateBooleanGlobalMatrixValue","renderValues","enableGlobalValueUpdate","enableGlobalVectorValueUpdate","enableGlobalMatrixValueUpdate","updateColumnsAndRowsText","enableNameUpdate","ff","complete_element","opened_name_value_matrix_global_v","opened_input_value_matrix_global_v","opened_name_value_global_var","opened_input_value_global_ar","changed","opened_name_global","opened_input_global","input_name","opened_name_value_vector_global_","opened_input_value_vector_global_","start_point","ConditionalExpression","has_neg","FunctionCallMenu","function_to_add","function_to_receive","codeEditor","fromTextArea","theme","lineNumbers","matchBrackets","autoCloseBrackets","fixedGutter","styleActiveLine","setOption","refresh","setValue","getValue","dom_obj_target","message_text","transition","closable","movePopup","boundary","preserve","className","onHidden","$module","counter_new_variables","is_in_click","new_var","variable_obj_dom","removeVariable","variable_container","function_associated","variable_var","alternateBooleanValue","enableValueUpdate","alternateBooleanVectorValue","enableVectorValueUpdate","removeColumnVector","addColumnVector","removeColumnMatrix","addColumnMatrix","removeLineMatrix","addLineMatrix","alternateBooleanMatrixValue","enableMatrixValueUpdate"],"sourceRoot":""}