From d33e5ac32f596f2de13ff8d89b2b3986553fa4e6 Mon Sep 17 00:00:00 2001 From: JumperBot_ Date: Fri, 25 Nov 2022 13:30:47 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20v1.4.1=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/UFB.jar | Bin 27288 -> 31244 bytes build/UFB/Command$1.class | Bin 0 -> 1938 bytes build/UFB/Command$2.class | Bin 0 -> 946 bytes build/UFB/Command.class | Bin 0 -> 6588 bytes build/UFB/Runner$1.class | Bin 1299 -> 1299 bytes build/UFB/Runner.class | Bin 13860 -> 13707 bytes build/UFB/UFB.class | Bin 3455 -> 3455 bytes build/UFB/UFBC$1.class | Bin 1219 -> 1219 bytes build/UFB/UFBC$2.class | Bin 927 -> 931 bytes build/UFB/UFBC.class | Bin 10318 -> 8333 bytes build/build.sh | 6 +- src/UFB/Command.java | 235 ++++++++++++++++++++++++++++++++++++++ src/UFB/Runner.java | 31 ++--- src/UFB/UFB.java | 2 +- src/UFB/UFBC.java | 175 ++++------------------------ 15 files changed, 280 insertions(+), 169 deletions(-) create mode 100644 build/UFB/Command$1.class create mode 100644 build/UFB/Command$2.class create mode 100644 build/UFB/Command.class create mode 100644 src/UFB/Command.java diff --git a/build/UFB.jar b/build/UFB.jar index 27594bdcc5cfa2021dbe37d35e6421f89198cc62..7e33636e01c63187e91229814c7b2f77b57a8c77 100644 GIT binary patch delta 21779 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%0DS=XE)jR{6$C&!Z?DPuNEx={ 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 Y6$mj8<~UY1kTfq4G6RRr>(fCz0Cl+cw*UYD diff --git a/build/UFB/Command$1.class b/build/UFB/Command$1.class new file mode 100644 index 0000000000000000000000000000000000000000..104874a47a5685843a75c4249a28f5576702a295 GIT binary patch literal 1938 zcmbVN-%}e^6#g#R%_hqh0wIMM@dqLel;0{Bx+u zFa8HUwNIUnGktcfk#WY1kB$#MIKKGqAJGQ~Ja@B&AUv5#?!9~NcfWJKbMBt}cKA~b zz!lhGbm6j$I0j`TF%+g@SjGrO`D%<0<1*gCyAs}$5yk|!T;Z$tWqg212~#qrag`sQ z;pPuze1usUEtm@-#pjQ?d7iHpBwUk_mT;XR=$3S+ca$NVNm=ExY8Ix*IIWwyJHwzP zkFEXd3_{8(Xbi0x-PBep<(y{UQga4b0(QluG08y}vaXunT~_zJJqb$;a@MNYd2K=G zSjG10?oQM z1tB4)Adi9q4ciKeC`r&2>|j@cfieRdRbawWu!jfSRHD@Rih9RLUD`A?J7uVjqdBMe zS93dB-eqV%ae1?1n)L)mw=yT@dL&c_$tR{&-YV~T>67y%Ex(&mJ^G+#+m=m!;%AP} zRdl1E*~HTMUuJ)c>TGCc(Io{`xism>>85J$Q|TC@b;63P8zYOVQz9c#2?kaEWr7>` zh@z;GxV~gVAa%u4{bx;7T-|inRii>|Azxd8A=cn^*0$CCjPAHR5f3?Zb(`U0GTq4M z*OwqsPo)>r@kxqGEpXcNqS`!Fo$S8jYE<5^%H8Izy?us(bB?9YiboyKNrRcc$!tI5*6umq2POgy(x|j~;=)EE68;u{CL%3Q@w<<%iG`oh zvg|(zgMq=?0a^!FhH4W+U_y+EG2tothGOFQr0<}aW8=XpB0lTaB71i97q|K>{!|kR z6iQ^K`v7eb0=G{JaUl>1RS}&O<6?V96|u*N)zQrXpY0hseM?*v4{*^pzqASbd}qVP zGx+)?@^_Au#3O`B@e@RS3NFyg#{Uq>i`3*5X@`mnT%)2aq629R<2tTliB=hGP|x0` z?)(Kc=Wl3!gf)DR8>mr}{uNpLL4EpfYSS;U!P;<#bx@=3!6qBS7MsFdwuF03#eMcU z&0j*rTb`%z5iA5HbTJ9N^ksBQUZDSw{<$Qy&^LNSSFMQyfPc_Okk&(lJmeAjL8vYw c67aSsq7Rq6rzC9+c$Oqdp&Lmzj^pU_FL8gzy#N3J literal 0 HcmV?d00001 diff --git a/build/UFB/Command$2.class b/build/UFB/Command$2.class new file mode 100644 index 0000000000000000000000000000000000000000..9d810f63bb8af617b90d55ee8b9d5acf2ef670ce GIT binary patch literal 946 zcmZWnOH(=ww`_Z7eBmTJxwYSMp2T zxOU-VoRJ^k_%C#aSMIro0~{pkR}BG!}0;&KXO$SauUC~(Yh z%yL}enBypN%yV4jSm3zEah>A^$4!n!jwOy;DJ-Luq6{kvZY#LMknnabcWRy?xmoG7 z+lE~)k#WVcEw9X==KoozA2Z06PTgckZ(6pw?YFC@^T?>S$TFyTMs07)=!X9a?kc!P zDK)EM8=miw$MR;==ov-dvs%Sa%Rvp4l*+QknFmw2tr8 z%rz^hrA9jEf`lYy)vmQVE=6yd-fpMPz_(4;Tkp7@ijz2{VjTAwGGY0?TGY*pp5YML z$3zO+43bf&6q4EO^)ux|B&b&y(iLXzxGmm$_9|5%e;VolN|HEqIpmm2W`Pt&L? zsHk{=RTXP^Nb`u4Pc2Xv8@6pam6qYUrpqw=-*gz1$em&2Y2RR?QBlEsa3;r*VPnzA zD6(g?d~@d+LpHxL-52|Js1)4wN##<$Z*!;GG;3b}8AO);43PTO#E!5BSwU98gn~(G>KFAH$GI@ad0Ys2 X3KxlGOb}iQEfXjcr>OfZF+G0(so>I^ literal 0 HcmV?d00001 diff --git a/build/UFB/Command.class b/build/UFB/Command.class new file mode 100644 index 0000000000000000000000000000000000000000..d90535acb6fc5ed1651d5dbc794547999f15d015 GIT binary patch literal 6588 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 G0QeUoU`*;WzA`=9ULBom1J{rda87o7X; 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 T#jvy`AguBA_^xq-O7Hq#>g9gg diff --git a/build/UFB/UFB.class b/build/UFB/UFB.class index fbfcc342b290baa4b02b39a75b9d8eebf85e7b96..023cd1937d4d0610959a95371c27e5e81cbf4372 100644 GIT binary patch delta 14 Wcmew_^10pkF@0xkf) L0zCk~laB;6#QzYW delta 53 zcmV-50LuTv3Bw7nW&|nG00{un08aqZ0GR;P0OSDG0WSd70eS$}0hj>T0pkGK0xkgB L0zClRlaB;6;}a3o diff --git a/build/UFB/UFBC$2.class b/build/UFB/UFBC$2.class index eb8b50b9c4481e78f52de3f981afd911b7c42329..2468146cae7a74c29b8c8ca196244ca8511fe7f7 100644 GIT binary patch delta 161 zcmbQwzL oQi_2MNM2^(WVphR$#9#Ykl_wPEs$3s&mm7i7OboI> zQi_3%fq~JNfs@gXA(Jtbp^!0*p%zHDGDa}S0p-OQnEo?lGqA8Th_N%svok0#GBEsP Kker;)YytpR-YggZ diff --git a/build/UFB/UFBC.class b/build/UFB/UFBC.class index eec8cb52290927209efb444359b376e276bc093c..441fc4b665de2acdac9fb33522749720b75d2c40 100644 GIT binary patch literal 8333 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 ODe4sH5Shkb;C}%}=wc=S literal 10318 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

_Mqkt>Ncc&KPvoT zvQy(qcNSIdjR!EBN~=~t%|_EUW>LeT%`fOxvdkfqHqupHO1e8U^zjTl^7-sii1{>0UA^I7K+BD(FY+(6Tc7_FyB*`MGlSmxvB9y2 z>c+Y2iUY-gaeG{cf@1^4we=;6W3VKPlk3M16Y>Yg*G~veI8;~at_$#2x(8js34uUu z{lwrze|;8<263j-TRey*;ow9qI5CSQT4xsJSv1s73QjsyH`!em3K-$)BP(HU?m^n;Djt%*lEki zm$kZ5o75_j9mF`!(b%gwv&{ydV}qvw#YY^~x1wTENbu2bCHIa4?m_6JG_ag^oS zprOQ~rxZ)(-9~k?)(_&OFJgoL0`B8N?&Aa8hkqk?p(e|?5kj(vw9&tdZS3$d*qey$ zOy}Y6t#nuVJF@7cFFyVynK+DQ4B-sX z7*=&G6BB1kF;16Ktd!|!ky%(J)mSZcI7b?At~8=m)?(hl^YXk#s$cl9tadLxr`?D9w1;s&zD_&cjM?uZsAH_oz;>pN&=88?)$xGNJm!E21iK;QEx3*# zzzH2b9giP|pU=0k>20`{>X<7-=tfEYQU|fgCNtk&#C1N>Y7%DZA?D4A|1P@Cm6S*( zw|Ft8{AY_DQc8k1G1c`p^f%!-j06cEMo`LT9>!F88&h0|G1G1v0*B#ZZ<=f3^eID3 z;{S_1l62*qAxuN@zacA0H!4lfHH#lhOY-&7EG!9J#NmDnFY)MC;gr z4j1D%_CL=+_aN)SFJKmn+xh$mvWj0W&SN>dj-M+wux#yMc-zck_8Jzm_pp5s2Z`|r zp@;bIQNGpv8otLP`BOZOxA6@b&(GVF@PtgmQ*t7{C1E@*E%>%rY`5@3$3-?a%Uz5e z!er=*4#p*?uLD!}65Vpa06Knw@Hs-U?fiviX1 ze~?*p7mDrvrFKRg%i7X=NL5=7#)s?#eTi152Ux9gVh^S$lz?7)0GAOfplcg%sM9k; zFR%ht2nw#S58%TkC9GGKm%2-st_JeUrr}euSh{g0x~N=PxmJ2f(iwWq*xv zc#fuf9y9P8-W^_GDtr-Z@Dh{b%k-63unn(bC);cA8k6Mf$l$m1tl!ade$V*uM|!}Y zNa4?1`4{{Ff2H62g-P;x@!@ae{G62I?<&aC4~vgrs*beI|BY}M3mNK)4r3f+TIh)F zFbvdlR;jLa;|DmbC3L*;>0Rk1~1(PXs9}XD@yUP z8}GoBaAmGyx{3u(m8#M{uF9nhrnZbsT|GSY2{pBs)POR~94;*|g>+Ty9)q_~CN9pr z%Tsp*OT=yO)_}WA<)cZIh97$hOY_MaZ!09twf~tk;>8%AyD}+Z&KQGPEK!#51S{R= zOT*7lIccutaZ!b9kh~JWNivbu(qt@Wd$vqr)ili(%?D3OQIWF! zEUx1BvYc==JoPS8npAlJpQfAF_;2>l%i(ud=Zxe zPgNb#_n<{pr2bpgb>%ik+$suBffeL-kG+8^jpe#lIV{0$hm-%VVL*;`m3LT}Hg)fJR9b6i-ZHB6L{qua!zXC{_HjJ)2RuI_CkdcW}--{7*tI^?f9#-QqR(G z5lmTvX)NPwKdbEo z29ztA{TT{7HH**sKS#IYeJbZ)%IN-iDnI1;^hBFoXrEYoZ8~|${h8R zI8q0sm>QZyjj`mpFN^!t>B~PD>!{LS66RvK|211LdjY=9QpTIYLlR)CekD#LFUl+O Q5=+q2I5r@>$A~QbA7S_uIRF3v diff --git a/build/build.sh b/build/build.sh index 492e83d..5b5400b 100644 --- a/build/build.sh +++ b/build/build.sh @@ -4,8 +4,4 @@ echo "javac ../../src/UFB/*.java -d . -Xdiags:verbose" javac ../../src/UFB/*.java -d . -Xdiags:verbose echo "jar --create --file=../UFB.jar --main-class=UFB *.class" jar --create --file=../UFB.jar --main-class=UFB *.class -cd .. - -# Copy build/README.md to src/README.md -echo "cp README.md ../src/README.md" -cp README.md ../src/README.md +cd .. \ No newline at end of file diff --git a/src/UFB/Command.java b/src/UFB/Command.java new file mode 100644 index 0000000..00581a7 --- /dev/null +++ b/src/UFB/Command.java @@ -0,0 +1,235 @@ +/** + * + * Unsafe Four Bit is a compiled-interpreted, dynamically-typed programming language. + * Copyright (C) 2022 JumperBot_ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * +**/ + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +import java.util.concurrent.ExecutorService; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +class Command{ + final ArrayList compiled=new ArrayList<>(); + final StringBuilder errors=new StringBuilder(); + final ExecutorService executor; + final HashMap binaryMap; + final Pattern jumps; + final Pattern maths; + final Pattern pwvar; + final Pattern unicode; + final String[] line; + final String[] realLine; + boolean cancelOptimization=false; + public boolean cancelOptimization(){ + return cancelOptimization; + } + public int[] getCompiled()throws Exception{ + final int[] returnMe=new int[compiled.size()]; + for(int i=0;i binaryMap){ + this.line=line; + this.realLine=realLine; + this.executor=executor; + this.binaryMap=binaryMap; + this.jumps=jumps; + this.maths=maths; + this.pwvar=pwvar; + this.unicode=unicode; + this.line[0]=this.line[0].toLowerCase(); + } + private void compile(){ + executor.execute(new Runnable(){ + public void run(){ + checkCases(); + if(errors.length()==0){ + final int index=binaryMap.get(line[0]); + compiled.add(index); + if(index>9&&index<14){ + final String[] args=new String[line.length-2]; + System.arraycopy(line, 1, args, 0, args.length); + for(final String s:args) + compiled.add(toIntAbsolute(s)); + final int lineNo=toIntAbsolute(line[line.length-1]); + final String bin=UFBC.manPadding(Integer.toBinaryString(lineNo), 16); + final String bin1=bin.substring(0, 8); + if(!bin1.contains("0")) + compiled.add(0); + else + compiled.add(Integer.parseInt(bin1, 2)); + compiled.add(Integer.parseInt(bin.substring(8), 2)); + }else{ + final String[] args=new String[line.length-1]; + System.arraycopy(line, 1, args, 0, args.length); + if(index==0||index==14) + compiled.add(args.length); + for(final String s:args) + compiled.add(toIntAbsolute(s)); + } + } + } + }); + } + private void checkCases(){ + boolean isCommand=true; + if(line[0].equals("trim")) + checkLength(line, 3); + else if(line[0].equals("nvar")){ + if(!checkLength(line, 2)) + checkIfMemSafe(line, line[1]); + }else if(line[0].equals("read")){ + if(!checkLength(line, 2)){ + checkIfMemSafe(line, line[1]); + cancelOptimization=true; + } + }else if(jumps.matcher(line[0]).matches()){ + if(!checkLength(line, 4)) + for(byte i=1;i<3;i++)checkIfMem(line, line[i]); + }else if(maths.matcher(line[0]).matches()){ + if(!checkLength(line, 3)){ + checkIfMemSafe(line, line[1]); + for(byte i=1;i<3;i++)checkIfMem(line, line[i]); + } + }else if(pwvar.matcher(line[0]).matches()){ + if(line.length>256) + error( + realLine, "Command", line[0], + "Has Too Many Arguments", + lineGen(line) + ); + else{ + if(line[0].startsWith("w")) + checkIfMemSafe(line, line[1]); + for(short i=2;i255) + error( + line, "Memory Index", s, + "Is Larger Than 255 And Will Not Point To Memory" + ); + }catch(final Exception e){ + error( + line, "Memory Index Expected Instead Of", s, + "Should Be Replaced With A Memory Index" + ); + } + } + private void checkIfMemSafe(final String[] line, final String s){ + try{ + if(Long.parseLong(s)<38) + error( + line, "Memory Index", s, + "Endangers A Read-Only Memory Index" + ); + }catch(final Exception e){ + error( + line, "Memory Index Expected Instead Of", s, + "Should Be Replaced With A Memory Index" + ); + } + } + // false if error is not thrown. Misleading eh? + private boolean checkLength(final String[] line, final int length){ + if(line.length!=length){ + final String num=(length<1)?"Zero":(length==1)?"One":(length==2)?"Two":"Three"; + error( + line, "Command", line[0], + String.format("Needs No Less And No More Than %s Argument To Work", num) + ); + return true; + } + return false; + } + private String lineGen(final String[]line){ + return Arrays.toString(line).substring(1).replace(", ", " ").replace("]", "\n\n"); + } + private void error(final String[] line, final String... in){ + if(in.length<4) + errors.append("Error: |\n") + .append(String.format(" %s: |\n", in[0])) + .append(String.format(" \"%s\" %s: |\n", in[1], in[2])) + .append(String.format(" %s", lineGen(line))); + else + errors.append("Error: |\n") + .append(String.format(" %s: |\n", in[0])) + .append(String.format(" \"%s\" %s: |\n", in[1], in[2])) + .append(String.format(" %s", convertUnicode(lineGen(line).replace("\n\n", "\n")))) + .append(String.format(" %s: |\n", "Which Is When Converted")) + .append(String.format(" %s", in[3])); + } + private String convertUnicode(final String in){ + if(in.length()<2)return in; + String line=in; + try{ + for(final Matcher m=unicode.matcher(line);m.find();m.reset(line)){ + line=new StringBuilder(line.substring(0, m.start())) + .append((char)toIntAbsolute( + line.substring(m.start()+2, m.end()).toCharArray() + )) + .append(line.substring(m.end())).toString(); + } + }catch(final Exception e){} + return line; + } + public static Command create(final String[] line, final String[] realLine, final ExecutorService executor, + final Pattern jumps, final Pattern maths, final Pattern pwvar, final Pattern unicode, + final HashMap binaryMap){ + final Command com=new Command(line, realLine, executor, jumps, maths, pwvar, unicode, binaryMap); + com.compile(); + return com; + } +} \ No newline at end of file diff --git a/src/UFB/Runner.java b/src/UFB/Runner.java index f2b8857..9d13d85 100644 --- a/src/UFB/Runner.java +++ b/src/UFB/Runner.java @@ -32,9 +32,6 @@ import java.util.HashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - class Runner{ final char[] mem=new char[256]; final int[] memInd=new int[256]; @@ -428,21 +425,29 @@ private void print(){ for(int i=0;i47&&c<58); + } final BufferedReader scan=new BufferedReader(new InputStreamReader(System.in)); private void read()throws Exception{ diff --git a/src/UFB/UFB.java b/src/UFB/UFB.java index 6f24ef2..49af8e7 100644 --- a/src/UFB/UFB.java +++ b/src/UFB/UFB.java @@ -33,7 +33,7 @@ public static void main(final String[]a)throws Exception{ //----------------------------------------------------------------------// System.out.printf( "UFB version: %s (master)\n%s\n\n", - "v1.4.0", + "v1.4.1", "Flag triggered, continuing anyway..." ); } diff --git a/src/UFB/UFBC.java b/src/UFB/UFBC.java index ebfb5b6..a0460de 100644 --- a/src/UFB/UFBC.java +++ b/src/UFB/UFBC.java @@ -26,6 +26,11 @@ import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -45,6 +50,9 @@ class UFBC{ final Pattern comment=Pattern.compile("//.*\n*"); final Pattern morecom=Pattern.compile("/\\*.*?\\*/", Pattern.DOTALL); final StringBuilder errors=new StringBuilder(); + final ExecutorService threads=Executors.newFixedThreadPool( + Runtime.getRuntime().availableProcessors()*2 + ); public UFBC(){} public void compile(final String fileName, final boolean recompile)throws Exception{ final StringBuilder inBuilder=new StringBuilder(); @@ -75,11 +83,12 @@ public void compile(final String fileName, final boolean recompile)throws Except ).replaceAll(" ") ); final StringBuilder warnings=new StringBuilder(); - final ArrayList list=new ArrayList<>(); + final ArrayList list=new ArrayList<>(); final Pattern jumps=Pattern.compile("j(m|l|e|ne)", Pattern.CASE_INSENSITIVE); final Pattern maths=Pattern.compile("add|sub|mul|div|r*mod", Pattern.CASE_INSENSITIVE); final Pattern pwvar=Pattern.compile("wvar|print", Pattern.CASE_INSENSITIVE); boolean cancelOptimization=false; + final ArrayList commands=new ArrayList<>(); for(final String arrTemp:arr){ final String[] realTemp=divider.split(arrTemp); final ArrayList tempList=new ArrayList<>(); @@ -100,53 +109,16 @@ public void compile(final String fileName, final boolean recompile)throws Except .append("\" Will Be Ignored For It Has No Arguments: |\n") .append(" ") .append(lineGen(temp)); - }else{ - boolean isCommand=true; - if(temp[0].equalsIgnoreCase("trim")) - checkLength(temp, 3); - else if(temp[0].equalsIgnoreCase("nvar")){ - if(!checkLength(temp, 2)) - checkIfMemSafe(temp, temp[1]); - }else if(temp[0].equalsIgnoreCase("read")){ - if(!checkLength(temp, 2)){ - checkIfMemSafe(temp, temp[1]); - cancelOptimization=true; - } - }else if(jumps.matcher(temp[0]).matches()){ - if(!checkLength(temp, 4)) - for(byte i=1;i<3;i++)checkIfMem(temp, temp[i]); - }else if(maths.matcher(temp[0]).matches()){ - if(!checkLength(temp, 3)){ - checkIfMemSafe(temp, temp[1]); - for(byte i=1;i<3;i++)checkIfMem(temp, temp[i]); - } - }else if(pwvar.matcher(temp[0]).matches()){ - if(temp.length>256) - error( - realTemp, "Command", temp[0], - "Has Too Many Arguments", - lineGen(temp) - ); - else{ - if(temp[0].startsWith("w")) - checkIfMemSafe(temp, temp[1]); - for(short i=2;i list)throws Exception{ + private void writeToFile(final String outName, final ArrayList list)throws Exception{ final File outFile=new File(outName); outFile.createNewFile(); try(final FileOutputStream stream=new FileOutputStream(outFile)){ - for(int i=0;i255) - error( - temp, "Memory Index", s, - "Is Larger Than 255 And Will Not Point To Memory" - ); - }catch(final Exception e){ - error( - temp, "Memory Index Expected Instead Of", s, - "Should Be Replaced With A Memory Index" - ); - } - } - private void checkIfMemSafe(final String[] temp, final String s){ - try{ - if(Long.parseLong(s)<38) - error( - temp, "Memory Index", s, - "Endangers A Read-Only Memory Index" - ); - }catch(final Exception e){ - error( - temp, "Memory Index Expected Instead Of", s, - "Should Be Replaced With A Memory Index" - ); - } - } - // false if error is not thrown. Misleading eh? - private boolean checkLength(final String[] temp, final int length){ - if(temp.length!=length){ - final String num=(length<1)?"Zero":(length==1)?"One":(length==2)?"Two":"Three"; - error( - temp, "Command", temp[0], - String.format("Needs No Less And No More Than %s Argument To Work", num) - ); - return true; - } - return false; - } private String lineGen(final String[]temp){ return Arrays.toString(temp).substring(1).replace(", ", " ").replace("]", "\n\n"); } - private void error(final String[] temp, final String... in){ - if(in.length<4) - errors.append("Error: |\n") - .append(String.format(" %s: |\n", in[0])) - .append(String.format(" \"%s\" %s: |\n", in[1], in[2])) - .append(String.format(" %s", lineGen(temp))); - else - errors.append("Error: |\n") - .append(String.format(" %s: |\n", in[0])) - .append(String.format(" \"%s\" %s: |\n", in[1], in[2])) - .append(String.format(" %s", convertUnicode(lineGen(temp).replace("\n\n", "\n")))) - .append(String.format(" %s: |\n", "Which Is When Converted")) - .append(String.format(" %s", in[3])); - } - private long toLongAbsolute(final char[] arr){ - // BeCoz Long#parseLong() is slow and try-catch is expensive. - long result=0; - for(final char c:arr){ - result+=c-48; - result*=10; - } - return result/10; - } final Pattern unicode=Pattern.compile("(uu|UU)(\\d{1,4})"); - private String convertUnicode(final String in){ - if(in.length()<2)return in; - String temp=in; - try{ - for(final Matcher m=unicode.matcher(temp);m.find();m.reset(temp)){ - temp=new StringBuilder(temp.substring(0, m.start())) - .append((char)toLongAbsolute( - temp.substring(m.start()+2, m.end()).toCharArray() - )) - .append(temp.substring(m.end())).toString(); - } - }catch(final Exception e){} - return temp; - } public static String manPadding(final String str, final int i){ return String.format( new StringBuilder("%").append(i).append("s").toString(), str ).replace(" ", "0"); } - final HashMap binaryMap=new HashMap<>(){{ + final HashMap binaryMap=new HashMap<>(){{ final String[] commands={ "wvar", "nvar", "trim", "add", "sub", "mul", "div", "mod", "rmod", @@ -338,11 +216,8 @@ public static String manPadding(final String str, final int i){ "jm", "jl", "je", "jne", "print", "read" }; - for(short i=0;i