From e2347c725a0324ef212ca7305d1139751be6fe8c Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:31:33 +0000 Subject: [PATCH 1/4] GitHub Classroom Autograding Workflow --- .github/workflows/classroom.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/classroom.yml diff --git a/.github/workflows/classroom.yml b/.github/workflows/classroom.yml new file mode 100644 index 0000000..830ac2f --- /dev/null +++ b/.github/workflows/classroom.yml @@ -0,0 +1,29 @@ +name: Autograding Tests +'on': +- workflow_dispatch +- repository_dispatch +permissions: + checks: write + actions: read + contents: read +jobs: + run-autograding-tests: + runs-on: ubuntu-latest + if: github.actor != 'github-classroom[bot]' + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Scanner Test + id: scanner-test + uses: classroom-resources/autograding-command-grader@v1 + with: + test-name: Scanner Test + setup-command: '' + command: gradle test + timeout: 10 + - name: Autograding Reporter + uses: classroom-resources/autograding-grading-reporter@v1 + env: + SCANNER-TEST_RESULTS: "${{steps.scanner-test.outputs.result}}" + with: + runners: scanner-test From ff6390a165be31460fa4c446e36819b7a1c74cf0 Mon Sep 17 00:00:00 2001 From: Ketato Abuladze <123391827+ketatoabuladze@users.noreply.github.com> Date: Sun, 24 Nov 2024 14:50:08 -0500 Subject: [PATCH 2/4] pushin the code --- .gradle/8.8/checksums/checksums.lock | Bin 0 -> 17 bytes .gradle/8.8/checksums/md5-checksums.bin | Bin 0 -> 19897 bytes .gradle/8.8/checksums/sha1-checksums.bin | Bin 0 -> 22115 bytes .../8.8/dependencies-accessors/gc.properties | 0 .gradle/8.8/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.8/fileHashes/fileHashes.bin | Bin 0 -> 18597 bytes .gradle/8.8/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .gradle/8.8/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/vcs-1/gc.properties | 0 .../java/com/scanner/project/TokenStream.java | 43 +++++++++++++++--- 12 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 .gradle/8.8/checksums/checksums.lock create mode 100644 .gradle/8.8/checksums/md5-checksums.bin create mode 100644 .gradle/8.8/checksums/sha1-checksums.bin create mode 100644 .gradle/8.8/dependencies-accessors/gc.properties create mode 100644 .gradle/8.8/fileChanges/last-build.bin create mode 100644 .gradle/8.8/fileHashes/fileHashes.bin create mode 100644 .gradle/8.8/fileHashes/fileHashes.lock create mode 100644 .gradle/8.8/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/vcs-1/gc.properties diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..3db8dec6bba81d60c06c19e426985e53a2c79e84 GIT binary patch literal 17 TcmZQ>mtvR_6tbb30RplCB+vtO literal 0 HcmV?d00001 diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..540a6872caa65af7bc1c67e6ae2915895924effd GIT binary patch literal 19897 zcmeI3{Z~_E9Ka_yLAQ9_f&>-e@G={P0wGEWnoM417GNqC2nZC8&Ou%j2n0b77!hw8 zT2KMu5f0=D6ko!S78(j86(ts1Ao13GIW_?k*S&k5Cl9;*1)c9bXLt8}w$FX;^VvQ7 zWqaOWu`EqAcw;@^_|FgF2ns*}C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjNK1)u;F z_`ehgr6#fnO~z8FM;{ocvRE!$>cBd?eO+^n^RIpAW$|J1`$0~trip*@ zy;yJCrNyI&`!6KCDC(YTO;o-da|z*<;;n{Br|riO58OrgH{Z5w9a>OpjJPaAd=n~;0ai_Zd z3d<}oFC=_aFCa}7V^e^5;1uB#65p)R)ldG!=hr8k-E*z8U~*jp=Cg#`wyb)Pb=_?x z;$l0(9kT1wW0iFpeEwGncWh6Wm>x1qKz!3)!kxBl9}(Ry^~UG#B3y8zL3n=Y*D}mw z|K*Pdb_g7wJw-g|A>nJ+OwU-=@>&u1uOfVXrBJE=OME-xn{E>x?sB33EWOj{HP}M|C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjNK1)u;F zfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpnxltKtMf~(+`tl+YfGN zUfLgUwJ~=}p?}PU#hO>@Q`C0?but%G&#%liYV~$LDAt&)D=2eOIHY+QVB;@j@cWs@ zj7aFmPdHG&Yv}HilLIv+*ziCG_Yl)Cv{nUvwAVnHIOR0^Xnh*>e|q|=?tFy|^J1nk zm~=lm>}Rpa*ur&xRFj;#3ax>!io2I-<}*w~5kJ}ZFnWpD zP}7>btU{&6#%?sm{7;$2K52qH;i#GBcTJbuM27hU)3_JAvrClx{f=bMe9~iNn*wA4kl?Ml&)@2bsn-&o{qZEu9$~s2a6XgbS(u z^vo5Pk-^Pl8ZWKtb$(R!UQYTKTMo5#+EHszw8jl&@V7Dz_5L*<I40?YhAKJyB@l$)iTq0|xiW_3!V z|4uZ9(iIupJGhLy z4KBUfL}wm_viD1FN9q4~q+_Get^JAAOzBoi`df$E_(E!@W4OQN{^2wB9S?nPIe-38 zCG|a}HSo$B{x+r&R<=;|TBod-_nq6Cl!G>GZTtguSk+ws literal 0 HcmV?d00001 diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..1a3738c882871da996e3b751899d9ca11bb0da13 GIT binary patch literal 22115 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.8/dependencies-accessors/gc.properties b/.gradle/8.8/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.8/fileChanges/last-build.bin b/.gradle/8.8/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..33ba49e08772ccd679ec5c9486ca9bdc6264fac4 GIT binary patch literal 18597 zcmeI%F-ikL6adgk5Cal1Ac24=S_VV}3oT6uYHJ~}5t|e#gDJET&kzFXynrAcz(%mN zGuY`FREV9Rvuu`-3s}heFgt(#>}O|QyNwVkrJr$xNt7q4i~s=w1PBlyK!5-N0t5&U zAV7cs0RjXF5cn?wNAV(a>18VG`6O954`H(yll*aKbUS-8AJ<77)Uy8v-9i0j=k@M> zT<>P}Y>xF>y5~uN009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PJ`4z*hWNHIB7plv)?>i>rm3-M8kT^R&G(6GEX fp?>x;dTu|o`d7of>&y6NuJ>Jj+)q0`zmkq$)H*_j literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..28f879f6b34d0c6cc34ba8ea035d01b08d2c3618 GIT binary patch literal 17 UcmZR+yoevejs>@0Rk8SC=dfr literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..29b6416 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Mon Nov 18 13:36:26 EST 2024 +gradle.version=8.8 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/scanner/project/TokenStream.java b/src/main/java/com/scanner/project/TokenStream.java index fbec67c..a581484 100644 --- a/src/main/java/com/scanner/project/TokenStream.java +++ b/src/main/java/com/scanner/project/TokenStream.java @@ -59,6 +59,10 @@ public Token nextToken() { // Main function of the scanner // skip rest of line - it's a comment. // TODO TO BE COMPLETED // look for , , + while(!isEndOfLine(nextChar) && !isEof){ + nextChar = readChar(); + } + skipWhiteSpace(); } else { // A slash followed by anything else must be an operator. @@ -72,7 +76,9 @@ public Token nextToken() { // Main function of the scanner // operators as well as 1-character ones. if (isOperator(nextChar)) { t.setType("Operator"); - t.setValue(t.getValue() + nextChar); + char currentChar = nextChar; + nextChar = readChar(); + switch (nextChar) { // TODO TO BE COMPLETED WHERE NEEDED case '<': @@ -83,15 +89,20 @@ public Token nextToken() { // Main function of the scanner // == case '!': // != - nextChar = readChar(); + if (nextChar == '='){ + t.setValue("" + currentChar + nextChar); + nextChar = readChar(); + }else{ + t.setValue("" + currentChar); + } return t; + case '|': // Look for || nextChar = readChar(); if (nextChar == '|') { - t.setValue(t.getValue() + nextChar); + t.setValue("" + currentChar + nextChar); nextChar = readChar(); - return t; } else { t.setType("Other"); } @@ -101,9 +112,8 @@ public Token nextToken() { // Main function of the scanner // Look or && nextChar = readChar(); if (nextChar == '&') { - t.setValue(t.getValue() + nextChar); + t.setValue("" + currentChar + nextChar); nextChar = readChar(); - return t; } else { t.setType("Other"); } @@ -120,6 +130,9 @@ public Token nextToken() { // Main function of the scanner if (isSeparator(nextChar)) { t.setType("Separator"); // TODO TO BE COMPLETED + t.setType("Separator"); + t.setValue("" + nextChar); + nextChar = readChar(); return t; } @@ -192,6 +205,12 @@ private char readChar() { private boolean isKeyword(String s) { // TODO TO BE COMPLETED + String[] keywords ={"if", "else", "while", "return", "int", "boolean", "void", "true", "false"}; + for (String keyword : keywords){ + if(keyword.equals(s)){ + return true; + } + } return false; } @@ -216,12 +235,24 @@ private void skipWhiteSpace() { private boolean isSeparator(char c) { // TODO TO BE COMPLETED + char[] separators = {';', ',', '(', ')', '{', '}', '[', ']'}; + for (char separator : separators){ + if (c == separator){ + return true; + } + } return false; } private boolean isOperator(char c) { // Checks for characters that start operators // TODO TO BE COMPLETED + char[] operators = {'+', '-', '*', '/', '=', '<', '>', '&', '|', '!', '%'}; + for (char operator : operators){ + if(c == operator){ + return true; + } + } return false; } From 9a7cd79ae38a55225deb6e5a4d975ded5dcbed5b Mon Sep 17 00:00:00 2001 From: Ketato Abuladze <123391827+ketatoabuladze@users.noreply.github.com> Date: Sun, 24 Nov 2024 15:03:36 -0500 Subject: [PATCH 3/4] second try --- src/main/java/com/scanner/project/TokenStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/scanner/project/TokenStream.java b/src/main/java/com/scanner/project/TokenStream.java index a581484..a61f69f 100644 --- a/src/main/java/com/scanner/project/TokenStream.java +++ b/src/main/java/com/scanner/project/TokenStream.java @@ -262,7 +262,7 @@ private boolean isLetter(char c) { private boolean isDigit(char c) { // TODO TO BE COMPLETED - return false; + return c >= '0' && c <= '9'; } public boolean isEndofFile() { From 80b4c0312aa8734df7dbf81f01b4cd42ed0b91db Mon Sep 17 00:00:00 2001 From: Ketato Abuladze <123391827+ketatoabuladze@users.noreply.github.com> Date: Sun, 24 Nov 2024 15:18:51 -0500 Subject: [PATCH 4/4] third try --- src/main/java/com/scanner/project/TokenStream.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/scanner/project/TokenStream.java b/src/main/java/com/scanner/project/TokenStream.java index a61f69f..7ee63c8 100644 --- a/src/main/java/com/scanner/project/TokenStream.java +++ b/src/main/java/com/scanner/project/TokenStream.java @@ -34,7 +34,7 @@ public TokenStream(String fileName) { input = new BufferedReader(new FileReader(fileName)); } catch (FileNotFoundException e) { System.out.println("File not found: " + fileName); - // System.exit(1); // Removed to allow ScannerDemo to continue + System.exit(1); // Removed to allow ScannerDemo to continue // running after the input file is not found. isEof = true; } @@ -150,9 +150,6 @@ public Token nextToken() { // Main function of the scanner } else if (t.getValue().equals("true") || t.getValue().equals("false")) { t.setType("Literal"); } - if (isEndOfToken(nextChar)) { // If token is valid, returns. - return t; - } } if (isDigit(nextChar)) { // check for integer literals @@ -163,9 +160,7 @@ public Token nextToken() { // Main function of the scanner } // An Integer-Literal is to be only followed by a space, // an operator, or a separator. - if (isEndOfToken(nextChar)) {// If token is valid, returns. - return t; - } + return t; } t.setType("Other");