<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>CST-405 T4:IF &amp; WHILE Statements by Isac Artzi</title>
      <link>https://padlet.com/isac_artzi/aghjksyx70x3niab</link>
      <description></description>
      <language>en-us</language>
      <pubDate>2024-10-30 16:07:24 UTC</pubDate>
      <lastBuildDate>2025-10-02 04:29:17 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732970</link>
         <description><![CDATA[<p>Using the example as reference, write by hand the IR code you expect YOUR compiler to generate, for the following C- snippet:</p><p><br></p><p>If (a &gt; b){</p><p>&nbsp;&nbsp;If (n &gt; 0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = func1();</p><p>&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;Write a;</p><p>Else {</p><p>&nbsp;&nbsp;Write b;</p><p>}</p><p>func1() {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Int x;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = 25;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Return x;</p><p>}</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732970</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732973</link>
         <description><![CDATA[<div>Fully implement <em>if-statements</em></div>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732973</guid>
      </item>
      <item>
         <title>Class Notes</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732975</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/58400503/9253c4908b71e738350edfa5d30b384a/CST_405_Week_4_Friday.txt" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732975</guid>
      </item>
      <item>
         <title>More complex conditions and IF-ELSE </title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732976</link>
         <description><![CDATA[<div><br>For example:<br><br>if ((a + b) &gt; max(x,y)) {<br>     z = a *b;<br>     write z;<br>}<br>else {<br>   z = 2 + m + q;<br>   write z*2;<br>}<br><br><br><br>The Dangling ELSE Problem<br>-------------------------<br><br>IF ((a + b) &gt; max(x,y)) {<br>     IF (a&gt;2 &amp;&amp; b &lt;100) {<br>     	z = a *b;<br>     	write z;<br>     }<br>     ELSE{<br>       t = 100 * p;<br>       write t;<br>     }<br>}<br>ELSE{<br>   IF (today == "m") {<br>      callSomeFunction(today);<br>   }<br>   ELSE {<br>      callAnotherFunction(0);<br>   }<br>   z = 2 + m + q;<br>   write z*2;<br>}<br><br>======= IR CODE FOR IF-ELSE =========<br><br>	IF (a &gt; b) {<br>	 	stmt1;  // e.g., assignment<br>		stmt1;  // e.g., function call<br>	 }<br>	ELSE {<br>          addNumnbers(a,b);<br>        }<br><br>      ------ IR CODE -------<br>      T0 = a<br>      T1 = b<br>      if T0 &lt;= T1 GOTO Continue1<br>      stmt1<br>      stmt2<br>      GOTO Continue2<br>Continue1<br>      P0 = a<br>      P1 = b<br>      PUSH Continue2<br>      GOTO addNumbers<br>      stop<br>Continue2<br>      write R0<br>      etc.<br>      stop<br><br>addNumbers<br>      T3 = <br>      T4 =<br>      R0 = T3 + T4<br>      GOTO pop<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732976</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732978</link>
         <description><![CDATA[<div><br>------------------------ AST for IF-ELSE and nested IF ------------------<br><br>if (n &gt; m) {<br>   z = n - m;<br>   write z;<br>}<br>else {<br>   z = m - n;<br>   write z;<br>}<br><br><br><br>                  write                   write<br>                 /     \                  /    \<br>                =      null              =     null<br>               / \                      / \<br>              z   -                    z   -<br>                 / \                      / \<br>                n   m                    m   n<br><br>                   \                     /<br> 		    \                   /<br>                     \                 /<br>                               <br>                             <br>                             =<br>                            /  \<br>                       ifVar    &gt;<br>                               / \<br>                              n   m<br><br><br>----------------------------------------------------------------<br><br>                  write                   <br>                 /     \                  <br>                =      null            <br>               / \                      <br>              z   \<br>                   T10<br>                 /   \   <br>                =      -<br>              /  \    /  \<br>         ifVar    &gt;  n    m<br>                 / \<br>                n   m<br><br>------------------- IR Code for IF-ELSE -----------------<br><br>if (n &gt; m) {<br>   z = n * m - n/m;<br>   write z;<br>}<br>else {<br>   z = m - n;<br>   write z;<br>}<br><br>                <br>	  T0 = n<br>	  T1 = m<br>          T2 = n-m<br>          IF T2 &gt; 0 GOTO ELSEpart  //In Assembly: JPOS T2, ELSEpart<br>          T3 = T0 * T1<br>          T4 = T0/T1<br>          T5 = T3 - T4<br>          Output T5<br>          GOTO Continue<br>ELSEpart: T3 = T1 - T0<br>	  Output T3<br>Continue  etc.<br>                                 <br>                               <br>                             <br>----------------- OPTIMIZING IF-STATEMENTS -------------------<br><br>- condition is an expression, so you optimize as an expression<br>- eliminate dead code<br>   if (2 &gt; 5) {<br>    stmt1;<br>    ....<br>    stmt20;<br>   }<br>   else{<br><br>   }<br>- simplification of redundant statements (x + x + x --&gt; 3*x)<br>- simplication of complex mathematical calculations:<br>    x^3 --&gt; x*x*x<br>- simplify nested if statements - VERY TRICKY<br>   if (x &gt; 0) <br>      if (x &lt; 10)<br>         if (y &gt;25) {<br>            write r;<br>            write '=';<br>            write 100;<br>         }<br><br>   optimzed:<br>    if (x&gt;0 &amp;&amp; x&lt;10 &amp;&amp; y&gt;25){<br>            write r;<br>            write '=';<br>            write 100;<br>         }<br> <br><br><br>------ ASSEMBLY CODE GENERATOR ----------<br><br>- lookup the various JUMP commands:<br>  JMP, JNEG, JPOS, JZER<br>- Reminder: there are different categories of registers:<br>  T - temporary variables<br>  R - return results from functions<br>  P - function arguments/parameters<br><br>  MIPS has $v, $a, S$, etc.<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732978</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732982</link>
         <description><![CDATA[<p><strong>Review the bulletpoints below and report your status - what have you addressed and how?</strong></p><p><br/></p><ul><li><p>review all the changes necessary in the Lexer and add keywords, symbols as needed</p></li><li><p>review the use and structure of the symbol table (linked list of tables) and make necessary changes</p></li><li><p>review your prior decisions about variable declarations, i.e., where do you allow them to be defined</p></li><li><p>review your prior decisions about free standing statements</p></li><li><p>decide whether an IF-BLOCK has its own scope</p></li><li><p>decide on the appropriate structure of the AST representing an IF statement</p></li><li><p>add AST generation code to AST.h</p></li><li><p>update Bison with necessary rules to support IF and generate appropriate trees</p></li><li><p>adapt optimization techniques for expressions to optimizing th IF condition</p></li><li><p>adapt optimization techniques for function block, to IF block</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194732982</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194733036</link>
         <description><![CDATA[<p>Suggest an AST for a simple IF and an AST for IF-ELSE using Bison and your AST.h and AST.c custom code (or similar)</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194733036</guid>
      </item>
      <item>
         <title>For teams of 3</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194733038</link>
         <description><![CDATA[<p>Create an AST for a SWITCH Statement</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 16:07:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194733038</guid>
      </item>
      <item>
         <title>📹</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194741886</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://docs.google.com/document/d/1mUexL4rFo3SH2ms6porxyYbrrofqAq9Hs039YbdmfPA/edit?tab=t.0" />
         <pubDate>2024-10-30 16:11:36 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194741886</guid>
      </item>
      <item>
         <title>Jordan Scott &amp; David Smical </title>
         <author>JordanScott25</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194823515</link>
         <description><![CDATA[<p>Since we do not have it yet implemented in our compiler here is a simple layout of how our IF and IF-ELSE statements would work. </p><p><br/></p><p>IF-Statement AST: </p><p>          IfNode</p><p>         /           \</p><p>  Condition   Body</p><p><br/></p><p>IF-ELSE Statement AST: </p><p>           &nbsp;    <strong>IFNode</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp; &nbsp;          \</p><p>&nbsp;Condition&nbsp; &nbsp;    <strong>ELSE</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;/ &nbsp; \&nbsp; &nbsp; &nbsp;           / &nbsp;    \</p><p>&nbsp;Null&nbsp; Block&nbsp; Null&nbsp; Block<br></p><p>Bison Incomplete code: </p><p>/* Add these tokens */</p><p>%token IF ELSE</p><p>%type &lt;ast&gt; if_statement else_statement condition_expression block_statement</p><p>statement</p><p>    : /* existing rules */</p><p>    | if_statement</p><p>        { $$ = $1; }</p><p>    ;</p><p>if_statement</p><p>    : IF LPAREN condition_expression RPAREN LBRACE block_statement RBRACE</p><p>        {</p><p>            $$ = create_if_node($3, $6, NULL);</p><p>        }</p><p>    | IF LPAREN condition_expression RPAREN LBRACE block_statement RBRACE ELSE LBRACE block_statement RBRACE</p><p>        {</p><p>            $$ = create_if_node($3, $6, $10);</p><p>        }</p><p>    ;</p><p>condition_expression</p><p>    : expression</p><p>        { $$ = $1; }</p><p>    ;</p><p>block_statement</p><p>    : statements</p><p>        { $$ = $1; }</p><p>    ;</p><p><br/></p><p>AST.h incomplete: </p><p>ASTNode* create_if_node(ASTNode* condition, ASTNode* if_body, ASTNode* else_body);</p><p><br/></p><p>AST.c incomplete:</p><p>ASTNode* create_if_node(ASTNode* condition, ASTNode* if_body, ASTNode* else_body) {</p><p>    ASTNode* node = create_node("If", NULL);</p><p>    node-&gt;left = condition;</p><p>    node-&gt;middle = if_body;  </p><p>field to ASTNode struct</p><p>    node-&gt;right = else_body;</p><p>    return node;</p><p>}</p><p><br/></p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2124652096/bbbeb8469d5ea0bb8411c46d6cb2080d/fade_away_oooooooooooo.gif" />
         <pubDate>2024-10-30 17:06:37 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194823515</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194838117</link>
         <description><![CDATA[<p>If:</p><p>		If</p><p>	   /         \</p><p>        Condition    Block</p><p><br/></p><p>Else-If:</p><p>		 If</p><p>	   /         	\</p><p>          Not      	Block</p><p>       /       \	</p><p>   Condition   null</p><p><br/></p><p>Condition:</p><p>	OP</p><p>     /      \</p><p>    ID       ID</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:17:05 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194838117</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194846480</link>
         <description><![CDATA[<p>AST Generated:</p><p>└── Program [Type: PROGRAM, Value: ]</p><p>    ├── Declaration [Type: DECLARATION, DType: INT, Value: x]</p><p>    │   └── Assignment [Type: ASSIGN, Value: =]</p><p>    │       ├── Left:</p><p>    │       │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: x]</p><p>    │       └── Right:</p><p>    │           └── NUMBER [Type: NUMBER, DType: INT, Value: 10]</p><p>    ├── Declaration [Type: DECLARATION, DType: INT, Value: y]</p><p>    │   └── Assignment [Type: ASSIGN, Value: =]</p><p>    │       ├── Left:</p><p>    │       │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: y]</p><p>    │       └── Right:</p><p>    │           └── NUMBER [Type: NUMBER, DType: INT, Value: 5]</p><p>    └── If Statement [Type: IF_STATEMENT, Value: ]</p><p>        ├── Condition:</p><p>        │   └── GREATER_THAN [Type: GREATER_THAN, Value: &gt;]</p><p>        │       ├── Left:</p><p>        │       │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: x]</p><p>        │       └── Right:</p><p>        │           └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: y]</p><p>        ├── Then:</p><p>        │   └── Block [Type: BLOCK, Value: ]</p><p>        │       ├── Declaration [Type: DECLARATION, DType: INT, Value: z]</p><p>        │       │   └── Assignment [Type: ASSIGN, Value: =]</p><p>        │       │       ├── Left:</p><p>        │       │       │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: z]</p><p>        │       │       └── Right:</p><p>        │       │           └── SUBTRACT [Type: SUBTRACT, Value: -]</p><p>        │       │               ├── Left:</p><p>        │       │               │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: x]</p><p>        │       │               └── Right:</p><p>        │       │                   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: y]</p><p>        │       └── Function Call [Type: FUNCTION_CALL, Value: write]</p><p>        │           └── Arguments:</p><p>        │               └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: z]</p><p>        └── Else:</p><p>            └── Block [Type: BLOCK, Value: ]</p><p>                ├── Declaration [Type: DECLARATION, DType: INT, Value: z]</p><p>                │   └── Assignment [Type: ASSIGN, Value: =]</p><p>                │       ├── Left:</p><p>                │       │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: z]</p><p>                │       └── Right:</p><p>                │           └── SUBTRACT [Type: SUBTRACT, Value: -]</p><p>                │               ├── Left:</p><p>                │               │   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: y]</p><p>                │               └── Right:</p><p>                │                   └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: x]</p><p>                └── Function Call [Type: FUNCTION_CALL, Value: write]</p><p>                    └── Arguments:</p><p>                        └── IDENTIFIER [Type: IDENTIFIER, DType: INT, Value: z]</p><p>Parse code:</p><p>func parse(tokens []string, root <em>Node) </em>Node {</p><p>    body := []*Node{}</p><p>    for i := 0; i &lt; len(tokens); i++ {</p><p>        token := tokens[i]</p><p>        switch token {</p><p>        case "if":</p><p>            // Parse the if statement</p><p>            ifNode, newIndex := parseIfStatement(tokens, i, root)</p><p>            body = append(body, ifNode)</p><p>            i = newIndex - 1 // Adjust index since parseIfStatement advances it</p><p>        // Existing cases...</p><p>        }</p><p>    }</p><p>    root.Body = body</p><p>    return root</p><p>}</p><p>func parseIfStatement(tokens []string, currentIndex int, root <em>Node) (</em>Node, int) {</p><p>    i := currentIndex + 1 // Move past 'if'</p><p>    // Expect '('</p><p>    if tokens[i] != "(" {</p><p>        fmt.Println("Expected '(' after 'if' on line", line)</p><p>        os.Exit(3)</p><p>    }</p><p>    i++</p><p>    // Find matching ')'</p><p>    conditionEnd := findMatchingParen(tokens, i)</p><p>    if conditionEnd == -1 {</p><p>        fmt.Println("Unmatched '(' in if condition on line", line)</p><p>        os.Exit(3)</p><p>    }</p><p>    // Parse condition expression</p><p>    conditionTokens := tokens[i:conditionEnd]</p><p>    conditionNode := parseGeneric(conditionTokens, line, root)</p><p>    i = conditionEnd + 1 // Move past ')'</p><p>    // Expect '{'</p><p>    if tokens[i] != "{" {</p><p>        fmt.Println("Expected '{' after if condition on line", line)</p><p>        os.Exit(3)</p><p>    }</p><p>    i++</p><p>    // Parse the 'then' body</p><p>    thenBodyTokens, nextIndex := extractBlock(tokens, i)</p><p>    thenNode := &amp;Node{Type: "BLOCK", Body: parse(thenBodyTokens, root).Body}</p><p>    i = nextIndex</p><p>    // Check for 'else' clause</p><p>    var elseNode *Node</p><p>    if i &lt; len(tokens) &amp;&amp; tokens[i] == "else" {</p><p>        i++</p><p>        // Expect '{'</p><p>        if tokens[i] != "{" {</p><p>            fmt.Println("Expected '{' after 'else' on line", line)</p><p>            os.Exit(3)</p><p>        }</p><p>        i++</p><p>        // Parse the 'else' body</p><p>        elseBodyTokens, nextIndex := extractBlock(tokens, i)</p><p>        elseNode = &amp;Node{Type: "BLOCK", Body: parse(elseBodyTokens, root).Body}</p><p>        i = nextIndex</p><p>    }</p><p>    // Create the if statement node</p><p>    ifNode := &amp;Node{</p><p>        Type:      "IF_STATEMENT",</p><p>        Condition: conditionNode,</p><p>        Then:      thenNode,</p><p>        Else:      elseNode,</p><p>    }</p><p>    return ifNode, i</p><p>}</p><p>This is hypothetical code for our compiler we are building in go</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:23:03 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194846480</guid>
      </item>
      <item>
         <title>Nathan Dilla &amp; Eli Streitmatter</title>
         <author>nathancdilla</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194848239</link>
         <description><![CDATA[<p><em>Bison:</em></p><p>IfStmt = IF LPAREN Condition RPAREN IfBlock Else {</p><p>$$-&gt;malloc(sizeof(ASTNODE))</p><p>//set node type to ifStmt</p><p>$3-&gt;ifStmt.condition</p><p>$5-&gt;ifStmt.block</p><p>$6-&gt;ifStmt.elseBlock</p><p>}</p><p><br/></p><p>Else {//could be empty}</p><p>| ELSE IfBlock {</p><p>//set node type to else</p><p>$$-&gt;malloc(sizeof(ASTNODE))</p><p>$2-&gt;else.block</p><p>}</p><p><br/></p><p><em>AST.h</em></p><p>typedef struct ASTNode {</p><p> NodeType type;</p><p>....</p><p>union {</p><p>  struct{</p><p>  struct ASTNode* condition;</p><p>  struct ASTNode* block;</p><p>  struct ASTNode* elseBlock;</p><p>} IfStmt;</p><p><br/></p><p><br/></p><p>AST:</p><p>                  If</p><p>Condition        Else</p><p>Null.                     Block.     NULL</p><p><br/></p><p>           If</p><p>Block.         Condition</p><p>Null.                    NULL.     Block</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:24:23 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194848239</guid>
      </item>
      <item>
         <title>Atu Ambala and Owen Kroeger</title>
         <author>aambala26</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194851925</link>
         <description><![CDATA[<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      <strong>IF</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;/&nbsp; &nbsp;          \</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;/&nbsp; &nbsp; &nbsp;          \</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Condition&nbsp; &nbsp; <strong>ELSE</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   / &nbsp; \&nbsp; &nbsp; &nbsp;        / &nbsp; \</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Null&nbsp; Block&nbsp; Null&nbsp; Block</p><p><br></p><p><br></p><p>                  <strong>IF</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;/&nbsp; &nbsp;         \     </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;/&nbsp; &nbsp; &nbsp;         \ </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Condition&nbsp; &nbsp; Null</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   / &nbsp; \&nbsp; &nbsp; &nbsp;       </p><p>&nbsp;&nbsp;&nbsp;&nbsp;Null&nbsp; Block&nbsp; <br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2127061910/15c135d6480f33e1ae7e0a2087ec7c6c/image.png" />
         <pubDate>2024-10-30 17:27:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194851925</guid>
      </item>
      <item>
         <title>Gabriel Marcelino</title>
         <author>gabriel_marcelino</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194852138</link>
         <description><![CDATA[<p>IF</p><p> ├─ Condition</p><p> │    └─ Expression</p><p> ├─ Statement is True</p><p> │    └─ Block</p><p> └─ Statement is False</p><p>      └─ Block</p><p>Parser starter code for IF:</p><p>statement:</p><p>IF LPAREN condition RPAREN LBRACE statement RBRACE</p><p>| IF LPAREN condition RPAREN LBRACE statement RBRACE ELSE LBRACE statement RBRACE</p><p>;</p><p><br/></p><p>condition:</p><p>Expr EQUALS Expr</p><p>| Expr GREATER Expr</p><p>| Expr LESS Expr</p><p>;</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:27:25 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194852138</guid>
      </item>
      <item>
         <title>Teddy Coon and Colt Uhlenhopp</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194852264</link>
         <description><![CDATA[<p>Here is a basic structure with some syntax for bison grammar, and sudo code used to represent our idea. </p><p><br></p><p>// AST Node Structure and Creation Functions</p><p>define ASTNode with properties:</p><p>    - type (IF, IF_ELSE, CONDITION, BODY)</p><p>    - condition (pointer to condition node)</p><p>    - thenBody (pointer to then body node)</p><p>    - elseBody (pointer to else body node, for IF-ELSE)</p><p>function createIfNode(condition, thenBody):</p><p>    create node of type IF</p><p>    set node.condition = condition</p><p>    set node.thenBody = thenBody</p><p>    return node</p><p>function createIfElseNode(condition, thenBody, elseBody):</p><p>    create node of type IF_ELSE</p><p>    set node.condition = condition</p><p>    set node.thenBody = thenBody</p><p>    set node.elseBody = elseBody</p><p>    return node</p><p>// Bison Grammar Rules</p><p>program:</p><p>    statement { root = $1 }  // Start AST with the root node</p><p>statement:</p><p>    'IF' condition body           { $$ = createIfNode($2, $3) }</p><p>    | 'IF' condition body 'ELSE' body { $$ = createIfElseNode($2, $3, $5) }</p><p>condition:</p><p>    'condition_expr' { $$ = createConditionNode() }</p><p>body:</p><p>    'body_statements' { $$ = createBodyNode() }</p><p>// Parsing and Error Handling</p><p>main():</p><p>    parse input with yyparse()</p><p>    process AST starting at root</p><p>error:</p><p>    print "Syntax error"</p><p><br></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:27:32 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194852264</guid>
      </item>
      <item>
         <title>Teddy Coon and Colt Uhlenhopp</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194853510</link>
         <description><![CDATA[<p>The code provided uses a combination of pseudocode and bison syntax to represent our idea. </p><p><br/></p><p>// AST Node Structure and Creation Functions</p><p>define ASTNode with properties:</p><p>    - type (IF, IF_ELSE, CONDITION, BODY)</p><p>    - condition (pointer to condition node)</p><p>    - thenBody (pointer to then body node)</p><p>    - elseBody (pointer to else body node, for IF-ELSE)</p><p>function createIfNode(condition, thenBody):</p><p>    create node of type IF</p><p>    set node.condition = condition</p><p>    set node.thenBody = thenBody</p><p>    return node</p><p>function createIfElseNode(condition, thenBody, elseBody):</p><p>    create node of type IF_ELSE</p><p>    set node.condition = condition</p><p>    set node.thenBody = thenBody</p><p>    set node.elseBody = elseBody</p><p>    return node</p><p>// Bison Grammar Rules</p><p>program:</p><p>    statement { root = $1 }  // Start AST with the root node</p><p>statement:</p><p>    'IF' condition body           { $$ = createIfNode($2, $3) }</p><p>    | 'IF' condition body 'ELSE' body { $$ = createIfElseNode($2, $3, $5) }</p><p>condition:</p><p>    'condition_expr' { $$ = createConditionNode() }</p><p>body:</p><p>    'body_statements' { $$ = createBodyNode() }</p><p>// Parsing and Error Handling</p><p>main():</p><p>    parse input with yyparse()</p><p>    process AST starting at root</p><p>error:</p><p>    print "Syntax error"</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:28:35 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194853510</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Kevin Tran, Carlos Llanes</title>
         <author>jonathanrivas1956</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194854100</link>
         <description><![CDATA[<p>IF:</p><p>NodeType_IfStmnt:</p><p>          Condition: ...</p><p>          VarDeclList: ...</p><p>          StmntList: ...</p><p>          Else: {} (empty/null for lone ifs)</p><p><br/></p><p>IF-ELSE:</p><p>NodeType_IfStmnt:</p><p>          Condition: ....</p><p>          VarDeclList: ...</p><p>          StmntList: ....</p><p>          NodeType_Else:</p><p>                                      VarDeclList: ...</p><p>                                      StmntList: ....</p><p><br/></p><p>Our initial thought is for ifs to have a condition, VarDeclList, StmntList, and an Else. For if statements the else would be empty/NULL an for if-else statements the else would be filled with another </p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:29:06 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194854100</guid>
      </item>
      <item>
         <title>Eli Kaustinen</title>
         <author>elikaustinen</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194866866</link>
         <description><![CDATA[<p>IF </p><p>├── CONDITION  </p><p> |          └── [Condition Expression Node] </p><p>└── THEN </p><p>            └── [Then Statement Node]</p><p><br/></p><p>IF </p><p>├── CONDITION  </p><p> |          └── [Condition Expression Node] </p><p>└── THEN </p><p> |          └── [Then Statement Node]</p><p>└── ELSE </p><p>            └── [Else Statement Node]</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:37:50 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194866866</guid>
      </item>
      <item>
         <title>Adonijah &amp;&amp; Angel</title>
         <author>adnmstr</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194878937</link>
         <description><![CDATA[<p>IF:</p><p>                   IF</p><p>                 /    \  </p><p>Condition        Block</p><p>       /    \</p><p>NULL   Block</p><p><br/></p><p>IF ELSE:</p><p>                   IF</p><p>                 /    \  </p><p>Condition        ELSE</p><p>       /    \            /      \ </p><p>NULL  Block  NULL   Block</p><p><br/></p><p>IF ELSE-IF:</p><p>                                IF </p><p>                                / \ </p><p>                Condition   ELSE-IF </p><p>                /           \      /              \ </p><p>           NULL  Block  Condition  Block</p><p>                                     /       \              \ </p><p>                                 NULL Block ELSE-IF</p><p>                                                          / \ </p><p>                                          Condition   Block</p><p>                                                              / \ </p><p>                                                       NULL ELSE</p><p>                                                                    / \ </p><p>                                                            NULL Block</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 17:46:11 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194878937</guid>
      </item>
      <item>
         <title>Duc Vo &amp; Ty Gehkre</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194995582</link>
         <description><![CDATA[<p>This is what we were thinking of implement</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128193323/974a3320acaeca2ebeccebb250b52325/IF_ELSE.docx" />
         <pubDate>2024-10-30 19:22:30 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3194995582</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3195002829</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://docs.google.com/document/d/1mUexL4rFo3SH2ms6porxyYbrrofqAq9Hs039YbdmfPA/edit?tab=t.0" />
         <pubDate>2024-10-30 19:30:12 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3195002829</guid>
      </item>
      <item>
         <title>Grant Burk</title>
         <author>grantburk109</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3195071278</link>
         <description><![CDATA[<p>IF</p><p>├─ Condition</p><p>│ └─ Expression</p><p>├─ Statement is True</p><p>│ └─ Block</p><p>└─ Statement is False</p><p>└─ Block</p><p>Parser starter code for IF:</p><p>statement:</p><p>IF LPAREN condition RPAREN LBRACE statement RBRACE</p><p>| IF LPAREN condition RPAREN LBRACE statement RBRACE ELSE LBRACE statement RBRACE</p><p>;</p><p><br/></p><p>condition:</p><p>Expr EQUALS Expr</p><p>| Expr GREATER Expr</p><p>| Expr LESS Expr</p><p>;</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-30 20:51:04 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3195071278</guid>
      </item>
      <item>
         <title>PREP FOR IF + FUNCTIONS</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197964270</link>
         <description><![CDATA[<p>Global Variable Declarations</p><p>Functions</p><p>Statements</p><p>---------------------------------</p><p>Global Variable Declarations</p><p>Functions</p><p>Main Function</p><p>----------------------------------</p><p>Global Variable Declarations</p><p>Statements</p><p>Functions</p><p>Statements</p><p>More Global Variable Declarations</p><p>Statements</p><p>etc.</p><p>---------------------------------</p><p><strong>WHAT ABOUT BLOCKS?</strong></p><ul><li><p>function block</p></li><li><p>if block</p></li><li><p>while block</p></li><li><p>global block (outside a function)</p></li></ul><p>-----------------------------</p><p>FuncDecl: TYPE ID (PARAMLIST) FuncBlock</p><p>FuncBlock: { VarDeclist StatementsList Return}</p><p><br/></p><p>         vs.</p><p><br/></p><p>FuncDecl: TYPE ID (PARAMLIST) {Block Return }</p><p>Block: { VarDeclist StatementsList }</p><p>------------------------------------------</p><p>Stmt: AssgnStmt | IfStmt | WhileStmt | WriteStmt...</p><p><br/></p><p>IfStmt: IF ( Condition ) Block</p><p>Block:  VarDeclList StmtList | StmtList</p><p><br/></p><p><br/></p><p>WhileStmt: WHILE ( Condition ) Block</p><p>Block:  VarDeclList StmtList</p><p>----------------------------------</p><p>What if you don't allow VarDecl inside IF or While?</p><p><br/></p><p>IfStmt: IF ( Condition ) {StmtList}</p><p>WhileStmt: WHILE ( Condition ) {StmtList }</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 17:29:37 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197964270</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Kevin Tran, Carlos Llanes</title>
         <author>cllanesvil</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197975014</link>
         <description><![CDATA[<p>NodeType_SwitchStmt:</p><p>    Condition: ...</p><p>    CaseList: ...</p><p>    Default: {} (empty/null if no default case)</p><p><br/></p><p>typedef struct Case {</p><p>    int value;</p><p>    ASTNode* stmntList;</p><p>} Case;</p><p>typedef struct CaseList {</p><p>    Case* caseNode;</p><p>    struct CaseList* caseList;</p><p>} CaseList;</p><p>typedef struct SwitchStatement {</p><p>    ASTNode* condition;</p><p>    CaseList* caseList;</p><p>    ASTNode* defaultStmt;</p><p>} SwitchStatement;</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 17:41:01 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197975014</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197982336</link>
         <description><![CDATA[<p>We are still trying to fix a final error with the arrays, but we have started determining what our grammar for if and else statements will look like:</p><p><br/></p><p># An if statement with an optional else statement.</p><p>IfStmt: IF LPARA Condition RPARA Block ElseStmt {}</p><p># An optional else statement can be empty or contain an else block.</p><p>ElseStmt: (null) {}</p><p>    | ELSE Block  {}</p><p># A condition that needs to be met</p><p>Condition: Value {}</p><p>    | Value COMPARISON Value {}</p><p>    | LPARA Condition RPARA LOGIC_OPERATOR LPARA Condition RPARA {}</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 17:49:25 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197982336</guid>
      </item>
      <item>
         <title>Tracy Potter &amp; Jacob Aguilar</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197982973</link>
         <description><![CDATA[<p>// AST.h</p><p>typedef enum { NODE_IF, NODE_IF_ELSE, NODE_EXPR, NODE_STMT } NodeType;</p><p>// Base AST Node</p><p>typedef struct ASTNode {</p><p>    NodeType type;</p><p>    struct ASTNode* left;  // Left child</p><p>    struct ASTNode* right; // Right child</p><p>} ASTNode;</p><p>// If Statement (if &lt;condition&gt; &lt;then-branch&gt;)</p><p>typedef struct {</p><p>    NodeType type;</p><p>    ASTNode* condition;  // Condition expression</p><p>    ASTNode* thenBranch; // Then branch statement</p><p>} IfStmt;</p><p>// If-Else Statement (if &lt;condition&gt; &lt;then-branch&gt; else &lt;else-branch&gt;)</p><p>typedef struct {</p><p>    NodeType type;</p><p>    ASTNode* condition;   // Condition expression</p><p>    ASTNode* thenBranch;  // Then branch statement</p><p>    ASTNode* elseBranch;  // Else branch statement</p><p>} IfElseStmt;</p><p>// Function prototypes</p><p>ASTNode* createIfStmt(ASTNode* condition, ASTNode* thenBranch);</p><p>ASTNode* createIfElseStmt(ASTNode* condition, ASTNode* thenBranch, ASTNode* elseBranch);</p><p>void freeAST(ASTNode* node);</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 17:50:07 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197982973</guid>
      </item>
      <item>
         <title>Gabriel Marcelino and Grant Burk</title>
         <author>gabriel_marcelino</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197984484</link>
         <description><![CDATA[<ul><li><p>For now, we are still working on optimizing the optimization for functions, so in order to not make that harder, we will not add functions until that is done.</p></li></ul><p>Considerations:</p><ul><li><p>No free standing statements in our language.</p></li><li><p>Variable declarations are at the top of the block before the expressions.</p></li><li><p>IF Block does not have its own scope</p></li><li><p>AST for IF Statement:</p><ul><li><p>IF</p><p> ├─ Condition</p><p> │    └─ Expression</p><p> ├─ Statement is True</p><p> │    └─ Block</p><p> └─ Statement is False</p><p>      └─ Block</p><p>Parser starter code for IF:</p><p>statement:</p><p>IF LPAREN condition RPAREN LBRACE statement RBRACE</p><p>| IF LPAREN condition RPAREN LBRACE statement RBRACE ELSE LBRACE statement RBRACE</p></li></ul></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 17:51:58 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3197984484</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198009379</link>
         <description><![CDATA[<p>If:</p><p>		If</p><p>	      /     \</p><p>       Condition      Block</p><p>Else-If:</p><p>		If</p><p>             /     \</p><p>           Else     Block</p><p>         /      \</p><p>   Condition     null</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 18:21:13 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198009379</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Kevin Tran, Carlos Llanes</title>
         <author>jonathanrivas1956</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198105695</link>
         <description><![CDATA[<p>We're still working on the code generation of the previous milestone so we haven't made any progress on IFS.</p><p><br/></p><p>Considerations:</p><ul><li><p>Various tokens need to be added such as ||, &amp;&amp;, = &gt;, =&lt;,  if, else, etc.</p></li><li><p> We don't anticipate any changes to the symbol table</p></li><li><p>Variable declaration will be allowed in function declarations and after function declarations</p></li><li><p>statements will only be allowed after variable declarations and in IFS</p></li><li><p>an IF block will not have its own scope</p><p>AST for IFS</p><p>IF:</p><p>NodeType_IfStmnt:</p><p>|______Condition: ...</p><p>|______VarDeclList: ...</p><p>|______StmntList: ...</p><p>|______Else: {} (empty/null for lone ifs)</p><p><br/></p><p>IF-ELSE:</p><p>NodeType_IfStmnt:</p><p>|______Condition: ....</p><p>|______VarDeclList: ...</p><p>|______StmntList: ....</p><p>|______NodeType_Else:</p><p>            |________________VarDeclList: ...</p><p>            |________________StmntList: ....</p><p><br/></p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 20:52:54 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198105695</guid>
      </item>
      <item>
         <title>Tracy Potter &amp; Jacob Aguilar</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198142823</link>
         <description><![CDATA[<p>We are currently working on making final touches to our function and arrays. But in the meantime this is our approach towards the IF statements as of now is like this </p><p>%{</p><p>#include "AST.h"</p><p>%}</p><p>%union {</p><p>    ASTNode* node;</p><p>}</p><p>%token IF ELSE</p><p>%type &lt;node&gt; stmt expr if_stmt if_else_stmt</p><p>%%</p><p>stmt:</p><p>      if_stmt</p><p>    | if_else_stmt</p><p>    ;</p><p>if_stmt:</p><p>      IF '(' expr ')' stmt {</p><p>          $$ = createIfStmt($3, $5);</p><p>      }</p><p>    ;</p><p>if_else_stmt:</p><p>      IF '(' expr ')' stmt ELSE stmt {</p><p>          $$ = createIfElseStmt($3, $5, $7);</p><p>      }</p><p>    ;</p><p>expr:</p><p>    // Define expression rules here that return ASTNode* for expressions</p><p>    ;</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-01 22:24:46 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198142823</guid>
      </item>
      <item>
         <title>Duc Vo &amp; Ty Gehkre</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198281025</link>
         <description><![CDATA[<p>Here's the decisions we have for our if-else, we would be putting them inside of the statement so that It would be able to go wherever the statement is allowed to go. We believe this would be the best course of action. Still the branch jumping for the IR and the MIPS would be our biggest problem</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128193323/8e6edec126416a1cb202eeee7f43c855/IF_ELSE.docx" />
         <pubDate>2024-11-02 04:22:14 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198281025</guid>
      </item>
      <item>
         <title>Owen and Atu</title>
         <author>aambala26</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198331616</link>
         <description><![CDATA[<p>After discussion, we have decided that if blocks do not have their own scope. this would require rearranging our grammar from the top.</p><p><br/></p><p>We are still working on finalizing the code generation and optimization of functions </p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-02 07:07:07 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198331616</guid>
      </item>
      <item>
         <title>Trevor Pope &amp; Micheal Callahan</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198663925</link>
         <description><![CDATA[<p>Micheal and I have still been working on trying to finish implementing arrays and functions. We have our TAC almost completely finished and we have begun our optimization. All that we have left to do is finish our optimization and code generation and then we will begin to work on the logical expressions. When we work on logical expressions, we will need to adjust many of our parser rules to recognize logical statements and we will have to address those before expressions so that we can correctly handle the order of operations for those logical checks.</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-02 20:06:53 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3198663925</guid>
      </item>
      <item>
         <title>David Smical and Jordan Scott</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3203096153</link>
         <description><![CDATA[<p>Here is our complete ast for our most complex functionality:</p><p>Abstract Syntax Tree (AST):</p><p>Program</p><p>  Function Definition: add, Return Type: int</p><p>  Parameters:</p><p>      Param: a, Type: int</p><p>      Param: b, Type: int</p><p>      Param: c, Type: int</p><p>    Block:</p><p>      Assignment: x</p><p>        Number: 25</p><p>      Assignment: result</p><p>        Binary Operation: +</p><p>          Identifier: a</p><p>          Binary Operation: *</p><p>            Identifier: b</p><p>            Number: 9</p><p>      Write Statement: x</p><p>      Return Statement</p><p>        Identifier: result</p><p>  Function Definition: test, Return Type: int</p><p>  Parameters:</p><p>      Param: value, Type: int</p><p>    Block:</p><p>      Variable Declaration: result, Type: int</p><p>      If Statement:</p><p>        Condition:</p><p>          Binary Operation: &lt;</p><p>            Identifier: value</p><p>            Number: 10</p><p>        If Body:</p><p>          Assignment: result</p><p>            Number: 1</p><p>          Write Statement: result</p><p>        Else If Statement:</p><p>          Condition:</p><p>            Binary Operation: ==</p><p>              Identifier: value</p><p>              Number: 10</p><p>          Else If Body:</p><p>            Assignment: result</p><p>              Number: 2</p><p>            Write Statement: result</p><p>          Else Statement:</p><p>            Assignment: result</p><p>              Number: 3</p><p>            Write Statement: result</p><p>      If Statement:</p><p>        Condition:</p><p>          Binary Operation: &amp;&amp;</p><p>            Binary Operation: &gt;</p><p>              Identifier: value</p><p>              Number: 5</p><p>            Binary Operation: &lt;</p><p>              Identifier: value</p><p>              Number: 15</p><p>        If Body:</p><p>          Assignment: result</p><p>            Number: 4</p><p>          Write Statement: result</p><p>      Return Statement</p><p>        Identifier: result</p><p>Main Function: main</p><p>  Block:</p><p>    Assignment: sum</p><p>      Function Call: add</p><p>  Argument List:</p><p>          Arg:</p><p>            Number: 6</p><p>          Arg:</p><p>            Number: 3</p><p>          Arg:</p><p>            Number: 9</p><p>    Array Declaration: arr, Type: int</p><p>  Array Sizes:</p><p>  Initializer:</p><p>        Assignment: </p><p>          Number: 10</p><p>        Number: 20</p><p>        Number: 30</p><p>        Number: 40</p><p>        Number: 50</p><p>        Number: 60</p><p>        Number: 70</p><p>    Assignment: x</p><p>      Number: 25</p><p>    Write Array Element: arr</p><p>      Number: 4</p><p>    Write Statement: sum</p><p>    Function Call: test</p><p>  Argument List:</p><p>        Arg:</p><p>          Number: 4</p><p>    Function Call: test</p><p>  Argument List:</p><p>        Arg:</p><p>          Number: 10</p><p>    Function Call: test</p><p>  Argument List:</p><p>        Arg:</p><p>          Number: 20</p><p>    Return Statement</p><p>      Number: 0</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-05 19:49:01 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3203096153</guid>
      </item>
      <item>
         <title>Duc Vo &amp; Ty Gehkre</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204840949</link>
         <description><![CDATA[<p><br/></p><p>main = (null) function (null)</p><p># First IF condition: if (a &gt; b)</p><p>t0 = a &gt; b cmp (null)</p><p>t0  = false goto else_1</p><p><br/></p><p># Nested IF condition: if (n &gt; 0)</p><p>t1 = n &gt; 0 cmp (null)</p><p>t1 = false goto ifEnd_1</p><p><br/></p><p># Inside inner IF: a = func1()</p><p>t2 = func1 call (null)</p><p>a = t2 assign (null)</p><p><br/></p><p># Write a</p><p>ifEnd_1 = (null) contBranch (null)</p><p>write = a output (null)</p><p><br/></p><p># Else condition: Write b</p><p>else_1 = (null) elseBranch (null)</p><p>b = (null) write (null)</p><p><br/></p><p><br/></p><p><br/></p><p># Function definition for func1</p><p>func1 = (null) function (null)</p><p>x = 25 assign (null)</p><p>x =(null) return (null)</p><p>exit = (null) exit (null)</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:17:58 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204840949</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204844621</link>
         <description><![CDATA[<p>Func1:</p><p>T7 = 25</p><p>T0 = T7</p><p>GOTO CONTINUE2</p><p><br/></p><p>Main:</p><p>T0 = a</p><p>T1 = b</p><p>T2 = T0 - T1</p><p>IF T2 &lt;= 0</p><p>Output T1</p><p>GOTO CONTINUE1</p><p>T3 = n</p><p>T4 = 0</p><p>T5 = T3 - T4</p><p>IF T5 &gt;= 0</p><p>GOTO Func1</p><p>CONTINUE2</p><p>Output T0</p><p>GOTO CONTINUE1</p><p>CONTINUE1 Output End</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:20:45 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204844621</guid>
      </item>
      <item>
         <title>Jacob Aguilar and Tracy Potter</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204846602</link>
         <description><![CDATA[<p># Function func1 definition</p><p>func1:</p><p>t0 = 25</p><p>x = t0</p><p>return x</p><p># Main control flow</p><p>t1 = a &gt; b</p><p>if_false t1 goto L1</p><p>t2 = n &gt; 0</p><p>if_false t2 goto L2</p><p>t3 = call func1, 0</p><p>a = t3</p><p>L2:</p><p>print a</p><p>goto L3</p><p>L1:</p><p>print b</p><p>L3:</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:21:51 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204846602</guid>
      </item>
      <item>
         <title>Eli Streitmatter and Nathan Dilla</title>
         <author>estreitmat</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204856486</link>
         <description><![CDATA[<p>arg declare</p><p>func addTwoNums</p><p>a0 param a</p><p>a1 param b</p><p>result declare</p><p>t2 = t0 + t1</p><p>result = t2</p><p>return result</p><p>func main</p><p>x declare</p><p>arr array, size 5</p><p>arr[3] = 2</p><p>t3 = arr[3]</p><p>x = t3</p><p>write x</p><p>return 0</p><p>arg = 1</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:28:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204856486</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204862778</link>
         <description><![CDATA[<p>t1 = a &gt; b</p><p>t2 = n &gt; 0</p><p>t3 = call func1</p><p>a = t3</p><p>t4 = a</p><p>t5 = b</p><p>// Pseudo-code to represent conditional writes</p><p>if t1 == true:</p><p>    if t2 == true:</p><p>        a = t3</p><p>    call write(t4)</p><p>else:</p><p>    call write(t5)</p><p>func func1:</p><p>    x = 25</p><p>    return x</p><p>end func</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:33:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204862778</guid>
      </item>
      <item>
         <title>Spencer Meren &amp; Evan Lloyd</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204871649</link>
         <description><![CDATA[<p>(Assuming that `a`, `b`, and `n` are of type int)</p><p><br/></p><p>IR for main:</p><p>i0 = a <a rel="noopener noreferrer nofollow" href="http://store.int">store.int</a> (null)</p><p>i1 = b <a rel="noopener noreferrer nofollow" href="http://store.int">store.int</a> (null)</p><p>i2 = i0 <a rel="noopener noreferrer nofollow" href="http://greaterThan.int">&gt;.int</a> i1</p><p>(null) = i2 startIf (null)</p><p>i3 = 0 <a rel="noopener noreferrer nofollow" href="http://assign.int">assign.int</a> (null)</p><p>i4 = n &lt;.int 0</p><p>(null) = i4 startIf (null)</p><p>(null) = func1 funcCall (null)</p><p>a = returnInt <a rel="noopener noreferrer nofollow" href="http://assign.int">store.int</a> (null)</p><p>(null) = (null) endIf (null)</p><p>i5 = a <a rel="noopener noreferrer nofollow" href="http://store.int">store.int</a> (null)</p><p>(null) = i5 <a rel="noopener noreferrer nofollow" href="http://write.int">write.int</a> (null)</p><p>(null) = (null) endIf (null)</p><p>(null) = (null) startElse (null)</p><p>i6 = b <a rel="noopener noreferrer nofollow" href="http://store.int">store.int</a> (null)</p><p>(null) = i6 <a rel="noopener noreferrer nofollow" href="http://write.int">write.int</a> (null)</p><p>(null) = (null) endElse (null)</p><p><br/></p><p><br/></p><p>IR for func():</p><p>(null) = (null) functionStart (null)</p><p>x = 25 <a rel="noopener noreferrer nofollow" href="http://assign.int">assign.int</a> (null)</p><p>returnInt = x <a rel="noopener noreferrer nofollow" href="http://store.int">store.int</a> (null)</p><p>(null) = (null) return (null)</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:39:43 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204871649</guid>
      </item>
      <item>
         <title>Eli Kaustinen</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204872960</link>
         <description><![CDATA[<p>if a &gt; b goto L1</p><p>goto L2</p><p>if n &gt; 0 goto</p><p>goto L5</p><p>t1 = call func1 </p><p>a = t1 </p><p>goto L5</p><p>write a</p><p>goto L3</p><p>func func1</p><p>x = 25</p><p>return x</p><p>endfunc</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-06 17:40:36 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3204872960</guid>
      </item>
      <item>
         <title>David Smical and Jordan Scott</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3205555023</link>
         <description><![CDATA[<p>start:</p><p>    if a &gt; b goto if1</p><p>    goto else1</p><p>if1:</p><p>    if n &gt; 0 goto if2</p><p>    goto write_a</p><p>if2:</p><p>    t1 = func1()</p><p>    a = t1</p><p>    goto write_a</p><p>write_a:</p><p>    write a</p><p>    goto end</p><p>else1:</p><p>    write b</p><p>    goto end</p><p>func1:</p><p>    t2 = 25</p><p>    return t2</p><p>end:</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-07 02:38:41 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3205555023</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3205708938</link>
         <description><![CDATA[<p>Main:</p><p>t0 = a </p><p>t1 = b</p><p><br/></p><p>if(t0 &gt; t1)</p><p>goto ifStatement1</p><p><br/></p><p>else</p><p>print t0</p><p><br/></p><p>ifStatment1:</p><p>t0 = n</p><p>if(n &gt; 0)</p><p>goto ifStatement2</p><p><br/></p><p>ifStatement2:</p><p>t0 = call func1</p><p><br/></p><p>func1:</p><p>t0 = x</p><p>x = 25</p><p>return x</p><p><br/></p><p><br/></p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-07 04:23:19 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3205708938</guid>
      </item>
      <item>
         <title>Grant Burk and Gabriel Marcelino</title>
         <author>grantburk109</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3207150347</link>
         <description><![CDATA[<p>t1 = x &gt; 5 </p><p>if t1 goto L1 </p><p>goto L2 </p><p><br/></p><p>L1: </p><p>x = x + 1 </p><p>goto L3 </p><p>L2:</p><p> x = x - 1 </p><p>L3:</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-07 22:08:50 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3207150347</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208512886</link>
         <description><![CDATA[<p>We have addressed all the points in our compiler project and made significant progress. We updated the lexer to include new keywords and symbols needed for arrays and `if/else` statements, ensuring that the language syntax is correctly recognized during the lexical analysis phase. This involved adding tokens for conditional statements, array indexing, and other operators to handle the new syntax elements effectively.</p><p>We enhanced the symbol table by implementing a linked list structure that supports scopes, which allows for proper variable declaration and resolution within their respective scopes, including nested blocks like functions and `if` statements. This hierarchical symbol table ensures that variables are correctly scoped and prevents naming conflicts across different parts of the program.</p><p>We reviewed our prior decisions about where variable declarations are allowed and decided to permit them in appropriate places such as within `if` blocks, which now introduce their own scopes. This flexibility allows for cleaner and more intuitive code, as variables can be declared closer to where they are used.</p><p>We updated the Abstract Syntax Tree (AST) to accurately represent `if` statements by adding the necessary node structures to reflect the conditional logic in the program. Additionally, we added AST generation code to handle these new structures effectively, ensuring that the parser builds the correct tree representation of the program's flow.</p><p>We modified the parsing rules to support `if` statements, ensuring that the parser generates appropriate AST nodes for them. This included handling the parsing of conditional expressions and block statements within the `if` and `else` branches. We also made sure that the parser correctly manages nested `if` statements and scopes.</p><p>Finally, we adapted optimization techniques that were previously applied to expressions and function blocks so that they also optimize `if` conditions and `if` blocks. This has improved the overall efficiency of the compiler by reducing unnecessary computations and simplifying control flow where possible. We implemented constant folding and dead code elimination within conditional statements to enhance performance.</p><p>Overall, these changes have significantly enhanced our compiler's capabilities, allowing it to handle more complex language features while maintaining efficient performance. We are confident that these updates will provide a solid foundation for further development and support for additional language constructs in the future.</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 16:15:04 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208512886</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208591336</link>
         <description><![CDATA[<p>Post team updates:</p><ol><li><p>Are you done with functions?</p></li><li><p>Have you started to work on if-statements?</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:22:33 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208591336</guid>
      </item>
      <item>
         <title>Nathan Dilla &amp; Eli Streitmatter</title>
         <author>nathancdilla</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208592209</link>
         <description><![CDATA[<ol><li><p>Yes</p></li><li><p>Yes</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:23:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208592209</guid>
      </item>
      <item>
         <title>Gabriel Marcelino and Grant Burk</title>
         <author>gabriel_marcelino</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208592268</link>
         <description><![CDATA[<ol><li><p>Only need to fix a few bugs, and finish optimizer.</p></li><li><p>Planning to start over the weekend.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:23:32 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208592268</guid>
      </item>
      <item>
         <title>Owen and Atu</title>
         <author>aambala26</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208593259</link>
         <description><![CDATA[<p>working on adding functionality of the current functions all teh way tot eh optimiser</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:24:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208593259</guid>
      </item>
      <item>
         <title>Atu and Owen</title>
         <author>aambala26</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208593583</link>
         <description><![CDATA[<ol><li><p>No </p></li><li><p>No</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:24:47 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208593583</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Kevin Tran, Carlos Llanes</title>
         <author>kdtran1111</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208594785</link>
         <description><![CDATA[<ol><li><p>We are done with TAC for function, working on generating code for it</p></li><li><p>We have started on AST for if statements, we will be working on semantic to generate TAC for it</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:25:49 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208594785</guid>
      </item>
      <item>
         <title>Duc Vo &amp; Ty Gehkre</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208606296</link>
         <description><![CDATA[<ol><li><p>Yes</p></li><li><p>Working on the boolean for now</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:35:53 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208606296</guid>
      </item>
      <item>
         <title>Colt and Teddy</title>
         <author>coltuhlenhopp</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208607753</link>
         <description><![CDATA[<ol><li><p>No but close</p></li><li><p>Kind of</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:37:16 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208607753</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208617167</link>
         <description><![CDATA[<ol><li><p>Yes</p></li><li><p>Yes</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:46:35 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208617167</guid>
      </item>
      <item>
         <title>Micheal Callahan &amp; Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208618222</link>
         <description><![CDATA[<ol><li><p>On Code generation. TAC is all done</p></li><li><p>No.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 17:47:33 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208618222</guid>
      </item>
      <item>
         <title>Spencer Meren &amp; Evan Lloyd</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208642404</link>
         <description><![CDATA[<ol><li><p>Yes, we are done with functions.</p></li><li><p>Yes, we have started work on if-statements.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 18:11:33 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208642404</guid>
      </item>
      <item>
         <title>Eli and Brent</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208677065</link>
         <description><![CDATA[<ol><li><p>No</p></li><li><p>No</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 18:43:17 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208677065</guid>
      </item>
      <item>
         <title>David Smical and Jordan Scott</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208869166</link>
         <description><![CDATA[<ol><li><p>Yes fully done</p></li><li><p>Yes creating the TAC for it</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-08 23:48:00 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3208869166</guid>
      </item>
      <item>
         <title>Jacob Aguilar &amp; Tracy Potter</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215475646</link>
         <description><![CDATA[<ol><li><p>We need to finish arrays</p></li><li><p>We have started planning out how we want to approach if statements</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-13 16:11:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215475646</guid>
      </item>
      <item>
         <title>Demonstrate IF-Statements Implementation</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215481815</link>
         <description><![CDATA[<p>Post a code snippet and screenshots of execution showing your compiler handling:</p><ul><li><p>simple if-statement</p></li><li><p>if-else statement</p></li><li><p>nested if-statement</p></li></ul><p>For example:</p><p><br/></p><pre><code>if (x == 5){</code></pre><pre><code>   doSomething();</code></pre><pre><code>}</code></pre><pre><code>-----------------------</code></pre><pre><code>if (x &gt; 1 &amp;&amp; x &lt; 10} {</code></pre><pre><code>    doSomething();</code></pre><pre><code>}</code></pre><pre><code>else {</code></pre><pre><code>    doSomethingElse();</code></pre><pre><code>}</code></pre><pre><code>---------------------------</code></pre><pre><code>if (!(b &gt; 0)) {</code></pre><pre><code>    if (n &gt; 100) {</code></pre><pre><code>        doThis();</code></pre><pre><code>    }</code></pre><pre><code>    else {</code></pre><pre><code>         if (c == 10) {</code></pre><pre><code>             doThat();</code></pre><pre><code>          }</code></pre><pre><code>    }</code></pre><pre><code>}</code></pre><p>      </p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-13 16:15:09 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215481815</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215489732</link>
         <description><![CDATA[<ul><li><p>lexer</p></li><li><p>AST for IF and its variations</p></li><li><p>syntax validation</p></li><li><p>Semantic validation</p></li><li><p>Produce TAC</p></li><li><p>Optimize IF (e.g. remove unreachable code)</p></li><li><p>Generate Assembly</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-13 16:19:43 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215489732</guid>
      </item>
      <item>
         <title>Duc Vo</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215564660</link>
         <description><![CDATA[<p>We haven't fully connect the == and the !, but the other should be working, andn we got our if-else up to the AST, with it being able to handle simple if, if-else, and nested if:</p><p><br/></p><p>if(test)</p><p> {  if(anotherTest)     </p><p>    {  x = 2; } </p><p>} else </p><p>{  x = 3; } </p><p>write x;</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128193323/5a382ff5e367441b60cff7a6e540f782/image.png" />
         <pubDate>2024-11-13 16:59:57 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215564660</guid>
      </item>
      <item>
         <title>Jacob Aguilar &amp; Tracy Potter</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215627668</link>
         <description><![CDATA[<p>When running simple if statements it goes through it fully yet it still goes through even if the condition is false, as for other statements it does not work</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723003715/cc1946b27865efcd515a54945b0710a1/image.png" />
         <pubDate>2024-11-13 17:36:36 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215627668</guid>
      </item>
      <item>
         <title>Owen Kroeger and Atu Ambala</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215628108</link>
         <description><![CDATA[<p>We're still working on fixing bugs with parameters, but this is our plan for the compiler handling if statements with the AST.</p><p><br/></p><p>if x &gt; 0:</p><p>    if y &gt; 0:</p><p>        z = 1</p><p>    else:</p><p>        z = -1</p><p>else:</p><p>    z = 0</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3031449312/c4c20776ad720194a451128717f613ab/image.png" />
         <pubDate>2024-11-13 17:36:56 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215628108</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215629953</link>
         <description><![CDATA[<p>We have our If statements working up until the optimized tac. We are still working on code generation and being able to compare floats.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1977228970/3a2f4aadb5a85cd7efc12e235cefb1be/CST405_Participation_Week_11.docx" />
         <pubDate>2024-11-13 17:38:11 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215629953</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Kevin Tran, Carlos Llanes</title>
         <author>jonathanrivas1956</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215633528</link>
         <description><![CDATA[<p>We have if, elif, and if else working up to the AST</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128308426/4743fd22dc444ae505b6c8c60ce30c08/image.png" />
         <pubDate>2024-11-13 17:40:29 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215633528</guid>
      </item>
      <item>
         <title>Grant Burk and Gabriel Marcelino </title>
         <author>grantburk109</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215873168</link>
         <description><![CDATA[<p>Still working on this...</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-13 20:35:43 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215873168</guid>
      </item>
      <item>
         <title>Spencer Meren &amp; Evan Lloyd</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215888712</link>
         <description><![CDATA[<p>AST can handle if statements and relational operators, but semantic and beyond do not have these features implemented. The AST in the screenshot was generated from the collowing code:</p><p><br/></p><p>int x;</p><p>int y;</p><p>x = 10;</p><p>if (x &gt; 0) {</p><p>    y = 4;</p><p>    if (y &gt; 4)</p><p>    {</p><p>        write y;     </p><p>    }</p><p>    else</p><p>    {</p><p>        write x;</p><p>    }</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3031552488/f68c9e1181636ab3df2851826e24ddf7/Screenshot_from_2024_11_13_13_46_14.png" />
         <pubDate>2024-11-13 20:50:47 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215888712</guid>
      </item>
      <item>
         <title>Hunter Jenkins and Jack Utzerath</title>
         <author>huntermjenkins</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215897592</link>
         <description><![CDATA[<p>Yes</p><p><br/></p><p>Yes</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-13 21:00:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215897592</guid>
      </item>
      <item>
         <title>Hunter Jenkins and Jack Utzerath</title>
         <author>huntermjenkins</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215900661</link>
         <description><![CDATA[<p>Still working on the AST, just started with the lexer for the if statements</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128564326/ede3b21a3bcb390675101596d789320a/image.png" />
         <pubDate>2024-11-13 21:03:44 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3215900661</guid>
      </item>
      <item>
         <title>Colt and Teddy</title>
         <author>coltuhlenhopp</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3216223018</link>
         <description><![CDATA[<p>We currently have the lexer and are working on the parser/ast.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1928569075/fa1cbcfaf65e0e41059908a2b285914b/image.png" />
         <pubDate>2024-11-14 02:12:20 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3216223018</guid>
      </item>
      <item>
         <title>Atu and Owen </title>
         <author>aambala26</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3216632321</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2127061910/01b4f2bd02cdafc9c747bfbc51fa8198/Screenshot_2024_11_14_at_00_35_29.png" />
         <pubDate>2024-11-14 07:35:48 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3216632321</guid>
      </item>
      <item>
         <title>Jordan Scott &amp; David Smical</title>
         <author>JordanScott25</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3218104910</link>
         <description><![CDATA[<p>So far we have basic if-statements, if-else, if-else if- else statement working in the code gen</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2124652096/7367597763a46d0ed584d46f290bc81b/Screenshot_2024_11_14_at_6_21_14_PM.png" />
         <pubDate>2024-11-15 01:25:21 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3218104910</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219213197</link>
         <description><![CDATA[<p>Still working on implementation of if statements</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-15 16:05:08 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219213197</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219213763</link>
         <description><![CDATA[<ol><li><p>Yes</p></li><li><p>Yes</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-15 16:05:34 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219213763</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219217962</link>
         <description><![CDATA[<p>Not all of you have demonstrated working <strong><em>if-statements</em></strong> on Wednesday.</p><p><br></p><p>Update your post on<strong><em> if,</em></strong> and repost today, demonstrating a more complete and debugged implementation</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-15 16:08:37 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219217962</guid>
      </item>
      <item>
         <title>Hunter Jenkins and Jack Utzerath</title>
         <author>huntermjenkins</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219255882</link>
         <description><![CDATA[<p>Have completed if statements up to the AST and Symbol Table</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>Formatted Output:</p><p>Global Scope (Level 0):</p><p>  Function main with return type void</p><p>  Function getX with return type int</p><p>  Function getY with return type int</p><p>Scope Level 1 (main):</p><p>  Variable result of type int</p><p>  Variable flag of type bool</p><p>Scope Level 1 (getX):</p><p>  Parameter value of type int</p><p><br/></p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128564326/26fb398576abd4560179ac2514aa8454/image.png" />
         <pubDate>2024-11-15 16:35:39 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219255882</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219294840</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1977228970/8a02e14039cec5327ae2ca43170f8e43/CST405_Participation_Week_11_2.docx" />
         <pubDate>2024-11-15 17:06:06 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219294840</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219296642</link>
         <description><![CDATA[<p>IF statements and nest if statements work!!Raw Line: "int x = 10"</p><p>Tokens: [int x = 10 </p><p>]</p><p>Raw Line: "int y = 5"</p><p>Tokens: [int y = 5 </p><p>]</p><p>Raw Line: ""</p><p>Tokens: [</p><p>]</p><p>Raw Line: "if (x &gt; 0) {"</p><p>Tokens: [if ( x &gt; 0 ) { </p><p>]</p><p>Raw Line: "   if (y &gt; 0){"</p><p>Tokens: [if ( y &gt; 0 ) { </p><p>]</p><p>Raw Line: "    write(y)"</p><p>Tokens: [write ( y ) </p><p>]</p><p>Raw Line: "   }else{"</p><p>Tokens: [} else { </p><p>]</p><p>Raw Line: "    write(x)"</p><p>Tokens: [write ( x ) </p><p>]</p><p>Raw Line: "   }"</p><p>Tokens: [} </p><p>]</p><p>Raw Line: "}else{"</p><p>Tokens: [} else { </p><p>]</p><p>Raw Line: "    write(0)"</p><p>Tokens: [write ( 0 ) </p><p>]</p><p>Raw Line: "}"</p><p>Tokens: [} </p><p>]</p><p>Parsing...</p><p>Finished Parsing! Beginning Optimization...</p><p>Finished Optimization! Outputting Tac...</p><p>Tac Complete! Compiling to MIPS...</p><p>MIPS code has been written to output.mips</p><p>Finished! 【=◈ ︿ ◈=】</p><p>int x = 10</p><p>int y = 5</p><p>if (x &gt; 0) {</p><p>   if (y &gt; 0){</p><p>    write(y)</p><p>   }else{</p><p>    write(x)</p><p>   }</p><p>}else{</p><p>    write(0)</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-15 17:07:31 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219296642</guid>
      </item>
      <item>
         <title>Owen Kroeger and Atu Ambala</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219319477</link>
         <description><![CDATA[<p>Here is some of the code that we have for if statements for our AST implementation.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3042233589/8284a73a4c782f280c89bef6b8fad762/sample.c" />
         <pubDate>2024-11-15 17:26:54 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219319477</guid>
      </item>
      <item>
         <title>Jacob Aguilar &amp; Tracy Potter</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219335124</link>
         <description><![CDATA[<p>We still are facing an issue where the code generator outputs code within an if statement that is false when its only supposed to when its true</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723003715/3de211bb2634142afc6b589672bf1a48/image.png" />
         <pubDate>2024-11-15 17:40:20 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219335124</guid>
      </item>
      <item>
         <title>Jonathan Rivas, Carlos Llanes, Kevin Tran</title>
         <author>jonathanrivas1956</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219340922</link>
         <description><![CDATA[<p>In the same spot as Wednesday, just starting the TAC for ifs</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128308426/be3d920ce7762dd541a0b8e1887e49d6/image.png" />
         <pubDate>2024-11-15 17:45:00 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219340922</guid>
      </item>
      <item>
         <title>Gabriel Marcelino and Grant Burk</title>
         <author>gabriel_marcelino</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219341130</link>
         <description><![CDATA[<p>Current AST for IF statements</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2126943065/8e091075ec550edb60ba19ac5802c08c/Screenshot_2024_11_15_at_10_44_39_AM.png" />
         <pubDate>2024-11-15 17:45:14 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219341130</guid>
      </item>
      <item>
         <title>Jordan Scott &amp; David Smical</title>
         <author>JordanScott25</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219391249</link>
         <description><![CDATA[<p>So far we have basic if-statements, if-else,  if-else, and if-else statements working in the code gen. Now we are working on the optimizer. </p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2124652096/b12018ea0fc3dd1262124f3ac78c85fc/Screenshot_2024_11_14_at_6_21_14_PM.png" />
         <pubDate>2024-11-15 18:29:50 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219391249</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219427516</link>
         <description><![CDATA[<p>Parser and AST done for IF</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3036778932/05d3d64213e7f76b56165ad3f24c68c2/image.png" />
         <pubDate>2024-11-15 19:04:58 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219427516</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219428232</link>
         <description><![CDATA[<p>Today we submitted our functions and arrays so we did not start on if yet</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-15 19:05:23 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219428232</guid>
      </item>
      <item>
         <title>Duc Vo</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219467004</link>
         <description><![CDATA[<p>We have the AST tree for the if-else, nested if and everything, we are planning to work on the TAC next</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128193323/2accf0f7efd0ed77865058067dab5389/image.png" />
         <pubDate>2024-11-15 19:49:47 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219467004</guid>
      </item>
      <item>
         <title>Evan Lloyd and Spencer Meren</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219780928</link>
         <description><![CDATA[<p>This is the current progress of our compiler. We have not made it to semantic analysis yet.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3043856181/3d0ff765545047aa0d03c89e54b9bb15/image.png" />
         <pubDate>2024-11-16 06:44:18 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3219780928</guid>
      </item>
      <item>
         <title></title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226559336</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://docs.google.com/document/d/1mUexL4rFo3SH2ms6porxyYbrrofqAq9Hs039YbdmfPA/edit?tab=t.0" />
         <pubDate>2024-11-20 16:43:16 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226559336</guid>
      </item>
      <item>
         <title>INDIVIDUALLY...</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226564299</link>
         <description><![CDATA[<p>Explain your adaptation of the code used to implement <em>IF statements</em>, to <em>WHILE statements</em>.</p><p><br></p><ol><li><p>How are the ASTs different?</p></li><li><p>How do you manage GOTO statements?</p></li><li><p>How are you handling complex IF/WHILE conditions?</p></li></ol><p><br></p><p>Show the code snippets that illustrate the above</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 16:46:11 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226564299</guid>
      </item>
      <item>
         <title>Jordan Scott &amp; David Smical</title>
         <author>JordanScott25</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226649188</link>
         <description><![CDATA[<ol><li><p>IF statements create a branching tree with conditional paths that execute once. WHILE statements create a loop structure that requires A condition checkpoint to return to; A loop body that can perform multiple times; and Jump instructions to return to the condition. </p></li><li><p>For IF statements, we use GOTOs to jump past false conditions. For WHILE statements, we need</p><ol><li><p>A label before the condition check</p></li><li><p>A GOTO at the end of the loop body to return to condition</p></li><li><p>A GOTO after the condition to exit the loop</p></li></ol></li><li><p>Complex Conditions: The code shows complex IF conditions like:</p><ol><li><p>if (x &gt; 100)</p><p>if (a != b)</p><p>if (c &amp;&amp; d)</p><p>if (e || f)</p></li><li><p>For WHILE statements, these would be handled similarly but with:</p><ol><li><p>Condition evaluation at the start of each iteration</p></li><li><p>Short-circuit evaluation for &amp;&amp; and || operators</p></li><li><p>Multiple comparison operators maintaining the same precedence rules</p></li><li><p>Jump instructions to either continue or exit the loop based on the condition result</p></li></ol></li></ol></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 17:38:46 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226649188</guid>
      </item>
      <item>
         <title>Owen Kroeger</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226650507</link>
         <description><![CDATA[<p>The IF statement AST has a condition boolean node and two child nodes, whereas the while has a condition node that is evaluated before each iteration and then a single child node that contains the starting point for the loop body. To manage goto statements, we are implementing labels to key points in the code, like the start of a loop or if statement. Complex ifs and whiles are managed with labels and breaking the conditions into smaller components and evaluating them separately.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3065611066/b63b19d2de709edb075b60dde9260098/loops.c" />
         <pubDate>2024-11-20 17:39:43 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226650507</guid>
      </item>
      <item>
         <title>Samuel Hardeman and Josh Slinkman</title>
         <author>samhardeman</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226657264</link>
         <description><![CDATA[<ol><li><p>If statements create an if node in the AST. If conditions are viewed as params (this might change). The code that is within the if statement is added to the body of the if node. While statements create while nodes, the code inside a while statement is added as body in the while node and the conditions that allow the while node to continue running will be in the parameters of the while node. Most of the heavy lifting will be done with the optimizer and tac generation to make the if statements and while loops useful.</p></li><li><p>GOTO statements are currently not in use as most logic is folded by the optimizer, but the next thing we are doing is implementing it into MIPS for on the fly running without the need for it to be optimized ahead of time.</p></li><li><p>Complex if-else and while statements are handled by breaking everything down into nodes. Also parentheses are used to break up conditions if the programmer desires to increase clarity.</p></li></ol><p>Code Snippet:</p><pre><code class="language-go">func parseIfStatement(tokens []string, lineNumber int) *Node {
	var newNode Node
	openParen := 0

	newNode.Type = "IF_STATEMENT"
	newNode.DType = "IF"

	if tokens[1] != "(" {
		fmt.Println("Expected \"(\" got " + tokens[1] + " on line " + strconv.Itoa(lineNumber))
		os.Exit(3)
	} else {
		openParen++
	}

	closeParenIndex := slices.Index(tokens, ")")

	if closeParenIndex == -1 {
		fmt.Println("Expected \")\" got " + tokens[2] + " on line " + strconv.Itoa(lineNumber))
		os.Exit(3)
	} else {
		openParen--
	}

	if closeParenIndex != 3 {
		conditions := tokens[2:closeParenIndex]

		ampersandIndex := slices.Index(tokens, "&amp;")

		if ampersandIndex == len(conditions)-1 {
			fmt.Println("Invalid \"&amp;\" usage! Line:", lineNumber)
			os.Exit(3)
		}

		pipeIndex := slices.Index(tokens, "|")

		if pipeIndex == len(conditions)-1 {
			fmt.Println("Invalid \"|\" usage! Line:", lineNumber)
			os.Exit(3)
		}

		for i := 1; i &lt; (len(conditions) + 1); i += 3 {
			newNode.Params = append(newNode.Params, parseConditions(conditions[i:i+2], lineNumber))
		}
	}</code></pre>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 17:44:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226657264</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226659081</link>
         <description><![CDATA[<ol><li><p>The ASTs will be different because for an If statement if the condition is true the code in the statement is then run and then the code continues from there, but for While loops the code will have to jump back to the condition</p></li><li><p>We will have to make it so that the GOTO for Whiles will jump back to the top of the While loop</p></li><li><p>Currently, If statements don't have their own scope and require curly brackets around the code block to keep things simple. For the sake of simplicity, we will keep this same structure for While loops.</p></li></ol><p><br></p><p>The image attached is our current grammar for Ifs and our grammar for While loops will likely be very similar to the way IfStmt looks.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1977228970/509adcd7cdd860894605fddee94cc8d9/image.png" />
         <pubDate>2024-11-20 17:45:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226659081</guid>
      </item>
      <item>
         <title>Grant Burk and Gabriel Marcelino</title>
         <author>grantburk109</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226740154</link>
         <description><![CDATA[<ol><li><p>Loops will only need conditional information and block info while the if statements also added a next for when if else statements were chained together</p></li><li><p>We will manage Goto statements by having custom tac before and after the body of the while statement </p></li><li><p>To handle complex IF/While statements, we compute the result of the condition before the conditional jump, this allows us to have complex conditional expressions in or IF and While statements</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 18:43:22 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226740154</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226883506</link>
         <description><![CDATA[<ol><li><p>The ASTs honestly shouldn't look different honestly as the AST is just the structure of the code and they both are just the name of the token and block of code underneath. The only difference is a while loop might have the goto to repetively call it.</p></li><li><p>We will manage goto by having that in the AST most likely which can then check the condition again to see if while needs to run.</p></li><li><p>Im assuming this is talking about multiple conditions which we havent dealt with completely but MIPS has built in and or so we should be fine</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 20:17:49 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226883506</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226885771</link>
         <description><![CDATA[<ol><li><p>The ASTs will be different as while will have a goto at the bottom.</p></li><li><p>The goto will have us go back up to check the condition to see if we run the block of code again.</p></li><li><p>We will handle the long conditions with and/or in MIPS.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-20 20:19:46 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3226885771</guid>
      </item>
      <item>
         <title>Carlos Llanes, Jonathan Rivas, Kevin Tran</title>
         <author>cllanesvil</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3227716763</link>
         <description><![CDATA[<p>To add while loops, we’ll build on how we handle if statements. Both use ConditionList for parsing conditions and StmntList for the block of statements. While if ASTs include fields for branches like ElseIfList and ElseStmnt, the while AST will only need a condition and loop body, making it simpler. The node will be of type NodeType_WhileLoop, compared to NodeType_IfStmnt for if statements.</p><p><br></p><p>For TAC, while loops require labels and GOTO statements to enable looping. We’ll generate a label at the start of the loop for the condition, a conditional jump to exit the loop if false, and a GOTO back to the start after the body executes. An end label ensures the program continues correctly after the loop ends.</p><p><br></p><p>We’ll reuse ConditionList to manage complex conditions for while, just like we do for if. This includes logical operators like AND and OR and nested conditions. The TAC generation will evaluate these, making sure both constructs handle conditions consistently.</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2130316482/f828f863bfe91a25491c348991ebb526/image.png" />
         <pubDate>2024-11-21 06:58:53 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3227716763</guid>
      </item>
      <item>
         <title>Kevin Tran</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3228899833</link>
         <description><![CDATA[<ol><li><p>it would be similar if not identical</p></li><li><p>goto will be similar to if but instead of go to next line when done, it will loop back to the beginning until the condition is false</p></li><li><p>We planning to use labels to distinguish between components of the conditions</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-21 21:39:21 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3228899833</guid>
      </item>
      <item>
         <title>INDIVIDUALLY...</title>
         <author>isac_artzi</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230214226</link>
         <description><![CDATA[<p>Confirm that the following are complete:</p><ul><li><p>Function parsing, AST, semantic analysis, Assembly</p></li><li><p>IF-Statements parsing, AST, semantic Analysis, Assembly</p></li><li><p>Started to implement WHILE-statements</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 16:05:36 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230214226</guid>
      </item>
      <item>
         <title>Ian Fletcher and Ben Carter</title>
         <author>ianf0347</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230222854</link>
         <description><![CDATA[<ol><li><p>We have the parser, AST, semantic analysis, and assembly generation working up to Ifs</p></li><li><p>If statement parsing, AST, semantic analysis, and assembly generation is done, we are just finishing the optimizer</p></li><li><p>We are just now starting While-statements</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 16:13:09 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230222854</guid>
      </item>
      <item>
         <title>Jordan Scott &amp; David Smical</title>
         <author>JordanScott25</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230229822</link>
         <description><![CDATA[<ul><li><p>Functions are working well. We can call the parameters inside the main function with variables and values.  The AST, semantic analysis, and assembly are good. </p></li><li><p>IF statements are working great, the only part the IF does not handle is nested IF statements. The AST and semantic analysis are good. We have not done the Assembly part for IF yet. </p></li><li><p>We had added the WHILE-Statements to the lexer and the parser.  We still adding it to the other functions of the compiler. </p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 16:18:54 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230229822</guid>
      </item>
      <item>
         <title>Duc Vo</title>
         <author>dougvo</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230260557</link>
         <description><![CDATA[<ol><li><p>We have parser, AST, semantic, assembly up to if-else</p></li><li><p>If-statement are good to go along with the boolean operands</p></li><li><p>we are now on the first steps for while-statement</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 16:42:11 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230260557</guid>
      </item>
      <item>
         <title>Micheal Callahan and Trevor Pope</title>
         <author>michealcallahan24</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230326431</link>
         <description><![CDATA[<ol><li><p>Functions are all the way done.</p></li><li><p>If-ElseIf-Else is finished for one condition but not multiple conditions.</p></li><li><p>Not started at all.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 17:41:31 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230326431</guid>
      </item>
      <item>
         <title>Gabriel Marcelino and Grant Burk</title>
         <author>gabriel_marcelino</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230487138</link>
         <description><![CDATA[<ol><li><p>All working</p></li><li><p>We are able to parse and generate code for if statements, finishing up nested ifs and optimizer.</p></li><li><p>We have not started while statements.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-22 20:25:42 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230487138</guid>
      </item>
      <item>
         <title>Hunter Jenkins</title>
         <author>huntermjenkins</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230619785</link>
         <description><![CDATA[<ul><li><p>All functions are working in the code.</p></li><li><p>If statements are up to the IR generation, my teammate jack will work on it from there</p></li><li><p>I have up the AST for while statements</p></li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-23 01:16:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230619785</guid>
      </item>
      <item>
         <title>Hunter Jenkins and Jack Utzerath</title>
         <author>huntermjenkins</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230621504</link>
         <description><![CDATA[<ul><li><p>The ASt contains different conditional branches that can be followed. So there is a false and true branch.</p></li><li><p>GOTOs are currently not working for while statements but are for IFs which can be seen in the screneshot</p></li><li><p>Everything is broken down into nodes and parentheses can be used to make them more complex in the input. The tac generates the corresponding statements so they can be done in the optimizer of real time with mips.</p></li></ul>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2128564326/065ab73c17bbd034cb60252400f45c9e/image.png" />
         <pubDate>2024-11-23 01:20:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230621504</guid>
      </item>
      <item>
         <title>Joshua Slinkman and Samuel Hardeman</title>
         <author>slinky5472</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230747316</link>
         <description><![CDATA[<ol><li><p>Our AST, semantic analysis, and assembly code is working up to if statements</p></li><li><p>We have if statements mostly implemented for our AST, semantic analysis, and assembly code</p></li><li><p>We will begin implementing loops soon</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-23 06:34:15 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3230747316</guid>
      </item>
      <item>
         <title>Teddy Coon and Colt Uhlenhopp</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231799203</link>
         <description><![CDATA[<p>I’ve made changes to the <strong>Lexer</strong> to include new keywords and symbols like if and else. The <strong>symbol table</strong> has been updated so it supports nested scopes, which are important for things like IF blocks. I’ve decided that <strong>variables</strong> can only be declared at the start of a block to keep things simple and organized. For <strong>free-standing statements</strong>, I’ve set clear rules to make sure they don’t mess up the program’s flow. Each <strong>IF block</strong> now has its own scope, meaning variables declared inside it won’t affect the rest of the program. The <strong>AST</strong> structure for IF statements has been designed with parts for the condition, true block, and optional false block, and I’ve added code for this in AST.h. I’ve also updated <strong>Bison</strong> so it knows how to handle IF statements and build the right AST structure. Finally, I’ve adjusted the existing optimization techniques so they work with IF conditions and blocks, just like they do with function blocks.</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-24 19:13:31 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231799203</guid>
      </item>
      <item>
         <title>Teddy Coon and Colt Uhlenhopp</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231801217</link>
         <description><![CDATA[<p>Making progress, but still running into problems with it not generating in the TAC</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1331551453/44b45542743041e4afd6cf65bcbdac5e/image.png" />
         <pubDate>2024-11-24 19:16:34 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231801217</guid>
      </item>
      <item>
         <title>Teddy Coon</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231802539</link>
         <description><![CDATA[<ol><li><p>The ASTs are largely the same, but we added new conditions for the if and else statements</p></li><li><p>GOTO statements are managed by generating labels and jumps, ensuring proper control flow for both constructs. Complex IF/WHILE conditions are handled with nested AST nodes for logical operators, maintaining clarity and precedence.</p></li><li><p> Complex IF/WHILE conditions are handled with nested AST nodes for logical operators, maintaining clarity and precedence.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-24 19:18:48 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231802539</guid>
      </item>
      <item>
         <title>Teddy Coon and Colt Uhlenhopp</title>
         <author>teddycoon</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231803414</link>
         <description><![CDATA[<ol><li><p>Function parsing, AST, semantic analysis and assembly is completed.</p></li><li><p>If statements parsing, AST, semantic analysis completed. TAC generation is broken currently</p></li><li><p>Have not started working on while statements </p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-24 19:20:24 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231803414</guid>
      </item>
      <item>
         <title>Colt Uhlenhopp</title>
         <author>coltuhlenhopp</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231840050</link>
         <description><![CDATA[<ol><li><p>The asts should be pretty similar, obviously with a few new conditions added. With WHILE, the code will ahve to keep jumping back to the condition with a goto.</p></li><li><p>With while loops, the goto statement must jump back to the condition at the top of the while loop.</p></li><li><p>For complex conditions, we are not using a seperate scope and curly brackets are needed to keep the code simple. While and IF loops will have a very similar structure.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-24 20:24:28 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3231840050</guid>
      </item>
      <item>
         <title>Jack Utzerath</title>
         <author>jackutzerath35</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3235596460</link>
         <description><![CDATA[<p>If statements are working, optimizer is working, but there is some bug we need to clean up before we turn it in.</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-11-26 22:26:05 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3235596460</guid>
      </item>
      <item>
         <title>Owen Kroeger and Atu Ambala</title>
         <author></author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3245445449</link>
         <description><![CDATA[<ol><li><p>Function parsing, AST, semantic analysis, optimization, and code generation are working for everything without parameters, but does not work with parameters.</p></li><li><p>If statements parsing, AST, and semantic work, but code generation does not.</p></li><li><p>Will start working on loops when the other two are finished.</p></li></ol>]]></description>
         <enclosure url="" />
         <pubDate>2024-12-04 00:00:00 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3245445449</guid>
      </item>
      <item>
         <title>Jacob Aguilar</title>
         <author>jiaguilar2103</author>
         <link>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3246706226</link>
         <description><![CDATA[<p>Function part is complete</p><p>If statements is mostly complete, only complex booleans need to be fixed</p><p>Looking into while loops</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-12-04 16:09:18 UTC</pubDate>
         <guid>https://padlet.com/isac_artzi/aghjksyx70x3niab/wish/3246706226</guid>
      </item>
   </channel>
</rss>
