From fb432d687cf4c97ae5570720ca02457fca2129ca Mon Sep 17 00:00:00 2001 From: niklasBr <104077966+bretzNiklas@users.noreply.github.com> Date: Wed, 28 Dec 2022 17:49:45 +0100 Subject: [PATCH] Added Parser.java --- .idea/uiDesigner.xml | 124 ++++++++++++++++++++++ Aufgabe3/packages/NUnit.3.13.3/CHANGES.md | 6 +- Aufgabe4/Ast.java | 65 ++++++++++++ Aufgabe4/{Tokenizer.java => Lexer.java} | 10 +- Aufgabe4/Main.java | 26 ----- Aufgabe4/Parser.java | 99 +++++++++++++++++ Aufgabe4/main.java | 41 +++++++ out/production/inf3_git/main.class | Bin 2089 -> 1429 bytes 8 files changed, 337 insertions(+), 34 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 Aufgabe4/Ast.java rename Aufgabe4/{Tokenizer.java => Lexer.java} (88%) delete mode 100644 Aufgabe4/Main.java create mode 100644 Aufgabe4/Parser.java create mode 100644 Aufgabe4/main.java diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Palette2"> + <group name="Swing"> + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> + </item> + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> + <initial-values> + <property name="text" value="Button" /> + </initial-values> + </item> + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="RadioButton" /> + </initial-values> + </item> + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="CheckBox" /> + </initial-values> + </item> + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="Label" /> + </initial-values> + </item> + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> + <preferred-size width="-1" height="20" /> + </default-constraints> + </item> + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> + </item> + </group> + </component> +</project> \ No newline at end of file diff --git a/Aufgabe3/packages/NUnit.3.13.3/CHANGES.md b/Aufgabe3/packages/NUnit.3.13.3/CHANGES.md index ae907d4..13279ed 100644 --- a/Aufgabe3/packages/NUnit.3.13.3/CHANGES.md +++ b/Aufgabe3/packages/NUnit.3.13.3/CHANGES.md @@ -1714,7 +1714,7 @@ NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad. ## NUnit 2.9.6 - October 4, 2013 -### Main Features +### main Features * Separate projects for nunit-console and nunit.engine * New builds for .NET 4.5 and Silverlight @@ -1847,7 +1847,7 @@ NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad. ## NUnit 2.9.3 - October 26, 2009 -### Main Features +### main Features * Created new API for controlling framework * New builds for .Net 3.5 and 4.0, compact framework 3.5 @@ -1861,7 +1861,7 @@ NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad. ## NUnit 2.9.2 - September 19, 2009 -### Main Features +### main Features * NUnitLite code is now merged with NUnit * Added NUnitLite runner to the framework code diff --git a/Aufgabe4/Ast.java b/Aufgabe4/Ast.java new file mode 100644 index 0000000..1de8c11 --- /dev/null +++ b/Aufgabe4/Ast.java @@ -0,0 +1,65 @@ +import java.beans.Expression; +import java.util.ArrayList; + +public abstract class Ast { + + public void visit(){ + + } + + +} + +class AstExpression extends Ast { + + AstExpression astExpression; + AstBinaryOp astBinaryOp; + AstValue astValue; + +} + +class AstBinaryOp extends Ast { + + Ast[] binaryOp = new Ast[3]; + +} + +class AstValue extends Ast { + + AstNumber astNumber; + AstValue astValue; + boolean isVariable; + +} + +class AstNumber extends Ast { + + AstDigitWoz astDigitWoz; + ArrayList<AstDigit> astDigits = new ArrayList<>(); + +} + +class AstDigitWoz extends Ast { + + int astDigitWozContent; + +} + +class AstDigit extends Ast { + + int astDigit; + +} + +class AstDecimal extends Ast { + + AstDigit astDigitBeforeComma; + AstDigit astDigitAfterComma; + + +} + +class AstOperator extends Ast { + + String astOperator; +} diff --git a/Aufgabe4/Tokenizer.java b/Aufgabe4/Lexer.java similarity index 88% rename from Aufgabe4/Tokenizer.java rename to Aufgabe4/Lexer.java index 574433d..fc81483 100644 --- a/Aufgabe4/Tokenizer.java +++ b/Aufgabe4/Lexer.java @@ -1,17 +1,17 @@ import java.util.ArrayList; import java.util.Objects; -public class Tokenizer { +public class Lexer { + public ArrayList<Token> lex(String s) { + ArrayList<String> separatedChars = separateChars(s); + ArrayList<String> tokensAsStrings = buildSubstringsFromSeparatedChars(separatedChars); + return constructTokenList(tokensAsStrings); - public ArrayList<Token> tokenizeString(String s) { - - - return constructTokenList( buildSubstringsFromSeparatedChars( separateChars(s) ) ); } diff --git a/Aufgabe4/Main.java b/Aufgabe4/Main.java deleted file mode 100644 index 4fa6318..0000000 --- a/Aufgabe4/Main.java +++ /dev/null @@ -1,26 +0,0 @@ - - -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/Parser.java b/Aufgabe4/Parser.java new file mode 100644 index 0000000..fe1ccee --- /dev/null +++ b/Aufgabe4/Parser.java @@ -0,0 +1,99 @@ +import java.io.IOError; +import java.sql.SQLSyntaxErrorException; +import java.util.ArrayList; +import java.util.Collections; + +public class Parser { + + public AstExpression parse (ArrayList<Token> tokenList) { + + AstExpression root; + + root = (AstExpression) parseAstExpression(tokenList); + + return root; + } + + private Ast parseAstExpression (ArrayList<Token> tokenList) { + + if(tokenList.size() == 1) { + AstValue astValue = new AstValue(); + astValue.astNumber = new AstNumber(); + astValue.astNumber.astDigitWoz = new AstDigitWoz(); + + astValue.astNumber.astDigitWoz.astDigitWozContent = Integer.parseInt(tokenList.get(0).getTokenString()); + return astValue; + } + + AstExpression astExpression = new AstExpression(); + + ArrayList<Token> tokensPos3 = new ArrayList<>(); + + tokenList.forEach(token -> { + if(token != tokenList.get(0) && token != tokenList.get(1)) { + tokensPos3.add(token); + } + }); + + + astExpression.astBinaryOp = parseBinaryOp(tokenList.get(0), tokenList.get(1), tokensPos3); + + return astExpression; + + } + + private AstBinaryOp parseBinaryOp (Token expression1, Token operator, ArrayList<Token> expression2) { + + + + + AstBinaryOp astBinaryOp = new AstBinaryOp(); + + + AstValue exp1; + + ArrayList<Token> exp1ArrayList = new ArrayList<>(); + exp1ArrayList.add(expression1); + exp1 = (AstValue) parseAstExpression(exp1ArrayList); + + astBinaryOp.binaryOp[0] = exp1; + + + astBinaryOp.binaryOp[1] = parseOperator(operator); + + + + // ( 2 + 3 ) + 3 + + + if (expression2.size() > 2) { + + astBinaryOp.binaryOp[2] = parseAstExpression(expression2); + + } else { + + AstValue exp2 = new AstValue(); + + ArrayList<Token> exp2ArrayList = new ArrayList<>(); + exp2ArrayList.add(expression2.get(0)); + exp2 = (AstValue) parseAstExpression(exp2ArrayList); + + astBinaryOp.binaryOp[2] = exp2; + + } + + return astBinaryOp ; + } + + private AstOperator parseOperator (Token operator) { + + AstOperator astOperator = new AstOperator(); + astOperator.astOperator = operator.tokenString; + + return astOperator; + } + + + + +} diff --git a/Aufgabe4/main.java b/Aufgabe4/main.java new file mode 100644 index 0000000..5c9c610 --- /dev/null +++ b/Aufgabe4/main.java @@ -0,0 +1,41 @@ +import java.util.Arrays; + +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 "; + + Lexer lexer = new Lexer(); + + // [23x] + [0,5x^2 - 1] + + + //lexer.lex(ausdruck).forEach(token -> System.out.println(token.getTokenString())); + + Parser p = new Parser(); + + AstExpression result = p.parse(lexer.lex(ausdruck)); + + + System.out.println( ((AstValue) result.astBinaryOp.binaryOp[0]).astNumber.astDigitWoz.astDigitWozContent ); + + System.out.println( ((AstOperator) result.astBinaryOp.binaryOp[1]).astOperator ); + + + // System.out.println( ( result.astBinaryOp.binaryOp[2]).getClass() ); + + AstExpression root = (AstExpression) result.astBinaryOp.binaryOp[2]; + + System.out.println( ((AstValue) root.astBinaryOp.binaryOp[0]).astNumber.astDigitWoz.astDigitWozContent ); + + System.out.println( ((AstOperator) root.astBinaryOp.binaryOp[1]).astOperator ); + + System.out.println( ((AstValue) root.astBinaryOp.binaryOp[2]).astNumber.astDigitWoz.astDigitWozContent ); + + + } +} + diff --git a/out/production/inf3_git/main.class b/out/production/inf3_git/main.class index 386650f1dab3e03d3dce9cf08e58cea64d1e5f43..274c9dc70fb7124b56b29c31600ddfaac7e9ea12 100644 GIT binary patch literal 1429 zcmaJ>X;afs6g`hFX-gC>Zn$9GTM?^ur-&kgqLHF#U2uCXnHmjACrKUfNBAf7vokuK zI-@g;e)UH=p4YSr=-3ZQ?so3E_np@tKfkO1D8fvk2N4ZX9WlfOHocUuW!{!fEnlj< zG^>F?eAIHRU`!yA&6N{K2qX)c;moPbQ0BCTlt9cdmrO5(qypN&f?4VL%Aq5oyqk1v zMw<1uxg?Ow8h?7s1)k;9in-9$2rN54?s;<Au>7E?0JiAZif!ysSC|5aJJst_bH=zI zOfJ<u)AudcDJHQ40~&Vf*oEC|rkY#!19OpN+y-ac8aB4v{49wCq+`lORu5vYhK!DV z*e|eQ4Yok9^n)vwBfaHPol(`gYqInp4rw^7;|Q`$T@@2ZRDM^*=T%uz!%@2VRhD+c zOd^M4I)-taJC=Sh(^#yS9#K?oXt2QvoYYXzaSErI_B#^tx@y&|;J*8&!>enu>@3b{ zIIrUZMnYcQm_VAny4Hm21g68)i0KqYaZ$sVj!U>K(BD3`wW|`)>S}SeBM{9_=gJzc zgy^NZ>B+$Lk{HKT9g~;}33mPL`nL{L$Lp%yG>_(AIw>o;-qc~>7WY;&g9%&uKDlK( z5^5{A?WBB0QBq*D>%c-`7Zuq%q`fFD#eTwFpuYMH%Q3@M-<1`cp0wdsrCpYurR<I~ z8oaRBHg2fmqQJK7{NK~$%7m3(P4W9jm;=a$zu+~huc&X{4RzF-(Y{QC6x3G22(J>& zIHldNc`kkHq|P3m>oSm<a~odOoU#<_q#|})oftKIn@dx_9<UMOe9qCz^DX#}9sLaP zu^qn4rwRiR+~ZRZ6Hvx|T1ni&1A162rkN3^?|WJ^z9RYXGkR}*h0gcJnc-tYE%dd} zKN9_f?E}#!_B3%IQuu~k6GKhpn>f=#aaAnJ*mx5YEnHjWjTKtB(ZWm@A;zr1k(kPe z{RguXTZh^4DvUKO{tRB=xIlt~rO=Bs`mu%o1KTlz0nB0#s@MyU+kA@yc#lK)hHQID zW8ot35RX_N!3yRv#WnS!g~xcpt@q;tp5hr}gLsGMkcbkggbKf6%&fAm2MfOdB=kuM 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_@ -- GitLab