From 78b14c344baec885bc886ae3328f027293e5c716 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:01:07 +0000 Subject: [PATCH 1/9] Initial plan From b6c4611ad90f301cde9bd64882eb0e7f6a1c72e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:05:01 +0000 Subject: [PATCH 2/9] Initial commit: Current state only handles Project 3 Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- .../CS323-Compilers-2025F-Projects/Main.class | Bin 828 -> 636 bytes .../TestP4.class | Bin 0 -> 732 bytes .../framework/AbstractCompiler.class | Bin 468 -> 381 bytes .../framework/AbstractGrader.class | Bin 2189 -> 2208 bytes .../framework/Utils.class | Bin 4769 -> 3831 bytes .../framework/lang/Type.class | Bin 311 -> 241 bytes .../framework/project3/Grader.class | Bin 851 -> 578 bytes ...nticError$DefinitionOfIncompleteType.class | Bin 1251 -> 1105 bytes .../Project3SemanticError$MemberError.class | Bin 1281 -> 1140 bytes ...ect3SemanticError$RedeclarationError.class | Bin 1306 -> 1158 bytes ...ject3SemanticError$RedefinitionError.class | Bin 1210 -> 1073 bytes ...ect3SemanticError$UndeclaredUseError.class | Bin 1215 -> 1077 bytes .../project3/Project3SemanticError.class | Bin 1824 -> 1550 bytes .../project4/Project4Exception.class | Bin 0 -> 369 bytes .../project4/Project4SemanticError.class | Bin 0 -> 4592 bytes .../generated/Splc/Splc.interp | 100 ------------- .../generated/Splc/Splc.tokens | 76 ---------- .../generated/Splc/SplcBaseListener.class | Bin 5014 -> 3454 bytes .../generated/Splc/SplcBaseVisitor.class | Bin 4949 -> 3672 bytes .../generated/Splc/SplcLexer.class | Bin 9100 -> 8795 bytes .../generated/Splc/SplcLexer.interp | 140 ------------------ .../generated/Splc/SplcLexer.tokens | 76 ---------- .../generated/Splc/SplcListener.class | Bin 2268 -> 2268 bytes .../Splc/SplcParser$BracketContext.class | Bin 2488 -> 1948 bytes .../Splc/SplcParser$ExprStmtContext.class | Bin 2256 -> 1769 bytes .../Splc/SplcParser$ExpressionContext.class | Bin 4636 -> 3554 bytes .../Splc/SplcParser$FuncArgsContext.class | Bin 3067 -> 2427 bytes .../Splc/SplcParser$GlobalDefContext.class | Bin 3790 -> 3043 bytes .../Splc/SplcParser$IfStmtContext.class | Bin 2826 -> 2233 bytes .../Splc/SplcParser$ProgramContext.class | Bin 2530 -> 1965 bytes .../Splc/SplcParser$ReturnStmtContext.class | Bin 2344 -> 1837 bytes .../Splc/SplcParser$SpecifierContext.class | Bin 3478 -> 2729 bytes .../Splc/SplcParser$StatementContext.class | Bin 935 -> 680 bytes .../Splc/SplcParser$VarDecContext.class | Bin 2645 -> 2005 bytes .../Splc/SplcParser$VarDecStmtContext.class | Bin 2739 -> 2196 bytes .../Splc/SplcParser$WhileStmtContext.class | Bin 2539 -> 1997 bytes .../generated/Splc/SplcParser.class | Bin 23005 -> 21632 bytes .../generated/Splc/SplcVisitor.class | Bin 3013 -> 3013 bytes .../impl/Compiler$ArrayType.class | Bin 1626 -> 1383 bytes .../impl/Compiler$BasicType$Kind.class | Bin 1161 -> 1069 bytes .../impl/Compiler$BasicType.class | Bin 1159 -> 948 bytes .../impl/Compiler$FunctionType.class | Bin 2004 -> 1654 bytes .../impl/Compiler$PointerType.class | Bin 1475 -> 1258 bytes .../impl/Compiler$SemanticAnalyzer.class | Bin 15909 -> 13113 bytes .../impl/Compiler$StructType$Member.class | Bin 606 -> 504 bytes .../impl/Compiler$StructType.class | Bin 3097 -> 2624 bytes .../impl/Compiler$Symbol$Kind.class | Bin 1327 -> 1235 bytes .../impl/Compiler$Symbol.class | Bin 1107 -> 924 bytes .../impl/Compiler$SymbolTable.class | Bin 4664 -> 3671 bytes .../impl/Compiler.class | Bin 3531 -> 3062 bytes 50 files changed, 392 deletions(-) create mode 100644 out/production/CS323-Compilers-2025F-Projects/TestP4.class create mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4Exception.class create mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.interp delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.tokens delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.interp delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.tokens diff --git a/out/production/CS323-Compilers-2025F-Projects/Main.class b/out/production/CS323-Compilers-2025F-Projects/Main.class index 60cb356a4bed8ff5ea561dcaa29b2ea472ab6443..bc29e4cf6e2a98820e2e25a76d9b9e2b9d53cdbc 100644 GIT binary patch delta 137 zcmdnP_J@V*)W2Q(7#J9A88kO?)iO?A!>GW=Yfg~GPkb{AfL5V?`fr&u@C}uzTFq4`tL|%x21t`MJz{SABAjZJU XAjQDXpaK+O0qRo)Vs#*!i9rJZhaM9^ delta 322 zcmX|)%}T>S6ot>kG-_}mih{bStyWuqM%`&abWuczC@5}R-NrE;O_MSie>UREC&-g@ zC5X6j=QD|T(}E25-ZS@nbLPkW@ci%J_fG%^*y;PvqB<3%A;p(uG__-OQ8WS9c627- z1t+AFX8tNFFD0Gy?ybN~a7zy)bt;dG#kn<#x=m&yL)Xd(%m+7yy6Q1Cck-~ESwo>c z8hA{(WFiipz8a>)lthvvbP}=Yx1K`PvpP+(QAno#e>!dDUt(`xLhu1fjW>us3kQqb zy}@z}71k3&097pUZ5+#}F;!-*^14$KPJZUh?G|JiBk(ba6|C}`S-7a9!7Q+VHLUa8 O;Bwj9L$TgCnm`E?9JYf=IRC+W-!m;ELM1sBRXUfAg2X*gL9BaPNfEV5m}XdM zx7)Qtndu-tt$8AoA9tTLvo!Q;l&~?2I~-*PbC_qCyQK>QPfgD-CYt(y=Tb0{P|H^1 zh@;A|a9#R32<3j9=2s$0SY%k&#P1V#=B6q!_uO+wrP!$8uCZjEV})VqlM<2qnyAm$ z@Tcw@B~GNWv5YkXTxV!riJ?o6@U@0cbaOpaK`L$B!v@EugZsw$#T$+nUZ$1s^?-sb zRe8+ukbZ@+?O>0=dYPO^hM7(f%lCQYNp&c^kWQ>f1msJ#{^2%b80=Tye3|MXi8GGJ zBL?qxhZ#ckl3e-HIL9zKAZ;2yN%8|481ods%*fFCh`v@SGKynceXt+2VW`t;(l8@~ z2DYfgK;Obbk>ci0@bc6-W-d@UE-&=4)VaX&@irazvHEW39JQN9RpJ88TnP@!n8F&S Tu|c!4O{W%-?9kh!eF5%2xWTCF literal 0 HcmV?d00001 diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/AbstractCompiler.class b/out/production/CS323-Compilers-2025F-Projects/framework/AbstractCompiler.class index 06b4c3cc4f97b08ddda86fb6edf1217adb388ec1..3dcf784fdd4c4f9a6ecf634226dd7c84263fc2c0 100644 GIT binary patch delta 99 zcmcb@{FjOA)W2Q(7#J9A8N?=X?V9*slu>xHC}WJf76TIyGB9vyZD(NA(%#Czz7fb{ qWZ(yqd<@J$l9PdjfeT1-voJCUFt7pT1c9O~Kw1chMSyH322lVIsSRcT delta 203 zcmey%bcLDg)W2Q(7#J8F7$hfh?Ftm~$xlwq2}>->Oiap24FM613@jxXnZ=9@GCpZV ziMgre`9<0Kj!DHOMTyBJ&iT0onK`LN){G3S#U+VFC5#MQt`*6t1tppJdByAuViRx0 zB)c&%0U-kem)3R$MlJ2F4D1_$JSGNyAj!wT3?w-jSQxl~BsYTqkS7LF%^=7i1mpqr g0mXS37+Dw@gc;Zv7#T!>Vk|&f6o|!vY$gT?0BQIq+W-In diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/AbstractGrader.class b/out/production/CS323-Compilers-2025F-Projects/framework/AbstractGrader.class index f4a3239a7d230af924b5d07817ab9c92d01c82f6..69d0fccec3b39d30f37db8f64cd0f7b617223d14 100644 GIT binary patch delta 933 zcma)3+int36kP{~4otC@(l%ghFm18iD%Ca-L(tfk#8_&pRBW|g20E>j!i*zE-}r() z%@6o&e6WUK;)5UHM_Cuc1oS~-CbQ2z`|Q0g=bQ#U29%$_zW)G_!<#cD>CX7Dfr5-p zKOSI9Aa-b~b?v=w*3yQlA8VE7N_yK#idtQ5G^>@oY3imm<%zU>c!)0%FV+&_1p)zU1!I`sB&ATzJL&5=IyUkT8ae?4LvsR~WBj3MxoBh&=$N1vvh>l&ddx~ z!8T8#jqxx2{t>%)SrVvHtH3c&B(637yT~(kJrymVe52K4=y{su+s$Db^O!*tv$)D{ z!JgT3W|pa>D>6vJaI%g29b~&{2X_W?$LIt|5G={-N!b8(2O#PI&}AFj9kfb=xt`55 zT`p1XdS7UmXkAhLnp3(h$oLJh^{Phz delta 910 zcmYk4%W@J?5QhK53=H97fLIWzvVxk3KoZJSc_}R~sgg39K{Uj8*Bpik5H3RvgSz7h zT+PmvE7wM?SmnY8@D+Rj*S>(*bHK?grn}GSp6~qK=X{92i-&&x{r&^MO|%a}1t}Q9 zacoAQ+GV*vN~ng$J3HKL@mfdUb_|1THCqFQw7O^VuKva_+r{fs}|SVW!@KT1&GRQo;{Z4%%=Hki|KQgJAGum28DpU+ie$+DO8Eiqi;?orR1D*%%Ebjtu>G9&>m=nG7VdYuG}S zyb~oT!$h==hjhvg#X0!KSb?MC# zcu50bctyoB`Ca;ID3Nt|hCQ#WjV5{~gUTR`Q%K@8PT~yNMV!TwM_<;}mxYEpab(-oRaeb;ur8zhwi&2j!3WvDs_(R+{LLL)WwoH>-p(|bW zpkppN1|54uWN5hL-6=Um#HII0Ob@V|!N|tsu_UM);35=UBJyRL!xaxb<&acsikr4)X+ll!C>APLC@s`b5fB=&CTD}eUTICxrXWQj zk>p-TjEJK6AleE-F@c0Yg1)$dP2`1&#y9%HHv|$B{{Ub5BWbF$d%Yrw+1$)Ldo$nf zcjlR$UjAoe{KxsPz6N^ud^&DN<3vo-{@&cS>!sJ+l;)FnGfRc!z`^34S9TQlKUW+c z8+CY3cyO1w<^C+sYf`&e>3XI=zUhI}aX#h~hsjzFGG)%izxB@uQRxz)cI)`~=z&dR z#fgd035Rp$NFr-Z3mH>NWXunV%$~PZMqt}3BSpDPDt40`tCvl?VdeJ+P6xoIX1MY+IOo23%mtYbBQCKJw>95 z?^~LtRo8hWpz|DSs7lqYRMya9cRHzzW?N+jt&uV>=v=~XDyS_gu@vgDM$YrleTgBh zZRPEwjt*w+J?h07|F?6!XT49g7im>nudC9aH{Xa)lV0UAR;umNW$B@Xr+Jj!>PIwp zZ;332$ZQ4rY0r?^wf6ECN}B&p7-4Ip7We@ zp7Z`$b9%b_n|oKT0a%VNPrDuV63jI`j;}l1u%SypTA7UM0_CAtLhl&p59{eJEgYxD z8%jpB_$DnKGtXm6Dcc*%2vml4q_uv1Pcq%t_*ga;&ompi9jj%L6{s_Qchr>%I8s_V zqo)OGj7p^@N5!6WENd!U>4CW3!RvH1Xoh#3Fv0&=7`7LN+p z!vi}6RHIf>TLntAc)Uwb_s0@ioOWAj*Q;ehYXp>(7L5`v(Tz#%iAY-S*AoORn3~sE zt9-XePV12*jjW{G6H)z10cSBislz|50NsZ9F z_tk2Bc$XeA3$exc%`w#oI(L*^c4HJ*6kIJu7M~broj28M%tr);Kxum-p{G~IwM<6O zDEQpi?+Qpa1Zs_gu3F;=N3YyVLc2YFn{&dWfN>Y4)d-J9!$m&93_fs+Ps99A>kOmn}`dVVQNOGsf1Lr zT)``MQNoqdF1RrTQ|W|>*k>@58xSYuRx^)TK`Ahr!yLi8o~u~U?Ok*Ui?3hB((X%W z4$7+RZSm*Pn#Zcml-szgl6jDt9QG!~rvygL%df#7@F}BMXJeOm9tOWU_A27cKfm}K z!)STHwoa8R>hkC)Udfq2OsCd`pBZPPc~a#(I?wU6xe!pXH#vRIV!#^#pVJB$bg3>Y z=m_Tdlwnj_nB|^v)T*oKe=P21qB(ESauKf3YH2{a|iNWDB=!`pl7o0Z5r9|4zV?`;DxClHe#NJT%ieN3<7N7 zBzChETdh0;3aV-@csin diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/lang/Type.class b/out/production/CS323-Compilers-2025F-Projects/framework/lang/Type.class index af974800cde4b8795aa549b32838afe5adc1cf31..9bedda4959532eddccde471977573d6cc773adba 100644 GIT binary patch delta 64 zcmdna^pTP4)W2Q(7#J9A8Tcl0wN5;2p(W422!sp_>{>e+7#SHh0GW&o+(42IA`B#X JfIKD!UI6f#3JL%K delta 133 zcmey!xSfgX)W2Q(7#J8F7z8JBwHgWeTQge4YbCMM;ihJXl029}bH%wk3cQJ=J; z#N5>K{Gx3AoW#6z{gBFnRO^YoRyKwVj6lf1z^=8Efsv761CYtYzzrnXAi@khKsFDQ Q&C9?C`tKr9PnGcm{k E02dn<^8f$< delta 403 zcmZ9GJ5R!36o%hZYAdzkjaCbYSJZ$Bn~U+XFi4s>NZf1FgqlK|UW}W+0r@3NBn}Ra zuI~O6<7tb=m@nVCzUMjTP5h9Q_pg^%0GBwLC?`~3HGSLiZmrO@?mVZL8iE-2-H1>% z$0`|Xrvx?flhAf<;?S`M1Z{MoopIGq;vk8Cs=9e^Jy>nmZ(skZ^K>ChhJ<61`7sDFwF#12Qr_LfdeRN&Aff$?3=9mm47MA&M3^TRGq*Y!GcYkQ1I75YwlgqlX>Vm<*V5U_z`GGB z#K>RHN=eoiE8pMO!tO38Da%WWQtDzYD{I|fVj*S0-v96qtYv&` z=AD`5eV+cE*7w)t3c!SU)G?KcTFZ&O7~0O<9xtYYj|h0yv-wJ(WF72+sJltEPmUm= z_!lff$?3=9mm47MA&Vm<*V5U_z`GGB z#5h@(MUt11!JI*tfsw%!D3Uw5k|ltVaq=k^Sw&_B3!n%SgC&C%m}X+I2GU$Wl^j4( H8wM@_IL#5+ delta 206 zcmZqUoW;d;>ff$?3=9ko3=SK)QbRxlBLhoGMrJW1gRRfR zL~BOt$?D8~GLZ~S49q}%{94-?7`3#wGO%muY-Qlx2oz$Pe34nw*c`}GfGA@~ diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedefinitionError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedefinitionError.class index 2921c83c94bb7602356ac2a896d130a406d3838d..07341ce0569f780d6ea433fa20a16678d6869fea 100644 GIT binary patch delta 125 zcmdnRxsikG)W2Q(7#J9A87wz)J!YEh!Q5=A#lQrF3=CXa+Zh^Hb8y0K%N!YERa4120N%(%nas0 Z9utEFgC&?|0;&R;&&a?56t!mH0ssiE9#Q}R diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$UndeclaredUseError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$UndeclaredUseError.class index cb30da7caef1eff4e04bff9fd22a99bdc41039be..b66200058d88e97380e2069674569e4f2a88db57 100644 GIT binary patch delta 109 zcmdnbxs`+K)W2Q(7#J9A87wz)J!6{e!`#BCHTfd5s4^pi5m20uff-0DGq5nIFmN)c zGB7e2GiU-yL!fBdWK|YVM#jncEV7Es3?@JkCI(XmGce7>U=F0YfGRnFq81EX0G$pG AOaK4? delta 207 zcmdnWv7eLc)W2Q(7#J8F7;H9jJ!6s+^2tw5%n3^@%1lhkNeuxJj0`L#8JWe547NTK z6RjDoC%6 X1`7sDFwMkZ1*ExvYB+$R)(l(#i!L8t diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError.class index 15dc103723ea3e29e6e0332d599e79ca92bbcac4..884beddef97db8c56a9ab9985f59554ac1b49168 100644 GIT binary patch delta 419 zcmZvYOHPD97=(*=K!m_#h#kX16m^)VPuzF_kHBfzyKut+^a!#dk;J77Z(zL3WC~2M zLnb8DPw{=-oqqFPT<3fH@d@A&54H29RziEOezm76*MG_w3Ln788Yndf1u5U=U#TlN z#|6J_Tw=!VjPnV!{;%D_DyZ4-Bh4nB?Ze#;_hh{6_C6#(ANW(~{qhGb{2~l!Ok|@I z0t$;kkj@iz8yt=CDe>iiOY4gw&BEgb@z@YFR{uuzYDR^8F)^=T&4Z}e;EL(OfItMF dlZ9(G85;`;Zs4#>aLe?Wcg%=+&lJoY&JJA!Cz1dF delta 599 zcmZvY%SyvQ7=_O?8B5aGnxerVMJQfs>_x5huDB9Jmm+pkXf-bLI3llP#b@L`u6q~mP0PFV+$KXtR9HrwDM#j5!)?^u=3%fYo|UhI0vLS& zcV57{WFnZQb>w%5Ir7H9&m#k<3=42*s$mgX+L<9=6diTEEhjZ8sUe5FpD2V0C_Yu| z!6?(w@echU14f4emI6Qtst<_ukSHfjLWpV3|8y`VL@emA93YBe2dm#<@_&a32@qal zB>+er?6Q-bq7H4&bMiH82@yka@D8gXLOgQoT27>fBovhV=UKx#sR0ff782y5*r16+ alPJ>Igif diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4Exception.class b/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4Exception.class new file mode 100644 index 0000000000000000000000000000000000000000..108ed5337886b0688b5b76fbd94a1dfab936772d GIT binary patch literal 369 zcma)2u}T9$5PfrZxijaP7z+zK!6G@)YwV&n600C$B>mxxHDB`<4j4Iw_( zM%Sl=us@i#v4(bnG{ZVF!rrY@6+c>cUo4%Sb6Fo1m*3#WiWWO(9U&k8p`UQ2t-r5S0 nq_ZKNj<8&&exBy9pnU%Y$@5CnmD)ilHAaL4J|M!T@BqCphYMP> literal 0 HcmV?d00001 diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class new file mode 100644 index 0000000000000000000000000000000000000000..1a7fedb9dbe170fb377cacff515d7a1e54024a7a GIT binary patch literal 4592 zcmcIo`F9)D75<(rd&ctE7IJ_%q3IZ$M)DFRkW#RqBysJ7gB-b$V^G{}EInHjOEcol z$g#UZ_k|rw*`W(NEzlN{IBog8r+-pUPw$%I2uMulIn#agN=?DM?f9!t#!i|LI5uezpfMZpl!(1mV>?mJA&bic|lk;v>q zo8uM3a?QfD5VlAs7o$+oqaZ4|^fJWG8|y}@Y*?$Q?6Q=~(3wass_0|r%a|6|4;Cl& zgU+NL#Q1LKwB}3%+{WWeC z_zuQ9K7_E3Q&vrAIE)m-^%Y}{Qxpn@d#~x1Xyv%%c!%M(W?6w^P1*-LA?$l_6gMll zMZ+}%Fq}DfpU(Y0NMTHhkn&nmoeLOI6~!oAZ=clumo7EE@S3sG#6(hP@${W%vdc zQJlg(3NjkzaJrtXHP|^ zm-u)%iafq0bL!g+*M?L`a#7-wprOG97iWiDdW7^za`kSRZqjHQgu*x5QofJcdSPwOsCvOx@Kc74rCA1z@|NZS zqvAXDTziI4^0wi?zPhX_n_z%psZC++N$VkLb6n;(!vpO}YBH)R1}(7Pmht_5#hwYO zl_B4rPHhPrE*q8QqA_x{j2$^5d(CcrV>U^^9nIM_QQ$MCgol0gF?UB@9F|_8rgqY{ zUFudwb&k6wyXXvblbrZo)$lMLQSmxWW;BZHc2(X&Xu-zya*6IK^eeny6>m~MV-s#kuSy`&E2iV& ztcthk{^IWyBw}oTAyU7Ld_Jq@I;RnjsrWOY^dWYrF@{z=0MP9foe|c}T67nhDjSZ& z9R=?(428^W{_Th^CN1|P1%G2W*b?fngawZW0)MK(sh7@%4wZey|mu& zo}2VGOhW}-MbL8vEI)b?ogaCJze~?yNnYI zVY0`F`T_Ed@0X|PGS@}g71e)4^PRD1HXn)gWb<9IcsAc18_edFn3|o83`H(sc5Dk- z;4*R@couzEkk7}LF5;UX`9?Pce}`e*6F=cSw@|>gCLNFwlJg#rrrYju3iAnCoy3o6 zM+N&Y(h7b;I{pkl54Ui|w{ZU!N)5iudiGcDJ zN-LRIvHhc$QDb-oO5}A!I^Ur^-<7_}$36FTp`-se{YL?hdY>P|b&$qniJNOHomp6g|yo>kAgumkN_z*+?2jV{~*#H0l literal 0 HcmV?d00001 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.interp b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.interp deleted file mode 100644 index 6bf2184..0000000 --- a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.interp +++ /dev/null @@ -1,100 +0,0 @@ -token literal names: -null -'int' -'char' -'struct' -'return' -'if' -'else' -'while' -'=' -'+' -'-' -'*' -'/' -'%' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'&&' -'||' -'!' -'++' -'--' -'.' -'->' -'&' -';' -',' -'(' -')' -'{' -'}' -'[' -']' -null -null -null -null -null -null - -token symbolic names: -null -INT -CHAR -STRUCT -RETURN -IF -ELSE -WHILE -ASSIGN -PLUS -MINUS -STAR -DIV -MOD -LT -LE -GT -GE -EQ -NEQ -AND -OR -NOT -INC -DEC -DOT -ARROW -AMP -SEMI -COMMA -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -Identifier -Number -Char -WS -LINE_COMMENT -BLOCK_COMMENT - -rule names: -program -globalDef -specifier -varDec -funcArgs -statement -expression - - -atn: -[4, 1, 41, 226, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 1, 0, 5, 0, 16, 8, 0, 10, 0, 12, 0, 19, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 30, 8, 1, 10, 1, 12, 1, 33, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 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, 3, 1, 55, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 68, 8, 2, 10, 2, 12, 2, 71, 9, 2, 1, 2, 3, 2, 74, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 84, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 90, 8, 3, 10, 3, 12, 3, 93, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 101, 8, 4, 10, 4, 12, 4, 104, 9, 4, 3, 4, 106, 8, 4, 1, 5, 1, 5, 5, 5, 110, 8, 5, 10, 5, 12, 5, 113, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 120, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 131, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 146, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 161, 8, 6, 10, 6, 12, 6, 164, 9, 6, 3, 6, 166, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 183, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 221, 8, 6, 10, 6, 12, 6, 224, 9, 6, 1, 6, 0, 2, 6, 12, 7, 0, 2, 4, 6, 8, 10, 12, 0, 4, 1, 0, 11, 13, 1, 0, 9, 10, 1, 0, 14, 17, 1, 0, 18, 19, 266, 0, 17, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 4, 73, 1, 0, 0, 0, 6, 83, 1, 0, 0, 0, 8, 105, 1, 0, 0, 0, 10, 145, 1, 0, 0, 0, 12, 182, 1, 0, 0, 0, 14, 16, 3, 2, 1, 0, 15, 14, 1, 0, 0, 0, 16, 19, 1, 0, 0, 0, 17, 15, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 20, 1, 0, 0, 0, 19, 17, 1, 0, 0, 0, 20, 21, 5, 0, 0, 1, 21, 1, 1, 0, 0, 0, 22, 23, 3, 4, 2, 0, 23, 24, 5, 36, 0, 0, 24, 25, 5, 30, 0, 0, 25, 26, 3, 8, 4, 0, 26, 27, 5, 31, 0, 0, 27, 31, 5, 32, 0, 0, 28, 30, 3, 10, 5, 0, 29, 28, 1, 0, 0, 0, 30, 33, 1, 0, 0, 0, 31, 29, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 34, 1, 0, 0, 0, 33, 31, 1, 0, 0, 0, 34, 35, 5, 33, 0, 0, 35, 55, 1, 0, 0, 0, 36, 37, 3, 4, 2, 0, 37, 40, 3, 6, 3, 0, 38, 39, 5, 8, 0, 0, 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 28, 0, 0, 43, 55, 1, 0, 0, 0, 44, 45, 3, 4, 2, 0, 45, 46, 5, 36, 0, 0, 46, 47, 5, 30, 0, 0, 47, 48, 3, 8, 4, 0, 48, 49, 5, 31, 0, 0, 49, 50, 5, 28, 0, 0, 50, 55, 1, 0, 0, 0, 51, 52, 3, 4, 2, 0, 52, 53, 5, 28, 0, 0, 53, 55, 1, 0, 0, 0, 54, 22, 1, 0, 0, 0, 54, 36, 1, 0, 0, 0, 54, 44, 1, 0, 0, 0, 54, 51, 1, 0, 0, 0, 55, 3, 1, 0, 0, 0, 56, 74, 5, 1, 0, 0, 57, 74, 5, 2, 0, 0, 58, 59, 5, 3, 0, 0, 59, 74, 5, 36, 0, 0, 60, 61, 5, 3, 0, 0, 61, 62, 5, 36, 0, 0, 62, 69, 5, 32, 0, 0, 63, 64, 3, 4, 2, 0, 64, 65, 3, 6, 3, 0, 65, 66, 5, 28, 0, 0, 66, 68, 1, 0, 0, 0, 67, 63, 1, 0, 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 72, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 74, 5, 33, 0, 0, 73, 56, 1, 0, 0, 0, 73, 57, 1, 0, 0, 0, 73, 58, 1, 0, 0, 0, 73, 60, 1, 0, 0, 0, 74, 5, 1, 0, 0, 0, 75, 76, 6, 3, -1, 0, 76, 84, 5, 36, 0, 0, 77, 78, 5, 30, 0, 0, 78, 79, 3, 6, 3, 0, 79, 80, 5, 31, 0, 0, 80, 84, 1, 0, 0, 0, 81, 82, 5, 11, 0, 0, 82, 84, 3, 6, 3, 1, 83, 75, 1, 0, 0, 0, 83, 77, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 84, 91, 1, 0, 0, 0, 85, 86, 10, 2, 0, 0, 86, 87, 5, 34, 0, 0, 87, 88, 5, 37, 0, 0, 88, 90, 5, 35, 0, 0, 89, 85, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 7, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 3, 4, 2, 0, 95, 102, 3, 6, 3, 0, 96, 97, 5, 29, 0, 0, 97, 98, 3, 4, 2, 0, 98, 99, 3, 6, 3, 0, 99, 101, 1, 0, 0, 0, 100, 96, 1, 0, 0, 0, 101, 104, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 106, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 105, 94, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 9, 1, 0, 0, 0, 107, 111, 5, 32, 0, 0, 108, 110, 3, 10, 5, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 114, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 146, 5, 33, 0, 0, 115, 116, 3, 4, 2, 0, 116, 119, 3, 6, 3, 0, 117, 118, 5, 8, 0, 0, 118, 120, 3, 12, 6, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 28, 0, 0, 122, 146, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 125, 5, 30, 0, 0, 125, 126, 3, 12, 6, 0, 126, 127, 5, 31, 0, 0, 127, 130, 3, 10, 5, 0, 128, 129, 5, 6, 0, 0, 129, 131, 3, 10, 5, 0, 130, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 146, 1, 0, 0, 0, 132, 133, 5, 7, 0, 0, 133, 134, 5, 30, 0, 0, 134, 135, 3, 12, 6, 0, 135, 136, 5, 31, 0, 0, 136, 137, 3, 10, 5, 0, 137, 146, 1, 0, 0, 0, 138, 139, 5, 4, 0, 0, 139, 140, 3, 12, 6, 0, 140, 141, 5, 28, 0, 0, 141, 146, 1, 0, 0, 0, 142, 143, 3, 12, 6, 0, 143, 144, 5, 28, 0, 0, 144, 146, 1, 0, 0, 0, 145, 107, 1, 0, 0, 0, 145, 115, 1, 0, 0, 0, 145, 123, 1, 0, 0, 0, 145, 132, 1, 0, 0, 0, 145, 138, 1, 0, 0, 0, 145, 142, 1, 0, 0, 0, 146, 11, 1, 0, 0, 0, 147, 148, 6, 6, -1, 0, 148, 183, 5, 36, 0, 0, 149, 183, 5, 37, 0, 0, 150, 183, 5, 38, 0, 0, 151, 152, 5, 30, 0, 0, 152, 153, 3, 12, 6, 0, 153, 154, 5, 31, 0, 0, 154, 183, 1, 0, 0, 0, 155, 156, 5, 36, 0, 0, 156, 165, 5, 30, 0, 0, 157, 162, 3, 12, 6, 0, 158, 159, 5, 29, 0, 0, 159, 161, 3, 12, 6, 0, 160, 158, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 166, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 157, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 183, 5, 31, 0, 0, 168, 169, 5, 23, 0, 0, 169, 183, 3, 12, 6, 14, 170, 171, 5, 24, 0, 0, 171, 183, 3, 12, 6, 13, 172, 173, 5, 9, 0, 0, 173, 183, 3, 12, 6, 12, 174, 175, 5, 10, 0, 0, 175, 183, 3, 12, 6, 11, 176, 177, 5, 22, 0, 0, 177, 183, 3, 12, 6, 10, 178, 179, 5, 11, 0, 0, 179, 183, 3, 12, 6, 9, 180, 181, 5, 27, 0, 0, 181, 183, 3, 12, 6, 8, 182, 147, 1, 0, 0, 0, 182, 149, 1, 0, 0, 0, 182, 150, 1, 0, 0, 0, 182, 151, 1, 0, 0, 0, 182, 155, 1, 0, 0, 0, 182, 168, 1, 0, 0, 0, 182, 170, 1, 0, 0, 0, 182, 172, 1, 0, 0, 0, 182, 174, 1, 0, 0, 0, 182, 176, 1, 0, 0, 0, 182, 178, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 222, 1, 0, 0, 0, 184, 185, 10, 7, 0, 0, 185, 186, 7, 0, 0, 0, 186, 221, 3, 12, 6, 8, 187, 188, 10, 6, 0, 0, 188, 189, 7, 1, 0, 0, 189, 221, 3, 12, 6, 7, 190, 191, 10, 5, 0, 0, 191, 192, 7, 2, 0, 0, 192, 221, 3, 12, 6, 6, 193, 194, 10, 4, 0, 0, 194, 195, 7, 3, 0, 0, 195, 221, 3, 12, 6, 5, 196, 197, 10, 3, 0, 0, 197, 198, 5, 20, 0, 0, 198, 221, 3, 12, 6, 4, 199, 200, 10, 2, 0, 0, 200, 201, 5, 21, 0, 0, 201, 221, 3, 12, 6, 3, 202, 203, 10, 1, 0, 0, 203, 204, 5, 8, 0, 0, 204, 221, 3, 12, 6, 1, 205, 206, 10, 20, 0, 0, 206, 221, 5, 23, 0, 0, 207, 208, 10, 19, 0, 0, 208, 221, 5, 24, 0, 0, 209, 210, 10, 18, 0, 0, 210, 211, 5, 34, 0, 0, 211, 212, 3, 12, 6, 0, 212, 213, 5, 35, 0, 0, 213, 221, 1, 0, 0, 0, 214, 215, 10, 17, 0, 0, 215, 216, 5, 25, 0, 0, 216, 221, 5, 36, 0, 0, 217, 218, 10, 16, 0, 0, 218, 219, 5, 26, 0, 0, 219, 221, 5, 36, 0, 0, 220, 184, 1, 0, 0, 0, 220, 187, 1, 0, 0, 0, 220, 190, 1, 0, 0, 0, 220, 193, 1, 0, 0, 0, 220, 196, 1, 0, 0, 0, 220, 199, 1, 0, 0, 0, 220, 202, 1, 0, 0, 0, 220, 205, 1, 0, 0, 0, 220, 207, 1, 0, 0, 0, 220, 209, 1, 0, 0, 0, 220, 214, 1, 0, 0, 0, 220, 217, 1, 0, 0, 0, 221, 224, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 13, 1, 0, 0, 0, 224, 222, 1, 0, 0, 0, 19, 17, 31, 40, 54, 69, 73, 83, 91, 102, 105, 111, 119, 130, 145, 162, 165, 182, 220, 222] \ No newline at end of file diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.tokens b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.tokens deleted file mode 100644 index 66553e7..0000000 --- a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/Splc.tokens +++ /dev/null @@ -1,76 +0,0 @@ -INT=1 -CHAR=2 -STRUCT=3 -RETURN=4 -IF=5 -ELSE=6 -WHILE=7 -ASSIGN=8 -PLUS=9 -MINUS=10 -STAR=11 -DIV=12 -MOD=13 -LT=14 -LE=15 -GT=16 -GE=17 -EQ=18 -NEQ=19 -AND=20 -OR=21 -NOT=22 -INC=23 -DEC=24 -DOT=25 -ARROW=26 -AMP=27 -SEMI=28 -COMMA=29 -LPAREN=30 -RPAREN=31 -LBRACE=32 -RBRACE=33 -LBRACK=34 -RBRACK=35 -Identifier=36 -Number=37 -Char=38 -WS=39 -LINE_COMMENT=40 -BLOCK_COMMENT=41 -'int'=1 -'char'=2 -'struct'=3 -'return'=4 -'if'=5 -'else'=6 -'while'=7 -'='=8 -'+'=9 -'-'=10 -'*'=11 -'/'=12 -'%'=13 -'<'=14 -'<='=15 -'>'=16 -'>='=17 -'=='=18 -'!='=19 -'&&'=20 -'||'=21 -'!'=22 -'++'=23 -'--'=24 -'.'=25 -'->'=26 -'&'=27 -';'=28 -','=29 -'('=30 -')'=31 -'{'=32 -'}'=33 -'['=34 -']'=35 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseListener.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseListener.class index b620eba70f1019f74d33e9e25e25ad547c923846..f2320239d5bc63d6fefe1b4353f58398d413542e 100644 GIT binary patch literal 3454 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 F{sRpo6vzMo diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.class index b66f3db142ac3dacd690466e54a003b23ef9fdaf..037e9281b870ec96a88445b90517c4e255b13594 100644 GIT binary patch delta 452 zcmeBizwN?x>ff$?3=9mmjL{ppu8B{UlrWoIEwOB~s$?Tux(ov&5Hc{ZY+{(b0Z214 zdIL!|uvi46E0E2==mrsCbO&)5eHs0Lq!*Blq<0~@-Z-EMD;ZWnRa#FrR8Xsjn9aw) z4Ah&DU097Xqbq%x70dxa1fJy=x9zzu(S$zmyWj0Vv5EdirkD{y0 z1F8(hX6A8pm4!f+A=p%&LRVP=R2j+`1|-pfXstZD(sBk4#&Cw45T%S+lm95bWn`NC UN-32wVsehMBzq(ff$?3=9kojENh$u8Erq`Q#@j=7c2{WhN%&q=tY9Mh2FWjLc$21}UHP z)V$Q9#FEq${osO}WH8~AT9I00J^7xv1t)7}UO{OIBZJ~(M=`OtRTi%l>B2wihF zl4cgT=5Q?b9!1xhholu@Zv>jXU~7+WU;x^W90i3)ni2L!V$*yI-Qp6gdZQSlQ9KN` zcr9G71~l%=v1sOCjA6J5(ahL3`MJVdM&`*^6;owFsRR@`F$|83v5Znc-d+Y32#Yap PvbB;VdpuB#i7^2Hw8COY diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.interp b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.interp deleted file mode 100644 index f22c04a..0000000 --- a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.interp +++ /dev/null @@ -1,140 +0,0 @@ -token literal names: -null -'int' -'char' -'struct' -'return' -'if' -'else' -'while' -'=' -'+' -'-' -'*' -'/' -'%' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'&&' -'||' -'!' -'++' -'--' -'.' -'->' -'&' -';' -',' -'(' -')' -'{' -'}' -'[' -']' -null -null -null -null -null -null - -token symbolic names: -null -INT -CHAR -STRUCT -RETURN -IF -ELSE -WHILE -ASSIGN -PLUS -MINUS -STAR -DIV -MOD -LT -LE -GT -GE -EQ -NEQ -AND -OR -NOT -INC -DEC -DOT -ARROW -AMP -SEMI -COMMA -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -Identifier -Number -Char -WS -LINE_COMMENT -BLOCK_COMMENT - -rule names: -INT -CHAR -STRUCT -RETURN -IF -ELSE -WHILE -ASSIGN -PLUS -MINUS -STAR -DIV -MOD -LT -LE -GT -GE -EQ -NEQ -AND -OR -NOT -INC -DEC -DOT -ARROW -AMP -SEMI -COMMA -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -Identifier -Number -Char -WS -LINE_COMMENT -BLOCK_COMMENT - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 41, 242, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 5, 35, 188, 8, 35, 10, 35, 12, 35, 191, 9, 35, 1, 36, 1, 36, 1, 36, 5, 36, 196, 8, 36, 10, 36, 12, 36, 199, 9, 36, 3, 36, 201, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 207, 8, 37, 1, 37, 1, 37, 1, 38, 4, 38, 212, 8, 38, 11, 38, 12, 38, 213, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 222, 8, 39, 10, 39, 12, 39, 225, 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 233, 8, 40, 10, 40, 12, 40, 236, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 234, 0, 41, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 1, 0, 8, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 49, 57, 1, 0, 48, 57, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 5, 0, 39, 39, 48, 48, 92, 92, 110, 110, 116, 116, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 248, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 3, 87, 1, 0, 0, 0, 5, 92, 1, 0, 0, 0, 7, 99, 1, 0, 0, 0, 9, 106, 1, 0, 0, 0, 11, 109, 1, 0, 0, 0, 13, 114, 1, 0, 0, 0, 15, 120, 1, 0, 0, 0, 17, 122, 1, 0, 0, 0, 19, 124, 1, 0, 0, 0, 21, 126, 1, 0, 0, 0, 23, 128, 1, 0, 0, 0, 25, 130, 1, 0, 0, 0, 27, 132, 1, 0, 0, 0, 29, 134, 1, 0, 0, 0, 31, 137, 1, 0, 0, 0, 33, 139, 1, 0, 0, 0, 35, 142, 1, 0, 0, 0, 37, 145, 1, 0, 0, 0, 39, 148, 1, 0, 0, 0, 41, 151, 1, 0, 0, 0, 43, 154, 1, 0, 0, 0, 45, 156, 1, 0, 0, 0, 47, 159, 1, 0, 0, 0, 49, 162, 1, 0, 0, 0, 51, 164, 1, 0, 0, 0, 53, 167, 1, 0, 0, 0, 55, 169, 1, 0, 0, 0, 57, 171, 1, 0, 0, 0, 59, 173, 1, 0, 0, 0, 61, 175, 1, 0, 0, 0, 63, 177, 1, 0, 0, 0, 65, 179, 1, 0, 0, 0, 67, 181, 1, 0, 0, 0, 69, 183, 1, 0, 0, 0, 71, 185, 1, 0, 0, 0, 73, 200, 1, 0, 0, 0, 75, 202, 1, 0, 0, 0, 77, 211, 1, 0, 0, 0, 79, 217, 1, 0, 0, 0, 81, 228, 1, 0, 0, 0, 83, 84, 5, 105, 0, 0, 84, 85, 5, 110, 0, 0, 85, 86, 5, 116, 0, 0, 86, 2, 1, 0, 0, 0, 87, 88, 5, 99, 0, 0, 88, 89, 5, 104, 0, 0, 89, 90, 5, 97, 0, 0, 90, 91, 5, 114, 0, 0, 91, 4, 1, 0, 0, 0, 92, 93, 5, 115, 0, 0, 93, 94, 5, 116, 0, 0, 94, 95, 5, 114, 0, 0, 95, 96, 5, 117, 0, 0, 96, 97, 5, 99, 0, 0, 97, 98, 5, 116, 0, 0, 98, 6, 1, 0, 0, 0, 99, 100, 5, 114, 0, 0, 100, 101, 5, 101, 0, 0, 101, 102, 5, 116, 0, 0, 102, 103, 5, 117, 0, 0, 103, 104, 5, 114, 0, 0, 104, 105, 5, 110, 0, 0, 105, 8, 1, 0, 0, 0, 106, 107, 5, 105, 0, 0, 107, 108, 5, 102, 0, 0, 108, 10, 1, 0, 0, 0, 109, 110, 5, 101, 0, 0, 110, 111, 5, 108, 0, 0, 111, 112, 5, 115, 0, 0, 112, 113, 5, 101, 0, 0, 113, 12, 1, 0, 0, 0, 114, 115, 5, 119, 0, 0, 115, 116, 5, 104, 0, 0, 116, 117, 5, 105, 0, 0, 117, 118, 5, 108, 0, 0, 118, 119, 5, 101, 0, 0, 119, 14, 1, 0, 0, 0, 120, 121, 5, 61, 0, 0, 121, 16, 1, 0, 0, 0, 122, 123, 5, 43, 0, 0, 123, 18, 1, 0, 0, 0, 124, 125, 5, 45, 0, 0, 125, 20, 1, 0, 0, 0, 126, 127, 5, 42, 0, 0, 127, 22, 1, 0, 0, 0, 128, 129, 5, 47, 0, 0, 129, 24, 1, 0, 0, 0, 130, 131, 5, 37, 0, 0, 131, 26, 1, 0, 0, 0, 132, 133, 5, 60, 0, 0, 133, 28, 1, 0, 0, 0, 134, 135, 5, 60, 0, 0, 135, 136, 5, 61, 0, 0, 136, 30, 1, 0, 0, 0, 137, 138, 5, 62, 0, 0, 138, 32, 1, 0, 0, 0, 139, 140, 5, 62, 0, 0, 140, 141, 5, 61, 0, 0, 141, 34, 1, 0, 0, 0, 142, 143, 5, 61, 0, 0, 143, 144, 5, 61, 0, 0, 144, 36, 1, 0, 0, 0, 145, 146, 5, 33, 0, 0, 146, 147, 5, 61, 0, 0, 147, 38, 1, 0, 0, 0, 148, 149, 5, 38, 0, 0, 149, 150, 5, 38, 0, 0, 150, 40, 1, 0, 0, 0, 151, 152, 5, 124, 0, 0, 152, 153, 5, 124, 0, 0, 153, 42, 1, 0, 0, 0, 154, 155, 5, 33, 0, 0, 155, 44, 1, 0, 0, 0, 156, 157, 5, 43, 0, 0, 157, 158, 5, 43, 0, 0, 158, 46, 1, 0, 0, 0, 159, 160, 5, 45, 0, 0, 160, 161, 5, 45, 0, 0, 161, 48, 1, 0, 0, 0, 162, 163, 5, 46, 0, 0, 163, 50, 1, 0, 0, 0, 164, 165, 5, 45, 0, 0, 165, 166, 5, 62, 0, 0, 166, 52, 1, 0, 0, 0, 167, 168, 5, 38, 0, 0, 168, 54, 1, 0, 0, 0, 169, 170, 5, 59, 0, 0, 170, 56, 1, 0, 0, 0, 171, 172, 5, 44, 0, 0, 172, 58, 1, 0, 0, 0, 173, 174, 5, 40, 0, 0, 174, 60, 1, 0, 0, 0, 175, 176, 5, 41, 0, 0, 176, 62, 1, 0, 0, 0, 177, 178, 5, 123, 0, 0, 178, 64, 1, 0, 0, 0, 179, 180, 5, 125, 0, 0, 180, 66, 1, 0, 0, 0, 181, 182, 5, 91, 0, 0, 182, 68, 1, 0, 0, 0, 183, 184, 5, 93, 0, 0, 184, 70, 1, 0, 0, 0, 185, 189, 7, 0, 0, 0, 186, 188, 7, 1, 0, 0, 187, 186, 1, 0, 0, 0, 188, 191, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 72, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 192, 201, 5, 48, 0, 0, 193, 197, 7, 2, 0, 0, 194, 196, 7, 3, 0, 0, 195, 194, 1, 0, 0, 0, 196, 199, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 200, 192, 1, 0, 0, 0, 200, 193, 1, 0, 0, 0, 201, 74, 1, 0, 0, 0, 202, 206, 5, 39, 0, 0, 203, 207, 8, 4, 0, 0, 204, 205, 5, 92, 0, 0, 205, 207, 7, 5, 0, 0, 206, 203, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 209, 5, 39, 0, 0, 209, 76, 1, 0, 0, 0, 210, 212, 7, 6, 0, 0, 211, 210, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 216, 6, 38, 0, 0, 216, 78, 1, 0, 0, 0, 217, 218, 5, 47, 0, 0, 218, 219, 5, 47, 0, 0, 219, 223, 1, 0, 0, 0, 220, 222, 8, 7, 0, 0, 221, 220, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 6, 39, 0, 0, 227, 80, 1, 0, 0, 0, 228, 229, 5, 47, 0, 0, 229, 230, 5, 42, 0, 0, 230, 234, 1, 0, 0, 0, 231, 233, 9, 0, 0, 0, 232, 231, 1, 0, 0, 0, 233, 236, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 237, 1, 0, 0, 0, 236, 234, 1, 0, 0, 0, 237, 238, 5, 42, 0, 0, 238, 239, 5, 47, 0, 0, 239, 240, 1, 0, 0, 0, 240, 241, 6, 40, 0, 0, 241, 82, 1, 0, 0, 0, 8, 0, 189, 197, 200, 206, 213, 223, 234, 1, 6, 0, 0] \ No newline at end of file diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.tokens b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.tokens deleted file mode 100644 index 66553e7..0000000 --- a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.tokens +++ /dev/null @@ -1,76 +0,0 @@ -INT=1 -CHAR=2 -STRUCT=3 -RETURN=4 -IF=5 -ELSE=6 -WHILE=7 -ASSIGN=8 -PLUS=9 -MINUS=10 -STAR=11 -DIV=12 -MOD=13 -LT=14 -LE=15 -GT=16 -GE=17 -EQ=18 -NEQ=19 -AND=20 -OR=21 -NOT=22 -INC=23 -DEC=24 -DOT=25 -ARROW=26 -AMP=27 -SEMI=28 -COMMA=29 -LPAREN=30 -RPAREN=31 -LBRACE=32 -RBRACE=33 -LBRACK=34 -RBRACK=35 -Identifier=36 -Number=37 -Char=38 -WS=39 -LINE_COMMENT=40 -BLOCK_COMMENT=41 -'int'=1 -'char'=2 -'struct'=3 -'return'=4 -'if'=5 -'else'=6 -'while'=7 -'='=8 -'+'=9 -'-'=10 -'*'=11 -'/'=12 -'%'=13 -'<'=14 -'<='=15 -'>'=16 -'>='=17 -'=='=18 -'!='=19 -'&&'=20 -'||'=21 -'!'=22 -'++'=23 -'--'=24 -'.'=25 -'->'=26 -'&'=27 -';'=28 -','=29 -'('=30 -')'=31 -'{'=32 -'}'=33 -'['=34 -']'=35 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcListener.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcListener.class index b148f03886f3d1e08f4cae981b41b8702c2ecf85..f4567f9ecb793e6c375c1adcedf5fcdb99da7a4f 100644 GIT binary patch delta 29 lcmca3ct=p+)W2Q(7#J9A8A8|@m>3zPCl|5^Z&cpN0RWZt2$28) delta 29 lcmca3ct=p+)W2Q(7#J8F7(&3zPCl|5^Z&cpN0RWaL2$TQ- diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$BracketContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$BracketContext.class index 2b4a981d0d51c5b430f119f71adec73a20c83eb3..6ab375ac87ecdcca69d64085e3dc2baf2f29c3a7 100644 GIT binary patch delta 443 zcmZvXyGjE=6o&tqiP>x{Om>N~f*2J+*D4o{x42%S7TWs=w!VSSAk*4d+a%2O%%zEr{KZpu@)rX6{RaosXXNd2&7O_+ VabUebi#}j2!|jLg`2>#O{{n%7GG_n) delta 783 zcma)(yGjF55QhJAcFmeZFj+~&NJI+@V=RpKTjKp1uL<^10xl%p5=3ppN03w4*yI5O zZA2_AEqnz<5J5#z-$0z*tZ^e2vM^_M&V2v;oH;5#uW(&|UR(m`M_d7Cs5;11oi?mX zHEMKiIgwgSY-)+6R5Gpy206Q;Wf%g{gPc#)@^Wz~9lMyuz$O@^?knRFvKpreB zO=+2Iay7Zh&?MYawMfgV*q1e@vZZCT>>AaBM*WSu{5=fb;)y%!-%~?Im%pS^Jj+*m zAxL24xHRCZmChiYP|ndp(Wck=4O%HL%lDuS?exdcfo6&!$}N1|U;OQ#d?&hS3h@&p z#0_yJpxV#i{5}89!Yk(dZko%{Ls%zzO&<}_Z}WCoo!=XzmpTEbN$Oc2!o)Cm;4|5< z*sytu*ar*iD6kGhXtO#yfI*XuiJZ+pEEzB6&}Z>SxcQTXR|~v~Aq*2YLXPOw-IR_N z33;dLI8KdQeFJ&D7t(wEuihBO$%MX`v}jc7cV&yQcc}csBIGL=^U)qA$;}jT`Bm$c j=#Nzu`8S^?-!s(2F^f6lWSFN@rHV}L3$WA25QF^-wCZCR diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExprStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExprStmtContext.class index 0e6d746a7ff1758f28b0d8db3ddd105a9fe417b4..14c4b3d3a7a2e7464bbda87fe9552c1418c43aa8 100644 GIT binary patch delta 360 zcmca0_>!0F)W2Q(7#J9A8JstA^)gR>$ZRs%i^YEO5tj7Hn^>RLD>E=NFaqVdwS*X% zw=pmuU|`$;J~^FTR)Yy_Jr_tT(`E)irY#I+Ky5&m z3IdgxBPl+Crg%G0@eX9g77Ug^Q$P;4pRCED8iH){ZU!NyJut;W3|2rzObpgQYiz(Q hTLwEY&BEK8vxSnzXXH#8x81&?=8ay(}o2 z{1BQ{6)RA-ZDp-oiuPLEy-?!-L-p^DyXo()Q8%kbrj)mQ7X%my4H!BTmk^I&1)6fS z)9ACe_z9vE2a9RwKqt)@y3kEy8^uuDYc zVVIYwI-{9aLcu{)7qeUh<)a6^1Yzhyzbj_hW$ES<>JCwEKBCUJK|P1f6wa~yHiw@h z%r81TV7&y^F@Qk=4ml+(OyTfP2Wk2mC%vRAB3=I%G(vxZJNLFJ)4t}s;*oR*o!@&v zk&>ba#xPDYCP-27CG3^SAB{SuoI9JQGtM~CEan`qVV-=%c_a-B(4dgT$USup7{{OSCU%a^+1U8sy7S`*VjfDeY7V)dv)rk0YM||@*AcQ5Qpe zoF5_UpT{ztp~oD9=FI)y0$Crj$v`dC599Xi>N4*8jDvh2j$DN08J zbgxdwC?;r>-FP?e-1U`^fu1u#9j>3$RkJc{tIR#QO$^-ODl^=a^Q=e z%S@n|R8N!YY2uO^=eEh5g7O&aPZo>mNyNjSIaf%gE~+(q58Akzqd8e9sw5U^ASMwX?vRrTko&C3T zUX%4s!)jsOoYvVy=~UyH8{3I+B3dfN$KnyRNZn#}(JssLrdoEFx`65_bWEi%Zjqd< zITxxmnAg)5>X=*eC2DTZde!i*2RekSqYpP5p~7Gf>3*~i;O!u3cp_>U?H<-vNV|z= zK@Xz!tMA$^w8uI62uHsP`XP=U;pp3-ALi%-9Q_*T6LgY%uJ1wg%6DKi*t9~eTW#N^ zNARPMPPv2PXw_neuvj1Zb_@!wP{$o=+B)!cpb5^?Am`}~(5D$s-TPOlXRGv^o~JQ) z&>7E@3V`y20PKgSh5)<;?ks0$4`=8d&`FNo%hB(GKF86m9Q_{X6i2sl^!uR4Il7Od zKL9bC&e0!(zQEBP9Q_ICG)H%G^rxU7<>)Ss{tWa*j_&5@ z&p~H6x`(5`0G;LNAV+@*I>*ty9Q_sOJV)>1=&wOfarADE{s#0Vj&9-TZ$TG0`Y=a- z2fE17Lmd4*=n_ZwbMz0OFLU$&NB;;K{~4oQty&r?L|`e|eheD$-(|#YRNqp`# zP@m*i>d}6qCzL3O9t?l-zeEl-iu?|dKQ@XyMNeZEwZ=1^lL0sxzCoREG7KjpKDrr2 nKZ<^fqdzIA{k19<^h)b9u=lJBK1YVz3z|XS2FFeKD^u$~hc~cs literal 4636 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 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$GlobalDefContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$GlobalDefContext.class index f8307170854262e8f952e1e8c8b581868a327759..0be78512543559c4e647426cdfd16fabc919935b 100644 GIT binary patch delta 975 zcmZvb+fLL_6o&sE=nON_9!zK|Gt7`dqQ%7MjR(LHIf)J^if09lG2VFPg}3t%eGL^5 z7>y(olmv_r$3)(M_b~q5Em}JJX8-Np-&$S!U#mZh`>yrl&zB~EVLZz~Rp13@b#M99 zjK1sx&c$fxN=aziq@M@E}V#D{S?PF@L0xvqNh;~#lam8C1m z(yfxdBBRSPdX4l*J6-p!UK!pXeifrog%2faXk5m3>;{gdZTO5a9;z4@K@(g<^Fp^( zD&4lbh1+&Ia2>q=B(5bQ;{LcSiv4lZ5lx~~?bqq_4~9>;Zkq|F6Vvpw?cE z7ggh>tJx%4;*|WquqIp@D11WqG9RPv=7bMh9I*=2XSFMmcw2V;8gBM7Nw&Qm?=0y_T! Db`xT9 literal 3790 zcmb7H`%@cL6#j04Ssp2rs6`&O#bTQWB`vmE8>CPQZ8T6M5#Ns`T*AV#$?R?z{8Rcr z=!lNuYo^nVGwP@_I-`G&eX84-Wy%z|s(57_4xM z+q%owv&EWOmX~GScDSvfgCX7W7V$d{n#?giDw#d6?bxk+# z@C}7z=&f*frEYS6V=7tL(s%W&sauuooT)obE}tq??Mha+T+`0(Ud!5b%Qbd*)>9im z=Y*1Y9H-FB&`Hdt>Nd9+#*_J09InlIw#4ln!_v*A>N?M9IL(l19sNSxD$m*#M=92j zXd80Tr4;XQ%MB#!nK+)s8HT>&!8;5Wnxjv7`KY^wnJpNOO9G!`xYSzUs&3!mWnbP9 zL#FlN`MsLW9ml9zzP=GWuiTxwO2CF4j5vQvD|aQ!nHG7Li@WUGc_ zxK)yo#^pFBkR=(rV$X*%%$!U{z~A@Rws_gi_24QdHM|tZHC!h*h2~s3RmN5#&njIM zhg37SX_)J_@cNAw>6dWPE7Ii3RIea)nuM4?*NO){k+p4DcDyJ?W!$J@NaPw-*=7`pT8WC1yPC`+WUb)t^7G`X{| zJi9W#L{niywJ*cvwjnmOIYk&-Q5>@f)TirISij0mSu7+pcTIYKV(PWAQ zcF7STfDBh!kRNZP!$Cvif!txLu|w`?V=li7eK5%*S>^3Ty`~)ADdvkOB&L_kyhhQ| zplIz_pH#JWF0@BA+3rEmyO;m?NQ_e1eBm{so& zgwW@O(AOy8s{lohFX48WgmYmMz7F7zLYND~pAW--6NXAB5uPu|S0qCAdnf zsG^om^dI2q#_+!jz%>>AT{<4YJ%Y_6uQGXyDjA`DGDH8cG(&$Q)sK?ujCV{?5dg2_ z4I*JEU{R3;$}-@UWuTGlVL;bWS(d`mG7^@SM*;j%S?-77JHzmgL-EUavpIx8FNDFy z5Pk|!9ECtXKov!vQW}+&$&7r9;V)&@MQ?S>6#h&-_KT!A?;Z0~s$m61BB7$9M9CEe zehaILcAQr6S)}7LpV8~qUju?7zSZBxI|^AOCQ;)=<}pSe;8f-jM$_NpLIgrvRQA26 z?RWI!56R}0JK<|f;9a~&eD6yH>!;ff{_h2snqTlIz2L7WeZhzLh;$3H@2CidD1!6@ z^il+AieNl~{S2*FXr)sffk^(Qq4!VVMMHihL--hl7Ye%sq;5AB_QnOBn rBH-AND?^3WNh+Y2pqum`q$q$vYagv!w2HiJ(>g$_N$Vi3JLvikal&>r diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$IfStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$IfStmtContext.class index b835967bcd4b62961b009117b4c6d754c5343ecc..499bc835362d3a938157261965c9af35dfcd11f0 100644 GIT binary patch delta 581 zcmZvYJ4*vW6ot>u=CRon>#i8ls1bu8YhmFdzG93TpV3B33&FylVQ-|MeNn>z?4?(J07c4_baj(FUv;! zMAi~thdG!qNF{yC3}C+S*T6JuLT!t4))`E)PH}HIf-S#ms1tobu7KHy&dX*plhxfW zc{2CsCd*d$seUebK92>6@U|TLZ#2&d;I>D*!XhIH&Zk66tSVxj5e0kN_nd5i^aq@F z;Wg1xE5(sMRHD;RH^h4}5c!YLUHRMoD|-C#0DX0?^dWA!T1GkI3-Tc~I3~g;wUtub z!4>ydp^7i>5?lQTXD0Fj%2U@oQuCy1)=(j!1}@2Cd-OnupW%sG3-+Q{TIX#Wq3b5L Y!fs%jy`TFrhS))hpMff?!@i5u52KGfK>z>% delta 1036 zcma))%WD%+7{$+>nIq%!sMTn#iS>nxSON}2D@_nx&EAC~ z7r_T8DCpL1qIFT~)<40&!L4*5h-V&7#xM&B+1Kj4#?ubUim{a;J|Q54o0B{Sqj$@HV1d#Ie>=As<-Q-KpWNs7Q+ zT&hG|s+SR0y;Qp}9Jq1Qxo%R{C+xIJUF=@tQ}k|Mk-+)Bn^X{t0#tCyGjkee0$448 znWe8Nyuh~7CJNR%iV9q)>U}UNcbxJXS>;V6r5SQf%;PM1=RAeT@>qotPLRKng}Er{ zElKbGmvkN%INrU?J90+f=V%d2?_nw*BA|R|DUStQq>n}F{BPW?TtNpY%c`w1t1;Zwv-2OABux5t(EXBnUFzKzeh)~svqvrb|P665Uo)EG88MD9Oa$21{{8E2YhjZA}_ zAgQ^)=)Ms7XXsyJJs#5_+l`)-L($;{qx}ykws?(q>Tp2^-0hH^GUgIPFE!drs@oqn z4nAUk9t#Oqw$1i|Vd>r%XC0$}6D-ojZzvF3`U7{3`4Z9mwC9YT^R%aeWdhM#tG1?x lw$gAD2AAKkNj|8`X)7*u6>ClfYE;9R43}7k<`LL{{sN*&F0B9n delta 873 zcma))OK;Oa6ot=>tr(M5Nv2XDNkMFoz-c8?-ZZp4!Xpr9X`=28vcMuZB{7j&1QG06 zRI`C)5laws69fwsR!IB>cKitzNL8=Lsq0oOkR{*o%stU!PQL)W`s_if*i6@77JPt)!Aj_0%)CaJR^|8i5l(oOkVcauif z?YMr6)+W^2FFiBPklkr!d1=eg)DVzPl#7kV^o-olfAmVwz$lYpajg&S6Ad{^^iHVh zCZ=dS61LztPS6*_Nt~jtV>B*N4due@Be`4d{X>45WE^J{=4_8jz?mf*oNCe%W}%PN z0OoGiW5vpbZ9^+0z&T74gkc}{4`Ee;X#_K@;`nEbt*Z@#Ona5sr)*CY>=1gYFQOSJ z<2+GFiy7hu;b!T+Lz5F!gEg+bkC5Rpbz?bsbW9gkA6J ziol(wPCRtCj0{#{QAK1<;4&%%yrL8=L&K}vJIFtY1C==F8G)YvFX$SslfmF79?7zC zctwvndI5o#F;G5olt&de$i_|5h5tw}Q``0^5Z?AJig=rvIOZ^~D#IPBf@XATUw}yu HLmlQOUF>k8 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ReturnStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ReturnStmtContext.class index 72a99680192c5cf9730e6f989697830124de0a41..f54d0fe473a1d4f1760a2e4a35f95f6dfb8e5c24 100644 GIT binary patch delta 400 zcmZ1>w3d(S)W2Q(7#J9A8C*7UO<7->{Kq0 zG0YMSg3OW(=0H)Pj|72wED$;;D{#naAS;#uDwai7Y{_5+GzH{I`^k+Qsv*dV6&Qq= w6=8~n7_7k-+W@Vx1+(lJ?7=i6g9DJ30*bQ$ZFgkg1VTmzCm;z5MP~+10QQn4r2qf` delta 738 zcma)(O-lk%6o%jH9n?`Vy`_|B)S}H~RF-|&hn0O>EsFLgLIake618&E4=C=YRlA@~ zP!I+!qIEx_eSac4Gfp-}ix@cf+{1gG^WHOe{#)UB`+R-@kjD0d=Yn^OY$=~B?&ZpQ zZogRAH3EZDJ=K1O=L)@(0Fd^Uhyw6?KE7ihLp-f`QSXjO) zel=^=QZlCKUe}3U(W@m=#4SZAmSPCE&OJN+o}I8%QF*R>)P}*q$gWFs@jCcDr49^J zbQ)zIK!S2#LxK^E(v2aBF^WT!C#`m`CRFP8zC!(t5H^Iji5SPAfv6E9VKLlVAo`bw z4jaJT1hk{m@-Rz|9mMfyPiWKn>j*v2&HjpzNeDMo7J>AbKyZ>E3{yy1upL=)hGp96 z%5ZZH9;1nOBFMXJ5YdDPOk;+6XK5sDGDzuM3oOjJ?eLz!g#O6tPSMY(~LZ!UJ%> zTDJysR62={D14gu;CJsbx;2WPAw3jDw}ohzAk-}5Fh-ySx6~v{OKhWnc-WG8It!v> ze$hCiSkun=HJ;ThN)}LCgb^-WB03RLaeWypLS{9Pkr$YNSR0bDN-|bhW`k%pBqJ(` zQ~`Bi*xd?b#NRB$H<1y4!f2&I(37FYkrn?s7jisZJ26@ znOV#Q1x-A~VXeZw{Dw;lx62>%SO~xj8^|1X`Vq}%s7)8q?A)S7gNSJUqLxJVV5xm9 zGRu9oSibaMlXhw1{O)qVE{Ek^ma#$^v1HtPtLa=Wmpp>4j=x|#@Nt#;YyNEO*ziw< SO`bN}7#wR0amaW%#6JNL8CJCb literal 3478 zcmb7HT~`xV6x}xoOn~7lwp96Ou~N(j8l|?iCL$1^q=u+TplYk_5Uz0~OtK~u7X2yy zhd$UBy6QuheeI9x>bZ9&(}dh8d0=KTxqF{|&fVwS@Xx<*{{pazvW5V|r3$yWZ8-cO zS*%yf^77EI8{8g72m=}hb!Z4P#CtAWDAsw|d|`4sQ?nd?;xL3O+$q%#xy7&)&1Pe{ znq5g6mQ%Hp$G4Jp({juso^))^lO=8+nU+z_*A93}#2nT!0-a%;I10@w_edKISE9LB z#<7vC8dfElsTz$&D(1dvI%YMQGaHU%7}GJ135Kyw28MJuK`(7?4cg+TG(;G#_O8O7 zVQ=uVr&c8Lk&cfs#W2(=2BmNzN&#gO?UFCzl7?v=Gni#qRMx6X55r*Ev`lA3lvrKg zE=(#L+tctV!;B&gQ9j{?5zJv;$7Os@738#`w!gm&$!Jaibpv(zAQjsaWD7dJ5M-nL z#B_Wv4Obba6=Zv6!*psSV-YbOaU@8_v3Tc08CLs~(Po%M}NsZtdu4_o@xPhBw zZe`7-KV@zua;m3`@{npWFU{(KEgXKkNBJdOI7nLC+ji+)PXt3Sn=euH=(!t&A(Wv; zq3+0;7SA`2_PJd$_N(+JlB<=CD!I@UpS_nM=cP%uTk2=mM2zjV0vW7WD(q%R;BfYU zj38T_-saW|Yne@YD0mM;jn)7l6_m>ve^Un(&5C6>O`Bw{b}dNvBW@)nOh`?na8559 zGBA_=vLyLfHYvm1zEpIyc1lQ~srEhzod7CmadU^lrxj6qJFjChil7M*^qlJ{*SbOW zq+#5{o^G|;CmdPZw2o_srd26AbR;n7-UQ8B2mFNW8jVpFLvknxAj6Fw>8V$Wm+^qBA`uYbUgb~v04ix4i-uL@ui49obEuD9sZ zO$6x)(Bh%sDS~h4F@Ue=Iw)SVHGECay1NA5;5L0?_*MZQP{G%g@H-0lpbDN*!c#tc z*%Kd*Pb{eL8*TWouRg89&#Um8O8i|F{;~?crNpn`9@W?_e!we!By@_Qv&G+TgKM7r zRoZ|6)(EzOb-D_gdsK!1-ACe)(99`D-yw9C>b|6!a+i5j1V9EGM8dGC(ln{il<%o& zOVWJTt!dKLGR%n`-J;jByM8%$(vZQ7k-+P+UUY*D;v!toZ?7MA(T6O`# zev#ZizjCPz$d@UO%Yu)EGo<%V~{2FaA%iz^W*=yMd-gP(MLZ~X`aca=lEIP U8GfOAguV;WasxwhUhZS)Kejjx8vpJ3x~xQ}f$I(z7`?LOn1o`2Y30Hu LzNMhYJ4f^b#VZu) delta 409 zcmYjMJxc>Y5Ph?k+nDo|5M%s`F@7}O1w6}wdq|MiVK+)r!tisqOqh$4o6c37T%4p~%5(}w2NdM2R(dAf2sXmDz+fR5_No)?idUG4rOPc9g0j z9<-Zlx)>NcV!K%`Dd`@glG-$P&iI~9?Q~)PA75+I z&YR{>nC7>r7fd>1(rxNRlb(uoP5aai`I3njVy@|X>SdG8n{=1jg~u2iV{kB%Iq4sl zMjIHcvknhE4U6Ri65^4a6|6=pMwo+ZvJ%&^4KL`4{WVk~S5aT7u^Fqs&v4c=T=9Z+ zuHr?zWE&bjbN=Et;&&ZyVv9Qp_FPpRr*NcC{(vVwf3b({V0--IBzF5%6?^?Gu+N<4 Kn{7S^aDD(fqCtBA literal 2645 zcmb7GZF3S=7(Ev#OJGS1sj*_}YgAsM*r=@)OpU0ON-zUVzHi_b*KBr~Wntn^@jvu~ z{Zd<}wdu=DJ8fs$U)1Sy?=F;-%M?Gb_wMDM^PJ~-&b{#4->=^QxQlHKA%>G3Zgbc0 zc)QT(S}pn5HryU}IamX(>~EW();xuMo{ur8==dqySn2trH7%nLVO~4qUCDS&&4UvaBi3tpe+R^YX!zo3% zs%Fm<)lOgu%Q{ZrJ%$9Qs=0mzWgG?0k8-rk#q5rtN$WTzXyW|9^n4Z#?=z$oG&^R` z^c;%5f-^eK;v7XEh_zw#JDI8irj9<=jVHU$c*`p$Z~?0tF6y|1%M3YXk!9B%q1f`Rkt_m4{9_S$P>emCw;S)oM80;A89l< z>w@oIeY5i8Lz0lcYH7ZwpFD0DOd7(is{)#%6yCP$m{7HX!{u&FE9%Yio s13V=8pAy19hhpW?zqzGQp|3*tj7sxZ&Z^jwBSVeGIBkv4=LzQi0VuCczyJUM diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecStmtContext.class index ffc16859ecf14d70a871b6492c099922b3e9a0d6..1fdd107e0586b6b3f4a0e57c2c0308a15ab92595 100644 GIT binary patch delta 522 zcmZvY+e*Vg6h-%Bn%J2jI8hOyf>Z<<-$boeYrJ3TO*J*=<@?Z? zDm@q}5!2%846)4ud|iSA!b3%P3)}3HZ8Auv bhfE8fvqKy~p~7r474w+YFi)6c%u}czg={pQ delta 854 zcma))%TC)s6o&utnD|B{Y#>NnDkQ`vkVO%fLedZ@P%hyTFtl9;6bVZKDiR@BMSX_p zb5x)R7Az3!z6CG93M53!<=8R7Ko)G~KjU-$Z+?6H+blQhfA3Gv0HpBaNWbD8R(fY6 zn_tWBI@$Gn&UP0Dxwz>R7-Hf=ii!XHSm7JReTH7zw~0g6ApXeXVKwg*in;CFE)Ax| zN8Y8S{ReSzDLeJbo>Op&JJjxV+tCkkhRDm)4t_qJ*yoLe5TL}ZShTN8PjX|pGD`ObKC)zO#V}#azssjkEg3w+gZfYXpNR)g=pC3bw zHnbBX{2Fi@0I1arpOJX$S8MtI)$}K!jXu4E=u{%H;A`InEJpRn7PR}0q{t}ELqW%b z=ZMh919acvRw;~;hhZFFeD8|*rF2Yi?<4E(JeOc{9`IXLzl8}*l5dKrbXO*oUtfSC zb6paSysmp`6<&yV%6oa!n4u8vU2X|O?JmiIU^*;r1VF9TV6B+N9HmKSSJHef@8Ou9;{kv6W8m{fctZ6f^+?GagMXD|Q& diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$WhileStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$WhileStmtContext.class index 1223c5cf99a6d827cfdddc2490fbed6fb0012e78..5e298fcd64d8fab82f454681a4d1187e70a9f843 100644 GIT binary patch delta 543 zcmZ{h%}T>S6opS_YGYa?O^RYHSW#S1K7r~31Prfk@TXubE!UMLtSM; zRT?@|R`%<33K9m%VZUI?Cge5u1{N8!y}D>KE@7T=fwcrZnMOa5TgFOE&!`J?te$jx zV=25oqk7ztYN{9BX+dOD$}l4FMG!VxdnV3pHzDBt|oq!PQ7|GK==*HuDjzUp5sy1^@s6 delta 860 zcma))&r2IY6vw}_vt*M^aFZ27Nr*jpi7D1ttu-23oBFG^S`8kBD1k1-Dkc5XI+|OZxt9`afOuV|eN5ZL;zJf=M$#2Ektl zJY+bLJc2ET@oo%HyD^+fdVfp*3KL+q`x6p_;V~Ew8O|h+HbXC-H0F?{sVOuMJ$Zyk za{IRF3v diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser.class index 8c6b6910c035d7a4028c65dc48438538b418953a..0c9f9641a673b6335bcb5daf3f81daa7a92522b1 100644 GIT binary patch delta 1043 zcmZva-Ahw(7{{OIIXk+I)cI18Z)oa#EpnRqwlT}pEzQ?$&a^b4v^PP5AP9wu=q89C z{t+6Hb}GUPFX|>Ds0=T>5Tu}+ZtB8rg6O-Q5qk6t&gbmx^Lw7}^ZRYX;MsY0zW=+t zLPTB}UvfSwQL813T2)!O`s{AzGb**TL_ID&sveek)Q_@ShrN0H+T@MNn?7T*JTrMF zmlz)++jE*<1X+BzC&l0ONIjlO8q7D+2(tL41$Qr=x2=6kwC^stY&Fxyk?akurI*vpw%nmMB43~{4US+JDx-%SeOM&Y zF9WJ8S~wNLw=0xFYqTI?a&R6P0UN1cM(CFW?4Z3>bn?hXxYJBwlC;To{6)CX#r^g?gbziQsd-?`u1Xz4)HD=bZO> z-t#`^oI_{%r!;%Md35C(5e4PVi=HF%=M=XM^@n5K;bb)27mI9EA0|g?Fgnas(q=Rl z&*Fe_V*aHHw49TwtVpQ@P7H?3*tY zYGC&CRk5MIaBO8{$BLnNDsmtN25ZJh%=AL$6W`*6j!-xT6$vGnJfTE58HuM%(n9-B zS1O!>o^iofQKE+u$;du)`kByhDx6H&vx`hYqqk(TGbeJQ#A|%#dr2y-$-jN8d7e={ zWrk6;pl|_pklY)Ktcedqumd-E2kcm1-XDv`qp2n)j;31|Om&UCNQluy$0a)ZDNv*d z-vV>2LxPA4t$Asd7EIS;gk%{$SR)NUmKCxR-$uj}*e>L=bxRN{o?s&$k(cEaJGs&> zMJrC{=Wd&jtBF|&l2-BUr*+5jb9*P`Ic+!VdSjm>7-$1%;xdZN761G5Z-{%x#awp>Roh)1CObg#6{=u zhuFp5K9_XrvJs0M#O#G^0fSV@YQJF23GYjBqI_89P3|^!sY1qIUd% z`fTn^Ic|PC!_7%>cbnX!b>(e&+#cC%anoY7Or8G%zjm3I3l5xS6v~tZa5l#?^la@$jwZrWeZ$z@p+nSy5NFe_wAZgv=y^VPX1B0(LG3e_^!N) zF^y*O*QmG$J1ga{q!*Es%6VK~!)yUM^k+l$>`wO+-V}1B-J#-ibHJxMG`ReDwnNM4 zn0+R0Ig&ee)3MAFCs}4rla- zrmH+^9@w(aIsLe0Ovhfv)?U=i%X5T^xPm?~8|BhIq;4y6EVVC`%W*R^=8V#MYgTSL zPnkyR`mk-Zt|aX}tH?H5Kb)D|___vED;jud>aopE3;1I9@ vm;mkuz78A$CV@@BVc;k*1xy0>0`~*=0S^NA1K$E303HIq0elB|klgqepFoG)W2Q(7#J9A8N%2Zm>3zPCSDZYsJw_90F7}7wg3PC delta 28 kcmX>qepFoG)W2Q(7#J8F7{b^Ym>3zPCSDZYsJw_90F9vtxc~qF diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class index ec1364f83b8959b7e700b2a8ff321b7b753c1a7a..5b8eed13fbd8d083ccfd9480f0b5f1f7869b101f 100644 GIT binary patch delta 450 zcmZ8d%PvDv6kX?0_qw@lnkJRB^fslcPp?+hqlgdS2T%+|n0O5&2K|ULYGQ68K_VR( z7#aBlbKxTp>sBL82Yc;(&RYBV=6*QN>(A3OfI3zmoSaY&q^XK*$M1ne^Qp;)70HUi0J)bC!TwK3d+rEj2>-$C~5Z~_ab2;+=>&XFVQLRY{b&72SierbeFw0N)i2fr ziC);srST|wwC>ua#+Dascwx<}1b$fqLAI*3R|Kb2+ieE9mBwzf7WiSN7>3?K`Jm|+ z)F+xti$}6BgSa|0}Br^XCj|~gMum> zKWRZZB11*BD6(>ekW@vHRByx#JyAczwL=59cx)Szag*^WdhiVWc#cu7j6g6BU<~6N zb=HdnD9Q#f2!rzpWEnGD%W>3ivFulvpE)@dzZ4ZKk>Dvg))pkJ-Nuaz*nJ<*v9~W| z58+Ciyr4E@a<;qQ%Pz*{PQU9&wi$1EI=!5$-pSPPRXy?~pCb$#cn?#4fE0QPp?*u} z@XQRiV}^@K++npLq;Z!GGS~pHJ<^OH#o^t-7n9=689Jl+{aWDr!mVh&MjO%^H}7Y&F^tcV+j_2#YcDy=RW{`SDOF; diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType$Kind.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType$Kind.class index 6e5204b11011f44861042679976f4cb206e30122..aa345210386cce183b830bb1378cb82973538663 100644 GIT binary patch delta 190 zcmeC=T+6|A>ff$?3=9mm3}zd--Z4%#V5(p=n7oonk;RyiL42Zs_~fTdB@s#tObm=b zRa`=hT00no4=^xp0P+|a)PN)#SjHTvLYhGaNU8$G(aFhm>ff$?3=9ko3|1St-Z7d9`Q#@j=7c2{WhN%&q=tY9Mh2F=#9SaH;1Yne*wO&FLM7=ea! z2{CHzU=TjQz_0xAi?N(34TTj{j%E9flwfGzEzp#Z}pq3{Dp z`~v^QI13bJlbPAsGv}Ngr!Daj{N+6egh~WKaAu_Q>|XZ?q1mawq5TwYpx>% z2CeojA>mYLo(fKpu4v79rhH27)jI^$>ezR-*|l%3&1${VYzzv7U~kZB_MKlcDCbDh z`Ta2@HXverfQ-x=lp$9V7T8B2vp+xpMTBvPMXuuBG?GYh#T+Iv1!7ymGJB1Crl^6S zF@o~S4Nq=@+rW{KaSwV!3Z&_>f>j3BVfgsN zlbkJkw91i$C96)mE1S|@bs&}oLj#Fand z?L`w8#<R`AKi3 z)Hw`6F@=kmqO7WZB*4OIh)^7tsQ%L_Qs+E%I4%=v8doSz(087)V(GaJ7_UNrlI;U+ z3p@+8cBbf&7Q+lmH0NKo*~?bs=l>z^tWYM&EDlC1e3V}`hY4BJM`w3W%i;uPF-J1M zok%!_1zg27V$D-`0OBXI22w2j9T{q#!s%$>I?Rp`VklT7Da&(xE1G+G< zi9x&}uijz|?{J3lt~_z~oGqY&Dosw}7_O7sJd{sBGh#n*+(4|T96XC$q&`jvb$(ho z+66uE;Grhf=1dpo81BBLe>{BKz7V(7V^ca(6?CdX-N4N-*Kmt+obWN!u!Q(;aUXl) diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$PointerType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$PointerType.class index 137e3881e083e207fde5e6ba9263a4caf469427f..68d8003187440403b7ae5941b3497a5aaac2cf45 100644 GIT binary patch delta 388 zcmYjLOHKko6s+zZouN?_jGEERL>L5Y5dVrMUIEwcT)OrE0*M>fZ9IhwNfaXsH@e~g zdIt|dtR7gHPFMANUG?gHW`8q!G#-8cILBFEuLz|fZ6azZw?*52i>9s0me{gavXX0P zY@_L8XAaBQwGZ-3?AuFK7RUBh8LuS}+n$Q;NHsbJk_XV{4Z_r4;rCey6p1+~Vh0|& z$e_n=2?=q7-H0s6Gv)>UGanPnY}&jd=20LzX_f4x3r_lud4VC8fYekH#V0|%v?JWQIdZcaBjX{N5 bIj+Hw-Jm+}9u8O)*bn$~2#q70;1uB>G(Rq_ delta 559 zcmYjN&rcdr5dP-9rO-uDNsxfifFSCkuKj^1*p|ekCu%(yuVx{uELmNGq{dS(UOc~~ zhyD#cNTM`%F%r`UNH}l@#=Rc$RpU3Y%0Mt(eBoh^ZVc z4g4yu@=*6FeNvC+1hy(%H(^;&jU{iX_;N{T}4rH)s49Y$#k32dmc_(hxQ zpUBg;%1VRYs=EA;d=J3~(2YBgQM^UC&q%0inK+u~X!@y&9P*5~4^fPP_$;8nHp4k{ zfPs*4gYY#c1hQUUFXL0VA&?=9;XMM?PIaSeS z^?M`*zA=>QP)mLGhh?71!<}Mb{2DiaG5Lqn&bXE?lD7{ yoND>fquYHM*={@-p`keFTEXh-AXvjXdtdzp-!irs#aSkTHB|Tyt9XNVNc{(cM@*3b diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class index 31a5729274b78b5f049e2718680b16271c20c60f..21e1c45613b761dee27111f9c076acb084d11db4 100644 GIT binary patch delta 1663 zcmZvc?QaxS6vm%3x83Q^id_~coxW|AuH9V`+U(NpHZ*O;mY^ossFavCh8T+`d=XM3 zLb77~rugL=G*l}B8Zo|93yY;t6cm-JAig3B0=^`MKR~dyKC?SCg-#}!=gzsm^PGF` z-Mz1G9`3b{PaGHp&@6wwZ^dlA-d?5a%I;RC9MmhzOQlVBmQ?7LP-y6#@R(u9m-@+@ zA1RdY1h%d(vOid`Nu*bAu4xm|qct@dh-9$>hU}$jC4>)97~czPkOPr@eEXcBjENI5 zWIv-HdZq-gPdPD_Vjztsw@N=0AE0XlrhYBbC5FBniA9DPvY^IMZDJui$yYnTYVXQ> zd~<;^pfk6eC%>k)M}~ECG+H@ASWK)0{=;o1)|pt_YRbqs%J|k#Mn;xzRaj6{6)Fgw$N-ZkK-7q1JT>#C5u1RydzvIi|{HLK(4b z^5RukZ)qsGh6$6Y=Ip(4pUdphryAC<^JJ=?o3SHRA@}P;sYQ%jN>$Exx+s7#yOeKo!E#in6^>WqJlU_ajqB+ZOQ&te%ZCF0{FqI*vpDCv zJ*N++?<8Y2En!x7Q>k?5zNYXs`@4bueO&wF2&yNzDVuWp%a!?yf^F>Pkn2_DZjaB| z*UszzSqI5(lTk1Bg&Ayy@OC-u1-~={COaS>d9g2hu{-5sFLuXtHsf3$&WhiVBVO?C z>F`zdEjjANzUjeYt9;_Y;#rr?(%6UzwvM(v=Ur#?!( XKwU+>NbRBiPJM{_2ep^_C;a~dOH?_= delta 3721 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 diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol.class index 187161633028e72cfee022735ea7d44e2dd36bc8..a4c58433628b2b0986978ae6177a2e85f6a4bf6b 100644 GIT binary patch delta 262 zcmcc2F^8S&)W2Q(7#J9A8T2-CIWtafVqC?jFAk?pa!PZ88m^k5Kx4JL7hR1fr~*K$kKI? F1OR`88f*Xn delta 436 zcmbQkewl;o)W2Q(7#J8F7z{UZIWx)%`Q#@j=7c2{WhN%&q=tY9Mh2FWjLc$22C>QW z8ATbbCwnulVbq@dgHek`pOHaw@&ZQ5$@WYRj17|;m{b{=CNE=Btd{{AX~Mt?B&8T+ z8RUR8h{eso!@vk;@iPc8Fo9XZ3?dB7V3s(81Op3DUY}EP)uv3bllhL6JcTC|i%Nn-^WT8CKoO3@Sj~=$Zx5HCtiTtjeGU y(;Nw8z#J~R2F>AiSadTpsDo8$Fld5lEe0JREd=y12ZI)aE&~^X9*||=APE3Aa4O&c diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class index 23ca8fb6c4610a259ac874cc64a4ec6ba322231a..7eb164a5045aa0e216876aefd1f8c5d00559f1da 100644 GIT binary patch delta 631 zcmZ9J%}Z2a6vm%3I?l|UnX8lFG+ZYcbr2I5N+Ka;8MO-BL}uo~5B$u)g{YGsmHAPr zIdl5ZT@VC@Ac6~N(H{`FY2!i=q>X<<3lX2Wa~VcA?|JWe&htC(Id`w}pw#$t_Uku* zTiDn!p1Jj#d+z&Tf#^SvrOn>1JP%fM+dCktSA8n&y5+keqQ|~?P*92j2*&Atq;aE( z`7R^E{A4!YsvAaahYJ&|xq^H^9wR7i2+I@1I>9W zWauW}0eMdM2;%aB6|eBxsT zsTTQD1$3_8h=` zjNDh(Dgj@lE2vIvpb%QrKfOL zz0r(`w)gaPa$)h-IaWAaS|K5?jidAyT(}}STpe^%ymbjmh?u*YY~sATd}1FD$phlE z0-LdgZ^C#u`P|6gZQ`}Nc8(33_}d2uJC|b=t-vH&i4Zm5XZ9>Bd#jbLiORg0WEX4m z`~yEDC!3M|T+LWcND%CI#rCBXrEr((t zgBCJqA%hk&Xd%b`fs_`BBpkwFKIPg*#7=b{ImAmfuud|j%hjREVpLg-DwE+g#n>$| zhGme2T4MZ$m?Jo9a`ubQYB*-s$6COVpsnyyKgwyFK2C%CH*H?{bw#;cX^~vQF&sBZ zcSU{vLRNGvKhPu{5)VtPT(CU!l6NZ0Z+YCPCy7Uh9NH z&;KQy%o4c!Wu63|k3BQ%vzuRnBAmi$es)!uhBG+Jn+jl_rK{P})%=Gp8KvtIA3bIH z=WyPf)nYN)JE11`k8?}kMv4A>i>!)8W<|nRDJ_PxWo4X{<=Hgk2U;z80rrTH3x?P diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler.class index 0a669885e813bf886f229a8ae20316b17ff17d88..802810d7fa3b0da574c67d139c3b399e001eb2d2 100644 GIT binary patch delta 506 zcmXYr%TH556vn@4Zk_2ZpbMZhLP?+|L}E-axPuV7GQp4_u3TLj7L}4-`%s`lsk}i1 zJb*mJ2QPJF?8<}?6BAalb?JXW!om>s!;qOdzw`Rend7Uc0sF_FgKq#@@Tq7YdaJ$Z zjFZYJl-|oYvA(;G+wJrudNr7;mG7!jIfD-!S>saNvLw{Pt!T$7?5vcnz8WM9_R_#mI{XrvAv9^lgT z#;;ICdI~PB{Xbg{FDjUMghs|m7IV_-KT#fOD!HFevF`?~zi?pm`AusCH9{Ko8d;5q z#vR}{Zk?fqE*(6f#NxmK+9CQLbh}v*mC#H1+N=25d(cBfbw(wSnK|Eg{_lL}oPT~6OcsT{{(1KSKn31r zLht>R3l%G=8aq@+R~rni-U|$pyH`&! zuLxBN=X#QE+ASn4Q^W+z7o#k+h7Jv_RdW~$l|7oNIjXBQChBY>ITI95Bd6?IO`1vb zN|~@jQlrYN|%M&C`}DV%irClbBoQs>!Ar)t=d(JDO1j7p@fOaWE4(z92Vz@wvytPnn2?Lv6)`Qxc3q{l=iNV6 z-C`zP-7@Rbw#IRdyz}*KmTtP5Gb>+bD3~u-I*yv26>o^$dj<&f@~%V!BN^x=@R5^gy5&edxyk262SV(Z8xCd`#Fy_=K>hn#fZky@byQ`v^w~`w7Pg2M9BS Z-DG`U5uuSictH&ZN%8WRc#SuR`~xc7$|V2* From 60ee4be3c0ba68f997a6d6689327493d131c5df2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:13:21 +0000 Subject: [PATCH 3/9] Implement complete type checking for Project 4 Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- .gitignore | 1 + .../impl/Compiler$ArrayType.class | Bin 1383 -> 1383 bytes .../impl/Compiler$BasicType$Kind.class | Bin 1069 -> 1069 bytes .../impl/Compiler$BasicType.class | Bin 948 -> 948 bytes .../impl/Compiler$FunctionType.class | Bin 1654 -> 1654 bytes .../impl/Compiler$PointerType.class | Bin 1258 -> 1258 bytes .../impl/Compiler$SemanticAnalyzer.class | Bin 13113 -> 19950 bytes .../impl/Compiler$StructType$Member.class | Bin 504 -> 504 bytes .../impl/Compiler$StructType.class | Bin 2624 -> 2624 bytes .../impl/Compiler$Symbol$Kind.class | Bin 1235 -> 1235 bytes .../impl/Compiler$Symbol.class | Bin 924 -> 924 bytes .../impl/Compiler$SymbolTable.class | Bin 3671 -> 3671 bytes .../impl/Compiler.class | Bin 3062 -> 3153 bytes src/main/java/impl/Compiler.java | 505 +++++++++++++++++- 14 files changed, 482 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index c1a9cb2..5bf12f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ ### CS323 Template ### #### Ignore generated #### src/main/java/generated +out/ *.tar *.tar.gz diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class index 5b8eed13fbd8d083ccfd9480f0b5f1f7869b101f..07d7bec4d322d4933372e557682790b39e11c346 100644 GIT binary patch delta 69 zcmaFP^_*+NQ)b>o1{Q`S22O@#20n(A$)A|D7}F=qvS>|iU}2f;&0@+}Fu9Q>lDCwB ZouQ0DfT5g0l%Znsa~5~T+R6H?765~P5sm-= delta 67 zcmaFP^_*+NQ)b>61{Q``22O@J20n)P$)A|D7?UQ;vS=};P4-~1V9cJ}$P&q0z`)K> X$RNN_#30I0Jo!0`J7dLUeO3zqQ0Ne& diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType$Kind.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType$Kind.class index aa345210386cce183b830bb1378cb82973538663..227e60653e1219d86a407468639ed531448ff9ef 100644 GIT binary patch delta 41 scmZ3>v6f?lFf*ggWD#b4AnC%a10)NX?SSM4W;a$_1}O%c$-kM60M=RxFaQ7m delta 41 scmZ3>v6f?lFf*h1WD#b4AnC%a10)NX?SSM4W;a#~1}O&f$-kM60Ms-J5&!@I diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType.class index 7104aadeef046199500500b4f66019db391e5947..ed8d5503ec542e49cdb367bda1db5e2cca15d882 100644 GIT binary patch delta 57 zcmdnOzJ+~5B@?F;0}F#Q11E#a70;0Tu N#ca9UkY?Dz zpvAD2!IWVegAb4$#IS=Ql40lMM%F^neGKdj`xyin4gmEZWYA_f#9+a2a56ia599I4 HA#6$j4U`<8 delta 103 zcmeyy^NnXi9t-b01{Q|-44e!L7(^KsPOfG#Vq7wL9g7y@ipe)wx@Ffga4@W6kY-rV zpvAC(!IWVmgAb4$#ITtml3~l_M%F^noeb;@yBGu*b_4bAVbEsS%V5EwORp diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class index 21e1c45613b761dee27111f9c076acb084d11db4..ad7c9b0d27f5d2130985cc59448e4b02a14362da 100644 GIT binary patch literal 19950 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¬2k?Qj7tT{Q}Y#VL4 z=`~%%wff1%94yZz#tGisDB8;Nym{To_vR77KB~0b)dPd|cAMRIo@#>G*5e&4BPmt!rjMih|Sm-)kiS1?Il<=6Yyuv}gz zr*EK9-oyrZiy!yi#^v%yTqEz`difJ>lRx7Q`3v^TyZo~7cN~=Wa7fiU1d!!rn0V#;;NM#ztOEGbGW9?wYc&uzU_`; zZ#Np9^)-jLclXKr-1J^I?$V^aMirJ&xT48 zo%V6^Rc|}{zxH5){lJ;ZR3x@HqBOQTiL1j?5ylQYf)5OaN2wyA*L2G~4!gT$wth?4 z_fdSvOmM0^X3E|8mWHFryM}%_jiw+cK4&YfT_3T#fJSXA&5Xa^t_^ZOjVQ~T>zYIi z($S|k+naYp=!$#XP?NOmO2`2*w3FmeM^_{{iMHN^lO$r`%(%+Z7_jRZLiswLaa?0@ z?KkJ3kmASIaVpuY^>jiviO45&u#%DQ6!H`c0cD^-Wnrw!#@Q+dE0l?iDi_;T9%E+? zE>;6@r5b}Dst16U1sz}DGVwt2$WU87jMQVo3P-U`0 zoh5739NDhUmP^%K`MNqszN^aRZZ%)J)B?F*EtE$&KBgASOR7r#MYxk{g&L!3)nv6& zO;fAX40W!WtLjyyYT#_6I!~=rZEAzMLTystP@h)UDWCej+N`3gSv{z>sF&0Q>Rq){ z{Zn0}K2jGOruwWgUR`3$QlB%b)TKs)y3F{Ly4+}0yNsRci^kRJN@FkAZ&Fto`_*pa zadn;XirQoRS?x9crfx9)p}v=ut!~PisBX0*`{NjOin%?<4$AB8Aih(_aUGi%eF(3K z0}Sa48K^&G2IgZaA19o|MEMBk+u%Vvx=%ZS>{yBzM^(6CUSrhxV4ltga`eAg_5li+ z1{T5WaiYnuHo!+Vn1lBe>#d%25lW+T$(m)Sl(Lkwm{0g42q&MYT`cUFPh?w3R6N}n zcvJ>$I4DE9WcUHjc;hpp-I=l7vWN>4>}by1BNMyDjvu8_nN&Bu+llBJ;;?PHj_E&r z6jL^oW_8I_C)hB1M5QQJAeCpw+&RY$wL&|$UG~exB@C1@LnkH%S^Zq*Mp*l~M|eG* z$1!rbU@sq*Gw40uoVfG$T4&AWu4~WrW*?O~8@wKGUYE>uGoB8(?G6|3+FW?EyQHGr z)KjI58?wM_9gwl!4Qljc*qe1A;g#6U9~wd30aM+Hq3Vb5s{NR(?qa6B z8?)5`%u@$Zt$uONed?#Fl31Gq&!h##qAxL-YtZuL|A zPW>Ejs&1T6k4l#Mg`BSLmoe(NOjf^=Gt{r8Ts?BbPXyeNIgE=qNt(?uym?7K7}>Mff?wly{Zx?MkC4GHD{$uH(|mZde**WmL{xmqh;pIycl`7_-ZbSsDEIpdJm=QeVoa0uKEwE)CaVV6IjJ@E#prU`;KjfAZ!>mkAq=+gt>9;jAjF* zFIrtjH@Phsn~bQe)yEf?7*ScTO9#$;()PiuTQQ)xgzjojC($=t3(3eu9)D7Nn&H8C zepW6v2H58sZ0UFiFOA)!W>KlSiyWqpI?p*OD(CByY?MwTHc4MUA#+{>G7 z7sE6cL%znaIW8+_qyD`#3@tSi5T8;Um3HOoj=ubv3I#1*WzH$F4d?%+l^ryNI&h5 zqjozze`zctp>#}_T*cg?0kvb=kYDfCHRj9>rCst(UGB=o49)uw zBz4ed!lDXRlFU^!gVi|QSVJMyqtIx?Y-1f38SAma*nl<0dHAHU34Y^zn}r-?<(*#S zB@_JVjmyMWT@fuTc}NEBL3Y-Dr@wa|*vt>oeZJGn|6Z^0P9Wd85(w$n1NI(cKP^w$ zHybl_Vm6vcTr-LDW3aJ>UeN-t5x^8<8|`E}W*I?L7_FFZwA+N4$j-|hIxv^C@HZze zWlNdyZRc|?6%v#g`;(4y3?j_qI(gg<9(N&+yEvw@yxhT+bdvjBoMT;Xb+;(z_PiLm zkFdMtfpoCfri0zf%NyrfC0oc1%GP7_viS2 zJ;&#f$4{kC%J2Aofa@=CUpFCtzsQSsIR7Ho2XX!n+&7d@oM(SBMPA~371v+pxRm27 d90MF*<=DvaHIAD&zRt0U;~N~eaC{Sa{|EorOX>gs diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType$Member.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType$Member.class index 2546e25474301f114829fafc8dd121b151cc99f1..2dd621a11b0dd18f50cd0e7cab6ac6ac25a5ca1d 100644 GIT binary patch delta 25 hcmeyt{DXPJK}Ozd3@i-S88{hkFz_+loP3T^3jlb12zvkk delta 25 hcmeyt{DXPJK}Oz-3@i+n7&sX&Gw?B7nS72>3jlYa2xkBQ diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType.class index 9f692d2e00f168f2a6f20ff3f05f4ff5b9512d28..47bc79d5df1090fd0af99be6454b03c43bd9c4b5 100644 GIT binary patch delta 172 zcmWNGze_?<97oTGUf%m&DfymPqX@~-hTtu(ErNf9;uL|K_@DUQT3Z|1S{?f*`U#l| z4Gj)1(p}Esa2Ab4<7wc+D+zC;yi?LMZR5K7 zv*63aEuv+YKIGvMV%$bnqG4wgazJE*2fOGE1{Q{!44e$N82A`&GYB)>VUS?BJ2{r!RrCQ+<{?n#5rZhhV+JXP zCk*loPbY6@H)4D-`4zhsZ<2~KlHu}NGG0H<~(wEzGB diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol$Kind.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol$Kind.class index 5410e34e4faa5ab172a4f9106c7a0fa271bbbfe4..9b06e86d8e63c9c572d44ba8e5596fa883441dc7 100644 GIT binary patch delta 57 zcmcc2d6{!V0W+i0y=>1d?WxWtg=XttPtz KNxR8K%vu0C_6tM+ diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class index 7eb164a5045aa0e216876aefd1f8c5d00559f1da..0d66058f655abe4ffb1cb84a8f18643b467acfb1 100644 GIT binary patch delta 271 zcmWO1&nv@m90u^`DTjTxea3esZ6;e0WX~tLJ(5ej1TRS(8W3Qa$deYNs~ki zQ;2c_{d6R1jhhS%U9@o#F)mBNigQICt+bs*fH{P?igvDHkn0lkrmei{Cc3#L1+Qc8 zXm?k;dz#zF01xCxGey;sW)5Y{=h{c;U>QBE=#66x^F->t4f|B}OjT6RRjbnHzldF` zUa4Lq&Ko3niwWMr;XN{}VTlj&>v#Ahqh^H9vTgFMue#?ALB8vr5B=a1L;R9IaqFfZ$igQ_>t+c(0My?^mb+j>yer`y>o3=Jpw-94aT(4tq zYj;PxuIBd8$9?(HOhL7%nFAU1W$Z(=^9Wr$)*B}n$GT# z!XiTXA-}JHR6$UFC<;hIYRZGb#21YTAw2rPKVYIyJ`f_FS>U0GW@hg9ob$csd(XY+ z&fg_>#yP+KbMr@_o@>{gmQaI3Eibv$Fu4Gx+j(C^SYXSKkN4@LKRcj*wiax zD^tFg>g-PU);SKvG`P&A(QFPSBTX*zX*S10Rj~!UqFLy&h{fi&(5%=JUezphS;lNr zY)y1xEMd9J3ffG)Ri;*&^;X<&=XICWtTB13T%5Ho>sW6tTa#lQq%@r_T|)kDO^&2p zHu9Fy;ZYJ#WgjY@@p^LIHBH%`oY$T9lg<4(e_>{0R`Zb}Zc^6RSX;1n&F;s( zom}i?HfZ*kpCYAdpSc%FuKQRqezeY$%Gw5Ul6z2cNAt_FUZyYYKcWvSN=DO-zMmR+ zL>@IAdV(@$o1R&G!r>&JYEA{GF=TG(pVjAPx7`x8pVV!Bu{+hbrYc%#T~Q=VO*CQp zqltQ7I{z$1@<60=+7GDfVkvrMbPCZD!iK~9N-W~IL0T!+mdr!zR#o@q#MOK z`YGp(G^AF@FQjShf@cMH2%Zz%Dfp$}px{@6`vuPn9uT}Bcu4S~;1R(~g1bcF>$!1R SdXR5K_n0t&f0^&NO8j3O&Fs7Y delta 969 zcmaiy`*TfK6vsb1_vGwz&plN`NN)3LB{V{$(I3=pBT^cI1n~~R2^TlL5^iohs_AX& zRaMp6Xg%UlkMI*_OiUQB89(3`<9{&2kA5;kJ9OPU9W#D1XP@=`?!DIf?zQ&bkMmyS zx({DpzXeot@rqj)$ak2i2rcvzF~2n)?TolCgZR?pE2_=@K&f5hF_~I35EvVp!c@&S z9(7DJ&jS-8^~})B^q571Vo006$*=56#^ROr$!Nk)b|e&fo!{9Q-I7!U%0@SbsAsmv z9Ojy(*2mU7MUJ^+=g5vtEbv&!BGYS?I87|^XlALoZ;cAIuw1jkW2HD>TBGb%k5#NT zBeNIPtWhY}VV#s;*VVo%8S7}zlwU=g$G6l3jcY4MI$KmIl#L<{RZ+C}b0cC96q z6`Q+ixVfZ)wq}!}%v{bYGY$5KYO86nr>GyyO}j|_C^pwAof&Iit@+9PV;5RG(y6cQ zJh!wVy1q4<(Cjjkbg}x`EZ0Tq7t^f^)UW2KF0g)66qsI}YaZ+TL4UX$z-SJp8#!cN z>3ix=bK9vigM%y8IkPcXuKLXJU`=(0T+#@#%VTui6-OOqZ*$k7Fjf|1G z#H(!t2#Wui$#Z9=%CDk_e9=!NZ1*#1fUgx19o7R(R~(@t%^DSVXo@)L(6H0b{Ipp- zz%s>ke30b6H;*zxQQ;Y~_J76LdlXaeO2*%jO!tzN>7|jO!o!64h#c}Mq<~K;Vl2gc z#wSdml&OrAS2mgjl(Sj7Js{pgRB(cE^ijzJiF`s8PZ>`_)GDyvkn(YKdUR^Snj%e! zrb|<$|?)p9m)7z z{=@twvo=1UixN56pyW6lZI)|l5^_wiTkyDGk6^FhPQep`y9G}Q?h!mCxL5GBU`jIo Wo*b4fdpIM4`^1x;pXEFk2>%DFCd(!O diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index 262b3ce..ab75cf0 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -4,12 +4,15 @@ import framework.AbstractGrader; import framework.lang.Type; import framework.project3.Project3SemanticError; +import framework.project4.Project4SemanticError; +import framework.project4.Project4Exception; import generated.Splc.SplcBaseVisitor; import generated.Splc.SplcLexer; import generated.Splc.SplcParser; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.TerminalNode; import java.io.IOException; @@ -36,16 +39,18 @@ public void start() throws IOException { SemanticAnalyzer analyzer = new SemanticAnalyzer(grader); analyzer.visit(program); - // If we get here, no semantic errors were found - // Phase 2: Print global variables and functions - grader.print("Variables:\n"); - for (Symbol symbol : analyzer.getGlobalVariables()) { - grader.print(symbol.getName() + ": " + symbol.getType().fullPrint() + "\n"); - } - grader.print("\n"); - grader.print("Functions:\n"); - for (Symbol symbol : analyzer.getGlobalFunctions()) { - grader.print(symbol.getName() + ": " + symbol.getType().prettyPrint() + "\n"); + // If we get here, no semantic errors were found (or only Project 4 errors) + // Phase 2: Print global variables and functions only if no errors + if (!analyzer.hasSemanticErrors()) { + grader.print("Variables:\n"); + for (Symbol symbol : analyzer.getGlobalVariables()) { + grader.print(symbol.getName() + ": " + symbol.getType().fullPrint() + "\n"); + } + grader.print("\n"); + grader.print("Functions:\n"); + for (Symbol symbol : analyzer.getGlobalFunctions()) { + grader.print(symbol.getName() + ": " + symbol.getType().prettyPrint() + "\n"); + } } } @@ -441,6 +446,17 @@ public List getFileScopeOthers() { // ===== Semantic Analyzer ===== + // Expression info: type + value category + private static class ExprInfo { + public final Type type; + public final boolean isLvalue; + + public ExprInfo(Type type, boolean isLvalue) { + this.type = type; + this.isLvalue = isLvalue; + } + } + private static class SemanticAnalyzer extends SplcBaseVisitor { private final AbstractGrader grader; private final SymbolTable symbolTable; @@ -448,6 +464,8 @@ private static class SemanticAnalyzer extends SplcBaseVisitor { private final List globalFunctions = new ArrayList<>(); private final Map incompleteGlobals = new LinkedHashMap<>(); + private Type currentFunctionReturnType = null; // Track current function's return type + private boolean hasSemanticErrors = false; // Track if any semantic errors occurred public SemanticAnalyzer(AbstractGrader grader) { @@ -463,6 +481,10 @@ public List getGlobalFunctions() { return globalFunctions; } + public boolean hasSemanticErrors() { + return hasSemanticErrors; + } + private List getTagNamesFromType(Type type) { List result = new ArrayList<>(); if (type instanceof StructType) { @@ -561,6 +583,7 @@ public Type visitGlobalDef(SplcParser.GlobalDefContext ctx) { // Enter function scope for parameters and body symbolTable.enterScope(); + currentFunctionReturnType = specType; // Track return type for return statement checking // Add parameters to the function scope if (ctx.funcArgs().specifier() != null && !ctx.funcArgs().specifier().isEmpty()) { @@ -764,16 +787,35 @@ public Type visitVarDecStmt(SplcParser.VarDecStmtContext ctx) { symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); - // Visit initialization expression if present + // Visit initialization expression if present and check type compatibility if (ctx.expression() != null) { - visitExpression(ctx.expression()); + try { + ExprInfo exprInfo = checkExpression(ctx.expression()); + if (!typesEqual(varType, exprInfo.type)) { + Project4SemanticError.unexpectedType(ctx.expression(), exprInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } } return null; } @Override public Type visitIfStmt(SplcParser.IfStmtContext ctx) { - visitExpression(ctx.expression()); + // Check condition type + try { + ExprInfo condInfo = checkExpression(ctx.expression()); + // Condition must be integer or pointer + if (!isIntegerType(condInfo.type) && !isPointerType(condInfo.type)) { + Project4SemanticError.unexpectedType(ctx.expression(), condInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } + visit(ctx.statement(0)); if (ctx.statement().size() > 1) { visit(ctx.statement(1)); @@ -783,46 +825,461 @@ public Type visitIfStmt(SplcParser.IfStmtContext ctx) { @Override public Type visitWhileStmt(SplcParser.WhileStmtContext ctx) { - visitExpression(ctx.expression()); + // Check condition type + try { + ExprInfo condInfo = checkExpression(ctx.expression()); + // Condition must be integer or pointer + if (!isIntegerType(condInfo.type) && !isPointerType(condInfo.type)) { + Project4SemanticError.unexpectedType(ctx.expression(), condInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } + visit(ctx.statement()); return null; } @Override public Type visitReturnStmt(SplcParser.ReturnStmtContext ctx) { - visitExpression(ctx.expression()); + // Check return type + try { + ExprInfo exprInfo = checkExpression(ctx.expression()); + if (currentFunctionReturnType != null && !typesEqual(currentFunctionReturnType, exprInfo.type)) { + Project4SemanticError.unexpectedType(ctx.expression(), exprInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } return null; } @Override public Type visitExprStmt(SplcParser.ExprStmtContext ctx) { - visitExpression(ctx.expression()); + // Just check the expression + try { + checkExpression(ctx.expression()); + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } return null; } - @Override - public Type visitExpression(SplcParser.ExpressionContext ctx) { - // First, check if this expression has an identifier that needs to be looked up - if (ctx.Identifier() != null) { + // ===== Expression Type Checking ===== + + private ExprInfo checkExpression(SplcParser.ExpressionContext ctx) { + // Identifier (but not member access or function call) + if (ctx.Identifier() != null && ctx.LPAREN() == null && ctx.DOT() == null && ctx.ARROW() == null) { String name = ctx.Identifier().getText(); Symbol symbol = symbolTable.lookupOther(name); if (symbol == null) { grader.reportSemanticError(Project3SemanticError.undeclaredUse(ctx.Identifier())); + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); // Error recovery + } + if (symbol.getKind() == Symbol.Kind.FUNCTION || symbol.getKind() == Symbol.Kind.FUNCTION_DECL) { + Project4SemanticError.identifierNotVariable(ctx, name).throwException(); + } + return new ExprInfo(symbol.getType(), true); // Variables are lvalues + } + + // Number + if (ctx.Number() != null) { + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Parenthesized expression + if (ctx.LPAREN() != null && ctx.expression().size() == 1 && ctx.Identifier() == null) { + ExprInfo inner = checkExpression(ctx.expression(0)); + return new ExprInfo(inner.type, inner.isLvalue); + } + + // Function call: Identifier LPAREN (expression (COMMA expression)*)? RPAREN + if (ctx.Identifier() != null && ctx.LPAREN() != null) { + String funcName = ctx.Identifier().getText(); + Symbol symbol = symbolTable.lookupOther(funcName); + if (symbol == null) { + grader.reportSemanticError(Project3SemanticError.undeclaredUse(ctx.Identifier())); + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + if (symbol.getKind() != Symbol.Kind.FUNCTION && symbol.getKind() != Symbol.Kind.FUNCTION_DECL) { + Project4SemanticError.identifierNotFunction(ctx, funcName).throwException(); + } + + FunctionType funcType = (FunctionType) symbol.getType(); + List paramTypes = funcType.getParameterTypes(); + + // Get actual arguments + List args = new ArrayList<>(); + for (int i = 0; i < ctx.expression().size(); i++) { + args.add(ctx.expression(i)); + } + + // Check parameter count + if (args.size() != paramTypes.size()) { + Project4SemanticError.badParamCount(ctx, paramTypes.size(), args.size()).throwException(); + } + + // Check parameter types + for (int i = 0; i < args.size(); i++) { + ExprInfo argInfo = checkExpression(args.get(i)); + if (!typesEqual(paramTypes.get(i), argInfo.type)) { + Project4SemanticError.badParamType(ctx, i + 1).throwException(); + } + } + + return new ExprInfo(funcType.getReturnType(), false); + } + + // Array access: expression LBRACK expression RBRACK + if (ctx.LBRACK() != null) { + ExprInfo arrayInfo = checkExpression(ctx.expression(0)); + ExprInfo indexInfo = checkExpression(ctx.expression(1)); + + // Index must be integer + if (!isIntegerType(indexInfo.type)) { + Project4SemanticError.unexpectedType(ctx, indexInfo.type).throwException(); + } + + Type elementType; + if (arrayInfo.type instanceof ArrayType) { + // If it's an array, it must be an lvalue + if (!arrayInfo.isLvalue) { + Project4SemanticError.unexpectedType(ctx, arrayInfo.type).throwException(); + } + elementType = ((ArrayType) arrayInfo.type).getElementType(); + } else if (arrayInfo.type instanceof PointerType) { + elementType = ((PointerType) arrayInfo.type).getReferencedType(); + } else { + Project4SemanticError.unexpectedType(ctx, arrayInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + return new ExprInfo(elementType, true); // Array access is lvalue + } + + // Struct member access: expression DOT Identifier + if (ctx.DOT() != null) { + ExprInfo structInfo = checkExpression(ctx.expression(0)); + String memberName = ctx.Identifier().getText(); + + if (!(structInfo.type instanceof StructType)) { + Project4SemanticError.unexpectedType(ctx, structInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + if (!structInfo.isLvalue) { + Project4SemanticError.lvalueRequired(ctx).throwException(); + } + + StructType structType = (StructType) structInfo.type; + if (!structType.isComplete()) { + Project4SemanticError.unexpectedType(ctx, structType).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + // Find member + Type memberType = null; + for (StructType.Member member : structType.getMembers()) { + if (member.name.equals(memberName)) { + memberType = member.type; + break; + } + } + + if (memberType == null) { + Project4SemanticError.badMember(ctx, structType, memberName).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + return new ExprInfo(memberType, true); // Member access is lvalue + } + + // Struct pointer access: expression ARROW Identifier + if (ctx.ARROW() != null) { + ExprInfo ptrInfo = checkExpression(ctx.expression(0)); + String memberName = ctx.Identifier().getText(); + + if (!(ptrInfo.type instanceof PointerType)) { + Project4SemanticError.unexpectedType(ctx, ptrInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + Type referencedType = ((PointerType) ptrInfo.type).getReferencedType(); + if (!(referencedType instanceof StructType)) { + Project4SemanticError.unexpectedType(ctx, ptrInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + StructType structType = (StructType) referencedType; + if (!structType.isComplete()) { + Project4SemanticError.unexpectedType(ctx, ptrInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + // Find member + Type memberType = null; + for (StructType.Member member : structType.getMembers()) { + if (member.name.equals(memberName)) { + memberType = member.type; + break; + } + } + + if (memberType == null) { + Project4SemanticError.badMember(ctx, structType, memberName).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + return new ExprInfo(memberType, true); // Member access is lvalue + } + + // Postfix increment/decrement: expression INC/DEC + if (ctx.INC() != null || ctx.DEC() != null) { + if (ctx.expression().size() == 1) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!operandInfo.isLvalue) { + Project4SemanticError.lvalueRequired(ctx).throwException(); + } + + if (!isIntegerType(operandInfo.type) && !isPointerType(operandInfo.type)) { + Project4SemanticError.unexpectedType(ctx, operandInfo.type).throwException(); + } + + return new ExprInfo(operandInfo.type, false); // Result is rvalue } } - // Visit all sub-expressions - for (int i = 0; i < ctx.getChildCount(); i++) { - if (ctx.getChild(i) instanceof SplcParser.ExpressionContext) { - visitExpression((SplcParser.ExpressionContext) ctx.getChild(i)); + // Prefix unary operators + if (ctx.expression().size() == 1) { + // Prefix increment/decrement + if ((ctx.INC() != null || ctx.DEC() != null) && ctx.expression().size() == 1) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!operandInfo.isLvalue) { + Project4SemanticError.lvalueRequired(ctx).throwException(); + } + + if (!isIntegerType(operandInfo.type) && !isPointerType(operandInfo.type)) { + Project4SemanticError.unexpectedType(ctx, operandInfo.type).throwException(); + } + + return new ExprInfo(operandInfo.type, false); // Result is rvalue + } + + // Unary plus/minus + if (ctx.PLUS() != null || ctx.MINUS() != null) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!isIntegerType(operandInfo.type)) { + Project4SemanticError.unexpectedType(ctx, operandInfo.type).throwException(); + } + + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Logical NOT + if (ctx.NOT() != null) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!isIntegerType(operandInfo.type) && !isPointerType(operandInfo.type)) { + Project4SemanticError.unexpectedType(ctx, operandInfo.type).throwException(); + } + + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Dereference: STAR expression + if (ctx.STAR() != null) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!(operandInfo.type instanceof PointerType)) { + Project4SemanticError.unexpectedType(ctx, operandInfo.type).throwException(); + return new ExprInfo(new BasicType(BasicType.Kind.INT), true); + } + + Type referencedType = ((PointerType) operandInfo.type).getReferencedType(); + return new ExprInfo(referencedType, true); // Dereference is lvalue + } + + // Address-of: AMP expression + if (ctx.AMP() != null) { + ExprInfo operandInfo = checkExpression(ctx.expression(0)); + + if (!operandInfo.isLvalue) { + Project4SemanticError.lvalueRequired(ctx).throwException(); + } + + Type ptrType = new PointerType(operandInfo.type); + return new ExprInfo(ptrType, false); // Address-of is rvalue + } + } + + // Binary operators + if (ctx.expression().size() == 2) { + ExprInfo lhs = checkExpression(ctx.expression(0)); + ExprInfo rhs = checkExpression(ctx.expression(1)); + + // Arithmetic: *, /, % + if (ctx.STAR() != null || ctx.DIV() != null || ctx.MOD() != null) { + if (!isIntegerType(lhs.type)) { + Project4SemanticError.unexpectedType(ctx, lhs.type).throwException(); + } + if (!isIntegerType(rhs.type)) { + Project4SemanticError.unexpectedType(ctx, rhs.type).throwException(); + } + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Addition/Subtraction + if (ctx.PLUS() != null || ctx.MINUS() != null) { + Token op = ctx.PLUS() != null ? ctx.PLUS().getSymbol() : ctx.MINUS().getSymbol(); + + // Both integer + if (isIntegerType(lhs.type) && isIntegerType(rhs.type)) { + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Pointer + integer or integer + pointer (for addition only) + if (ctx.PLUS() != null) { + if (isPointerType(lhs.type) && isIntegerType(rhs.type)) { + return new ExprInfo(lhs.type, false); + } + if (isIntegerType(lhs.type) && isPointerType(rhs.type)) { + return new ExprInfo(rhs.type, false); + } + } + + // Pointer - integer + if (ctx.MINUS() != null) { + if (isPointerType(lhs.type) && isIntegerType(rhs.type)) { + return new ExprInfo(lhs.type, false); + } + // Pointer - pointer + if (isPointerType(lhs.type) && isPointerType(rhs.type)) { + if (!typesEqual(lhs.type, rhs.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, op, lhs.type, rhs.type).throwException(); + } + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + } + + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, op, lhs.type, rhs.type).throwException(); + } + + // Comparison: <, <=, >, >= + if (ctx.LT() != null || ctx.LE() != null || ctx.GT() != null || ctx.GE() != null) { + if (!isIntegerType(lhs.type)) { + Project4SemanticError.unexpectedType(ctx, lhs.type).throwException(); + } + if (!isIntegerType(rhs.type)) { + Project4SemanticError.unexpectedType(ctx, rhs.type).throwException(); + } + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Equality: ==, != + if (ctx.EQ() != null || ctx.NEQ() != null) { + Token op = ctx.EQ() != null ? ctx.EQ().getSymbol() : ctx.NEQ().getSymbol(); + + // Check if both are integers or pointers + if (!isIntegerType(lhs.type) && !isPointerType(lhs.type)) { + Project4SemanticError.unexpectedType(ctx, lhs.type).throwException(); + } + if (!isIntegerType(rhs.type) && !isPointerType(rhs.type)) { + Project4SemanticError.unexpectedType(ctx, rhs.type).throwException(); + } + + // Special case: allow 0 as null pointer + boolean lhsIsZero = isConstantZero(ctx.expression(0)); + boolean rhsIsZero = isConstantZero(ctx.expression(1)); + + if (!lhsIsZero && !rhsIsZero && !typesEqual(lhs.type, rhs.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, op, lhs.type, rhs.type).throwException(); + } + + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Logical: &&, || + if (ctx.AND() != null || ctx.OR() != null) { + if (!isIntegerType(lhs.type) && !isPointerType(lhs.type)) { + Project4SemanticError.unexpectedType(ctx, lhs.type).throwException(); + } + if (!isIntegerType(rhs.type) && !isPointerType(rhs.type)) { + Project4SemanticError.unexpectedType(ctx, rhs.type).throwException(); + } + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + // Assignment: = + if (ctx.ASSIGN() != null) { + if (!lhs.isLvalue) { + Project4SemanticError.lvalueRequired(ctx).throwException(); + } + + // Check if lhs or rhs is array type - arrays cannot be assigned + if (lhs.type instanceof ArrayType || rhs.type instanceof ArrayType) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, ctx.ASSIGN().getSymbol(), lhs.type, rhs.type).throwException(); + } + + if (!isIntegerType(lhs.type) && !isPointerType(lhs.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, ctx.ASSIGN().getSymbol(), lhs.type, rhs.type).throwException(); + } + if (!isIntegerType(rhs.type) && !isPointerType(rhs.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, ctx.ASSIGN().getSymbol(), lhs.type, rhs.type).throwException(); + } + + // Special case: allow 0 as null pointer + boolean rhsIsZero = isConstantZero(ctx.expression(1)); + + if (!rhsIsZero && !typesEqual(lhs.type, rhs.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx, ctx.ASSIGN().getSymbol(), lhs.type, rhs.type).throwException(); + } + + return new ExprInfo(rhs.type, false); // Assignment returns rvalue } } + // Should not reach here + return new ExprInfo(new BasicType(BasicType.Kind.INT), false); + } + + @Override + public Type visitExpression(SplcParser.ExpressionContext ctx) { + // This should not be used in Project 4, but keep for compatibility return null; } // Helper methods + private boolean isConstantZero(SplcParser.ExpressionContext ctx) { + // Check if expression is directly 0 (optionally wrapped in parentheses) + if (ctx.Number() != null && ctx.Number().getText().equals("0")) { + return true; + } + // Check if it's parenthesized zero + if (ctx.LPAREN() != null && ctx.expression().size() == 1 && ctx.Identifier() == null) { + return isConstantZero(ctx.expression(0)); + } + return false; + } + + private boolean isIntegerType(Type type) { + return type instanceof BasicType && ((BasicType) type).getKind() == BasicType.Kind.INT; + } + + private boolean isPointerType(Type type) { + return type instanceof PointerType; + } + + private boolean typesEqual(Type t1, Type t2) { + return t1.equals(t2); + } + private String extractIdentifierFromVarDec(SplcParser.VarDecContext ctx) { if (ctx.Identifier() != null) { return ctx.Identifier().getText(); From 5b3fc7d30de288698b3bac676d56060594f9db9c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:16:52 +0000 Subject: [PATCH 4/9] Address code review feedback and finalize implementation Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- .../CS323-Compilers-2025F-Projects/Main.class | Bin 636 -> 0 bytes .../CS323-Compilers-2025F-Projects/TestP4.class | Bin 732 -> 0 bytes .../framework/AbstractCompiler.class | Bin 381 -> 0 bytes .../framework/AbstractGrader.class | Bin 2208 -> 0 bytes .../framework/Utils.class | Bin 3831 -> 0 bytes .../framework/lang/Type.class | Bin 241 -> 0 bytes .../framework/project3/Grader.class | Bin 578 -> 0 bytes ...manticError$DefinitionOfIncompleteType.class | Bin 1105 -> 0 bytes .../Project3SemanticError$MemberError.class | Bin 1140 -> 0 bytes ...oject3SemanticError$RedeclarationError.class | Bin 1158 -> 0 bytes ...roject3SemanticError$RedefinitionError.class | Bin 1073 -> 0 bytes ...oject3SemanticError$UndeclaredUseError.class | Bin 1077 -> 0 bytes .../project3/Project3SemanticError.class | Bin 1550 -> 0 bytes .../framework/project4/Project4Exception.class | Bin 369 -> 0 bytes .../project4/Project4SemanticError.class | Bin 4592 -> 0 bytes .../generated/Splc/SplcBaseListener.class | Bin 3454 -> 0 bytes .../generated/Splc/SplcBaseVisitor.class | Bin 3672 -> 0 bytes .../generated/Splc/SplcLexer.class | Bin 8795 -> 0 bytes .../generated/Splc/SplcListener.class | Bin 2268 -> 0 bytes .../Splc/SplcParser$BracketContext.class | Bin 1948 -> 0 bytes .../Splc/SplcParser$ExprStmtContext.class | Bin 1769 -> 0 bytes .../Splc/SplcParser$ExpressionContext.class | Bin 3554 -> 0 bytes .../Splc/SplcParser$FuncArgsContext.class | Bin 2427 -> 0 bytes .../Splc/SplcParser$GlobalDefContext.class | Bin 3043 -> 0 bytes .../Splc/SplcParser$IfStmtContext.class | Bin 2233 -> 0 bytes .../Splc/SplcParser$ProgramContext.class | Bin 1965 -> 0 bytes .../Splc/SplcParser$ReturnStmtContext.class | Bin 1837 -> 0 bytes .../Splc/SplcParser$SpecifierContext.class | Bin 2729 -> 0 bytes .../Splc/SplcParser$StatementContext.class | Bin 680 -> 0 bytes .../Splc/SplcParser$VarDecContext.class | Bin 2005 -> 0 bytes .../Splc/SplcParser$VarDecStmtContext.class | Bin 2196 -> 0 bytes .../Splc/SplcParser$WhileStmtContext.class | Bin 1997 -> 0 bytes .../generated/Splc/SplcParser.class | Bin 21632 -> 0 bytes .../generated/Splc/SplcVisitor.class | Bin 3013 -> 0 bytes .../impl/Compiler$ArrayType.class | Bin 1383 -> 0 bytes .../impl/Compiler$BasicType$Kind.class | Bin 1069 -> 0 bytes .../impl/Compiler$BasicType.class | Bin 948 -> 0 bytes .../impl/Compiler$FunctionType.class | Bin 1654 -> 0 bytes .../impl/Compiler$PointerType.class | Bin 1258 -> 0 bytes .../impl/Compiler$SemanticAnalyzer.class | Bin 19950 -> 0 bytes .../impl/Compiler$StructType$Member.class | Bin 504 -> 0 bytes .../impl/Compiler$StructType.class | Bin 2624 -> 0 bytes .../impl/Compiler$Symbol$Kind.class | Bin 1235 -> 0 bytes .../impl/Compiler$Symbol.class | Bin 924 -> 0 bytes .../impl/Compiler$SymbolTable.class | Bin 3671 -> 0 bytes .../impl/Compiler.class | Bin 3153 -> 0 bytes src/main/java/impl/Compiler.java | 4 ++-- 47 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 out/production/CS323-Compilers-2025F-Projects/Main.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/TestP4.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/AbstractCompiler.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/AbstractGrader.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/Utils.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/lang/Type.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Grader.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$DefinitionOfIncompleteType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$MemberError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedeclarationError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedefinitionError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$UndeclaredUseError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4Exception.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseListener.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseVisitor.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcLexer.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcListener.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$BracketContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExprStmtContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExpressionContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$FuncArgsContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$GlobalDefContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$IfStmtContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ProgramContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ReturnStmtContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$SpecifierContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$StatementContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecStmtContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$WhileStmtContext.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcVisitor.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType$Kind.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$FunctionType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$PointerType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType$Member.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol$Kind.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class delete mode 100644 out/production/CS323-Compilers-2025F-Projects/impl/Compiler.class diff --git a/out/production/CS323-Compilers-2025F-Projects/Main.class b/out/production/CS323-Compilers-2025F-Projects/Main.class deleted file mode 100644 index bc29e4cf6e2a98820e2e25a76d9b9e2b9d53cdbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmZuuYflqF6g{_H*mhYcwzh!0%0n$ex+eOqs4)ZxNueY)CWH@Ux{PFNcek0H_3^Xx zgH0sy2l%55cM7(eFv-rHz4y#HXYT#|=jSf~udwAHgRBk9#RMh^vt98?cs&tad96-Y z`kFAg8$^MAO~}@^-rL9#=7yjk_6~xcJc|0MZfhk)n1e%D(K6A#NMz#mRct6;cv7j0 z=P&C?zvnx!;To}NLb=u)%P~a|T{VnEfw1sFiBNuy)yFZ*p%Rx;u5J!oPCxp`9#vipt6-Kq=RQb{jgOE3pb%VniR(QB(Wk6=UyjS^enImzWcs2li z;{!1i!!nRV9_!fPD^oL$TgCnm`E?9JYf=IRC+W-!m;ELM1sBRXUfAg2X*gL9BaPNfEV5m}XdM zx7)Qtndu-tt$8AoA9tTLvo!Q;l&~?2I~-*PbC_qCyQK>QPfgD-CYt(y=Tb0{P|H^1 zh@;A|a9#R32<3j9=2s$0SY%k&#P1V#=B6q!_uO+wrP!$8uCZjEV})VqlM<2qnyAm$ z@Tcw@B~GNWv5YkXTxV!riJ?o6@U@0cbaOpaK`L$B!v@EugZsw$#T$+nUZ$1s^?-sb zRe8+ukbZ@+?O>0=dYPO^hM7(f%lCQYNp&c^kWQ>f1msJ#{^2%b80=Tye3|MXi8GGJ zBL?qxhZ#ckl3e-HIL9zKAZ;2yN%8|481ods%*fFCh`v@SGKynceXt+2VW`t;(l8@~ z2DYfgK;Obbk>ci0@bc6-W-d@UE-&=4)VaX&@irazvHEW39JQN9RpJ88TnP@!n8F&S Tu|c!4O{W%-?9kh!eF5%2xWTCF diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/AbstractCompiler.class b/out/production/CS323-Compilers-2025F-Projects/framework/AbstractCompiler.class deleted file mode 100644 index 3dcf784fdd4c4f9a6ecf634226dd7c84263fc2c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmZ`#yH3ME5S;ZR#*RsV5Q<0?bcvDh2k?+k1PCc21t|U5IU)z!7o9J_Z&4s53O<03 zLabd-fGBRXyEA*5+0U={4*;jw3t++a;Dm6|B5WsHX9RmV zn)%p(?;!}$Mo1XkYf;E2r61z+q%vBhW~_=;mP^fx3oYh#F_`?7T{YY>VSo5PJDL%k zv6@RlcaoLzW?dvw--#sWiCY<=*X=zjyL6I6Bp diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/AbstractGrader.class b/out/production/CS323-Compilers-2025F-Projects/framework/AbstractGrader.class deleted file mode 100644 index 69d0fccec3b39d30f37db8f64cd0f7b617223d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2208 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 Bc!>Z2 diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$DefinitionOfIncompleteType.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$DefinitionOfIncompleteType.class deleted file mode 100644 index 0d67f09fb6990fedf215c582c530e92ae46b2b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 zcma)5ZBG+H5Pp^xjvgm(0xBw=%FDGVhk`Fq<%3mYlLkoIkRTuQTK4L}-EOmYMfq2n zXap1e0sbiCY)dFgKagB@XP(`e=b5?L-+zAm0`MFwCVG%Ekhai^J_g5EUc^62weL2R z+~c)m$=y6L$~^K!64YKPB^5*8vp@vN8biv-Ze`Gqi~-Za04#>WMbk{b-{|C8_Ez2?&*Yut=L`%p4DWddo*R0i?rv0d@dFseWdmat#xcP# zdoc+NnL1C(hf!6A3{y_FyY!0O=ORCVtGH%h(!zDzV3_Pm(YnfDP}));s5R8{qKPTo zGGJS{jXMk@9q~nx@VaiAao~kbzTq=WIK^z~+>I9dw1pW>JxKDyoyMoTxz5^CsqT&%k{P3vmDGX8Quoj4xH>QT&Q?K78j4)NX&i z3kk#gg-0Q~#gH!0P%sSXTGpFUm8*(Z4GGCKNObbTi}j?HWmDDo>p&k&b{+TyT`oia zI**e#GNu}=q7YmaLNAVaOktfN`+t;S)AQ(|2gj(H^gzhcUN062c|cZ6+}eBagm#m-bzM(k{slsB B9m@a! diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$MemberError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$MemberError.class deleted file mode 100644 index 7ad8f67699106bc7a235a3bacbff7ebe1d8b27a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcma)5YflqF6g|@xmTs3<1yoS1%41s|tAY|K}1c78565^*Voz{ijSu(q=`mZ#R z2qyXi{87d`+l|!N4)H(cRHFB#Hi@i2=4WHsmpaxfTHubXD(E%$3&CMie! z_*AKL!fCjiP|V#xHZ8*Sq}5)vWQ%TmZbg!FtIDPC3dh?E>b$Hf7&0)75r#~}KSm7s z-4mznSe_%AmK{k~G|L0XGfd6a*Xb*8)yR6GQ$k^WHl$C(7{kcbyZxFXA%_Xv)Nsqd zZA>!EU9TpFY?DX!C%+bW4AW+@cQ4i8l#6l>cW_t3w1ImlFiiG@h(j4PO1tX{9&=yO z@c<7s%ov!(9K+~U@f8vAreaZRJ6?Rd;(WCBv#y^T?AuBdtWQoRDnY4qEb2Q4xa6ZO;iq9x~**M2-UKG)1$QLSD@ZS$QSe*aI5ERWLlI(~25Q z+J{Tuz)B0}&`OKv82mymhG(?qk)idJRu5VD7=oai=U7S-_>_!M#7=%x`+*xr>C#td zml$Wb#1z8??%PM1F5i6O>+ASR4E9k!*@N~4mOuZ6ouIUUq{>6;C8By;*rIb9FUX(5 S8rI`Ig);3rm7x0Ffc^)1EFcL0 diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedeclarationError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError$RedeclarationError.class deleted file mode 100644 index 19ca2678913135453655ef1a192b82252fccea20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcma)5YflqF6g|@xmM+Vy0xBw2rLZlJRlx@oOq75$!Gdl>Li{vsr*&Z;WOj@4uQZVe zCi(;XQN}xMBQ*2_$z&e)&fIhFnREaA{rMZf8rF2g5Z90}(1TtEvnIJGJ_qv9I+DSG zs6>m_ZhK=3kNc5R*^n}j485z4??kT{;%0U)i9RGX=mz>>FyyZrX6l2eii*o6kDS17 zM@~d1M}i@>eZY^o<#NAn*^zYodS1Z{8W_SbgYHxXrBibRC1Y*}vTjj&uC$JqEZHEB zC#*;cVU>jR9G|JzR!lT}1YYR}Nf;Ni*9$-%@ZW{Cq#|;+}>{1NV_;nCJ@8yvm?a*lour zy677UIv(PYhA9IXOf!sJBwz3&QCCc9$J}j*of^ZqS;$_ZxP7CEZW_oc=rM}E{)x-o zAav9R6?}!ID3~=chxrzMNqmVIMyaR^y!MCbu<%&J69Z4N*uiG&0?DWrNRQL|W%KIu zkC#j>`tw~t7}mPH?auI3MP&CF66>T5h9Om5vEh}4Eb+2SmgEuXE_%a5+Us`EkQK4% zD91$Cu2@h6F!U8g7;Ob1Rb>=>U&wWrhoJ~b(;ZrC>K$nkb&R?(hLq|a+NG4jn-)-8 zE`i}0ofcKA(mIs;0hXIRg_fH;#lSZ*F+8U^g#^u;G`~d>TNp%vJTEZc4&YHRMmIK6 zBib+A*pKJFW8fTP4ClDRaE1r=e&UjCrfusXn`ZC#wp=*|`wRDe{wqy1 zf{FeBf0Xe~+ei(4Alb~!Ju`F8y=U+I{`2D(fDNpfNFi+?W1$cI1lvV3uUq&5b z)2|EG@qEE5_O?_FhjjzxoUS;k$vdHN5+#IF6)N;2H`tMNQ5wJyVP>vgONtZcSG?h%sC@Fm7Q2lZ5%Ji4w96kyJi~H5m}5?R@WK ztMXVxr9s@pEdx^)ZsQJNs;5NjD8XRbZ9ft%bIT^CanC@`!hOsTMlX^tM~P@?n~YO8 zXo_8rFlm?b+m}wX)MqWsY3T`O-+J$=JsG!rFGpHSTd-ikM!v0I6(1AAI2U!nR!Ni} zHA*HH@zB5{3rleRbF+Pbo5PbTbou_8efj#kE~ssPsfP$*@yb6xzfZ_)aT^eZbuBy1 zuqIU1tp$u^PdMr1r5p3wtjMN16t8`~G1arPmvp&=fgKSiZ)D6hSmh`ZYAbN#Sj6mq zcU!f37CCPJ6hA0p5BUM`N=JQo%*Yd76*$(2S@;erEPjLWg(JdK9*2}`l@B%=n-CyrAt8R+w%dAew@db}sQ*e6 zjbNfbz#nCtYpcc34!esYkL)3k)MPn}% zJ!I2s2qJ2Ff@qvArCTl$``SHOb9I|6fp8-&gj*Fl@Fe%QRYMfh7-h)j8XL515y!Y; z_tEWkC~VcV7jxmFfpLcMLw>?tpUalJQ;QQF!6dF4n6fa98HR<+(K2LOBC320YRYGr zbMk}3t*Rp-izB#>8wO@A+{7)0*?|-tR|bP%w>&92^(~v2!yN;*g}b=NFwqabEF;m1 z3uT;ezb$r}3^PtSzjeW*!=AN}i>apxz4VUjT@`wfr({{iTyY5&EjY+``K#hX#4trk z_0cMk_GGJQVhPIz?ps)a`(HJ?4%8n_r2|gy*PV;c-=0%-%U>Ko!mxDd@6Ycuq)OBX z3}bOF+wGtxbd}e9(qxV)=;$R6Nj590t?S~o7aL{=Hup-LE<<`-gwY!nQVv#GN})?W z4?__$O!gb=Z`;DA5lGNbku@Fyk`g2j;Q{Rr=~ke7Y&Q$vzzR!WVSMg*KcamUN!sU; zLKYeNA%<1td+(Zr!N|Hfd1d$q#txE&FEGw9!ElCa45zqVIY^z;&G&ReUEKmh}Q1EW+Br2qf` diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project3/Project3SemanticError.class deleted file mode 100644 index 884beddef97db8c56a9ab9985f59554ac1b49168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1550 zcmb7ETTc@~6#fPZ+b*qzTB=2n7Es%wtV+GaiVqe|NNO=sNO&CDp)T&FncZUiSNcRE zi9f&}WjwRswrL?*_F-q{%=ex9nLmGj{RXg!S2`vzsUeoc6s8$wkNF8VEberTox@|% z_8F$%n2zbcWtc3L_cg>BYDbdW;+reK8a?SM)Q0itVzVo3?)YZ=y_Bw8-E%skZE-0& zd!7hHIyC6Y*bKv3so~15L3m3VCsjlCiD?VNmqHjVA#Ky)R@3c>nlhYXcpcgBXVDQy z%5T$kF6<_uYnZ)`_ezQKo`+iE$S^=h8d(*?Ji}(GF-Y02FHNUgyG~TM80wLu+6rUZ zIofvGuHCbQFIwMwLPt)8x4=-1tnH()4}}b}6USYKY~c&{3TCLc;0KEHxTj)W3Sx~| zukoCe_v0usqza~2==6J*+2+2`u)M%pBPR+oOZkUc}_LcW7erS;-(WAus@3=?% zY^gkMo-Fr=dy%0Pz4;nZJ*+V#sn^3QkyUjJdx)GHTn-9IV`m4o7#5|^MO*)K#h~xH zec2WtOcn9Mr31IFdXZtKDLntYydJrKiR#y2g&YG zOT~&$Nf={zfQPh8poB8X6s3sC;5Kmv z?SN>BA0!;6B?w-*44zc*8>8?P!Pi3g3SxownKPshGIK<@IZBu#!lRHdmxxHDB`<4j4Iw_( zM%Sl=us@i#v4(bnG{ZVF!rrY@6+c>cUo4%Sb6Fo1m*3#WiWWO(9U&k8p`UQ2t-r5S0 nq_ZKNj<8&&exBy9pnU%Y$@5CnmD)ilHAaL4J|M!T@BqCphYMP> diff --git a/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class b/out/production/CS323-Compilers-2025F-Projects/framework/project4/Project4SemanticError.class deleted file mode 100644 index 1a7fedb9dbe170fb377cacff515d7a1e54024a7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4592 zcmcIo`F9)D75<(rd&ctE7IJ_%q3IZ$M)DFRkW#RqBysJ7gB-b$V^G{}EInHjOEcol z$g#UZ_k|rw*`W(NEzlN{IBog8r+-pUPw$%I2uMulIn#agN=?DM?f9!t#!i|LI5uezpfMZpl!(1mV>?mJA&bic|lk;v>q zo8uM3a?QfD5VlAs7o$+oqaZ4|^fJWG8|y}@Y*?$Q?6Q=~(3wass_0|r%a|6|4;Cl& zgU+NL#Q1LKwB}3%+{WWeC z_zuQ9K7_E3Q&vrAIE)m-^%Y}{Qxpn@d#~x1Xyv%%c!%M(W?6w^P1*-LA?$l_6gMll zMZ+}%Fq}DfpU(Y0NMTHhkn&nmoeLOI6~!oAZ=clumo7EE@S3sG#6(hP@${W%vdc zQJlg(3NjkzaJrtXHP|^ zm-u)%iafq0bL!g+*M?L`a#7-wprOG97iWiDdW7^za`kSRZqjHQgu*x5QofJcdSPwOsCvOx@Kc74rCA1z@|NZS zqvAXDTziI4^0wi?zPhX_n_z%psZC++N$VkLb6n;(!vpO}YBH)R1}(7Pmht_5#hwYO zl_B4rPHhPrE*q8QqA_x{j2$^5d(CcrV>U^^9nIM_QQ$MCgol0gF?UB@9F|_8rgqY{ zUFudwb&k6wyXXvblbrZo)$lMLQSmxWW;BZHc2(X&Xu-zya*6IK^eeny6>m~MV-s#kuSy`&E2iV& ztcthk{^IWyBw}oTAyU7Ld_Jq@I;RnjsrWOY^dWYrF@{z=0MP9foe|c}T67nhDjSZ& z9R=?(428^W{_Th^CN1|P1%G2W*b?fngawZW0)MK(sh7@%4wZey|mu& zo}2VGOhW}-MbL8vEI)b?ogaCJze~?yNnYI zVY0`F`T_Ed@0X|PGS@}g71e)4^PRD1HXn)gWb<9IcsAc18_edFn3|o83`H(sc5Dk- z;4*R@couzEkk7}LF5;UX`9?Pce}`e*6F=cSw@|>gCLNFwlJg#rrrYju3iAnCoy3o6 zM+N&Y(h7b;I{pkl54Ui|w{ZU!N)5iudiGcDJ zN-LRIvHhc$QDb-oO5}A!I^Ur^-<7_}$36FTp`-se{YL?hdY>P|b&$qniJNOHomp6g|yo>kAgumkN_z*+?2jV{~*#H0l diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseListener.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcBaseListener.class deleted file mode 100644 index f2320239d5bc63d6fefe1b4353f58398d413542e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3454 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 N;_)d&pV5cazW^R35@`Sc diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcListener.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcListener.class deleted file mode 100644 index f4567f9ecb793e6c375c1adcedf5fcdb99da7a4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcma)-*;dp*5QhK8r3D6taRqS~Whbb(A}YHm3NjqL4zU@7A;alpIP+{?_y9hX$4V#Z zBr{Iq1@lqW)qlFGQk~y_e*OZmfL)F*hT)pwQb8l?9zX!3`0ryp^)3MUX%6_ z!}QqZKc1@g$&n;#xlUV};r#d>L$7GMq2ArE#MZs~zU{4u0|v_^r{nU1eUYGEVTdKG z$HH+BTp>@9)NyT+dL=q@l=7Y}SA@ebWjbOUlo#uX&X?}(Q%Y+M-&vHkfMLd@m4@Zj zN|9Q+kTzpU+RhIVp3;mYDzB!Rp?8;aX;#A{(wj9MFU~0n%uDuX>Bbsy@iq=(%UHZP zD6gi9m+p-_`}Mo)iCE0|vgo+Ho_bmI3PYUojtCplk2Q@cXMuT9m2$Sk5O;aCc`Rd1 zW0%vgyrSxIx{#hSvPBTMb^nycWPy22b;@jsp{H7JNJp$uIT>VOmt1q%eCRt z#j)(!K_CJSi(%}4N1fvl!%)X)n$qIcz%j=#(J_8R&v%j$U1hBo|M2lU+O5)8DuI5v$*WK*U!Ds4WFEn_Fr!O{}t77xdc@f6t&hNZ zcmp?;eJkN@+)?)3g!gb?*&_)b;Gwcd6OLhA*%J}bg-P{0g=ykGN|?bc9#b|?h);>n rh%bmQiSxwQ#5csZ#6{u~afP@_TqnLKejt7%ejR4Kh+|Hg<%`i~%p%R$tO4SbcWFT;* zyuMy(g;Cdb1La5d!F4<82g>V7TSZdZZ5j2v!1Xu6UFl?z6R4h^XG@W1PX@zGnxSQ3 z8Z!d3%(>b3WlACzST467xCgH7yFu4(`feOMmBC40dA{B9V&!OrIScbB2+SNu5U8I7 zIIWgJ$ByJDvWZtLT)?XWnYtHvsv$5@u59a+uUoi?1vaV^?ti@&g*^eg+&X{ZPGvib zHw21fLUdhvqZpf}5Bs8bI#QD!QfL`o?Mjr!0UF4|oHUH%Ia% znmK-_1m;G2iY2}ZCZA!1p5-L#?Dp?<{|Q<(7)mae;T-%1bxC)6Iv!AgEr5g;vr_Az#I+yjjk84 zkOo|)yAH@zzs1Yd+96*1hP$IR{LbAiIH~`Q)W1;s5yeNCu027q`W@ahpyQ0B_MApE z{=mHPC+a+9kLDSE`*|QsCqe!q$lpgn8u*mxx>Rj7^93>~J;Dr`l*r^A1CML8RoW3o m|Da&}I|M7F{aYcuJBi~enu!(ojJ81VNwU7n!JD*eF#iK9jrDr~ diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExprStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExprStmtContext.class deleted file mode 100644 index 14c4b3d3a7a2e7464bbda87fe9552c1418c43aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmb7EYg5xu5Ir}o^g(#E_~4}?p!R_T6$MFoXa`1S3OcsK_fYQCK$~=uTLym$Kf)15 z2Yii#U;R;zdqY~G6ohtilici{J-cW3{{HjrCxBUGLr@sfC2n!Y5PU<+SIb3jd2Ki@ zcSaX?st$Ku)3&mgJDC_~?w;U!O1MF%<=!W6h*Z*hxZ zEU|o62;p$96}VF|Eu*|@Z*V<|Zp1=}tLVX1hSZtCM)QKISK-#bWZN>PWr{h5Kq9#& z$y`@)1HDA1Xjk7YId+9XOXMyNsVCP$=w}#c;gU05Ath`_9|l$2#4UynV#6J&pA>;% z{JdawGhZ5tC835?+>uZ!-!VnqB!m%${uU(GOxF}PaTvy3758wTIBd(kx+lZ@r8pdG zj#ulOyeRZ`B#{astzrxhNRXDT;_2x1OMw*iS=G5@-w#r@c(sn5kb=jgJ z@eUg9GQ>`aL;m$HuA-^ggbAY(n27%Sk-(?WcVE zc={LmcF~bOL|^JF1{6p?#bXtfh{`9#l+SodyOcnT+^7Bra{DyM0fBru4l<2rgf0s+ z?=$HqCd0evBqqbeWK_Xkn(hg@H!=E-xbmY87RQYDStoiK?`alu-aSIlK)+YU2o?|_ OWg>V^S2tZR5cvz~%GC(~ diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExpressionContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ExpressionContext.class deleted file mode 100644 index 2f002c64dc5672b7063f2ce4e8c19aa669fa90db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3554 zcmb7`X>Sup7{{OSCU%a^+1U8sy7S`*VjfDeY7V)dv)rk0YM||@*AcQ5Qpe zoF5_UpT{ztp~oD9=FI)y0$Crj$v`dC599Xi>N4*8jDvh2j$DN08J zbgxdwC?;r>-FP?e-1U`^fu1u#9j>3$RkJc{tIR#QO$^-ODl^=a^Q=e z%S@n|R8N!YY2uO^=eEh5g7O&aPZo>mNyNjSIaf%gE~+(q58Akzqd8e9sw5U^ASMwX?vRrTko&C3T zUX%4s!)jsOoYvVy=~UyH8{3I+B3dfN$KnyRNZn#}(JssLrdoEFx`65_bWEi%Zjqd< zITxxmnAg)5>X=*eC2DTZde!i*2RekSqYpP5p~7Gf>3*~i;O!u3cp_>U?H<-vNV|z= zK@Xz!tMA$^w8uI62uHsP`XP=U;pp3-ALi%-9Q_*T6LgY%uJ1wg%6DKi*t9~eTW#N^ zNARPMPPv2PXw_neuvj1Zb_@!wP{$o=+B)!cpb5^?Am`}~(5D$s-TPOlXRGv^o~JQ) z&>7E@3V`y20PKgSh5)<;?ks0$4`=8d&`FNo%hB(GKF86m9Q_{X6i2sl^!uR4Il7Od zKL9bC&e0!(zQEBP9Q_ICG)H%G^rxU7<>)Ss{tWa*j_&5@ z&p~H6x`(5`0G;LNAV+@*I>*ty9Q_sOJV)>1=&wOfarADE{s#0Vj&9-TZ$TG0`Y=a- z2fE17Lmd4*=n_ZwbMz0OFLU$&NB;;K{~4oQty&r?L|`e|eheD$-(|#YRNqp`# zP@m*i>d}6qCzL3O9t?l-zeEl-iu?|dKQ@XyMNeZEwZ=1^lL0sxzCoREG7KjpKDrr2 nKZ<^fqdzIA{k19<^h)b9u=lJBK1YVz3z|XS2FFeKD^u$~hc~cs diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$FuncArgsContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$FuncArgsContext.class deleted file mode 100644 index 4281115dac36121fbd44d6f085a62f012adbaec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 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 diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ReturnStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$ReturnStmtContext.class deleted file mode 100644 index f54d0fe473a1d4f1760a2e4a35f95f6dfb8e5c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1837 zcmb7ET~pIQ6g}HwLrZ|RfKoo>Q|$*5R1_oy#R?-c1sz&>4`rtY+N6_g8T={y3w*)R z2M1sMQI2;*piB!DnwgvJ=H9dC-h1x;`TO%1fMvW_5MW4@xy2nr@I9?itCT$R$#7im zM9_hI3PLIrbTVXabe!JiqV8A)Q58Ac68uOobe6d&+6UZXm`QGIr1G{?)(lHj9PMyk zbLy5bt6UQf=US0FRnsymTlOB;6-3$|wRTiR07fBmGd;v`n$W5KN|a zB*ptG9$=8_QnG7b*B!gcpe6IShtyL$3WgYluL;SUu8>XaLINWyM)8oLm)LNp(HMrg zcE>dw{o2ua5^h|@goNwiN2X{vDVSmyx`xV*>6*eOCX;xi;xV2OlS8@Jh-Fy4Ba<#jNZ(Ql5*+HrkYW@N}7KCBYEd zUMqgy-Xa3YTML|_BS%7~y5voZZ`G^2+$kEn721jLOL0qeq}s@%Wejw}Ev#*BFoe%L zPsF{R-=Z`Z`k|gvc}UEqgH5C6lj`(3@1cc^Qi<1SxZk!bS#!npYfBd{m}SeLYlB#B zW{XR$xSfJShOyW)fGQX=YxMRVg_ z4BTaiHB@?eg~VD)%@A!Kcp8!px-H~S0mCdbvUBur3_)7aZdwVRB6vbehG%3$ayu9$ z`y4OGO6MuxxhowHlXuq{!p#A3a-F|KANK<~)6tRZ;QPtD4}(7ZBm(pRk@R=;rZcA) z_|`;cfIMH~mG8gc`^PiCkvK+o<_wAS4-5w&;{sk95s4TaL@b!V0_{?^F$!P&AIMlM z$OwUqUIlrLB|?{ldE+w~A|{i^=piPP#AG^vlMKC+^loA_j(Bk50xS;Q`ENve{n6^zN+Xi+VT zO26WN$b<8uRPvB=Uh`3@^ehV{U~!_CnPsZybkCVSXZZV{KmG)8ANv|Y0#_Q+mX7Jl zx=}f9*1X}l>9nOYg$O1zM0IGG6iAN+u2qg@&3b7`C*QJNdFl#GHl$l^y_UAXjbx#a zDz==4VcKrfF-~q9PRDkwBWbvfltxuLN0x0iORc)hD$Xe#)6fOx7^B>2N<62FlXtiB0!mN%t%nQs8Mi9u21{kNUn}c)wSq%w+>*KR< zU^?U_CHbBYFg)Im@=(4VB{H z{EqC&7E%WqJ`q?9IEG4}^1?Khv7+M|K4k_aFVyMZuYi#(25jvTjrbs&I#9vZbbO|Q z&B#;B?Z?t^U0@*~*n!oy+!kf5Bc&sa3}u|Cwfh0v(>CS%Hem%q~F`F9OPNszjn{Nz6gPEp;RS%@_!eI zKqSvXVRaNOTb4RUhtjEcI_6WMzA=pqj;SQgXp%HrmD%X-1Kbx79$~6VUxuRj}*wl)gx&s37K5pK_4Et@oL% z@6lcjv-0TEifh(h@0rKGK_*rGb)!YiT1_6aQL~W7YwU;ht>5dmgC5??Rqu@!*v3Ty z=Q7nQZz{!+zOA%6PEGDu>ezGYQR-UcrgA8smXd6{yRA0G>jj(r%6kYTd+U6^LG<6D znSr}yPmAC(A3q=tfiLkD$J_jM6=8k>S~?OwL-;K}1-|AORm)p5~^-Gt9h0WO(CKLN|k0;sGorpGBpA6DqGmEb%T&e3<10 zq4@xo`K2>l8U|N<7M0vQRMHfSx(am`Ud0kwMl7*U9A9f6txg^$T1#h^e#6JV^0Vuo zDHTL~hp70TD?51XZ&={0@*A4?rH}1;?FX*!qTu81aKDm~$oz%nH<-!1!*cp}Tn#~S zgglRSIetW3{Ddc5rInStpZ-^n)zKg(gB+d@Qp6rvR6-v3N*1VO{S9WRWSvTqA-v6S qzQK7&k>vlSm%U&KKg%V`d*%V3h<=M3R|OY- zfFC8^X^Mg%bi$mQxpU^+*XP&!2Y^#-SuhyZJ6v$-Dc*J)y`VLQOHW2z+DIa0!E|6D z&2SLPj_U~(NOy4T%Dzy3m%B0bsvq!5C=?$m2J^%hzB*$#%-5%TQ?3=7I-0FR%`hbL z@p;z49I_1QR@l3%%CO5&np(5av@p+5{I|aShN7~&T&SPala;W|8M1X>@QZ%;hRbX3 zCLoW~;Yt@-6Ky^mCs<=}^Y!V)%Y`O`-3a@##jC#7%<6u}{X4q#1|HRU!6S7ZM$|;7 zCTJ{`z>6XtG35T{iXG&rV|pdQ^n?f(=(L9feSlRgZHkrq|9^;Xa=0T{1x5;W=syIUCS2m_T(bXJQCe&RDMZsVeOCvbH+&G12 aq>LBJag`Vb*04Ud3>#!^QpnNXMCKdFA(v$U diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$VarDecContext.class deleted file mode 100644 index abd8f07786d93bd4728356dad615af514bf6efb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 zcmb7FYf}?R6g{0}6G#RS@UbGRC@6WLqwCuQ6rz?XBU(v{??ckY(J-MV6N za=eynuAMX8uH)G&()3&@&6;#qY{zOXwi`095+)6#Uybn-hf2lBT?lX(zB3G6X2j1hqoT0uQw0`Y?F*xsCahyD>gF%-3wz+Qnv8oSDN z$5U>nFpB*K4&YaTl%#8J;GmyJ6BlIp+U9&_NzsfMIHYKja^3a7?{9OW?xfxo7rd6Wlfkq`?hM_U4AI*UOt6MOeJvKzzIwXWVI&yRreWdtbeFT zV8GW=d| zMAMm)K)>H3>e&LPzvs-Bv74R7E}^+q&#FJVW37hI=~KNDu*I!;=VZHKN zsvZ&Q|*R9K&wz6PI4XU6kPpO%}iL)p> z-mP|r4>3v(e_{TBkR84~=>2 zhXG^URgEI?CtKK{I)C&20xpKQi;O1&Msn{l`WOSb4UA@AVqXL*N5rpckmDZ=i+^#6 zx2*m!!!Q4cT2CF74VNG0P`ayWvgIqt`}f1~Il|2=)$ dBpX4&|9Y14=KRxDT=RE(<;izNS&YDzJkmN7ehUAB zexcKT=+LkIKb`5c)5l#|ejq;>#xr}R)xBrWo_luv`@g^Z3g7|i3Stb!CU>}J3Vx^= zot700-+9*E&GMdy^8Ayek{_M!wCfm6$+9JrRkOXruT$fhG>hhlwqOC#Sh&U zA54_4=u69o^Qvt|RO=*Lr+Ls&xfvhO3_<5U!;_ zWjH%ES#E1V#Uhp%lEkv%zUB_YwS09NAK`JXHMrNd9kW$;4>|G4%@kzkxZ`o(w_RtT zc_Lkduv+KES1}$Hky5V&r z0;w1F6@1BXZbC`T_Jwpv25Y#W;vz0FED{^;4V%nxW7cxR#BlSpo`hRhaYe!{@MBvH zlN4NKSeZa&-}Y_c5|a%SR1{GnCP#8^Sj({enM_7Z`264%w}hU-b!;loRNTN#YRyDT z1{Mf>*&s87%oyeaK9!et>(G-Xx|g5q=%8F0I&e>6oCHJ4?;k&g&3s{2JNt=!c^T#^ z2iE@B50{?!>B&3Go<;z z{nD7Twla23bP^(Pn-nYX+4S`X?dW@!d`2xHw_C6G%uc94Qo5~&mM|@gcLc+uS#27? zhF#Vtx681bjw!kxvD_;+?vJ;0>vI+>DQBz=5-M_O&{Z&pW%?%pQee1+ zuV}nYZVIvG{w$KY+cXSB5(@Cgi8sA2fcAyEH}$QoVvywBS!ly@zkYf(zja z$>P!~70gGo|DwG6ld_YOvj3)R9pw;vgnhP0CL4wShf>dAH7vM<82x~B@h6-tmfqv+ zkCEN}N0|?>73SX!^K+%&u=W=7r4Lvu{*3c6$hugdQd%O$W5~wicu2D(XqL(!eG26A zI7os(lu?jvJSKFh`@@jQ3NhJuiv?n`K}_;7yem<>Mlr%Dja)p_2g{)ne11aoc7mr} kJPl$7&nOmgf;eYTC4bCO{FY*h;&(J=Db^@1Q`|%9e_L5O`2YX_ diff --git a/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$WhileStmtContext.class b/out/production/CS323-Compilers-2025F-Projects/generated/Splc/SplcParser$WhileStmtContext.class deleted file mode 100644 index 5e298fcd64d8fab82f454681a4d1187e70a9f843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1997 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 diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$ArrayType.class deleted file mode 100644 index 07d7bec4d322d4933372e557682790b39e11c346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1383 zcmaJ=TTc^F5dKat?6zzHxritrV%1*2dckV}FGNF=f+iSEBqkopv0b{|t-Gfn5B?AJ z$tQi`K@-KugV9%ilQGVr3oOw1aBg#EzM1)E=J(&N9{{FsD~=Gt8X^XwXk+MF;j27n zal4#*u(TpdlA&$Vv`sn95Kg5Z$DkvoA#R`@21CDDt6RAlr&c#D;U@36E?BivF5ndCb$yk6RQikA&;k#S$pxJg(({Zy%r7&wJd2ED>Pa<@#B5Pt=RfmBN_3hBoTk)~p2 z(X_>UqqZd6M|{a5(~h!`_kx7>Q^GBH$uq=Awdix1SdhF_o#S;MCcfY_+>*FY#bQY8 zl{#$Cseo^*MAPRNS0>~*%`VjP!nS;K@P`3ggFuLP#O z>QqIpS&1g^_jyS=?mEMpAZfm06Lgl_%a-txMaQW&>iNTk2}t%CZnsn5)9--AfM};W z0g(?e!!2vUlp?R=8r6U;vS$oN!M24vV{y+DROr}lYil5q&m79MRRS8O7>56^O3l>F z79%tbAuwwG5G@)nYTs@(9CWskJc`q_C+T&WG{SUtX1;-CvR|QP2EQWlnM4#C?cIpb z&S_sl3?+16nSRdVoDVQWCnJq$<_ok>yJpG@P^LYFQQDQSplV{{fNGVLXhwb2>~{D- zk3#*9BMfv&Y@r`G=%Y?1G)cbUil5I!Ci?-=$VT=T^mmAcH?lvW&nb{GTJO=Pfa$7j z;>25Mk&lRkRY;*g(hX=>CC=6;uvbXauYriB|G_B@`fZgqjiv85tsba rdwwv@*F1p_aR}mY8!BZwHgtZ0Ele^qB4LR|lEqJjRnnyt(!vt|D`kmW zG@5<(k22m@*bkQGp)|3_`WuU|6Zmi!btofPx@T5G#lK?>KNrfr1c&lxgnQ-XCZT=@0X1 zWP}ls5K^#&D1*Ok^=yM7mQ`z~`k9`$bi0#3YMmPGK~Y8w_arPUh~qxP;w0d}9(Jkf znQje@qmK+b*{SS`rMqr%3eX0QX?Kd#6*z&%pH%PwDTalTX`6#RhUIChab{I*2H=-z z;A8+nZdVnoVVw`|_23ecRsSq%I$Setqdx4m45y*DEJ6zZsIJc6C__*) zJGMR;Iz%93)h1n3scntt*_v7epSm=kZLi26YrUbbl_$4twrE z!WNz0(hP%AwQa-kZoqIQykLmmikPU7+P+aFDT-^dyiJ>pk%EPCf-4gsOM(L;Nv<kLEZ;dQ}!XY<%58zrQGJYIr} Jw}72;;t!`?-`4;D diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$BasicType.class deleted file mode 100644 index ed8d5503ec542e49cdb367bda1db5e2cca15d882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmaJsnT2cuF2NX0G*OH^V({hxwPLVTDg+-;snYVYkP$X43+^sj`78ba za^awsk17wAUj0p$WzTMm$w3a&)6>)a_1BM|zrTJ1a2q!gh#<#Bop=Ap+xYxc#Pf!hlU3kj~~rc=xB5`2i1tXYnzkNPd)HqDkz*t{crSpdUI zEWl5^IKe3i#LLhELW`nPIl!o9*6?ISevzTs<|5(2ZsxUX4uKW60!A zfP|AO=btkq8iSGB7WZi!g!y+c8!{m^r!GAI;lT4b*6H_Dvl;ZN;|RB6o1P~qL;U10 zWvy7D*+;-|o{k~sPaC9?u40MgGQA4)AE7%@_ySfaegc0_FWLf=oxmHMrghFPM^sJqr8VoQ=@+iWh^x zUah$GFok{$h^BoC2XmEeM7ipDltq$KN6mf%2as0SQ?rF2bOMQ7XDVG@5|U&Yh0Jz> zvti)+OP3n1x99{Z3?kl#Aso_>H86~)DQp+X3Vk)^6|PRxnbkRv%XfI%HS2^dNw6aZ zp21O;&#u)Re^FsHN~0V2xNjt-`@cQl~6)f(;A zZnvO9{;|U+2_XG!XfIr!v};j9so82HSa8NUYrNc=x|7lqtoxKx4=-2ip@u8G{m)=3 z7!$tl1ZB^z*JU=0?n%WF4s{HiW?EAQn?DVvOcl@0b05P6^l+cVMeZ;01Mf){+af=aeM-g8q;th<`O1xpNifgiP588L! zblim$_=fgPT#l%_q2^BLw^8&7x^RSPCHgID6}2Bcz~I~lo~l?v)51Z8CJvj=(p-(7 z&GOJ};W>pbVP(HS$}%mv5wMwUVKjzE7~1l>`dLif`TIA^e4&kL;w8}%YiE6w^#p#P zy^BM*hXU3)U`s zctPjJT48BrT~sAQ0Fa zt`l~^kM-0kW*@qtCsmAKlp$K@4&7EG_9WIk!%(Ip=j<{=$csyqHA5`6nkyt5U(pHK zyC&qlL(&Zr;|{_U8M-TyR~rl5YNKNnvt?JsEcJt&d!3na<)Zo)g(K%oM=HpY_dxTg z_jgQFI@0FWf{=By<|HDRj^Qk36ck)#&oQL;b=Qmyvmpwe{GQmeyedt5li{6Ts&=54 zbdDP}T{!8oX*OC`@n|=EmIJ`uVevWJZGYr5?e)ZGYNsf1U9V_T6r;Gn5MVh5b>1+9 zUDCPZ2x@NJH@gb1Fiaj{+KGUIYYe0R52X?E*kX)cPXP2Z=u5dTh-NlS|6!b>b&O6q z@&{;-<-URC@?W8RrW3Tt^)x2hxDnbJdBeFcP(J;GM0SlYXr;$R z>lk^?(C&sN+|cjnX4pX=a2WKGf@uERpe3rxy?s2F|A=sCEB_18_Xr2K@;?z>a5GKQ zw~fIq3JUC&o1#L2S5WX8NxY%?d5bhzLI@~PN=q-MoqU22Zbfl7&o)jZd+Tl*kF`hP n1HmTA7Qhq{aQ6&p1=5otPv3c5q*IFQQSw|u43}{g*D?GTSMw=e diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SemanticAnalyzer.class deleted file mode 100644 index ad7c9b0d27f5d2130985cc59448e4b02a14362da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19950 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 diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$StructType.class deleted file mode 100644 index 47bc79d5df1090fd0af99be6454b03c43bd9c4b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2624 zcma)8U2_vv7=BKhX47<2Xi9NSEmHj2rrUJe?QWXg6e=Qq z{Rr^~=nWS*Lt%g!2WOmd#tZ*}pEG{Wc;ST?IwSg=-7QU%C|u;6v**0$dEfVWpL0&W zxO4Lp0Eh5i6b)!p5K_^Eu)x|GZ9&VJnpMc0n3&P?u0Z&pVHxgWfySQXSTiDMRuEOu z0##t6F;_G*{q|hZF!fT`h+8V>-OaTV=YClECp>BH1r0*i5puwKOmxuh7*pmkKAQqU>T?m6=?j+9E; zq6CU!BR0$Iwg`0gRCwvPO_K>4wv|ne#mUAt72A;z*f6Kf>ixEr*W6QvJI#^fYL?3& zcLn=Beu8w8wHZbk-%b?|pi7{oSkhg0@g!3xm+N}!m@C*tr`0_5l?`)JFGbM9Bpr{~ zL=@df$z0L`9ra=vlNP&G>_LWw(~3piniSYw&$K4&z+pCmhe`7J7VO171^ZPzipK<6 zSE!Y&3PcQ7FKMn_5?H^SmB;*GFrRI~0X(4~tKuLIQ3@*v%O=chT62c=bHt;%#^sJD zRXl|w0wK$rUd@=V$*h8Yf$jgLy{;ioRL$taF%`%0G{Ia?lO4IKk~XKGwM(^&yKO5j@9vvNgi)g5>=L6=SmG5!d#$5ygu*tzcZm z8N9UWZ29Xfkv?D6Oe$+tHG?dZ;}YN%6|dqoqLL|UaZ(;i$uTDA`&pASEPc2vPw1#NVbV``ogG!Kd6)zS?rnEJAxfxl zL3c;xRTAaEuPphBuaca1VF>K6nYvQ+K*@wmn-eW@`&tF|%r;C;f^=-*5Iz z#niG6E2aX7e$6yTcmYuU=Sc&T7{;Ca~z#ziW2qiixBp!r{FCLsV47w z=_q(dVB7zjQXzisNbuTifZ%BkAuiu1-sy4q&TvlSxB(OV=7Zvm`FgOAa;*t@wv+ri zCLcrgovG^(sq_+*lvqM6)wqPV)RrZ5e9T1wo$V%s*?vV=U!xh{pcUT|`a3>0-+Pc# zgp!asT1d#m3gj(pJl%U8n{>0v8- z!M-VV70MM3`~bt=~lm?*RbQtEp(rbKX@IcHmCRzyMadphI(({ae+(7aKQgDx6wD8-hCBEZ(u+`+CR&N6GL)*QttiepD)w# z=jAAU4Wlx)2CwS7SP_Uuw2BbgMHpL!!nZg=oMse66f>d)^FqZOcdSLIHS{-jDCkyj z;4kcBMtld@%Br0Rq_!iK{t!)}%jr)M`2bCgm(#Zq8IppRJ`(|Wg1w|S;uG?6RWZb7B3T};jiT4j!;$vfYfl43Nq#q36)~s0;!^5Qis>P(5 zHf{XeAJug3?OHLmunCiyJLk;fp533nzWxC43L6q!3}LfzY$dYI#<6J`t*HL7QEOV! zccy*d2ZKk27d{5LoY~E1HVQe0vBG~58i&X#`~tGMSIn03J4GJ6r9$Pwz-4g%O)gvD zC%07$@e@Ta?e1ku`=!iV9=@X@Bmho$JGZ@&+vO*BRoue}gA^@i3VS)7Vf_7omK2O4 zEMY`N1Y-=|y4AD|Vu{5IN7a*R!m8SbiJjV!QSWF9CNL>sO2srDP-|BSIlJ4Sk|$NG zYwUbrSdaCgvsSg;*7^c^r)AoQT7LyjAoyohL@~$UOPaRXNimG{Q#r_dyez}3(6qBM z{4!J-Loz}F_(`^yj9gCOg-jj998ELt17ku#K0IHP6@4ne>)s0P3AW7s>iz|Hn#9K7l zovmiOBOytr*Tl!5=55<(i5oE55?<5IUdwO|Lq`uFiOHbeQ-c=9*j zB@jx8EuLfi0_mi_5q#lC$&FV6qV%;I?I7D0Dh$l4fKEuK(+`@@@gd+(j?iG$A zoJF5-0>W96gcCf+!&3}jwIAU-WwQvdC?aeQ3v3>1YylbCmj{1_dWPp>xEFXStVSO# S&}YGg6f~s4UxySj>F{s%ANa}u diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$Symbol.class deleted file mode 100644 index 6deae1201c5643c072aee3c94d658b6ba6c415b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmaKq+int36o&uBX#j^FC|IdhtD=SJ0Z)k+^^}khi3BfbdOy%DnRb{VGgD39$qP*+ zCSLdeK9up_L#vje7qi!%wZC=R|Nimw+jjuZv71K%NdqYpX=DUTNA`QW;o9D?@wR`Y z29Y51%<-J)g&%rau}xt_rHX(^21d1u4%SDM7LGCtEKH z9B;U%;}=XUVu@6AIwn=_ybFkb@Pp%N;eEPeuxMfhC4$F}cPO~tnOCj)hKDhJ)x;{U z35;;yk5!uy(iXI8m%Er-@juzy^#gX%^bgtYV#o1R_hi&p!M@#h=`n^X>c#_?YW2&- zrhpzwuu5Rwv{Ob;B3LK$??DB5mg}8QNKH6nzUQ9=1J$Akg2K5RyZZJ8*{%ws*M1lo zsPXhdYJu7IJQXxuI}BAwv8NIm*cMbSpl9O7*Uih&y<&rECisq0DC+mXT~SLLTPhb@ zNrQ(`FhT8^G@&Gw`hy{6s z6?u$`JRxxd>t{K&74m883ye>{!!z0`Pr2U2Ev~x!-)LbL-6OPt+jG$6S@b2LJGeUs jEq|P8pot`^^d)c)_hY+>I&G1jEH+^wk1g(YUR8bpNawgA diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler$SymbolTable.class deleted file mode 100644 index 0d66058f655abe4ffb1cb84a8f18643b467acfb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3671 zcmb_eYjYFl89k3Ady%vlV-t*^BtQvRGQ^>fIz@zp7#tMKc7n~tI0>w+#a=9H#qJ7l zk~WuKa_uEfla}5)la>$7OlT*;IG*XGU;3fHp#LF%Ad|`Myt`{8n+?-WJDOSTdwb4v z&U4=P-G6=Y;oku~fGa7)5Z92<(S&9}>v`j%(Ootwlifq(=gkRE(0stESl&TFyfb@3 z!z#f#e^Sk}%H4+?$Cy2AUZ|NVXox3~hOS|?juxyDWUQHLxx3e%saj>z**-iwGj5kh zjPbH5NZa0&=?qWURnrx$E!JcD;qoffS{-dFPSP_bgPE##osK)OUeMyI#f4I@U8{Je zBang`-k>An4^Pw_$E$q1r0xAyrIary`g`zz zj)Qnm@vPBK_csO(JeI$ec!U;79KypIdUYJek+1QVkIVWFj~qMRJ91{^&?ACPx5-fH z`-qOCCg#Gz6`cc#{pkok2g0^}YmZk`_DZ?E!FOw+Cd|It| zT*ooLeie2rJw|jK#|ciDG&yZYgdP#>Rc%h`7{zH~aG}zk#$}>WMbYqtV8e>acusA? zUzfrdp3-qfkXDhMH=DvFrZiYO&SRP` ztIN=9m&-geEW5%joix?tqUDlg+cH5_UtYtEpuN76~n7JRIRx3usP7s!5tMg{f)e2{S{jJCt3a= zf83b8c8O8f@aQlHYcu1f6CQC%^Rg8jKisp!o-r}a;NjR>*06Wk0YwKIrP7c(6$M8c zU9pryRHbiY?kug6u2oBhXZ}BcM-T?a=RZ3#;RLbbn(RLX2f+c__c4&=Ix958lRl_VJeUZyP^~tKrAI zr0Nb2wnA>1lU3h==;W2PQp0x5nJ`sgT4?Day+_5QT?S3pJ8HY0hBrC7%%K9kP^p+s zZ`p8NwSm&hF5l*$MenMETH)M09I%BKWsDyO3EsWD#UZG%6~jfgc^fyhW9lCE$9UoL zzlCG`is17STce2c4anx^A-P3pqw`39fK>gpH5dN??ds8yyN->2Re3^`>IRd>G^tDM2p9Hk^%8SEKk`BW-x=D!Nw#3&u_@+D9}v4f2B`7FN6r4D z7eL=5_y~LUCo+ky1?-LC3Yy~YvayJs(XL&)RlIq8X8{M|IGIq9gUr^e7&3_#nL=@Sg>TEL^ig51rQ$NVzYskJDQ!!g#b=i1dT|1H;6 zROTgYmY11@BGwv8B6@+UkcfA;g%|P-k9yP{Y8Eff-ls$-i*PtC0(D8Y+6>dtCS$rir6A^Bgyaa!oNnoKSYr zZs6QC340oqY->=mc=gMVyZ(vxMU+PgR1wU>xr%1Bmhpm3zERag=y91xo7~`$w!oe7 zA@<3lugf|#wSJDYFG>HW=xFDM_3Pm|{}X2RQ$Nzr@P_|ChoAF*8}m&w@3)}7Md$D~ S{}1u)7Y}9l?Kp>DBJ~xbVPPEr diff --git a/out/production/CS323-Compilers-2025F-Projects/impl/Compiler.class b/out/production/CS323-Compilers-2025F-Projects/impl/Compiler.class deleted file mode 100644 index fb7b8fe42215428134cf6fd067edec55d1add721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3153 zcmb7G`BM}}6#iO{S(Z^0&ozPNJ6pe%*L1=|8^cc0a*dcC zZXD1Y-##G_>~ri`8g@(Nq^MPqd*IY7SjY(abxU_NSMLpX#LcKTMD$_Z2_l3=GWlf! z6_xh{tLjp)SYYMkhuX22ZFSm%y5)NvL^+m9@MQukrU3WNy$rH;3MvFblQ`S1ISJ|Q za;%hqtL_Ep6@!3sN0o}zSR*jU(PQ?I-sCv86EPC5ObOGRS1HXxsFJp8RfMrlK#4mx ziNbnTvz}8rRMGC6HQJV|54%kEdV%sB##MCaG1l3LHdvZDa$E*ci#$1OQgJ^v3lt0) z3BwiGIz@^Yiyrn8(8*bSie9E>^@sQO9Mz*PxmAm;D(X-#Fl#_dq>uDM^+P-yz;=P+ zF3mBt9#c=$1trNJP_YvYbRq5-7G0Q|VwnfdA{th|m&95$s@RPtfl?BFk7@U4W(JCj zY0f8I!wk#Z))!+B_9|#m@gVjI%gl$hWw_YNt`N6Q!Vwn!D;V66>+eAP(YT72P;YRL0oGK6E!o zDk0MJ5fzW(G2gUvBu-QL-QVdG-l0;#FrI*>phrbiV$Yt$MxdxKX`1b_2Bqwax{5yZ z6Eda^>ZDdwa}OEr0A~r8RANEX-5|S8et*bb$!1E*_W%q55e#6EWN1!WQP&`2#Vv5?z$tMx6F2<-OK1pB8H{6C1X9h(<%8yO3_z`b(r4aYSF<~ zE$*!=I3}=o^7fJGeF{bdD*x+8$41#S9M$7qBnqBpjx+ste?~(qzfU*wGND)L3t_Fa zWl(K;!fn;1{|N=pla#q6X&R0@Emohc-~~3QTwRAppj3D-PNA;YXIQ-o&afBXwcB-) zQCCt$!OP6eRN4yPI|Z-s>dG}rm&pftb%F=&Hi^Z;cxSvuUgd6Ya2##KSH3<$xl2nJ zQD6Cnz@prp8KoDUz|38??Iw6_$6IxG!0t_y6yoh5-oYgWmnEsM@Rsq4`s(2^g;J(RxcY^MZ~rTlkxhAw9i_}*(jr!#QaE>eX5^ke>f?K zM$I%k*t6;bc#q^3bxTB0Ky9&ji8Pv8BBArMoRNDSFd^wqoNoSn#rSk#2TXH{?8~B% zBx;5dJR!Tdw9Kj{+eW5zoM(!`k5ZD2N2MwA6|c()X`d{c3clg}_3x&{^;3_fd}&Q% zzXC_*1ce+O{#wT0a=mc%nlXs)I1@;4l#e~|`BQ)eTye36ziBVdAP+^<{IU9bD5IGE z17=6Y5$fjd`&!3Q-d#P0C2iwa-d!_>6?OTc{83a^kD^*mYU&EcQQIxIj$uPxVW==v zFp7%FImjGIM~BLtqhKtYw^)b6kv7%x^VwxegWB z%wM}vi3nFZQNz1uEuP~`+1IJjL-D&$(xL46qO?4>^I8y!lSyG+x44oWprs zz(u@CeSmx3;{UsJ1}y0e4D&5@l|`+k?gJM7AmxXYCn!InJW2U6 Date: Wed, 26 Nov 2025 07:01:26 +0000 Subject: [PATCH 5/9] Fix support for comma-separated variable declarations (int *p1, *p2;) Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- Splc.g4 | 14 +-- src/main/java/impl/Compiler.java | 161 ++++++++++++++++++++----------- 2 files changed, 113 insertions(+), 62 deletions(-) diff --git a/Splc.g4 b/Splc.g4 index 47d0dfb..183d39e 100644 --- a/Splc.g4 +++ b/Splc.g4 @@ -16,7 +16,7 @@ program: globalDef* EOF; globalDef : specifier Identifier LPAREN funcArgs RPAREN LBRACE statement* RBRACE // function definition - | specifier varDec (ASSIGN expression)? SEMI // global variable definition + | specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI // global variable definition | specifier Identifier LPAREN funcArgs RPAREN SEMI | specifier SEMI // global struct declaration ; @@ -40,12 +40,12 @@ funcArgs ; statement - : LBRACE statement* RBRACE #bracket - | specifier varDec (ASSIGN expression)? SEMI #VarDecStmt - | IF LPAREN expression RPAREN statement (ELSE statement)? #IfStmt - | WHILE LPAREN expression RPAREN statement #WhileStmt - | RETURN expression SEMI #ReturnStmt - | expression SEMI #ExprStmt + : LBRACE statement* RBRACE #bracket + | specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI #VarDecStmt + | IF LPAREN expression RPAREN statement (ELSE statement)? #IfStmt + | WHILE LPAREN expression RPAREN statement #WhileStmt + | RETURN expression SEMI #ReturnStmt + | expression SEMI #ExprStmt ; expression diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index c9fbe46..162822a 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -13,6 +13,7 @@ import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import java.io.IOException; @@ -613,44 +614,61 @@ public Type visitGlobalDef(SplcParser.GlobalDefContext ctx) { symbolTable.exitScope(); - } else if (ctx.varDec() != null) { - // Global variable definition: specifier varDec (ASSIGN expression)? SEMI - String varName = extractIdentifierFromVarDec(ctx.varDec()); - Type varType = buildTypeFromVarDec(ctx.varDec(), specType); - - if (!symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE)) { - grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(ctx.varDec()))); + } else if (ctx.varDec() != null && !ctx.varDec().isEmpty()) { + // Global variable definition: specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI + List varDecs = ctx.varDec(); + List expressions = ctx.expression(); + + // Map each varDec to its initialization expression (if any) + // by walking through children in order + Map varDecToExprIndex = new HashMap<>(); + int currentVarDecIndex = -1; + int currentExprIndex = 0; + + for (int i = 0; i < ctx.getChildCount(); i++) { + ParseTree child = ctx.getChild(i); + if (child instanceof SplcParser.VarDecContext) { + currentVarDecIndex++; + } else if (child instanceof TerminalNode) { + TerminalNode tn = (TerminalNode) child; + if (tn.getSymbol().getType() == SplcLexer.ASSIGN && currentVarDecIndex >= 0) { + // The next expression belongs to the current varDec + if (currentExprIndex < expressions.size()) { + varDecToExprIndex.put(currentVarDecIndex, currentExprIndex); + currentExprIndex++; + } + } + } } - globalVariables.add(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0)); - + + for (int i = 0; i < varDecs.size(); i++) { + SplcParser.VarDecContext varDecCtx = varDecs.get(i); + String varName = extractIdentifierFromVarDec(varDecCtx); + Type varType = buildTypeFromVarDec(varDecCtx, specType); - // Check for incomplete type - if (!isCompleteType(varType)) { - // For arrays, the element type must be complete immediately - // For direct struct types, we can defer the check per v4 spec - if (requiresImmediateCompletenessCheck(varType)) { - if (!isCompleteType(varType)) { - grader.reportSemanticError(Project3SemanticError.definitionIncomplete(getIdentifierNode(ctx.varDec()))); + if (!symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE)) { + grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(varDecCtx))); + } + globalVariables.add(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0)); + + + // Check for incomplete type + if (!isCompleteType(varType)) { + // For arrays, the element type must be complete immediately + // For direct struct types, we can defer the check per v4 spec + if (requiresImmediateCompletenessCheck(varType)) { + grader.reportSemanticError(Project3SemanticError.definitionIncomplete(getIdentifierNode(varDecCtx))); + } else { + // Defer check for direct struct types + incompleteGlobals.put(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0), getIdentifierNode(varDecCtx)); } - } else if (!isCompleteType(varType)) { - // Defer check for direct struct types - incompleteGlobals.put(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0), getIdentifierNode(ctx.varDec())); } + + // Note: initialization expressions are checked but global variables + // in this grammar don't need type checking for init expressions + // as per Project 4 spec (only local variables need this check) } - // Check redefinition -// if (symbolTable.existsInCurrentScopeOther(varName)) { -// grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(ctx.varDec()))); -// } - // 查 file scope,变量/函数/声明同名都不行 -// for (Symbol s : symbolTable.getFileScopeOthers()) { -// if (s.getName().equals(varName)) { -// grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(ctx.varDec()))); -// break; -// } -// } - - } else if (ctx.Identifier() != null && ctx.funcArgs() != null) { // Function declaration: specifier Identifier LPAREN funcArgs RPAREN SEMI TerminalNode funcName = ctx.Identifier(); @@ -768,35 +786,68 @@ public Type visitBracket(SplcParser.BracketContext ctx) { @Override public Type visitVarDecStmt(SplcParser.VarDecStmtContext ctx) { - // Local variable declaration: specifier varDec (ASSIGN expression)? SEMI + // Local variable declaration: specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI Type specType = visitSpecifier(ctx.specifier()); - String varName = extractIdentifierFromVarDec(ctx.varDec()); - Type varType = buildTypeFromVarDec(ctx.varDec(), specType); - - // Check for incomplete type - if (!isCompleteType(varType)) { - grader.reportSemanticError(Project3SemanticError.definitionIncomplete( - getIdentifierNode(ctx.varDec()))); + + // Process variable declarations by iterating through children in order + // The structure is: specifier (varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)*)+ SEMI + List varDecs = ctx.varDec(); + List expressions = ctx.expression(); + + // Map each varDec to its initialization expression (if any) + // by walking through children in order + Map varDecToExprIndex = new HashMap<>(); + int currentVarDecIndex = -1; + int currentExprIndex = 0; + + for (int i = 0; i < ctx.getChildCount(); i++) { + ParseTree child = ctx.getChild(i); + if (child instanceof SplcParser.VarDecContext) { + currentVarDecIndex++; + } else if (child instanceof TerminalNode) { + TerminalNode tn = (TerminalNode) child; + if (tn.getSymbol().getType() == SplcLexer.ASSIGN && currentVarDecIndex >= 0) { + // The next expression belongs to the current varDec + if (currentExprIndex < expressions.size()) { + varDecToExprIndex.put(currentVarDecIndex, currentExprIndex); + currentExprIndex++; + } + } + } } + + // Now process each varDec + for (int i = 0; i < varDecs.size(); i++) { + SplcParser.VarDecContext varDecCtx = varDecs.get(i); + String varName = extractIdentifierFromVarDec(varDecCtx); + Type varType = buildTypeFromVarDec(varDecCtx, specType); - // Check redefinition in current scope - if (symbolTable.existsInCurrentScopeOther(varName)) { - grader.reportSemanticError(Project3SemanticError.redefinition( - getIdentifierNode(ctx.varDec()))); - } + // Check for incomplete type + if (!isCompleteType(varType)) { + grader.reportSemanticError(Project3SemanticError.definitionIncomplete( + getIdentifierNode(varDecCtx))); + } - symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); + // Check redefinition in current scope + if (symbolTable.existsInCurrentScopeOther(varName)) { + grader.reportSemanticError(Project3SemanticError.redefinition( + getIdentifierNode(varDecCtx))); + } + + symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); - // Visit initialization expression if present and check type compatibility - if (ctx.expression() != null) { - try { - ExprInfo exprInfo = checkExpression(ctx.expression()); - if (!typesEqual(varType, exprInfo.type)) { - Project4SemanticError.unexpectedType(ctx.expression(), exprInfo.type).throwException(); + // Check initialization expression if present + if (varDecToExprIndex.containsKey(i)) { + int exprIndex = varDecToExprIndex.get(i); + try { + ExprInfo exprInfo = checkExpression(expressions.get(exprIndex)); + if (!typesEqual(varType, exprInfo.type)) { + Project4SemanticError.unexpectedType(expressions.get(exprIndex), exprInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); } - } catch (Project4Exception ex) { - hasSemanticErrors = true; - grader.reportSemanticError(ex); } } return null; From cb0ad243f07681ebf144ebb913dcec557bb4fb7a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:52:23 +0000 Subject: [PATCH 6/9] Fix structure tag scope to always be file scope per C standard Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- src/main/java/impl/Compiler.java | 50 +++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index 162822a..83e3d1b 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -330,6 +330,7 @@ private static class SymbolTable { private final Deque> otherScopes = new ArrayDeque<>(); // variables, functions private final Deque> tagScopes = new ArrayDeque<>(); // struct tags + private static final int FILE_SCOPE_ID = 0; private int scopeIdCounter = 0; private int currentScopeId = 0; @@ -371,20 +372,27 @@ public void updateOther(String name, Type type, Symbol.Kind kind) { currentScope.put(name, new Symbol(name, type, kind, currentScopeId)); } - // Add symbol to "tag" namespace (struct tags) + // Add symbol to "tag" namespace (struct tags) - always at file scope public boolean addTag(String name, Type type) { - Map currentScope = tagScopes.peek(); - if (currentScope.containsKey(name)) { - return false; // Already exists in current scope + // Structure tags always have file scope per C standard + Map fileScope = getFileTagScope(); + if (fileScope.containsKey(name)) { + return false; // Already exists in file scope } - currentScope.put(name, new Symbol(name, type, Symbol.Kind.STRUCT_TAG, currentScopeId)); + fileScope.put(name, new Symbol(name, type, Symbol.Kind.STRUCT_TAG, FILE_SCOPE_ID)); return true; } - // Update existing tag in current scope (for completing incomplete structs) + // Update existing tag at file scope (for completing incomplete structs) public void updateTag(String name, Type type) { - Map currentScope = tagScopes.peek(); - currentScope.put(name, new Symbol(name, type, Symbol.Kind.STRUCT_TAG, currentScopeId)); + // Structure tags always have file scope per C standard + Map fileScope = getFileTagScope(); + fileScope.put(name, new Symbol(name, type, Symbol.Kind.STRUCT_TAG, FILE_SCOPE_ID)); + } + + // Get file scope for tags (bottom of the stack) - O(1) access + private Map getFileTagScope() { + return ((ArrayDeque>) tagScopes).peekLast(); } // Lookup in "other" namespace @@ -429,7 +437,9 @@ public boolean existsInCurrentScopeOther(String name) { } public boolean existsInCurrentScopeTag(String name) { - return tagScopes.peek().containsKey(name); + // Structure tags always have file scope + Map fileScope = getFileTagScope(); + return fileScope.containsKey(name); } // Get all symbols in file scope (for printing at the end) @@ -1025,7 +1035,16 @@ private ExprInfo checkExpression(SplcParser.ExpressionContext ctx) { Project4SemanticError.lvalueRequired(ctx).throwException(); } - StructType structType = (StructType) structInfo.type; + // Look up the struct type by tag to get the current (possibly completed) definition + StructType embeddedStructType = (StructType) structInfo.type; + Symbol currentTagSymbol = symbolTable.lookupTag(embeddedStructType.getTag()); + StructType structType; + if (currentTagSymbol != null && currentTagSymbol.getType() instanceof StructType) { + structType = (StructType) currentTagSymbol.getType(); + } else { + structType = embeddedStructType; + } + if (!structType.isComplete()) { Project4SemanticError.unexpectedType(ctx, structType).throwException(); return new ExprInfo(new BasicType(BasicType.Kind.INT), true); @@ -1064,7 +1083,16 @@ private ExprInfo checkExpression(SplcParser.ExpressionContext ctx) { return new ExprInfo(new BasicType(BasicType.Kind.INT), true); } - StructType structType = (StructType) referencedType; + // Look up the struct type by tag to get the current (possibly completed) definition + StructType embeddedStructType = (StructType) referencedType; + Symbol currentTagSymbol = symbolTable.lookupTag(embeddedStructType.getTag()); + StructType structType; + if (currentTagSymbol != null && currentTagSymbol.getType() instanceof StructType) { + structType = (StructType) currentTagSymbol.getType(); + } else { + structType = embeddedStructType; + } + if (!structType.isComplete()) { Project4SemanticError.unexpectedType(ctx, ptrInfo.type).throwException(); return new ExprInfo(new BasicType(BasicType.Kind.INT), true); From 11d1c4a9fb66d20ae2272430d75bca3d4bfa3aa1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:13:54 +0000 Subject: [PATCH 7/9] Revert grammar to original (no comma-separated variable declarations) Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- Splc.g4 | 14 +-- src/main/java/impl/Compiler.java | 146 +++++++++---------------------- 2 files changed, 47 insertions(+), 113 deletions(-) diff --git a/Splc.g4 b/Splc.g4 index 183d39e..47d0dfb 100644 --- a/Splc.g4 +++ b/Splc.g4 @@ -16,7 +16,7 @@ program: globalDef* EOF; globalDef : specifier Identifier LPAREN funcArgs RPAREN LBRACE statement* RBRACE // function definition - | specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI // global variable definition + | specifier varDec (ASSIGN expression)? SEMI // global variable definition | specifier Identifier LPAREN funcArgs RPAREN SEMI | specifier SEMI // global struct declaration ; @@ -40,12 +40,12 @@ funcArgs ; statement - : LBRACE statement* RBRACE #bracket - | specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI #VarDecStmt - | IF LPAREN expression RPAREN statement (ELSE statement)? #IfStmt - | WHILE LPAREN expression RPAREN statement #WhileStmt - | RETURN expression SEMI #ReturnStmt - | expression SEMI #ExprStmt + : LBRACE statement* RBRACE #bracket + | specifier varDec (ASSIGN expression)? SEMI #VarDecStmt + | IF LPAREN expression RPAREN statement (ELSE statement)? #IfStmt + | WHILE LPAREN expression RPAREN statement #WhileStmt + | RETURN expression SEMI #ReturnStmt + | expression SEMI #ExprStmt ; expression diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index 83e3d1b..0dca168 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -624,59 +624,26 @@ public Type visitGlobalDef(SplcParser.GlobalDefContext ctx) { symbolTable.exitScope(); - } else if (ctx.varDec() != null && !ctx.varDec().isEmpty()) { - // Global variable definition: specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI - List varDecs = ctx.varDec(); - List expressions = ctx.expression(); - - // Map each varDec to its initialization expression (if any) - // by walking through children in order - Map varDecToExprIndex = new HashMap<>(); - int currentVarDecIndex = -1; - int currentExprIndex = 0; - - for (int i = 0; i < ctx.getChildCount(); i++) { - ParseTree child = ctx.getChild(i); - if (child instanceof SplcParser.VarDecContext) { - currentVarDecIndex++; - } else if (child instanceof TerminalNode) { - TerminalNode tn = (TerminalNode) child; - if (tn.getSymbol().getType() == SplcLexer.ASSIGN && currentVarDecIndex >= 0) { - // The next expression belongs to the current varDec - if (currentExprIndex < expressions.size()) { - varDecToExprIndex.put(currentVarDecIndex, currentExprIndex); - currentExprIndex++; - } - } - } + } else if (ctx.varDec() != null) { + // Global variable definition: specifier varDec (ASSIGN expression)? SEMI + String varName = extractIdentifierFromVarDec(ctx.varDec()); + Type varType = buildTypeFromVarDec(ctx.varDec(), specType); + + if (!symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE)) { + grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(ctx.varDec()))); } - - for (int i = 0; i < varDecs.size(); i++) { - SplcParser.VarDecContext varDecCtx = varDecs.get(i); - String varName = extractIdentifierFromVarDec(varDecCtx); - Type varType = buildTypeFromVarDec(varDecCtx, specType); + globalVariables.add(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0)); - if (!symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE)) { - grader.reportSemanticError(Project3SemanticError.redefinition(getIdentifierNode(varDecCtx))); - } - globalVariables.add(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0)); - - - // Check for incomplete type - if (!isCompleteType(varType)) { - // For arrays, the element type must be complete immediately - // For direct struct types, we can defer the check per v4 spec - if (requiresImmediateCompletenessCheck(varType)) { - grader.reportSemanticError(Project3SemanticError.definitionIncomplete(getIdentifierNode(varDecCtx))); - } else { - // Defer check for direct struct types - incompleteGlobals.put(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0), getIdentifierNode(varDecCtx)); - } + // Check for incomplete type + if (!isCompleteType(varType)) { + // For arrays, the element type must be complete immediately + // For direct struct types, we can defer the check per v4 spec + if (requiresImmediateCompletenessCheck(varType)) { + grader.reportSemanticError(Project3SemanticError.definitionIncomplete(getIdentifierNode(ctx.varDec()))); + } else { + // Defer check for direct struct types + incompleteGlobals.put(new Symbol(varName, varType, Symbol.Kind.VARIABLE, 0), getIdentifierNode(ctx.varDec())); } - - // Note: initialization expressions are checked but global variables - // in this grammar don't need type checking for init expressions - // as per Project 4 spec (only local variables need this check) } } else if (ctx.Identifier() != null && ctx.funcArgs() != null) { @@ -796,68 +763,35 @@ public Type visitBracket(SplcParser.BracketContext ctx) { @Override public Type visitVarDecStmt(SplcParser.VarDecStmtContext ctx) { - // Local variable declaration: specifier varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)* SEMI + // Local variable declaration: specifier varDec (ASSIGN expression)? SEMI Type specType = visitSpecifier(ctx.specifier()); - - // Process variable declarations by iterating through children in order - // The structure is: specifier (varDec (ASSIGN expression)? (COMMA varDec (ASSIGN expression)?)*)+ SEMI - List varDecs = ctx.varDec(); - List expressions = ctx.expression(); - - // Map each varDec to its initialization expression (if any) - // by walking through children in order - Map varDecToExprIndex = new HashMap<>(); - int currentVarDecIndex = -1; - int currentExprIndex = 0; - - for (int i = 0; i < ctx.getChildCount(); i++) { - ParseTree child = ctx.getChild(i); - if (child instanceof SplcParser.VarDecContext) { - currentVarDecIndex++; - } else if (child instanceof TerminalNode) { - TerminalNode tn = (TerminalNode) child; - if (tn.getSymbol().getType() == SplcLexer.ASSIGN && currentVarDecIndex >= 0) { - // The next expression belongs to the current varDec - if (currentExprIndex < expressions.size()) { - varDecToExprIndex.put(currentVarDecIndex, currentExprIndex); - currentExprIndex++; - } - } - } - } - - // Now process each varDec - for (int i = 0; i < varDecs.size(); i++) { - SplcParser.VarDecContext varDecCtx = varDecs.get(i); - String varName = extractIdentifierFromVarDec(varDecCtx); - Type varType = buildTypeFromVarDec(varDecCtx, specType); + String varName = extractIdentifierFromVarDec(ctx.varDec()); + Type varType = buildTypeFromVarDec(ctx.varDec(), specType); - // Check for incomplete type - if (!isCompleteType(varType)) { - grader.reportSemanticError(Project3SemanticError.definitionIncomplete( - getIdentifierNode(varDecCtx))); - } + // Check for incomplete type + if (!isCompleteType(varType)) { + grader.reportSemanticError(Project3SemanticError.definitionIncomplete( + getIdentifierNode(ctx.varDec()))); + } - // Check redefinition in current scope - if (symbolTable.existsInCurrentScopeOther(varName)) { - grader.reportSemanticError(Project3SemanticError.redefinition( - getIdentifierNode(varDecCtx))); - } + // Check redefinition in current scope + if (symbolTable.existsInCurrentScopeOther(varName)) { + grader.reportSemanticError(Project3SemanticError.redefinition( + getIdentifierNode(ctx.varDec()))); + } - symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); + symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); - // Check initialization expression if present - if (varDecToExprIndex.containsKey(i)) { - int exprIndex = varDecToExprIndex.get(i); - try { - ExprInfo exprInfo = checkExpression(expressions.get(exprIndex)); - if (!typesEqual(varType, exprInfo.type)) { - Project4SemanticError.unexpectedType(expressions.get(exprIndex), exprInfo.type).throwException(); - } - } catch (Project4Exception ex) { - hasSemanticErrors = true; - grader.reportSemanticError(ex); + // Visit initialization expression if present and check type compatibility + if (ctx.expression() != null) { + try { + ExprInfo exprInfo = checkExpression(ctx.expression()); + if (!typesEqual(varType, exprInfo.type)) { + Project4SemanticError.unexpectedType(ctx.expression(), exprInfo.type).throwException(); } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); } } return null; From 6172f6d6c3634ef8ceb8e9df108e2abbe272ccbc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:07:49 +0000 Subject: [PATCH 8/9] Fix local variable initialization to use unmatchedTypeForBinaryOP for type errors Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- src/main/java/impl/Compiler.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index 0dca168..4c43813 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -783,11 +783,29 @@ public Type visitVarDecStmt(SplcParser.VarDecStmtContext ctx) { symbolTable.addOther(varName, varType, Symbol.Kind.VARIABLE); // Visit initialization expression if present and check type compatibility + // Use assignment rules [2.2.14] with unmatchedTypeForBinaryOP for type errors if (ctx.expression() != null) { try { ExprInfo exprInfo = checkExpression(ctx.expression()); - if (!typesEqual(varType, exprInfo.type)) { - Project4SemanticError.unexpectedType(ctx.expression(), exprInfo.type).throwException(); + + // Check if lhs or rhs is array type - arrays cannot be assigned + if (varType instanceof ArrayType || exprInfo.type instanceof ArrayType) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + + // Check that both sides are integer or pointer types + if (!isIntegerType(varType) && !isPointerType(varType)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + if (!isIntegerType(exprInfo.type) && !isPointerType(exprInfo.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + + // Special case: allow 0 as null pointer + boolean rhsIsZero = isConstantZero(ctx.expression()); + + if (!rhsIsZero && !typesEqual(varType, exprInfo.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); } } catch (Project4Exception ex) { hasSemanticErrors = true; From eb97c95fcda6f0c3cb43333392f165f60d7b8555 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:45:27 +0000 Subject: [PATCH 9/9] Add type checking for global variable initialization Co-authored-by: wuzhi456 <217564920+wuzhi456@users.noreply.github.com> --- src/main/java/impl/Compiler.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/impl/Compiler.java b/src/main/java/impl/Compiler.java index 4c43813..8db5c4e 100644 --- a/src/main/java/impl/Compiler.java +++ b/src/main/java/impl/Compiler.java @@ -646,6 +646,36 @@ public Type visitGlobalDef(SplcParser.GlobalDefContext ctx) { } } + // Check initialization expression if present using assignment rules [2.2.14] + if (ctx.expression() != null) { + try { + ExprInfo exprInfo = checkExpression(ctx.expression()); + + // Check if lhs or rhs is array type - arrays cannot be assigned + if (varType instanceof ArrayType || exprInfo.type instanceof ArrayType) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + + // Check that both sides are integer or pointer types + if (!isIntegerType(varType) && !isPointerType(varType)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + if (!isIntegerType(exprInfo.type) && !isPointerType(exprInfo.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + + // Special case: allow 0 as null pointer + boolean rhsIsZero = isConstantZero(ctx.expression()); + + if (!rhsIsZero && !typesEqual(varType, exprInfo.type)) { + Project4SemanticError.unmatchedTypeForBinaryOP(ctx.expression(), ctx.ASSIGN().getSymbol(), varType, exprInfo.type).throwException(); + } + } catch (Project4Exception ex) { + hasSemanticErrors = true; + grader.reportSemanticError(ex); + } + } + } else if (ctx.Identifier() != null && ctx.funcArgs() != null) { // Function declaration: specifier Identifier LPAREN funcArgs RPAREN SEMI TerminalNode funcName = ctx.Identifier();