From 6ec0c80e6ccab56e66e612a71a4bdb376b2e9ee5 Mon Sep 17 00:00:00 2001 From: niklasBr <104077966+bretzNiklas@users.noreply.github.com> Date: Fri, 23 Dec 2022 16:12:09 +0100 Subject: [PATCH] =?UTF-8?q?Eigene=20Klasse=20f=C3=BCr=20Tokenerstellung=20?= =?UTF-8?q?gemacht=20und=20Code=20von=20main=20in=20die=20neue=20Klasse=20?= =?UTF-8?q?verschoben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aufgabe4/Main.java | 26 +++++ Aufgabe4/Tokenizer.java | 99 +++++++++++++++++++ Aufgabe4/main.java | 154 ----------------------------- out/production/inf3_git/main.class | Bin 3297 -> 2089 bytes 4 files changed, 125 insertions(+), 154 deletions(-) create mode 100644 Aufgabe4/Main.java create mode 100644 Aufgabe4/Tokenizer.java delete mode 100644 Aufgabe4/main.java diff --git a/Aufgabe4/Main.java b/Aufgabe4/Main.java new file mode 100644 index 0000000..4fa6318 --- /dev/null +++ b/Aufgabe4/Main.java @@ -0,0 +1,26 @@ + + +public class Main { + public static void main(String[] args){ + + // 23, x, +, (,0, 5, x,), ^, 2, -, 1 + String ausdruck = "230lkjhx +(2 5x) ^2,jhff 3−1gf "; + String ausdruck2 = "0x +(2 5x) ^2−1f "; + + Tokenizer t = new Tokenizer(); + + t.tokenizeString(ausdruck).forEach(t1 -> { + System.out.print(t1.getTokenString() + " "); + System.out.println(t1.getTokenType()); + }); + + + t.tokenizeString(ausdruck2).forEach(t1 -> { + System.out.print(t1.getTokenString() + " "); + System.out.println(t1.getTokenType()); + }); + + + } +} + diff --git a/Aufgabe4/Tokenizer.java b/Aufgabe4/Tokenizer.java new file mode 100644 index 0000000..574433d --- /dev/null +++ b/Aufgabe4/Tokenizer.java @@ -0,0 +1,99 @@ +import java.util.ArrayList; +import java.util.Objects; + +public class Tokenizer { + + + + + + + public ArrayList<Token> tokenizeString(String s) { + + + return constructTokenList( buildSubstringsFromSeparatedChars( separateChars(s) ) ); + + + } + + private ArrayList<String> separateChars(String stringToTokenize) { + + ArrayList<String> separated = new ArrayList<>(); + + separated.add("|"); + + for (char c : stringToTokenize.toCharArray()) { + + if(Character.isWhitespace(c)){ + continue; + } + + if(Character.isDigit(c)) { + separated.add( String.valueOf(c) ); + } else { + separated.add("|"); + separated.add( String.valueOf(c) ); + separated.add("|"); + } + } + + separated.add("|"); + + return separated; + } + + private ArrayList<String> buildSubstringsFromSeparatedChars(ArrayList<String> separated) { + + ArrayList<String> tokensAsStrings = new ArrayList<>(); + + StringBuilder temp = new StringBuilder(); + + for(String c : separated) { + if(Objects.equals(c, "|")) { + + if(!temp.toString().equals("")) { + tokensAsStrings.add(temp.toString()); + } + + temp = new StringBuilder(); + + } else { + temp.append(c); + } + } + + return tokensAsStrings; + + } + + private ArrayList<Token> constructTokenList(ArrayList<String> tokensAsStrings) { + + ArrayList<Token> tokens = new ArrayList<>(); + + boolean notANumber = false; + + for(String s1 : tokensAsStrings) { + + try { + Integer.parseInt(s1); + tokens.add(new Token(TokenType.number, s1)); + } catch (NumberFormatException ignored) { + + notANumber = true; + + } + + if(notANumber) { + + if (Character.isLetter( s1.charAt(0) )) { + tokens.add(new Token(TokenType.var, s1)); + } else { + tokens.add(new Token(TokenType.special, s1)); + } + notANumber = false; + } + } + + return tokens; + } +} diff --git a/Aufgabe4/main.java b/Aufgabe4/main.java deleted file mode 100644 index c42fee5..0000000 --- a/Aufgabe4/main.java +++ /dev/null @@ -1,154 +0,0 @@ -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -public class main { - public static void main(String[] args){ - - // 23, x, +, (,0, 5, x,), ^, 2, -, 1 - String ausdruck = "23x +(0,5x)^20−10"; - - ArrayList<String> separatedChar = new ArrayList<String>(); - - List<Token> tokenList = new ArrayList<>(); - - separatedChar.add("|"); - for (char c : ausdruck.toCharArray()) { - - if(Character.isWhitespace(c)){ - continue; - } - - if(Character.isDigit(c)) { - - separatedChar.add( String.valueOf(c) ); - - } else { - separatedChar.add("|"); - separatedChar.add( String.valueOf(c) ); - separatedChar.add("|"); - } - } - separatedChar.add("|"); - - System.out.println(separatedChar); - - ArrayList<String> tokens = new ArrayList<String>(); - String temp = ""; - - - for(String c : separatedChar) { - - if(Objects.equals(c, "|")) { - - if(temp != "") { - tokens.add(temp); - } - temp = ""; - } else { - temp = temp + c; - } - } - - System.out.println(tokens); - - Boolean notANumber = false; - - for(String s : tokens) { - - try { - int val = Integer.parseInt(s); - tokenList.add(new Token(TokenType.number, s)); - } catch (NumberFormatException ignored) { - - notANumber = true; - - } - - if(notANumber) { - - if (Character.isLetter( s.charAt(0) )) { - tokenList.add(new Token(TokenType.var, s)); - } else { - tokenList.add(new Token(TokenType.special, s)); - } - notANumber = false; - } - - } - - for(Token t : tokenList) { - System.out.println(t.getTokenString() + " " + t.getTokenType()); - } - - - - /* - - for(int i = 0; i < ausdruck.length(); i++) { - - if(Character.isWhitespace(ausdruck.charAt(i))) { - continue; - } - - - if(typeOfLast == TokenType.number && Character.isDigit(ausdruck.charAt(i)) && i != 0) { - - temp = temp + ausdruck.charAt(i-1); - //charList.add(String.valueOf( ausdruck.charAt(i) )); - - } else { - - if(temp.equals("")) { - - charList.add(String.valueOf( "|" + ausdruck.charAt(i) + "|")); - - } else { - - charList.add(String.valueOf( "|" + temp + "|")); - charList.add(String.valueOf( "|" + ausdruck.charAt(i) + "|")); - - temp = ""; - } - } - - - if(Character.isDigit(ausdruck.charAt(i))) - typeOfLast = TokenType.number; - else if(Character.isLetter(ausdruck.charAt(i))) - typeOfLast = TokenType.var; - else - typeOfLast = TokenType.special; - - } - - System.out.println(charList); - - - /* - for (char c : ausdruck.toCharArray()) { - - if(Character.isWhitespace(c)) { - continue; - } - - - if(typeOfLast == TokenType.number && Character.isDigit(c)) { - System.out.print(c); - } else { - System.out.println(); - System.out.print(c); - } - - if(Character.isDigit(c)) - typeOfLast = TokenType.number; - else if(Character.isLetter(c)) - typeOfLast = TokenType.var; - else - typeOfLast = TokenType.special; - } - */ - - } -} - diff --git a/out/production/inf3_git/main.class b/out/production/inf3_git/main.class index fb751939f861254dfc6a1b06665080572101799a..386650f1dab3e03d3dce9cf08e58cea64d1e5f43 100644 GIT binary patch literal 2089 zcmcIlTXWk)6#mwBB3n^n*SVCWr4_9k?A)9S<x+=2YZ_Xrq=f{RQYfrt*;Xt|8EM^V zcxQ%Zp7<N^kj{h|egMO-;D<1rm1N@7frrizPozDU{m%K$o;~{gujAhURN$#dAgLgw zVFaTLxqbeOmmTi5$`9)MmMIuUH*MDzHyM(}QZ0=%Lt%Ym)#>cFpX>T!ab4H1KQHM| z*O&I&&8Dtz{Q1L=Yptf9hRQIt8v8^p($v%yXbhP>uVcCPcb2bW3`zOOYRKUn!-R-U zyTZ5K7DK6MoTL>gE2T))6Sh;n<@@~5ume%a6RAlJQ<$c_xoKJlMBs99(7D-jO<{X( zx$3z=uWR`g73cAqf>{l7xWF(O#ySnmpfo-I4maBjdYnz@F^pEK<v}1BT*74qx`sD! z<y2jF4+CL!shnPqlADfr*k1V|krl+w;$2FqfNKioHN1%;!$?>xs!Yog;j&+usXn#v z#NyKA=|~qeEMke_e3y4DVrp{n$QEtMS#Vbb4D<h9)Il&6D<~^i)v$*3esNA`OZgqh z+=<Ltm^De}Ee+T4HiOn@uy=T1F^p6GAt5Oe>lM7K;XT}-dWVpX`x0o>l$BCV!6rkh z%Wd*VRlNp*WewZ4c6!~q<?r#jLz=wdncS&y-<EQ$Oo_Hl{6`JBxxz40d~!y6)d-gR zEpnVZ!_1K8y`bUu%#MsQ)ScAdeLEG6QEA2^p0eR7=D5SV^#(7<6bfq$YB4esF@}U7 zjS?$f@?9n0U9abx)|M?9W+cLjj88pw+w(*qe15QPiMH1WvZL5lv4_tU)HFQ87YtWU zQnlS@bkE90m<jFRO>PR$Kcrl{gVG;^hZ=8+0^H?p!?A*b;d!0jL1nlM1DaDC!_$5x zV-#{Q)G%;-+ruu7tyS(gySA_@IozPCJW*-%eWhUs_j9;Uif^RiTMeItQeB0Kh5}1o zq9)C|p`t}MExK1*{j&Y^{}(F0;e#F7zY)Xb{D*WJG`12<r|WmmbuGW@@F1`P1=PIP zhPa(|whCxqUHWfVd8NWepov$Z5hVXoGz#gvLeKX}D$|?Mdt~7S*w3^`;3hq#nUwf| zo?5*A5VuImU=z1VBR79f-YI&Q@`{nqZ2yX}$1gCxv%GkOiDS^<Kf=uNQYc&ug_8ht z6heX}q0&mj1pO}1N1{jrUj|)>fKkOqBqcGAJJ_PIqqvHXX_W~5@8TYkIaT&ZoRUEn znflx>czxjrSC3JWk(VQJ;|TAZ<S;?Fz%;U$!7P1nPRP!|z&1e0)Q+!=oF(KOA)gyY prpON{b^;IaDZMX}{2Bc}#+UdyUOlB1r`Rpn<e}1P9}Zm1{tX$k4nF_@ literal 3297 zcmaJ@ZFf{x6@E_U&YXF<A#{cSQ!EWF$OHmOfTlEoC=8{<4uLip1Z?$Y=8{}8xpzAE zPE6X`Dq>%(6>WVXR;z+EYJCH35}>Q~gP-)XuH{Gl;$LuOVdHb|+({;onyhu_oPGA* z=h=Hd`<(Nak8XYdpa<{A(SVSIrX!4q!0L0xxY1rT?BVufL+8xAClJ|Z*_PKU5X!U; zMiCWA?b<!jvOUw$_RvJ@)4MwU^~xKa9TIUa_|_HADz+aemyOAs<$7_%5Q?HvKs>L; zO*&TN9(pqh1%c*F?#>;1T2IH3!WxNY9c!^}8K?oTY}vyC3D3!n7-fGK0WH&dCL2c@ z_eyNg@d?~l!{SGxG>yDxmIZXnJvm}|rdu-drZUW`-O{*UM~kwOmV3w=wum}~2Xs7$ z&6JHB#fo|CtU{Y@t;1Ud(-Xrdu~j0YqZQkhqn&g;bBwV%6(+K|YHB&{#~Fl2YttC( ziK7iWBzEd(M@J3zavee_DT|{0F$rT?b_qbGcaM&T&?OLMkY&Sj81vdp0NO81Um)*E zU@sn#=+;SteFDj)+SOFJ?}*{{n-c`j;-6L)y*fUHPcw72FJ4pgT}K&)bP!pILpmPC zVS#&=JXbm8l2qn16{E<())fd)m*T1cDUl>ykLc*bX9U)b8KY*_vGay^((*<)ay`TL z=xuMkx1c<A-U7)AHH;&NqZ0k9<i~1|{g@6qPSG@&`L&tT^@f3*!9IZ}B?feyz-O0P z_Sv2}tVkCv8D-bx^p5h?;PgqH6bPSiMol}0Q#dVgM#tyzlt9cEo|r6=tP#61Hl+L| za*I-KKZq}==KZ2TOQvpNg|G(`7($aoUSQQyO;nRg(Et5Qo!Ia1bl5468Q!B4d9&nM zj;(SutYbv6MIWlBWl*(-YL;_4Mo}clylP8Es%83G{hqXSII6XxmYXv@vQLHhjE=I3 zFEnoWb5BP_&81s1^OjLmNcX7NCUi{VSppt5JwNJd(gc<>FG!`bcwWbs@d6>%EUMXS zBvY5tmW04p6rH{*(76(6mQ?GDzPL>rzNQ-X!pBr}P~s(~V9c;c94+e<nBJzGWt-K+ zo-l@rlq7Rb-Y5<lWlPNiq2`TPszGwfxJS|M%u1!?amq4^tn#u{w*a4?R~AF`F{9S7 z?UYTPwVUb`S1d4h6Wm&`da{};N;IQ9OkrvT6s)OHaSP>2epH~*HA!>BGYjgtT|DiU zUk3CS^Ayb$>3CFD5&1ew!sUp+%ndc3oF##{?RW>OXbGY&f?EGEL(9|1UI|iJf9x&Z zNBio01nKJKzUe!l><bd0)*1&qBR_i7DEWRRE=l}Cpy3RYA0Kck<-B>=QuU0flI>L0 zU}(hWxn9{Q9W}iXr{Fe4@S8Y(i{DB7UJ>t_z~-gGS@t;7(q08rJ=zZQ%5ut+0+;If z87Nkr9x?1f(R4TG9A~sr>bX0zI>|Ca)e<YH*Vnjq^4{$tYZQwEyk2^u_yf}*L=^9l zaiT@A>H2KjEN6>`>zb~_oWPd5f?Nr^#7%*X|6f%#g&!z3;p=?1sJ{mGF&{4czRX!W ze|ZlgylocZn!o%CziOF6yvna0jK6``IE&#We3KFyhu)?}91!m$W$qSYr)H5j8vORR zCG{DsI=OuY$!;yJeb5ySbw!#Z&Ed;9lGd6dd%9$^oWuGlM5fW9h8w4_x=jr>DZ^=O z2wW`50>Oodm|mC-CfBj0Z3f$eZM(H(XLp!_-QAIN<OUuVn8JQF+Ar`Yq`GBVCiOWS zm_j-oPIg{JBCVyvYC~l>jaBJzTHeHC0A~vy(tBE?`_LR7r$-KVD;I&|XVoZh98E{( zaJ(zF;}!-_UB~Cr(OEow14aWFN}@ZaRXs#zaCQp4>1b#M)*Qx&Bd{nfvsfEQ-8yL% z#Pq`X9XBv8PzPk|B9OuEsKOkb!I#wMxtn+qn8Eq!g}+^c5SrL1HlY9ws>;8@Hou}F zB>3ORJE;lx@~zp0BzieJz{g}C*7JtgfT#FI9L9aHx$g1h_Z%L;d2A*pw%{T%c$dE3 z<HPKI?7*K%tG}WXf5&e8gO96!;$i$7j|h$TV1fzTh=WAYD<0&ts1=7qC*M5#@t7Du zpE!%hMG^hN!Ey0Ao)DMuq_~Q=d?sEX#xB07UdOi}x#M<@E<)003g5<e5TnNk-oTq2 zX}op6%hf2oG~;{tKB9`L_yI04=8(8TVq7GT6XGrWkp3Hx5^v&1_%T9wO>Ds1lxesq z*5N1A3lsl`_$huy|CedsLanOhl|{>+FIrxq<yC6EfYbt0BPHIENJ+#bh9suh^tg@n zV$D3({RiQX(BdyqVef71q-JCu@p&}-SH0+SlrCVGvaNT*DfQJN2M`hk*_xb3m}a-t nhI{8(hY)^A6b-ENyZl|n(XSctb^rTEvO>Lo1!i#rw~+oH+Fv?o -- GitLab