# Compiler Design - assignment 3 #### Arjun R Nair CS6A 18 ### Augmented Grammar ``` AUGMENTED GRAMMAR: 0: S' -> S 1: S -> mul = ST 2: ST -> LIT 3: ST -> ST * ST 4: ST -> IDENT 5: ST -> ( ST ) 6: ST -> ST + ST 7: LETDIG -> ( LETTER 8: LETDIG -> LETDIG 9: LETDIG -> DIGIT ) 10: IDENT -> LETTER LETDIG 11: LIT -> ( DIGIT ( DIGIT ) ) 12: LETTER -> x 13: LETTER -> e 14: LETTER -> t 15: LETTER -> s 16: LETTER -> m 17: LETTER -> i 18: LETTER -> n 19: LETTER -> r 20: LETTER -> z 21: LETTER -> p 22: LETTER -> v 23: LETTER -> f 24: LETTER -> a 25: LETTER -> h 26: LETTER -> y 27: LETTER -> u 28: LETTER -> j 29: LETTER -> d 30: LETTER -> c 31: LETTER -> _ 32: LETTER -> g 33: LETTER -> o 34: LETTER -> l 35: LETTER -> k 36: LETTER -> q 37: LETTER -> w 38: LETTER -> b 39: DIGIT -> 4 40: DIGIT -> 7 41: DIGIT -> 3 42: DIGIT -> 6 43: DIGIT -> 2 44: DIGIT -> 0 45: DIGIT -> 8 46: DIGIT -> 9 47: DIGIT -> 1 48: DIGIT -> 5 ``` ### Terminals ``` TERMINALS: (, m, o, 2, t, i, 5, *, 0, 6, ), 3, 1, 9, q, k, _, h, a, u, +, w, e, r, l, 8, x, b, 7, f, 4, d, s, mul, n, c, p, =, v, z, j, g, y ``` ### Non-Terminals ``` NONTERMINALS: S, IDENT, LETTER, DIGIT, LETDIG, S', LIT, ST ``` ### Symbols ``` SYMBOLS: (, m, o, 2, t, i, 5, *, 0, 6, ), 3, 1, 9, q, k, _, h, IDENT, a, u, +, S', LIT, ST, w, e, LETTER, r, l, 8, x, b, 7, f, 4, S, d, DIGIT, s, mul, n, LETDIG, c, p, =, v, z, j, g, y ``` ### First ``` FIRST: S' = { mul } S = { mul } ST = { (, m, o, t, i, q, k, _, h, a, u, e, r, l, x, b, f, d, s, n, c, p, v, z, w, j, g, y } LETDIG = { (, 2, 8, 5, 0, 1, 3, 9, 7, 4, 6 } IDENT = { m, o, t, i, q, k, _, h, a, u, e, r, l, x, b, f, d, s, n, c, p, v, z, w, j, g, y } LIT = { ( } LETTER = { w, e, m, o, r, t, i, l, x, b, q, k, _, f, h, d, a, s, n, u, c, p, v, z, j, g, y } DIGIT = { 2, 8, 7, 5, 0, 1, 3, 9, 6, 4 } ``` ### Follow ``` FOLLOW: S' = { $ } S = { $ } ST = { ), $, +, * } LETDIG = { ), $, +, * } IDENT = { ), $, +, * } LIT = { ), $, +, * } LETTER = { (, 2, 8, 5, *, 0, 1, ), 3, 9, $, 7, 4, 6, + } DIGIT = { ), ( } ```