From fa28bd24fec59a879615a4d6731a80e0dbe853a3 Mon Sep 17 00:00:00 2001 From: Schleicher Laurenz Date: Wed, 6 Dec 2023 13:21:19 +0100 Subject: [PATCH] Taschenrechner --- EOF.class | Bin 0 -> 229 bytes GETEILT.class | Bin 0 -> 328 bytes JLex2.jar | Bin 0 -> 51904 bytes KLAMMERAUF.class | Bin 0 -> 331 bytes KLAMMERZU.class | Bin 0 -> 330 bytes MAL.class | Bin 0 -> 324 bytes MALKLAMMERAUF.class | Bin 0 -> 334 bytes MINUS.class | Bin 0 -> 326 bytes Main.class | Bin 0 -> 876 bytes Main.java | 20 + Makefile | 15 + PLUS.class | Bin 0 -> 325 bytes TaschenrechnerLexer | 25 + TaschenrechnerLexer.class | Bin 0 -> 6010 bytes TaschenrechnerLexer.java | 348 +++++++++++++ TschenrechnerParser$YyCheckClass.class | Bin 0 -> 614 bytes TschenrechnerParser$YyDefRedClass.class | Bin 0 -> 464 bytes TschenrechnerParser$YyDgotoClass.class | Bin 0 -> 413 bytes TschenrechnerParser$YyGindexClass.class | Bin 0 -> 415 bytes TschenrechnerParser$YyLenClass.class | Bin 0 -> 433 bytes TschenrechnerParser$YyLhsClass.class | Bin 0 -> 433 bytes TschenrechnerParser$YyNameClass.class | Bin 0 -> 2028 bytes TschenrechnerParser$YyRindexClass.class | Bin 0 -> 462 bytes TschenrechnerParser$YySindexClass.class | Bin 0 -> 474 bytes TschenrechnerParser$YyTableClass.class | Bin 0 -> 614 bytes TschenrechnerParser$yyCheck0.class | Bin 0 -> 1863 bytes TschenrechnerParser$yyException.class | Bin 0 -> 339 bytes TschenrechnerParser$yyInput.class | Bin 0 -> 297 bytes TschenrechnerParser$yyTable0.class | Bin 0 -> 1846 bytes TschenrechnerParser.class | Bin 0 -> 4852 bytes TschenrechnerParser.java | 631 ++++++++++++++++++++++++ TschenrechnerParser.jay | 24 + TschenrechnerScanner.class | Bin 0 -> 482 bytes ZAHL.class | Bin 0 -> 325 bytes jaooy | Bin 0 -> 89024 bytes skeleton.jaooy | 350 +++++++++++++ test | 1 + test2 | 23 + y.output | 128 +++++ yyError.class | Bin 0 -> 235 bytes yyTokenclass.class | Bin 0 -> 377 bytes 41 files changed, 1565 insertions(+) create mode 100644 EOF.class create mode 100644 GETEILT.class create mode 100644 JLex2.jar create mode 100644 KLAMMERAUF.class create mode 100644 KLAMMERZU.class create mode 100644 MAL.class create mode 100644 MALKLAMMERAUF.class create mode 100644 MINUS.class create mode 100644 Main.class create mode 100644 Main.java create mode 100644 Makefile create mode 100644 PLUS.class create mode 100644 TaschenrechnerLexer create mode 100644 TaschenrechnerLexer.class create mode 100644 TaschenrechnerLexer.java create mode 100644 TschenrechnerParser$YyCheckClass.class create mode 100644 TschenrechnerParser$YyDefRedClass.class create mode 100644 TschenrechnerParser$YyDgotoClass.class create mode 100644 TschenrechnerParser$YyGindexClass.class create mode 100644 TschenrechnerParser$YyLenClass.class create mode 100644 TschenrechnerParser$YyLhsClass.class create mode 100644 TschenrechnerParser$YyNameClass.class create mode 100644 TschenrechnerParser$YyRindexClass.class create mode 100644 TschenrechnerParser$YySindexClass.class create mode 100644 TschenrechnerParser$YyTableClass.class create mode 100644 TschenrechnerParser$yyCheck0.class create mode 100644 TschenrechnerParser$yyException.class create mode 100644 TschenrechnerParser$yyInput.class create mode 100644 TschenrechnerParser$yyTable0.class create mode 100644 TschenrechnerParser.class create mode 100644 TschenrechnerParser.java create mode 100644 TschenrechnerParser.jay create mode 100644 TschenrechnerScanner.class create mode 100644 ZAHL.class create mode 100644 jaooy create mode 100644 skeleton.jaooy create mode 100644 test create mode 100644 test2 create mode 100644 y.output create mode 100644 yyError.class create mode 100644 yyTokenclass.class diff --git a/EOF.class b/EOF.class new file mode 100644 index 0000000000000000000000000000000000000000..02a1bec00de37bf17fc004281b11e748445bf480 GIT binary patch literal 229 zcmW-b%WA?<5QhIbiKdB1ZFgN%aj9AO1Y#GWP$+Goq5G3Kka#(P6BT?c7e#R41NczI zNf&eb_+b9q-{lJ66;BZqya2vN15JWH9+Ps-Hrtr0A~Yw3Ep}6aHyr(hct98+(r7^o zntv_`!LHV=BhVYcpOs4{bl(fhANy^}E-~pwNc3IqUB-)|KAw{*%h@{4a?9?^xQg9) xWex@dd7&g2KvI%OW?QycXicK{42r#91gC$eBfSF;P%rRR525Od*A=Spcn4;;DB=JB literal 0 HcmV?d00001 diff --git a/GETEILT.class b/GETEILT.class new file mode 100644 index 0000000000000000000000000000000000000000..9d00195a7b716bf39669ed28aae6abfb369975c5 GIT binary patch literal 328 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%0Dm_CL02x&9aYxvO-1Qf>RwimzuYuKx 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 literal 0 HcmV?d00001 diff --git a/KLAMMERAUF.class b/KLAMMERAUF.class new file mode 100644 index 0000000000000000000000000000000000000000..38704b9be9812d92ccc820c8c9031a58699df166 GIT binary patch literal 331 zcmZvX%}T>i5QWd&B#ljDYyANqp^ZOvuP8+BZ(_EG%p>dY!tU4#`^}>aGm4jUB zr@?KqP-%7ApEa?8rVGzU3qHZS35QX1H61>T2yRv1(S|_Rbx6BT=n$-4e@3t`i$_K1 zgqc?3rkF%$0eXFX&iG4X>n+y8e?V2eAn#FRI;c~@ZP E2gNuyi~s-t literal 0 HcmV?d00001 diff --git a/KLAMMERZU.class b/KLAMMERZU.class new file mode 100644 index 0000000000000000000000000000000000000000..420958ccfb6127889c506d5a3108786deb037f6e GIT binary patch literal 330 zcmZvX%}T>i5QWd&q=`vmYyANqp^ZOvuP7o4VydDsN_BG^FE%yaz)dRjv0O;Og%99E zi4$?@X5f6xnRDjr`{NV90akqoST5`U4LF2gHj9gArPExNCBfOtbXM&X*1FL|zRG?s z^;7?1G*M}_+el)bMV8IXIcXD$OmRN1E zuK8lPF$aYma^B&-F(7n!wqUU%K||ak5O++t)1P&djl?7f=WPGqIfO0l(G(B7xy-u) FD?gB-H=F;{uE&(6vkNx#&J`hodRMzpNfLp`R2+-!5J< zZBvz%?1T^1!shy_aAG&D^O-hQ=QE@2y|T5oV^;tZekr&*ekXSZVT08HYv->=dn-^h xAn}gijSa$pXAd3|W3)sJDJJZ2r$2O`L1ITnE5`pP58;a=bj2}WZt|_b)(i5QWd&q)nTqt@Q_dgf{-vy`luMASNmryHDc9rj0jplL~z-7gBKH1Nczl zTyg1U;C#%PbLQ*&;}gIcwp|EV4r~t%Gzs2n6_*RCvLdM}Lh~e7d3{RQ8HV%ZH5nI) zdK%xPbD7o0qiGv0v>mt}I`9bHC+33O?4dM2b#u!f^4!9Fh^ zC7~bYN?tFYQ>o)5Ett6XS6ot>7B#lkS*7^fJLK}bT(w|xvf>5YcXzYFx2b)?aFiC|zmJ2Dk@Bw@% z@s7B3bK!iPbME>2{`drNh201OUI6_e%{iMuh+E|^2{_@Wg2&_c@@f#aSRJu;d^0{+ zgW@)M?+D)*5ZZj3@HlabK%7B}b0)m$FM7y9Vj|-;$Nx|E;fqT&#DJaK>=oGg0S4YR AvH$=8 literal 0 HcmV?d00001 diff --git a/Main.class b/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..aa820e6d475efb94254d73071f2887b2173a3c4b GIT binary patch literal 876 zcmaJ=U2hUW6g>kA1KTa%RBc6DtqQaSt2LTX^`Wsz6F?)RhWIor6S|e|lHJ9~FY2S| zOGza02l$(edS|gMCXM?rcXsZXd(J(3_s6eq-vPYFGaVs>IWz+iL>W@Y;xd(vc#;hHV*QG#<-3;MuaypUaHJI?!;t-ppklK^l;_AX6y`aaj=%4W?B1I% zrX2c~V{u}3tTOQNc&IWA z+r|1d7uLt)1A92~Yo)oSX7<%M?h(sXua`n~tYO{21Lb;hNCx;VUznfTt}rFXBl4^v zEStif(TXY9>qMZc!rQ*jq)=MiH7K3^XF%0k=71D7HltFJfBiEGb zlQF~p*-5UtclOD%YhL!(xANUmbK%G6Lu~JV6 TschenrechnerParser.java +clean: + rm -f *.class TaschenrechnerLexer.java TschenrechnerParser.java \ No newline at end of file diff --git a/PLUS.class b/PLUS.class new file mode 100644 index 0000000000000000000000000000000000000000..f0a4bd33f0ee7d9a45f76cf62aef5652057dca8c GIT binary patch literal 325 zcmZvW%}T>S6ot>7q>W9-*7^fJfJzdrb+70`5QLzG#_lI^u&H$dlT_$qxsZYjAHata z?}$q`7tY5y=bo?ck52$s*bO1z1@I+WXcOdWl~vE$6bn_?g!V;g%I1==7o~IcszwWC zo<{fiTo=uGJndiuodBUk7n0zQ(}xKmXk3G_1iE$gJ=fhQcu_oM({=Tz3H`J*`fmA> zYn!Qj!6ckiOIzrh(uw`7E@s+TUCfNOV`Xb?Pu&8X@lV0q@q2kR2wSX%tR3G>j@O`M xK=h8_jR9f6w+D|C2WW{yNO8o3H~mFVI7m!nvgY{z$q2rP(G>|hx7jPO^8=bxH0=NY literal 0 HcmV?d00001 diff --git a/TaschenrechnerLexer b/TaschenrechnerLexer new file mode 100644 index 0000000..4e8e676 --- /dev/null +++ b/TaschenrechnerLexer @@ -0,0 +1,25 @@ +%% +%jayscanner TschenrechnerScanner +%jayparser TschenrechnerParser + +%class TaschenrechnerLexer +%eofval{ + System.out.println("ENd of file: gut gemacht"); + return new EOF(); +%eofval} + +ws = [ \t\r\n\b\015]+ +%% + +"+" { return new PLUS(); } +"*" { return new MAL(); } +"-" { return new MINUS(); } +"/" { return new GETEILT(); } +"(" { return new KLAMMERAUF(); } +")" { return new KLAMMERZU(); } +[+|-]?[0-9][0-9]*("."[0-9]+)? { return new ZAHL();} +[+|-]?[0-9][0-9]*("."[0-9]+)?"(" {return new KLAMMERAUF();} +{ws} { } +. {System.out.print("Fehler");} + + diff --git a/TaschenrechnerLexer.class b/TaschenrechnerLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..c68b65c9d5d02d299078514cc726d78c0abccd5b GIT binary patch literal 6010 zcmb7Idtj8+mH*v&NSxLhkjU?V%OXP^@o7Ln0ARxZqK^SWjz9H-^Hck=WpHvUDh!utEb| zM3RwEG_uo5RC-{*6mB^R-epZQ=d>jgkyzh4VUVkEo<>CCD>e@I_F4%m+-ilwR>FgM z$d}y(lr^)PL}?`Vx~a|r6JDIB;2s$Xl0A1RoS$ZN&Uxz$oUc$g#VjCFQxFP0#cv@l z5Pn5GV}{=>Ix_X3L~Qss3VAc?v~*u@^&~}}QWJ}Dp~Ae*&fvz5#>R%$U|XQ8K|uus zeX)rpf_4zyD1fCVmI)x6faaE9TYFu5gTQ?zmJ2*b!`p*(_4N(cvh?G&h?MGLmx#0Jm{ zvT0Z=-Wv?ZV-~gO67nld)Csw}vop{fXb;rsL+VXj32K_l9Ye`b(h7!?iBN1v!M0T^ zf0c<%a^yS`L_XnU{69${E&&O4XP9B8BDtHQH92;s@k>XRV!<2$~mj%OvWk!$z)CW>T-WM z!CaKrlwVrDs(fv28s+zwuMv`(@|CsK5~)EG*C9krhhu}Go^6eZ_&{1y`tY(q;9Q}~ zwx;deVTaDA#EI%<&#;N@;t%3PX_St8LG3UxA}Ddd3@Q=}TRQ~zF%$oA7LGoe&@p?X ziH{2|XJ(%j3(KxOCTWVCf2d;$9ne9^=|OZJ^VmGx%PC^!dYhmhW5;$C?Z zoW0TEp?((*&>W4SBqK-%O{K>`T!g&e#34LDA+=>&=vaTNI)t2`0+3T|gLOuQ3i2rKh>tbv}n>89U@J()ILiOMqu)FYWg++X2#bMHBtu39& zMf#cHi)q8ZnfUi<$>Q6sU`Dd;wEAP_x$#8RBlLybs z>c4oQn*+^){ei51MA@!tXm1EKwR`YGf&7HWUENf-d2>T+T?gfSL4Ysu5;MTA4i8=w z*6bJa*m8JEiht9JTlTA-)6;n_}&ezBfGZvaH7X*r1#L5-lzVm6je}4 zE0xd=#VC++0t)}bl@0&PHS34z^{=^R`7meAvSE7t8{%0kOs`LI%{pOv{RY=85~kO` z<(jp@^!j&PvoM%m|DH0i+|sfz)#{PiSdUDvdSoiqBNMnDnLzc(l&MEn6&wq|3S#

x+*QY24Uu#XzH&~B+^7P18Opkn7IOejkfaK0MIr}Ia+zFKW zjzOvA4>kHz4tvJ2Rw&j< zce&4T!qaKDw~S+>tQ(~Z$lfNO^GURH+6zA1*6Ao{Ya2(0FE2Mu-03h{I-P7;YzCW) zEl(DCvdYs-x6C}!WlLw;+2zP=oD6QsLP;;mz3@X>2^xDOQhW`vzz5EmA=dEI;Jk6WgW<-vGQm-FTYSOfQxtP zrj0!)BW5L}LSBjWjFmc6qX`4}FmA^de3lj89b7$y<4my6FsZ)4H2ON0;`fZh)7*Tu2aUGRjb=XeG&QSt6Y_MNeoTfWp=t`t3Ue&SJruN#^Sn5|k0(P^#@y2)YLo-86;AU=SvD6XSIY%)no({uah8~z0vT-?sZzHd&p2ohC-$)IpK_j785xR-LA3_H| zCAxTNL2PCn+>9G}c{igKx1t?)GHrZ`iQ^%3;wUfkIb6$24B|%!;WhN=AiEH*;xnw| zlqybBO5k9R1IgID?&%Ez}lbGf@T4B8;t#)nXn=h0fx=#KEJ z1IQ8mI2Ge(E<%WMK8Wb-Ow`K+)6X{`f-A6%%0{)w%xX(6rYJ0RGNLTuiZa73*Kq@* zVkQjIt`?`$50Z#A&w71dQVuBh1q!!!QNe&YSy~R{jFm-va-UV5?_KQD? z0zX6FL1&Q2EpaYC*?+>>Y~N74{NzF8RunH!$KzP)%?e>T`=Pm&>F72-ET3dzx{X); zX{{k|>^-=Z!8(}Kth6#LT4@a_mli*UJ1JF1QS}7&aXx`B74OfyZKLwG%@{EKp4~+k zzMHS&=lQ2|p3jfY^!e%}PtW1`$8COx-JfOm8%4!W<33xh$L`PeW)~gA z0lVMyn#Bikr#EXq<`;Ur+0|atYqadmN{wNAMPB&?4*FeQmyOq1F$PbC-RqjbgSGAo zugh`W1isQ-=+3JZB8S&OqNyVa-H+qpmNC>6y1fofSnDiw66Vh;blbfSeTF9T8*{ks zHJRn&d$ZYJSLm6sZ-RLP{1&p~9{Rz(O!xQGnunPDAK(M~Ak+64Q~g6&jW1&@zRK`A z%?7(C6yQA2{V7mnqyzXN(;p05<3GP15oez-e5TQ?Mqwa(| zg#|Em7BSGm|Dn)}4BW^5UH*6Nf)vHbnT=(YN-WWhBu_ET&BYR!!KbidE-rm8cfJEB z|Hw%xd2Zfhr5&W^F8cSo#s<2|Mz)(PFXO%1{7#2I%Qu04A*i#Y(r?(k#wa``ekXww za;^Eq?A{L#tA+Jra1s2(dhR4N%GOs>SGPPfg+* zoyYL4BQ~#N6pOu%%jiqoG0iM>Plnl8>T@=)lSxunWl!s>jC5XS3?$?p2QD1 z{V}JVlX!vCpK{tfi5EHj8K?DPqL&%8V^}+hR|)+Ep^Ot2qf_LIW@r}7(71he`vhK- zt2^s9X`VS(dFJvd>z-LnxplUo=5?IE#MRH33SMT$d4=iVRc4*n_|pCoiFx2q-UZnac>L6xZkYPq^!txylDD)oq}QID$C>It<*oluvmZ>e?aJ8FY^ zR$ZZ>pD;8ccvH$=8 literal 0 HcmV?d00001 diff --git a/TaschenrechnerLexer.java b/TaschenrechnerLexer.java new file mode 100644 index 0000000..c6ce1ce --- /dev/null +++ b/TaschenrechnerLexer.java @@ -0,0 +1,348 @@ + + +class TaschenrechnerLexer { + private final int YY_BUFFER_SIZE = 512; + private final int YY_F = -1; + private final int YY_NO_STATE = -1; + private final int YY_NOT_ACCEPT = 0; + private final int YY_START = 1; + private final int YY_END = 2; + private final int YY_NO_ANCHOR = 4; + private final int YY_BOL = 128; + private final int YY_EOF = 129; + private java.io.BufferedReader yy_reader; + private int yy_buffer_index; + private int yy_buffer_read; + private int yy_buffer_start; + private int yy_buffer_end; + private char yy_buffer[]; + private boolean yy_at_bol; + private int yy_lexical_state; + + TaschenrechnerLexer (java.io.Reader reader) { + this (); + if (null == reader) { + throw (new Error("Error: Bad input stream initializer.")); + } + yy_reader = new java.io.BufferedReader(reader); + } + + TaschenrechnerLexer (java.io.InputStream instream) { + this (); + if (null == instream) { + throw (new Error("Error: Bad input stream initializer.")); + } + yy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream)); + } + + private TaschenrechnerLexer () { + yy_buffer = new char[YY_BUFFER_SIZE]; + yy_buffer_read = 0; + yy_buffer_index = 0; + yy_buffer_start = 0; + yy_buffer_end = 0; + yy_at_bol = true; + yy_lexical_state = YYINITIAL; + } + + private boolean yy_eof_done = false; + private final int YYINITIAL = 0; + private final int yy_state_dtrans[] = { + 0 + }; + private void yybegin (int state) { + yy_lexical_state = state; + } + private int yy_advance () + throws java.io.IOException { + int next_read; + int i; + int j; + + if (yy_buffer_index < yy_buffer_read) { + return yy_buffer[yy_buffer_index++]; + } + + if (0 != yy_buffer_start) { + i = yy_buffer_start; + j = 0; + while (i < yy_buffer_read) { + yy_buffer[j] = yy_buffer[i]; + ++i; + ++j; + } + yy_buffer_end = yy_buffer_end - yy_buffer_start; + yy_buffer_start = 0; + yy_buffer_read = j; + yy_buffer_index = j; + next_read = yy_reader.read(yy_buffer, + yy_buffer_read, + yy_buffer.length - yy_buffer_read); + if (-1 == next_read) { + return YY_EOF; + } + yy_buffer_read = yy_buffer_read + next_read; + } + + while (yy_buffer_index >= yy_buffer_read) { + if (yy_buffer_index >= yy_buffer.length) { + yy_buffer = yy_double(yy_buffer); + } + next_read = yy_reader.read(yy_buffer, + yy_buffer_read, + yy_buffer.length - yy_buffer_read); + if (-1 == next_read) { + return YY_EOF; + } + yy_buffer_read = yy_buffer_read + next_read; + } + return yy_buffer[yy_buffer_index++]; + } + private void yy_move_end () { + if (yy_buffer_end > yy_buffer_start && + '\n' == yy_buffer[yy_buffer_end-1]) + yy_buffer_end--; + if (yy_buffer_end > yy_buffer_start && + '\r' == yy_buffer[yy_buffer_end-1]) + yy_buffer_end--; + } + private boolean yy_last_was_cr=false; + private void yy_mark_start () { + yy_buffer_start = yy_buffer_index; + } + private void yy_mark_end () { + yy_buffer_end = yy_buffer_index; + } + private void yy_to_mark () { + yy_buffer_index = yy_buffer_end; + yy_at_bol = (yy_buffer_end > yy_buffer_start) && + ('\r' == yy_buffer[yy_buffer_end-1] || + '\n' == yy_buffer[yy_buffer_end-1] || + 2028/*LS*/ == yy_buffer[yy_buffer_end-1] || + 2029/*PS*/ == yy_buffer[yy_buffer_end-1]); + } + private java.lang.String yytext () { + return (new java.lang.String(yy_buffer, + yy_buffer_start, + yy_buffer_end - yy_buffer_start)); + } + private int yylength () { + return yy_buffer_end - yy_buffer_start; + } + private char[] yy_double (char buf[]) { + int i; + char newbuf[]; + newbuf = new char[2*buf.length]; + for (i = 0; i < buf.length; ++i) { + newbuf[i] = buf[i]; + } + return newbuf; + } + private final int YY_E_INTERNAL = 0; + private final int YY_E_MATCH = 1; + private java.lang.String yy_error_string[] = { + "Error: Internal error.\n", + "Error: Unmatched input.\n" + }; + private void yy_error (int code,boolean fatal) { + java.lang.System.out.print(yy_error_string[code]); + java.lang.System.out.flush(); + if (fatal) { + throw new Error("Fatal Error.\n"); + } + } + private int[][] unpackFromString(int size1, int size2, String st) { + int colonIndex = -1; + String lengthString; + int sequenceLength = 0; + int sequenceInteger = 0; + + int commaIndex; + String workString; + + int res[][] = new int[size1][size2]; + for (int i= 0; i < size1; i++) { + for (int j= 0; j < size2; j++) { + if (sequenceLength != 0) { + res[i][j] = sequenceInteger; + sequenceLength--; + continue; + } + commaIndex = st.indexOf(','); + workString = (commaIndex==-1) ? st : + st.substring(0, commaIndex); + st = st.substring(commaIndex+1); + colonIndex = workString.indexOf(':'); + if (colonIndex == -1) { + res[i][j]=Integer.parseInt(workString); + continue; + } + lengthString = + workString.substring(colonIndex+1); + sequenceLength=Integer.parseInt(lengthString); + workString=workString.substring(0,colonIndex); + sequenceInteger=Integer.parseInt(workString); + res[i][j] = sequenceInteger; + sequenceLength--; + } + } + return res; + } + private int yy_acpt[] = { + /* 0 */ YY_NOT_ACCEPT, + /* 1 */ YY_NO_ANCHOR, + /* 2 */ YY_NO_ANCHOR, + /* 3 */ YY_NO_ANCHOR, + /* 4 */ YY_NO_ANCHOR, + /* 5 */ YY_NO_ANCHOR, + /* 6 */ YY_NO_ANCHOR, + /* 7 */ YY_NO_ANCHOR, + /* 8 */ YY_NO_ANCHOR, + /* 9 */ YY_NO_ANCHOR, + /* 10 */ YY_NO_ANCHOR, + /* 11 */ YY_NO_ANCHOR, + /* 12 */ YY_NOT_ACCEPT, + /* 13 */ YY_NO_ANCHOR, + /* 14 */ YY_NO_ANCHOR + }; + private int yy_cmap[] = unpackFromString(1,130, +"11:8,10:3,11:2,10,11:18,10,11:7,5,6,2,1,11,3,9,4,8:10,11:66,7,11:3,0:2")[0]; + + private int yy_rmap[] = unpackFromString(1,15, +"0,1,2,1,2,1:3,2,3,4,1,5,1,6")[0]; + + private int yy_nxt[][] = unpackFromString(7,12, +"1,2,3,4,5,6,7,8,9,13,10,13,-1:20,9,-1:8,11,-1:2,9,12,-1:12,10,-1:9,14,-1:8," + +"11,-1:2,14,-1:3"); + + public yyTokenclass yylex () + throws java.io.IOException { + int yy_lookahead; + int yy_anchor = YY_NO_ANCHOR; + int yy_state = yy_state_dtrans[yy_lexical_state]; + int yy_next_state = YY_NO_STATE; + int yy_last_accept_state = YY_NO_STATE; + boolean yy_initial = true; + int yy_this_accept; + + yy_mark_start(); + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + while (true) { + if (yy_initial && yy_at_bol) yy_lookahead = YY_BOL; + else yy_lookahead = yy_advance(); + yy_next_state = YY_F; + yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]]; + if (YY_EOF == yy_lookahead && true == yy_initial) { + + System.out.println("ENd of file: gut gemacht"); + return new EOF(); + } + if (YY_F != yy_next_state) { + yy_state = yy_next_state; + yy_initial = false; + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + } + else { + if (YY_NO_STATE == yy_last_accept_state) { + throw (new Error("Lexical Error: Unmatched Input.")); + } + else { + yy_anchor = yy_acpt[yy_last_accept_state]; + if (0 != (YY_END & yy_anchor)) { + yy_move_end(); + } + yy_to_mark(); + switch (yy_last_accept_state) { + case 1: + + case -2: + break; + case 2: + { return new PLUS(); } + case -3: + break; + case 3: + { return new MAL(); } + case -4: + break; + case 4: + { return new MINUS(); } + case -5: + break; + case 5: + { return new GETEILT(); } + case -6: + break; + case 6: + { return new KLAMMERAUF(); } + case -7: + break; + case 7: + { return new KLAMMERZU(); } + case -8: + break; + case 8: + {System.out.print("Fehler");} + case -9: + break; + case 9: + { return new ZAHL();} + case -10: + break; + case 10: + { } + case -11: + break; + case 11: + {return new KLAMMERAUF();} + case -12: + break; + case 13: + {System.out.print("Fehler");} + case -13: + break; + case 14: + { return new ZAHL();} + case -14: + break; + default: + yy_error(YY_E_INTERNAL,false); + case -1: + } + yy_initial = true; + yy_state = yy_state_dtrans[yy_lexical_state]; + yy_next_state = YY_NO_STATE; + yy_last_accept_state = YY_NO_STATE; + yy_mark_start(); + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + } + } + } + } +} +class TschenrechnerScanner extends TaschenrechnerLexer implements TschenrechnerParser.yyInput { + public TschenrechnerScanner (java.io.Reader reader) { + super (reader); + } + //public int token() is not longer necessary + + public yyTokenclass advance() throws java.io.IOException { + yyTokenclass ret = yylex(); + return ret; + } + + //public Object value () is not longer necessary + +} diff --git a/TschenrechnerParser$YyCheckClass.class b/TschenrechnerParser$YyCheckClass.class new file mode 100644 index 0000000000000000000000000000000000000000..fa011987f9d008ab935bee37bb954389d5a6140c GIT binary patch literal 614 zcmZuuyGjF55IwV-xVy=!NqleO3sls?M`2~qA|MLBAR>s>X1$nb+{o@K*!v|~SgVB~ z;s;oX;H$8)@+W-EU4x3GxpU{vIdkUBz4^Gj1~84T7!;@)A||4!BP6!$eS5TQyPKm+ zg)QL(gt~0WEd^5qb#Q3afDS`L%tRa}p=ZT+io*4TQ*?#5YJ!<6}wR8mv|L3$1@V@ z^MUPbFW9@)s-AVq)#+pT%AV(lnUZ9+*AO0&)>(8>_`z(&4>Y6+O*Mc7bIxVEp+UhG z&9y&{G0rPec)8q4E{Sg{B67R@lH#nBBXNulUw}?SU=yFR47z1P^AA)oQMMXTv+AUk zRNs!#nNE^^gv1%N^cm`{iPb}*L(s|RtL&vf_UeMhz3!pV1LE|E6g?qB&*{i}#{JMHHlpEx{lnX}Yy3F@+=*`m@A?AmR`3 zM~Sng2uc@b-p-quoj3dS{r(By7;7#Jm>iae5^M%J44=b#5~h#!tL{)m1%us))3`Wd zFn9NS2LcX<>!A#fVY`z@1C?ef8l)<_4zpZkJHg~s^>0+KnS^=HASSbz!MJNPSj|yS zF;p+(RJF!WU6pmhZbFP`M9FNF+a8UxNS(!+U!ODNKZxF1MckmHhQDWoPG%1GBDS2q1u@c&aDU_#Qn1{Se2#Tr%! MUD6;>!zwm^0BI3h4FCWD literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YyDgotoClass.class b/TschenrechnerParser$YyDgotoClass.class new file mode 100644 index 0000000000000000000000000000000000000000..c56b94678e6d8bef10c791cc6d5217a1e4a12277 GIT binary patch literal 413 zcmZutO-sW-5Pg&H#Au`O6BImns2(idiykVXAXR7y1W!p^(v+CMCKdX##DgH>5Aa8c zlPDt6J?xvAeQ)Q@e0;vX131H$0|lxH&4mtw;7y~)sFz1Y+PjITBB=>RKP$5Ol%RGG z0~;1>6OM}|xP<+2l}tn-MKURbyp3cfkF#oGksPLGlU=?dE`q*G}_)iNyHnIB!!AeqK literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YyGindexClass.class b/TschenrechnerParser$YyGindexClass.class new file mode 100644 index 0000000000000000000000000000000000000000..70a7ff6c4c63bd6f9d01eee7970aab81dd627a87 GIT binary patch literal 415 zcmZut%Syvg5IvJe^Ds5l_yk=Df{%s8ebGh12S^oK0>M?1UTjLdfg}|R;y;NCLBtR6 zqr^!lg3`OVXJ+m>ch1b$_xmS+Q>@!ipc>E|=x7jHuoF!F#V@{K!$|p;Dq9`x2qBO8V@a7N+&ZT5; zwHd*7nt$x!mRhQzY`CbDd5^RuimlF7x`7pdTJZ zE*!WvJReK&3Hzfe8w**AY%E22la!Sx58`=W$X=0D6~UYx6JYAi=+qtg2BWSc~^3 z3@1E?#v35)s7d&x!B8t;&oZ+;Mq)JEub}59aD{L64T?Cq^&5K5iR!ci=iQBUGl~r> qicL1lh+><~VG9%qn7zRMU+)$=0ANK*kJUyn}ZOW*!>1RC{$1Y literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YyLhsClass.class b/TschenrechnerParser$YyLhsClass.class new file mode 100644 index 0000000000000000000000000000000000000000..cbd68f9454a9c70958bb9b8fd76e478162e3c7bd GIT binary patch literal 433 zcmZut%Syvg5IvK3W3!oIkb)-E~O}sqD5~ayICwH!CWYVpxqA%Mz?qngk~?zMSngU zi*gi?Gxj*0B>NfS4vTr2h^tijcbBw3RSdbLFJyIH$jZhhAy|?~@NRNuRWlLH!TlqK zGu}hv3lR3yCj8T2s1vYfm8}CtVl-Q?pyxVqjkOAc23*|yO}*qo^;*93-iUN9j0`=D pOcsm9Hp0kZ@hzp;dV&4F-yL-L+(E-SHfjv8#pv=h2LZOR{|!+)R8Rl_ literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YyNameClass.class b/TschenrechnerParser$YyNameClass.class new file mode 100644 index 0000000000000000000000000000000000000000..438f824be0db5ca063e8f7bbdf83c502141f4c1f GIT binary patch literal 2028 zcmZwIcX(4(7zXg~WHdKvO4D0L3oT_7If)OG|?nQ>%xHx z_uhMN5fw$jffM&0xHmWu_e9V8iVw=eALsX-@8qm6_j&GJwPD!`5t%NNJYo~OOB`Nt zN}dv5Uu=G?J{e2()X(nhv*I}=c@2qFA~#Kmy}D+uON{?b3g&;WJ?)4+7F8}NhOK_i#}nm{v{30goa*aOT00T2WsFdMXiJ;59h1`*H>=7PPz z-XID(z&x-I*ca>v_6G-m80Z9X&;=~e4SGN?NPs?YAV`9KkOFCN5I7iQKo;b{0GJOB z0f&M?a2Plo90865M}Y;JA~~8KLyx7$(S`JQdICL>oJfYbP2ti-b3%DOX+>|e!7f4Kp&*b=?eM~eV9H%AEhhlWAt(Q1bvb|MW3dt z=ri0 literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YyRindexClass.class b/TschenrechnerParser$YyRindexClass.class new file mode 100644 index 0000000000000000000000000000000000000000..664ba3d0d5a1231145847e9c7ec11464e2072ab5 GIT binary patch literal 462 zcmZutO-sW-5Pg%6=A)^N#!t|L;6XiDyq9_?h=NqHB@jHN>0(pj7Lv5spCujy5r2R` zN}LTvP`dDD=FQIRyq&M__fG&9*m0pjw_tcMQ6u=1cpkU1SU$FHhZB*Mgjze5Y1tv@ z$0wl!8;%9nLmeLBa8M*;A#;(8rO5B%yb$?Ow75^@NIZA5xF`trV#x{GL!V%Drz1gV z-lS6WW=}(r58`3Q8M~ci%TaEBI?EGrnX3HmiXmr8C%5!OQC>}p(!wSoSW!sut|e=$ z#0Zwt_#+SJ{2`53LD*AY;z)y`cEOnjvjg_T-aLH+y;Oy3Y}GZWQ0bbRl_ ziF7@T42H?5F)W77@D=eD^DFA8$W^9pgs-sv&zM7p&#!7&$42D?Y_WG)fsFv$*#7~d CE?dL^ literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$YySindexClass.class b/TschenrechnerParser$YySindexClass.class new file mode 100644 index 0000000000000000000000000000000000000000..97129c244f662234a284fa3c254de27b800faa84 GIT binary patch literal 474 zcmZutO-sW-6r7i&%|}z4SU*7zf(P|r@m};$5EZFHOCWek(#1yN7Lru#&k_%Uh(Ev| zWqlippmY!OcHYio=Iz(_`zL@iY&y`On=o9|P$zf~(NomPB6;7ri62B#66)PlrsXL? zKR66*Sg=hvE*fwNd&43b3z>^#EJc1B<%P)i!`UE}Bk|nJqM{&Jvjrz;cLRdan~VgZ zb)8DlpFYMSA4YM;9jlvU3oBJHloyktG_gi#FA);lOUc=) zFoNSW|HQ)yFQoBT5VqAyeA8g4zu-=j*)CV&T043Jy;Q;#M)eHJc)0Z|jd@U=E6@F~ zL*1X-L1CDoGT&_e)gp1%kQ| zMEn3h!<9ebV{R-e(#@Sacg~zMXYR|#<1>I6bSI!d)etigM*|_XYaiKTuI+7)t(10! z6A~H^*-DvAoI1bd61MiCSPnz*`R+bkp55H`BIL1V+-d+)t> zKt&O;H^kn1!`^#G@B3FDpT~zUzjNozduPskxwCM|yai@9#s;J;WZ}3)(iXLtvrI=} zMxmjzP@dW_v8^L0)||x}OXX5+w6pNA;kl$GEE%^{+Im^q*`U^Hu{|hPf?|6)s7xwU zszGIFPft^OP@Fc(S>nHCXmX3QNK@C8z**gdQaNbup57KzS_^HRzLRJycK-90R7+QP zr5KDYsXuTj&mXA~{g&pSS{v6@t;MaMv-+h3ou$W@{a8(%g=#gZ+7Lf`$bYpTThseh z$Rhe|-|6kI2K(xKjgFXWZWh5lUftGp!s`BwMi={yN-oN}#QbDF9LeP);aonNbuO2W zWnCzjk7u3lB(l!m%fx&m<2x~55}BkoNi>rpo9RV3lm0v1Tj@So7xkr1>rB?geaULw zSJaDsqQ4j*mJtKRvSK;0yci?~ixtF*VkI#|tSnX$L&d6MHLKqDgEewiaW>He#F@FSZri zi3wtR(JUs4Nn!`Fqi7MWVkeOkJBwXJUhFC+i`~TTVh^#W*h>^dn<$DYA`p9vsiIw! zM2DCrI>mHR7F}W=v9G9zs;G%>F+=Pp_7^?k0CAu=NE|E<5i>nmI}{JY!|@0_5|6^8 z@fbW7kHh2f1UwN>!jth7JQYvF)A0;E6VJl4@fphGBc6nvpfkN`~W{n z?AePsqz8JYYl`Zw{`vj-25^I&1PwG}v{Gy!BJ94XchxJEnf7iM1;2S+8A5cWjrP}s zy_3N|VdSkg)63JR7;VDA*cCH2mW!ET`>3pAd%Rq(sI>akGZXTGHawiaPS}psq!c6> zRdZYLoestR8l8*Kl+Yfs^Y@kWF>)Do4Uv#O7-`=xm2>O}-IWP&h*;c)AUWb!a!0Bo oK?5G0oqvKp>iGgjde8Rf)A{!ZV2rLph48WnX3f^KSzGpV?F0LMS*CWoD->#k&PMNbl56{&%$6HA z1wrZ6UR%Rr4qiXYa^Zg1np}r4BE;_p!`mWrHYhX+&)50PCF$(uNb1Y&yy1^5mo2?J z48zM9p)uu9Ok5C_N7;2JNNA;2(BCfiISAc9eMBHsk2)ghm2@@HhB&d*6+EDI P)i$0)WAO-WbfV@ThX_hF literal 0 HcmV?d00001 diff --git a/TschenrechnerParser$yyTable0.class b/TschenrechnerParser$yyTable0.class new file mode 100644 index 0000000000000000000000000000000000000000..fd07a48b6c76ad482aa0f3596a8d1bc90f86fd1a GIT binary patch literal 1846 zcmZwIXLM9W7{>AUZqH^RHv|wBL=+WJ3HBBNjUXrnG;wvowpp%ZYIL4(s(mawY0B~w;yDbM=0lyhxCu@vOmia}{Y zwp0#E1G~CfvaN++m}iOqx}izUo<$lvCI_C?jLR2;rp~FYL5ZXbHslKb{3Y4k(OJp` zqw@uq?6aEvhpI%kq$wy@#&nb`aqH<>-D-lKrN$OrS&fBkxg3;jfU7;^PVLH8^{yAP zh>q=My17w5*Ltpv4q0s80)pM0`fT2Gx47otXmq7psN~XGFR`pD6ON}dk!U&-O{6n1 zKbFqKeK(Wv-O!JP9dSSDO!(E#D$OR9@~ai|Q{=iS*FEB>QO|eV`L*ix5Ot!b=p}lK zHAEk=rdUg?E&7UnVja<6tSbhH^~CyOpx8icC^iy<#9%Q*Y%Dern~I^LUJMhPiOt0p zVoR}=*jj8OwiVln?ZpnFLF_1oixFa^*h%ax8pSSRlo%~`6=TF$v76Xkj1zl^CNW-2 z5POQfM6+lSdyBN#N9-#yVxpKN_7nSy1H^&iAdwZVA}1z`KpZTlh&GWI?cxwo5K~1_ zbcjR6VWK3;q9QuQG;z2%LUf5E#ZlsDaf~=t9OtODxD zoQ-pEE}o8O;F)+9o{i_=xp*F)j~C#DcoANVm*Ay%8D5T8;5?j0t=N o7{MsUFdj`WwD|uo_!$;9-`(jUtF<1qb=J$ZNq7AxtWGb+-%{z6rvLx| literal 0 HcmV?d00001 diff --git a/TschenrechnerParser.class b/TschenrechnerParser.class new file mode 100644 index 0000000000000000000000000000000000000000..a5f13b9b958232a99984318ab911c6f36b58df95 GIT binary patch literal 4852 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 literal 0 HcmV?d00001 diff --git a/TschenrechnerParser.java b/TschenrechnerParser.java new file mode 100644 index 0000000..60a8b48 --- /dev/null +++ b/TschenrechnerParser.java @@ -0,0 +1,631 @@ +// created by jay 0.8 (c) 1998 Axel.Schreiner@informatik.uni-osnabrueck.de + + // line 1 "TschenrechnerParser.jay" + +class TschenrechnerParser { + // line 7 "-" + yyError yytemperror = new yyError(); + public final int yyErrorCode = yytemperror.tokennr; + + /** thrown for irrecoverable syntax errors and stack overflow. + */ + public static class yyException extends java.lang.Exception { + public yyException (String message) { + super(message); + } + } + + /** must be implemented by a scanner object to supply input to the parser. + */ + public interface yyInput { + /** move on to next token. + @return false if positioned beyond tokens. + @throws IOException on input error. + */ + /** modified by diho, 10.04.2004 */ + yyTokenclass advance () throws java.io.IOException; + /** classifies current token. + Should not be called if advance() returned false. + @return current %token or single character. + */ + /** modified by diho, 10.04.2004 token () is not longer necessary, + advance () supplies token or null + int token (); */ + + + /** associated with current token. + Should not be called if advance() returned false. + @return value for token(). + */ + /** modified by diho, 10.04.2004 value () is not longer necessary, + Token value can be retrieved from Token itself. + Object value ();*/ + } + + /** simplified error message. + @see yyerror + */ + public void yyerror (String message) { + yyerror(message, null); + } + + /** (syntax) error message. + Can be overwritten to control message format. + @param message text to be displayed. + @param expected vector of acceptable tokens, if available. + */ + public void yyerror (String message, String[] expected) { + if (expected != null && expected.length > 0) { + System.err.print(message+", expecting"); + for (int n = 0; n < expected.length; ++ n) + System.err.print(" "+expected[n]); + System.err.println(); + } else + System.err.println(message); + } + + /** debugging support, requires the package jay.yydebug. + Set to null to suppress debugging messages. + */ +//t protected jay.yydebug.yyDebug yydebug; + + protected static final int yyFinal = 3; + + /** index-checked interface to yyName[]. + @param token single character or %token value. + @return token name or [illegal] or [unknown]. + */ +//t public static final String yyname (int token) { +//t if (token < 0 || token > YyNameClass.yyName.length) return "[illegal]"; +//t String name; +//t if ((name = YyNameClass.yyName[token]) != null) return name; +//t return "[unknown]"; +//t } + + /** computes list of expected tokens on error by tracing the tables. + @param state for which to compute the list. + @return list of token names. + */ + protected String[] yyExpecting (int state) { + int token, n, len = 0; + boolean[] ok = new boolean[YyNameClass.yyName.length]; + + if ((n = YySindexClass.yySindex[state]) != 0) + for (token = n < 0 ? -n : 0; + token < YyNameClass.yyName.length && n+token < YyTableClass.yyTable.length; ++ token) + if (YyCheckClass.yyCheck[n+token] == token && !ok[token] && YyNameClass.yyName[token] != null) { + ++ len; + ok[token] = true; + } + if ((n = YyRindexClass.yyRindex[state]) != 0) + for (token = n < 0 ? -n : 0; + token < YyNameClass.yyName.length && n+token < YyTableClass.yyTable.length; ++ token) + if (YyCheckClass.yyCheck[n+token] == token && !ok[token] && YyNameClass.yyName[token] != null) { + ++ len; + ok[token] = true; + } + + String result[] = new String[len]; + for (n = token = 0; n < len; ++ token) + if (ok[token]) result[n++] = YyNameClass.yyName[token]; + return result; + } + + /** the generated parser, with debugging messages. + Maintains a state and a value stack, currently with fixed maximum size. + @param yyLex scanner. + @param yydebug debug message writer implementing yyDebug, or null. + @return result of the last reduction, if any. + @throws yyException on irrecoverable parse error. + */ + public Object yyparse (yyInput yyLex, Object yydebug) + throws java.io.IOException, yyException { +//t this.yydebug = (jay.yydebug.yyDebug)yydebug; + return yyparse(yyLex); + } + + /** initial size and increment of the state/value stack [default 256]. + This is not final so that it can be overwritten outside of invocations + of yyparse(). + */ + protected int yyMax; + + /** executed at the beginning of a reduce action. + Used as $$ = yyDefault($1), prior to the user-specified action, if any. + Can be overwritten to provide deep copy, etc. + @param first value for $1, or null. + @return first. + */ + protected Object yyDefault (Object first) { + return first; + } + + /** the generated parser. + Maintains a state and a value stack, currently with fixed maximum size. + @param yyLex scanner. + @return result of the last reduction, if any. + @throws yyException on irrecoverable parse error. + */ + public Object yyparse (yyInput yyLex) + throws java.io.IOException, yyException { + YyCheckClass.yyCheckInit(); // initial yyCheck eingefuegt PL 05-03-08 + YyTableClass.yyTableInit(); // initial yyCheck eingefuegt PL 05-03-08 + if (yyMax <= 0) yyMax = 256; // initial size + int yyState = 0, yyStates[] = new int[yyMax]; // state stack + Object yyVal = null, yyVals[] = new Object[yyMax]; // value stack + /*modified by diho, 14.04.2004 + orig: int yyToken = -1 was replaced by "empty Token"*/ + yyTokenclass yyToken = new yyTokenclass(); // current input + int yyErrorFlag = 0; // #tks to shift + + yyLoop: for (int yyTop = 0;; ++ yyTop) { + if (yyTop >= yyStates.length) { // dynamically increase + int[] i = new int[yyStates.length+yyMax]; + System.arraycopy(yyStates, 0, i, 0, yyStates.length); + yyStates = i; + Object[] o = new Object[yyVals.length+yyMax]; + System.arraycopy(yyVals, 0, o, 0, yyVals.length); + yyVals = o; + } + yyStates[yyTop] = yyState; + yyVals[yyTop] = yyVal; +//t if (yydebug != null) yydebug.push(yyState, yyVal); + + yyDiscarded: for (;;) { // discarding a token does not change stack + int yyN; + if ((yyN = YyDefRedClass.yyDefRed[yyState]) == 0) { // else [default] reduce (yyN) + /* modified by diho, 14.04.2004 + if "empty token", get next token */ + if (yyToken.tokennr <0) { + /* modified by diho, 10.04.2004 + call yyLex.advance in any case, check if yyToken is EOF */ + yyToken = yyLex.advance(); /*? yyLex.token() : 0;*/ + /* modified by diho, 27.04.2004 + if "null", create EOF token */ + if (yyToken == null) {yyToken = new EOF();} + +//t if (yydebug != null) +//t /* modified by diho, 14.04.2004 +//t orig.: yydebug.lex(yyState, yyToken, yyname(yyToken), yyLex.value()); */ +//t yydebug.lex(yyState, yyToken.tokennr, yyname(yyToken.tokennr), yyToken.value); + } + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr*/ + if ((yyN = YySindexClass.yySindex[yyState]) != 0 && (yyN += yyToken.tokennr) >= 0 + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr*/ + && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyToken.tokennr) { +//t if (yydebug != null) +//t yydebug.shift(yyState, YyTableClass.yyTable[yyN], yyErrorFlag-1); + yyState = YyTableClass.yyTable[yyN]; // shift to yyN + /* modified by diho, 14.04.2004 + replaced yyLex.value() by yyToken.value*/ + yyVal = yyToken.value; + /* modified by diho, 14.04.2004 + orig: yyToken = -1 */ + yyToken = new yyTokenclass(); + if (yyErrorFlag > 0) -- yyErrorFlag; + continue yyLoop; + } + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr*/ + if ((yyN = YyRindexClass.yyRindex[yyState]) != 0 && (yyN += yyToken.tokennr) >= 0 + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr*/ + && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyToken.tokennr) + yyN = YyTableClass.yyTable[yyN]; // reduce (yyN) + else + switch (yyErrorFlag) { + + case 0: + yyerror("syntax error", yyExpecting(yyState)); +//t if (yydebug != null) yydebug.error("syntax error"); + + case 1: case 2: + yyErrorFlag = 3; + do { + if ((yyN = YySindexClass.yySindex[yyStates[yyTop]]) != 0 + && (yyN += yyErrorCode) >= 0 && yyN < YyTableClass.yyTable.length + && YyCheckClass.yyCheck[yyN] == yyErrorCode) { +//t if (yydebug != null) +//t yydebug.shift(yyStates[yyTop], YyTableClass.yyTable[yyN], 3); + yyState = YyTableClass.yyTable[yyN]; + /* modified by diho, 14.04.2004 + replaced yyLex.value by yyToken.value*/ + yyVal = yyToken.value; + continue yyLoop; + } +//t if (yydebug != null) yydebug.pop(yyStates[yyTop]); + } while (-- yyTop >= 0); +//t if (yydebug != null) yydebug.reject(); + throw new yyException("irrecoverable syntax error"); + + case 3: + /* modified by diho, 14.04.2004 + orig.: if (yyToken == 0)*/ + if (yyToken == null) { +//t if (yydebug != null) yydebug.reject(); + throw new yyException("irrecoverable syntax error at end-of-file"); + } +//t if (yydebug != null) + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr, yyLex.value by yyToken.value*/ +//t yydebug.discard(yyState, yyToken.tokennr, yyname(yyToken.tokennr), +//t yyToken.value); + /* modified by diho, 14.04.2004 + orig: yyToken = -1*/ + yyToken = new yyTokenclass(); + continue yyDiscarded; // leave stack alone + } + } + int yyV = yyTop + 1-YyLenClass.yyLen[yyN]; +//t if (yydebug != null) +//t yydebug.reduce(yyState, yyStates[yyV-1], yyN, YyRuleClass.yyRule[yyN], YyLenClass.yyLen[yyN]); + yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]); + switch (yyN) { +case 1: + // line 15 "TschenrechnerParser.jay" + {} + break; +case 2: + // line 16 "TschenrechnerParser.jay" + {} + break; +case 3: + // line 17 "TschenrechnerParser.jay" + {} + break; +case 4: + // line 19 "TschenrechnerParser.jay" + {} + break; +case 5: + // line 20 "TschenrechnerParser.jay" + {} + break; +case 6: + // line 21 "TschenrechnerParser.jay" + {} + break; +case 7: + // line 22 "TschenrechnerParser.jay" + {} + break; + // line 295 "-" + } + yyTop -= YyLenClass.yyLen[yyN]; + yyState = yyStates[yyTop]; + int yyM = YyLhsClass.yyLhs[yyN]; + if (yyState == 0 && yyM == 0) { +//t if (yydebug != null) yydebug.shift(0, yyFinal); + yyState = yyFinal; + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr*/ + if (yyToken.tokennr < 0) { + /** modified by diho, 10.04.2004 + */ + yyToken = yyLex.advance(); /* ? yyLex.token() : 0;*/ + /* modified by diho, 14.04.2004 + if "empty token", get next token */ + if (yyToken == null) {yyToken = new EOF();} +//t if (yydebug != null) + /* modified by diho, 14.04.2004 + replaced yyToken by yyToken.tokennr, yyLex.value() by yyToken.value*/ +//t yydebug.lex(yyState, yyToken.tokennr,yyname(yyToken.tokennr), yyToken.value); + } + /* modified by diho, 14.04.2004 + orig.: if (yyToken == 0) */ + if (yyToken.tokennr == 0) { +//t if (yydebug != null) yydebug.accept(yyVal); + return yyVal; + } + continue yyLoop; + } + if ((yyN = YyGindexClass.yyGindex[yyM]) != 0 && (yyN += yyState) >= 0 + && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyState) + yyState = YyTableClass.yyTable[yyN]; + else + yyState = YyDgotoClass.yyDgoto[yyM]; +//t if (yydebug != null) yydebug.shift(yyStates[yyTop], yyState); + continue yyLoop; + } + } + } + + protected static final class YyLhsClass { + + public static final short yyLhs [] = { -1, + 0, 0, 0, 1, 1, 1, 1, + }; + } /* End of class YyLhsClass */ + + protected static final class YyLenClass { + + public static final short yyLen [] = { 2, + 3, 3, 1, 1, 1, 1, 1, + }; + } /* End class YyLenClass */ + + protected static final class YyDefRedClass { + + public static final short yyDefRed [] = { 0, + 0, 3, 0, 0, 4, 5, 6, 7, 0, 1, + 0, + }; + } /* End of class YyDefRedClass */ + + protected static final class YyDgotoClass { + + public static final short yyDgoto [] = { 3, + 9, + }; + } /* End of class YyDgotoClass */ + + protected static final class YySindexClass { + + public static final short yySindex [] = { -247, + -247, 0, -248, -255, 0, 0, 0, 0, -247, 0, + -248, + }; + } /* End of class YySindexClass */ + + protected static final class YyRindexClass { + + public static final short yyRindex [] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, + }; + } /* End of class YyRindexClass */ + + protected static final class YyGindexClass { + + public static final short yyGindex [] = { -1, + 0, + }; + } /* End of class YyGindexClass */ + +protected static class yyTable0 { + protected static final short yyTable0 [] = { 4, + 2, 5, 6, 7, 8, 0, 10, 11, 5, 6, + 7, 8, 0, 1, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, + }; +} + protected static final class YyTableClass { + + static short[] yyTable = new short[264]; + protected static void yyTableInit () { + int numyycheck; + int yyTableerun = 0; + for (numyycheck = 0; numyycheck <= 1000; numyycheck++) { + if (yyTableerun < 264) { + yyTable[yyTableerun] = yyTable0.yyTable0[numyycheck]; + yyTableerun++; + } + } +} + } /* End of class YyTableClass */ + +protected static class yyCheck0 { + protected static final short yyCheck0 [] = { 1, + 0, 257, 258, 259, 260, -1, 262, 9, 257, 258, + 259, 260, -1, 261, -1, 263, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 262, + }; +} + protected static final class YyCheckClass { + + static short[] yyCheck = new short[264]; + protected static void yyCheckInit () { + int numyycheck; + int yyCheckerun = 0; + for (numyycheck = 0; numyycheck <= 1000; numyycheck++) { + if (yyCheckerun < 264) { + yyCheck[yyCheckerun] = yyCheck0.yyCheck0[numyycheck]; + yyCheckerun++; + } + } + + }; + } /* End of class YyCheckClass */ + + +//t protected static final class YyRuleClass { + +//t public static final String yyRule [] = { +//t "$accept : S", +//t "S : KLAMMERAUF S KLAMMERZU", +//t "S : S operationszeichen S", +//t "S : ZAHL", +//t "operationszeichen : PLUS", +//t "operationszeichen : MAL", +//t "operationszeichen : MINUS", +//t "operationszeichen : GETEILT", +//t }; +//t } /* End of class YyRuleClass */ + + protected static final class YyNameClass { + + public static final String yyName [] = { + "end-of-file",null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,null,null,null,null,null,null,null, + null,null,null,null,null,null,null,"PLUS","MAL","MINUS","GETEILT", + "KLAMMERAUF","KLAMMERZU","ZAHL","MALKLAMMERAUF", + }; + } /* End of class YyNameClass */ + + + // line 23 "TschenrechnerParser.jay" + + } + // line 535 "-" +class yyTokenclass { + public int tokennr; + public Object value; + + yyTokenclass () { + this.tokennr=-1; + } + yyTokenclass (Object o) { + this.value = o; + } +} +class EOF extends yyTokenclass { + + EOF () { + super(); + this.tokennr=0; + } +} +// %token constants + + final class PLUS extends yyTokenclass { + PLUS(Object o) { + super(o); + this.tokennr = 257; + } + PLUS() { + super(); + this.tokennr = 257; + } +} + final class MAL extends yyTokenclass { + MAL(Object o) { + super(o); + this.tokennr = 258; + } + MAL() { + super(); + this.tokennr = 258; + } +} + final class MINUS extends yyTokenclass { + MINUS(Object o) { + super(o); + this.tokennr = 259; + } + MINUS() { + super(); + this.tokennr = 259; + } +} + final class GETEILT extends yyTokenclass { + GETEILT(Object o) { + super(o); + this.tokennr = 260; + } + GETEILT() { + super(); + this.tokennr = 260; + } +} + final class KLAMMERAUF extends yyTokenclass { + KLAMMERAUF(Object o) { + super(o); + this.tokennr = 261; + } + KLAMMERAUF() { + super(); + this.tokennr = 261; + } +} + final class KLAMMERZU extends yyTokenclass { + KLAMMERZU(Object o) { + super(o); + this.tokennr = 262; + } + KLAMMERZU() { + super(); + this.tokennr = 262; + } +} + final class ZAHL extends yyTokenclass { + ZAHL(Object o) { + super(o); + this.tokennr = 263; + } + ZAHL() { + super(); + this.tokennr = 263; + } +} + final class MALKLAMMERAUF extends yyTokenclass { + MALKLAMMERAUF(Object o) { + super(o); + this.tokennr = 264; + } + MALKLAMMERAUF() { + super(); + this.tokennr = 264; + } +} +final class yyError extends yyTokenclass { + yyError () { + super(); + this.tokennr = 256; + } +} diff --git a/TschenrechnerParser.jay b/TschenrechnerParser.jay new file mode 100644 index 0000000..651b0ef --- /dev/null +++ b/TschenrechnerParser.jay @@ -0,0 +1,24 @@ +%{ +class TschenrechnerParser { +%} +%token PLUS +%token MAL +%token MINUS +%token GETEILT +%token KLAMMERAUF +%token KLAMMERZU +%token ZAHL +%token MALKLAMMERAUF + + +%% +S : KLAMMERAUF S KLAMMERZU {} + | S operationszeichen S {} + | ZAHL {} +operationszeichen : + PLUS {} + | MAL{} + | MINUS{} + | GETEILT{} +%% +} \ No newline at end of file diff --git a/TschenrechnerScanner.class b/TschenrechnerScanner.class new file mode 100644 index 0000000000000000000000000000000000000000..5887c3908317d28e86959575689a439bdd55ea64 GIT binary patch literal 482 zcmZut%TB^T6g^XcN-d&-in1~4f=41BfYAlfgrxBS4X%fB6RJ2RQy}!Obfbw2KfsSN z-ieQ(adTgD&Yg45+xyEafK!wmSXi==a*;+xpy10m7?RQy3>9gQ=A;EO$Ds-*C;VLT zZskli!l=<9IUwDv_8crDYr}D|0#~5uFD~c?Qt=*vbdro{F0fXqdP(9(ccg-mjN_(_ zRe|y^(v{RP>BA&xtMPOqkZMH(63Ba@qKoN$pR_OgBc9lDFq10a$~l_{G@gW!ift5G z=(o)F<7P@N3{Ajo8__MJk9gmX@n!L``lZcGqw6N#3NVi0Y~FI#5K~Q!;^Km+#CD>cLs0Qo?v_Rhd+cK6K=4<(-Z>> U4Bh0~!WOnUJ3PywgxyT`1LYuU6#xJL literal 0 HcmV?d00001 diff --git a/ZAHL.class b/ZAHL.class new file mode 100644 index 0000000000000000000000000000000000000000..3692ce2e156e01ef8163a9777b3a5dd2b77d7679 GIT binary patch literal 325 zcmZvW%}T>S6ot>7q>W9-{`dnvLK}bDy2{`dqi!A=MPFMu!6K$9R>tE7C^CM#4`5t=8t$?H?X?jT;MS2Ze> zc^ciM3!T-+!)Xf}Xaxu*+K>eQ{_HX)1hs20mOxjozT>*P1aB~$vgy2>X+k&7jlN#K zq}nDbEtrIN<QnHJ;Ee&H&$k1Q6Ax$z1u0S{yy-7`z(Hanqcz9>PtM>Ajkb7X=N5YfwtoP~7&c4* literal 0 HcmV?d00001 diff --git a/jaooy b/jaooy new file mode 100644 index 0000000000000000000000000000000000000000..232c8df181287e4cd8b8b5bd0baec3974b881ecb GIT binary patch literal 89024 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

    v*Te?Y-Rb*{J|bP&SXTzWH6T?0@`+a5t4uH)JsQ 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 +. */ +. public void yyerror (String message) { +. yyerror(message, null); +. } +. +. /** (syntax) error message. +. Can be overwritten to control message format. +. @param message text to be displayed. +. @param expected vector of acceptable tokens, if available. +. */ +. public void yyerror (String message, String[] expected) { +. if (expected != null && expected.length > 0) { +. System.err.print(message+", expecting"); +. for (int n = 0; n < expected.length; ++ n) +. System.err.print(" "+expected[n]); +. System.err.println(); +. } else +. System.err.println(message); +. } +. +. /** debugging support, requires the package jay.yydebug. +. Set to null to suppress debugging messages. +. */ +t protected jay.yydebug.yyDebug yydebug; +. + final_rule ## constant storing final rule +. +. /** index-checked interface to yyName[]. +. @param token single character or %token value. +. @return token name or [illegal] or [unknown]. +. */ +t public static final String yyname (int token) { +t if (token < 0 || token > YyNameClass.yyName.length) return "[illegal]"; +t String name; +t if ((name = YyNameClass.yyName[token]) != null) return name; +t return "[unknown]"; +t } +. +. /** computes list of expected tokens on error by tracing the tables. +. @param state for which to compute the list. +. @return list of token names. +. */ +. protected String[] yyExpecting (int state) { +. int token, n, len = 0; +. boolean[] ok = new boolean[YyNameClass.yyName.length]; +. +. if ((n = YySindexClass.yySindex[state]) != 0) +. for (token = n < 0 ? -n : 0; +. token < YyNameClass.yyName.length && n+token < YyTableClass.yyTable.length; ++ token) +. if (YyCheckClass.yyCheck[n+token] == token && !ok[token] && YyNameClass.yyName[token] != null) { +. ++ len; +. ok[token] = true; +. } +. if ((n = YyRindexClass.yyRindex[state]) != 0) +. for (token = n < 0 ? -n : 0; +. token < YyNameClass.yyName.length && n+token < YyTableClass.yyTable.length; ++ token) +. if (YyCheckClass.yyCheck[n+token] == token && !ok[token] && YyNameClass.yyName[token] != null) { +. ++ len; +. ok[token] = true; +. } +. +. String result[] = new String[len]; +. for (n = token = 0; n < len; ++ token) +. if (ok[token]) result[n++] = YyNameClass.yyName[token]; +. return result; +. } +. +. /** the generated parser, with debugging messages. +. Maintains a state and a value stack, currently with fixed maximum size. +. @param yyLex scanner. +. @param yydebug debug message writer implementing yyDebug, or null. +. @return result of the last reduction, if any. +. @throws yyException on irrecoverable parse error. +. */ +. public Object yyparse (yyInput yyLex, Object yydebug) +. throws java.io.IOException, yyException { +t this.yydebug = (jay.yydebug.yyDebug)yydebug; +. return yyparse(yyLex); +. } +. +. /** initial size and increment of the state/value stack [default 256]. +. This is not final so that it can be overwritten outside of invocations +. of yyparse(). +. */ +. protected int yyMax; +. +. /** executed at the beginning of a reduce action. +. Used as $$ = yyDefault($1), prior to the user-specified action, if any. +. Can be overwritten to provide deep copy, etc. +. @param first value for $1, or null. +. @return first. +. */ +. protected Object yyDefault (Object first) { +. return first; +. } +. +. /** the generated parser. +. Maintains a state and a value stack, currently with fixed maximum size. +. @param yyLex scanner. +. @return result of the last reduction, if any. +. @throws yyException on irrecoverable parse error. +. */ +. public Object yyparse (yyInput yyLex) +. throws java.io.IOException, yyException { +. YyCheckClass.yyCheckInit(); // initial yyCheck eingefuegt PL 05-03-08 +. YyTableClass.yyTableInit(); // initial yyCheck eingefuegt PL 05-03-08 +. if (yyMax <= 0) yyMax = 256; // initial size +. int yyState = 0, yyStates[] = new int[yyMax]; // state stack +. Object yyVal = null, yyVals[] = new Object[yyMax]; // value stack +. /*modified by diho, 14.04.2004 +. orig: int yyToken = -1 was replaced by "empty Token"*/ +. yyTokenclass yyToken = new yyTokenclass(); // current input +. int yyErrorFlag = 0; // #tks to shift +. + local ## %{ ... %} after the first %% + +. yyLoop: for (int yyTop = 0;; ++ yyTop) { +. if (yyTop >= yyStates.length) { // dynamically increase +. int[] i = new int[yyStates.length+yyMax]; +. System.arraycopy(yyStates, 0, i, 0, yyStates.length); +. yyStates = i; +. Object[] o = new Object[yyVals.length+yyMax]; +. System.arraycopy(yyVals, 0, o, 0, yyVals.length); +. yyVals = o; +. } +. yyStates[yyTop] = yyState; +. yyVals[yyTop] = yyVal; +t if (yydebug != null) yydebug.push(yyState, yyVal); +. +. yyDiscarded: for (;;) { // discarding a token does not change stack +. int yyN; +. if ((yyN = YyDefRedClass.yyDefRed[yyState]) == 0) { // else [default] reduce (yyN) +. /* modified by diho, 14.04.2004 +. if "empty token", get next token */ +. if (yyToken.tokennr <0) { +. /* modified by diho, 10.04.2004 +. call yyLex.advance in any case, check if yyToken is EOF */ +. yyToken = yyLex.advance(); /*? yyLex.token() : 0;*/ +. /* modified by diho, 27.04.2004 +. if "null", create EOF token */ +. if (yyToken == null) {yyToken = new EOF();} +. +t if (yydebug != null) +t /* modified by diho, 14.04.2004 +t orig.: yydebug.lex(yyState, yyToken, yyname(yyToken), yyLex.value()); */ +t yydebug.lex(yyState, yyToken.tokennr, yyname(yyToken.tokennr), yyToken.value); +. } +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr*/ +. if ((yyN = YySindexClass.yySindex[yyState]) != 0 && (yyN += yyToken.tokennr) >= 0 +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr*/ +. && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyToken.tokennr) { +t if (yydebug != null) +t yydebug.shift(yyState, YyTableClass.yyTable[yyN], yyErrorFlag-1); +. yyState = YyTableClass.yyTable[yyN]; // shift to yyN +. /* modified by diho, 14.04.2004 +. replaced yyLex.value() by yyToken.value*/ +. yyVal = yyToken.value; +. /* modified by diho, 14.04.2004 +. orig: yyToken = -1 */ +. yyToken = new yyTokenclass(); +. if (yyErrorFlag > 0) -- yyErrorFlag; +. continue yyLoop; +. } +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr*/ +. if ((yyN = YyRindexClass.yyRindex[yyState]) != 0 && (yyN += yyToken.tokennr) >= 0 +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr*/ +. && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyToken.tokennr) +. yyN = YyTableClass.yyTable[yyN]; // reduce (yyN) +. else +. switch (yyErrorFlag) { +. +. case 0: +. yyerror("syntax error", yyExpecting(yyState)); +t if (yydebug != null) yydebug.error("syntax error"); +. +. case 1: case 2: +. yyErrorFlag = 3; +. do { +. if ((yyN = YySindexClass.yySindex[yyStates[yyTop]]) != 0 +. && (yyN += yyErrorCode) >= 0 && yyN < YyTableClass.yyTable.length +. && YyCheckClass.yyCheck[yyN] == yyErrorCode) { +t if (yydebug != null) +t yydebug.shift(yyStates[yyTop], YyTableClass.yyTable[yyN], 3); +. yyState = YyTableClass.yyTable[yyN]; +. /* modified by diho, 14.04.2004 +. replaced yyLex.value by yyToken.value*/ +. yyVal = yyToken.value; +. continue yyLoop; +. } +t if (yydebug != null) yydebug.pop(yyStates[yyTop]); +. } while (-- yyTop >= 0); +t if (yydebug != null) yydebug.reject(); +. throw new yyException("irrecoverable syntax error"); +. +. case 3: +. /* modified by diho, 14.04.2004 +. orig.: if (yyToken == 0)*/ +. if (yyToken == null) { +t if (yydebug != null) yydebug.reject(); +. throw new yyException("irrecoverable syntax error at end-of-file"); +. } +t if (yydebug != null) +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr, yyLex.value by yyToken.value*/ +t yydebug.discard(yyState, yyToken.tokennr, yyname(yyToken.tokennr), +t yyToken.value); +. /* modified by diho, 14.04.2004 +. orig: yyToken = -1*/ +. yyToken = new yyTokenclass(); +. continue yyDiscarded; // leave stack alone +. } +. } +. int yyV = yyTop + 1-YyLenClass.yyLen[yyN]; +t if (yydebug != null) +t yydebug.reduce(yyState, yyStates[yyV-1], yyN, YyRuleClass.yyRule[yyN], YyLenClass.yyLen[yyN]); +. yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]); +. switch (yyN) { + + actions ## code from the actions within the grammar + +. } +. yyTop -= YyLenClass.yyLen[yyN]; +. yyState = yyStates[yyTop]; +. int yyM = YyLhsClass.yyLhs[yyN]; +. if (yyState == 0 && yyM == 0) { +t if (yydebug != null) yydebug.shift(0, yyFinal); +. yyState = yyFinal; +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr*/ +. if (yyToken.tokennr < 0) { +. /** modified by diho, 10.04.2004 +. */ +. yyToken = yyLex.advance(); /* ? yyLex.token() : 0;*/ +. /* modified by diho, 14.04.2004 +. if "empty token", get next token */ +. if (yyToken == null) {yyToken = new EOF();} +t if (yydebug != null) +. /* modified by diho, 14.04.2004 +. replaced yyToken by yyToken.tokennr, yyLex.value() by yyToken.value*/ +t yydebug.lex(yyState, yyToken.tokennr,yyname(yyToken.tokennr), yyToken.value); +. } +. /* modified by diho, 14.04.2004 +. orig.: if (yyToken == 0) */ +. if (yyToken.tokennr == 0) { +t if (yydebug != null) yydebug.accept(yyVal); +. return yyVal; +. } +. continue yyLoop; +. } +. if ((yyN = YyGindexClass.yyGindex[yyM]) != 0 && (yyN += yyState) >= 0 +. && yyN < YyTableClass.yyTable.length && YyCheckClass.yyCheck[yyN] == yyState) +. yyState = YyTableClass.yyTable[yyN]; +. else +. yyState = YyDgotoClass.yyDgoto[yyM]; +t if (yydebug != null) yydebug.shift(yyStates[yyTop], yyState); +. continue yyLoop; +. } +. } +. } +. + tables ## tables for rules, default reduction, and action calls +. + debug ## tables for debugging support +. + epilog ## text following second %% + +# modified by diho, 11.02.2004 +.class yyTokenclass { +. public int tokennr; +. public Object value; +. +. yyTokenclass () { +. this.tokennr=-1; +. } +. yyTokenclass (Object o) { +. this.value = o; +. } +.} +.class EOF extends yyTokenclass { +. +. EOF () { +. super(); +. this.tokennr=0; +. } +.} + + +# end of modification +.// %token constants +. +# modified by diho, 11.02.2004 + tokens final class +# end of modification diff --git a/test b/test new file mode 100644 index 0000000..d569537 --- /dev/null +++ b/test @@ -0,0 +1 @@ +4 + 3 - 2 \ No newline at end of file diff --git a/test2 b/test2 new file mode 100644 index 0000000..5580d2e --- /dev/null +++ b/test2 @@ -0,0 +1,23 @@ + + + + + + Spoon-Knife + + + + + + + + +

    + Fork me? Fork you, @octocat! +

    +

    + Sean made a change +

    + + + \ No newline at end of file diff --git a/y.output b/y.output new file mode 100644 index 0000000..2f4f8dd --- /dev/null +++ b/y.output @@ -0,0 +1,128 @@ + 0 $accept : S $end + + 1 S : KLAMMERAUF S KLAMMERZU + 2 | S operationszeichen S + 3 | ZAHL + + 4 operationszeichen : PLUS + 5 | MAL + 6 | MINUS + 7 | GETEILT + +state 0 + $accept : . S $end (0) + + KLAMMERAUF shift 1 + ZAHL shift 2 + . error + + S goto 3 + + +state 1 + S : KLAMMERAUF . S KLAMMERZU (1) + + KLAMMERAUF shift 1 + ZAHL shift 2 + . error + + S goto 4 + + +state 2 + S : ZAHL . (3) + + . reduce 3 + + +state 3 + $accept : S . $end (0) + S : S . operationszeichen S (2) + + $end accept + PLUS shift 5 + MAL shift 6 + MINUS shift 7 + GETEILT shift 8 + . error + + operationszeichen goto 9 + + +state 4 + S : KLAMMERAUF S . KLAMMERZU (1) + S : S . operationszeichen S (2) + + PLUS shift 5 + MAL shift 6 + MINUS shift 7 + GETEILT shift 8 + KLAMMERZU shift 10 + . error + + operationszeichen goto 9 + + +state 5 + operationszeichen : PLUS . (4) + + . reduce 4 + + +state 6 + operationszeichen : MAL . (5) + + . reduce 5 + + +state 7 + operationszeichen : MINUS . (6) + + . reduce 6 + + +state 8 + operationszeichen : GETEILT . (7) + + . reduce 7 + + +state 9 + S : S operationszeichen . S (2) + + KLAMMERAUF shift 1 + ZAHL shift 2 + . error + + S goto 11 + + +state 10 + S : KLAMMERAUF S KLAMMERZU . (1) + + . reduce 1 + + +11: shift/reduce conflict (shift 5, reduce 2) on PLUS +11: shift/reduce conflict (shift 6, reduce 2) on MAL +11: shift/reduce conflict (shift 7, reduce 2) on MINUS +11: shift/reduce conflict (shift 8, reduce 2) on GETEILT +state 11 + S : S . operationszeichen S (2) + S : S operationszeichen S . (2) + + PLUS shift 5 + MAL shift 6 + MINUS shift 7 + GETEILT shift 8 + $end reduce 2 + KLAMMERZU reduce 2 + + operationszeichen goto 9 + + +State 11 contains 4 shift/reduce conflicts. + + +10 terminals, 3 nonterminals +8 grammar rules, 12 states diff --git a/yyError.class b/yyError.class new file mode 100644 index 0000000000000000000000000000000000000000..0ef8f81fa5a7cccb039404deb4621fba6628abd9 GIT binary patch literal 235 zcmW-b!D_-#5Jm62q^8DKt-F4L6_I{GsS8mMN+}rJKjVO@`T~DIG+J1JPk zKkn%8rf-af14v6#>3mW(QrZwZ`~?mBgfpVk-PP6JMF5x*p{dX@M|Jj;8a)34TsAB< literal 0 HcmV?d00001 diff --git a/yyTokenclass.class b/yyTokenclass.class new file mode 100644 index 0000000000000000000000000000000000000000..f3780ceb651f38f9d35b274f3b70c6de7e5417d9 GIT binary patch literal 377 zcmZXP!AiqG5QhKRB#n)+jj633J+=|-11NeB1fi&4=zS9xn;JK;X$yU<9*W?>2k@c9 z*?5t9S$6*Uzkg=FzCS(zTw@SG!13XR@X#VebGee^QtFrSLpE3Wg3!7wbg{T1IK$Dj zjXkt|1R?ej62kR5tzMPROIg