Benjamin Gavin cs 536 Section 1 Handout "Example for CSX-Lite" ***** ATTENTION ***** This should be printed with a fixed width printer font, i.e. CS laser printers (using print or lpr), I cannot guarantee it will look right with a variable width font. *********************** Section 1 --------- Context-Free Grammar for CSX-Lite 1) PROGRAM --> { STMTS } EOF 2) STMTS --> STMT STMTS 3) | lambda 4) STMT --> ID = EXPR ; 5) | IF ( EXPR ) STMT 6) EXPR --> EXPR + ID 7) | EXPR - ID 8) | ID Section 2 --------- State Declarations for CSX-Lite (LALR Parser) Note: '*' == Dot s0 = {PROGRAM --> *{ STMTS } EOF} s1 = {PROGRAM --> { *STMTS } EOF STMTS --> *STMT STMTS | lambda* STMT --> *ID = EXPR ; | *IF ( EXPR ) STMT} s2 = {PROGRAM --> { STMTS* } EOF} s3 = {STMTS --> STMT *STMTS STMTS --> *STMT STMTS | lambda* STMT --> *ID = EXPR ; | *IF ( EXPR ) STMT} s4 = {STMT --> ID *= EXPR ;} s5 = {STMT --> IF *( EXPR ) STMT} s6 = {PROGRAM --> { STMTS } *EOF} s7 = {STMTS --> STMT STMTS*} s8 = {STMT --> ID = *EXPR ; EXPR --> *EXPR + ID | *EXPR - ID | *ID } s9 = {STMT --> IF ( *EXPR ) STMT EXPR --> *EXPR + ID | *EXPR - ID | *ID } s10 = {PROGRAM --> { STMTS } EOF*} s11 = {STMT --> ID = EXPR *; EXPR --> EXPR *+ ID | EXPR *- ID } s12 = {EXPR --> ID*} s13 = {STMT --> IF ( EXPR *) STMT EXPR --> EXPR *+ ID | EXPR *- ID } s14 = {STMT --> ID = EXPR ;*} s15 = {EXPR --> EXPR + *ID} s16 = {EXPR --> EXPR - *ID} s17 = {STMT --> IF ( EXPR ) *STMT STMT --> *ID = EXPR ; | *IF ( EXPR ) STMT} s18 = {EXPR --> EXPR + ID*} s19 = {EXPR --> EXPR - ID*} s20 = {STMT --> IF ( EXPR ) STMT*} Section 3 --------- LALR (Shift/Reduce) Parser Uses Two Tables Action[C][T] = Action to do in State C w/ Token T GoTo[C][S] = State to go to from C given S is matched Note: Tables have been rotated 90 degrees to aide in representation in these wonderful text files :) ACTION TABLE: | "{" | "}" | IF | "(" | ")" | ID | = | + | - | ; | EOF | --------------------------------------------------------------- 0 | S | | | | | | | | | | | 1 | | R3 | S | | | S | | | | | | 2 | | S | | | | | | | | | | 3 | | R3 | S | | | S | | | | | | 4 | | | | | | | S | | | | | 5 | | | | S | | | | | | | | 6 | | | | | | | | | | | A | 7 | | R2 | | | | | | | | | | 8 | | | | | | S | | | | | | 9 | | | | | | S | | | | | | 10 | | | | | | | | | | | | 11 | | | | | | | | S | S | S | | 12 | | | | | R8 | | | R8 | R8 | R8 | | 13 | | | | | S | | | S | S | | | 14 | | R4 | R4 | | | R4 | | | | | | 15 | | | | | | S | | | | | | 16 | | | | | | S | | | | | | 17 | | | S | | | S | | | | | | 18 | | | | | R6 | | | R6 | R6 | R6 | | 19 | | | | | R7 | | | R7 | R7 | R7 | | 20 | | R5 | R5 | | | | | | | R5 | | --------------------------------------------------------------- ( Key S = Shift, Ri = Reduce Production i) GOTO TABLE: ( Sorry this one is slightly squished, needed to fit it in 80 characters ) | } | { | IF | ( | ) | ID | = | + | - | ; | EOF | STMTS | STMT | EXPR | -------------------------------------------------------------------------- 0 | 1 | | | | | | | | | | | | | | 1 | | | 5 | | | 4 | | | | | | 2 | 3 | | 2 | | 6 | | | | | | | | | | | | | 3 | | | 5 | | | 4 | | | | | | 7 | 3 | | 4 | | | | | | | 8 | | | | | | | | 5 | | | | 9 | | | | | | | | | | | 6 | | | | | | | | | | | 10 | | | | 7 | | | | | | | | | | | | | | | 8 | | | | | | 12 | | | | | | | | 11 | 9 | | | | | | 12 | | | | | | | | 13 | 10 | | | | | | | | | | | | | | | 11 | | | | | | | |15 |16 |14 | | | | | 12 | | | | | | | | | | | | | | | 13 | | | | |17 | | |15 |16 | | | | | | 14 | | | | | | | | | | | | | | | 15 | | | 5 | | | 18 | | | | | | | | | 16 | | | | | | 19 | | | | | | | | | 17 | | | | | | 4 | | | | | | | 20 | | 18 | | | | | | | | | | | | | | | 19 | | | | | | | | | | | | | | | 20 | | | | | | | | | | | | | | | --------------------------------------------------------------------------