1Created by PLY version 3.11 (http://www.dabeaz.com/ply) 2 3Grammar 4 5Rule 0 S' -> statement 6Rule 1 statement -> NAME EQUALS expression 7Rule 2 statement -> expression 8Rule 3 expression -> expression PLUS expression 9Rule 4 expression -> expression MINUS expression 10Rule 5 expression -> expression TIMES expression 11Rule 6 expression -> expression DIVIDE expression 12Rule 7 expression -> MINUS expression 13Rule 8 expression -> LPAREN expression RPAREN 14Rule 9 expression -> NUMBER 15Rule 10 expression -> NAME 16 17Terminals, with rules where they appear 18 19DIVIDE : 6 20EQUALS : 1 21LPAREN : 8 22MINUS : 4 7 23NAME : 1 10 24NUMBER : 9 25PLUS : 3 26RPAREN : 8 27TIMES : 5 28error : 29 30Nonterminals, with rules where they appear 31 32expression : 1 2 3 3 4 4 5 5 6 6 7 8 33statement : 0 34 35Parsing method: LALR 36 37state 0 38 39 (0) S' -> . statement 40 (1) statement -> . NAME EQUALS expression 41 (2) statement -> . expression 42 (3) expression -> . expression PLUS expression 43 (4) expression -> . expression MINUS expression 44 (5) expression -> . expression TIMES expression 45 (6) expression -> . expression DIVIDE expression 46 (7) expression -> . MINUS expression 47 (8) expression -> . LPAREN expression RPAREN 48 (9) expression -> . NUMBER 49 (10) expression -> . NAME 50 51 NAME shift and go to state 4 52 MINUS shift and go to state 1 53 LPAREN shift and go to state 3 54 NUMBER shift and go to state 2 55 56 statement shift and go to state 5 57 expression shift and go to state 6 58 59state 1 60 61 (7) expression -> MINUS . expression 62 (3) expression -> . expression PLUS expression 63 (4) expression -> . expression MINUS expression 64 (5) expression -> . expression TIMES expression 65 (6) expression -> . expression DIVIDE expression 66 (7) expression -> . MINUS expression 67 (8) expression -> . LPAREN expression RPAREN 68 (9) expression -> . NUMBER 69 (10) expression -> . NAME 70 71 MINUS shift and go to state 1 72 LPAREN shift and go to state 3 73 NUMBER shift and go to state 2 74 NAME shift and go to state 7 75 76 expression shift and go to state 8 77 78state 2 79 80 (9) expression -> NUMBER . 81 82 PLUS reduce using rule 9 (expression -> NUMBER .) 83 MINUS reduce using rule 9 (expression -> NUMBER .) 84 TIMES reduce using rule 9 (expression -> NUMBER .) 85 DIVIDE reduce using rule 9 (expression -> NUMBER .) 86 $end reduce using rule 9 (expression -> NUMBER .) 87 RPAREN reduce using rule 9 (expression -> NUMBER .) 88 89 90state 3 91 92 (8) expression -> LPAREN . expression RPAREN 93 (3) expression -> . expression PLUS expression 94 (4) expression -> . expression MINUS expression 95 (5) expression -> . expression TIMES expression 96 (6) expression -> . expression DIVIDE expression 97 (7) expression -> . MINUS expression 98 (8) expression -> . LPAREN expression RPAREN 99 (9) expression -> . NUMBER 100 (10) expression -> . NAME 101 102 MINUS shift and go to state 1 103 LPAREN shift and go to state 3 104 NUMBER shift and go to state 2 105 NAME shift and go to state 7 106 107 expression shift and go to state 9 108 109state 4 110 111 (1) statement -> NAME . EQUALS expression 112 (10) expression -> NAME . 113 114 EQUALS shift and go to state 10 115 PLUS reduce using rule 10 (expression -> NAME .) 116 MINUS reduce using rule 10 (expression -> NAME .) 117 TIMES reduce using rule 10 (expression -> NAME .) 118 DIVIDE reduce using rule 10 (expression -> NAME .) 119 $end reduce using rule 10 (expression -> NAME .) 120 121 122state 5 123 124 (0) S' -> statement . 125 126 127 128state 6 129 130 (2) statement -> expression . 131 (3) expression -> expression . PLUS expression 132 (4) expression -> expression . MINUS expression 133 (5) expression -> expression . TIMES expression 134 (6) expression -> expression . DIVIDE expression 135 136 $end reduce using rule 2 (statement -> expression .) 137 PLUS shift and go to state 11 138 MINUS shift and go to state 12 139 TIMES shift and go to state 14 140 DIVIDE shift and go to state 13 141 142 143state 7 144 145 (10) expression -> NAME . 146 147 PLUS reduce using rule 10 (expression -> NAME .) 148 MINUS reduce using rule 10 (expression -> NAME .) 149 TIMES reduce using rule 10 (expression -> NAME .) 150 DIVIDE reduce using rule 10 (expression -> NAME .) 151 $end reduce using rule 10 (expression -> NAME .) 152 RPAREN reduce using rule 10 (expression -> NAME .) 153 154 155state 8 156 157 (7) expression -> MINUS expression . 158 (3) expression -> expression . PLUS expression 159 (4) expression -> expression . MINUS expression 160 (5) expression -> expression . TIMES expression 161 (6) expression -> expression . DIVIDE expression 162 163 PLUS reduce using rule 7 (expression -> MINUS expression .) 164 MINUS reduce using rule 7 (expression -> MINUS expression .) 165 TIMES reduce using rule 7 (expression -> MINUS expression .) 166 DIVIDE reduce using rule 7 (expression -> MINUS expression .) 167 $end reduce using rule 7 (expression -> MINUS expression .) 168 RPAREN reduce using rule 7 (expression -> MINUS expression .) 169 170 ! PLUS [ shift and go to state 11 ] 171 ! MINUS [ shift and go to state 12 ] 172 ! TIMES [ shift and go to state 14 ] 173 ! DIVIDE [ shift and go to state 13 ] 174 175 176state 9 177 178 (8) expression -> LPAREN expression . RPAREN 179 (3) expression -> expression . PLUS expression 180 (4) expression -> expression . MINUS expression 181 (5) expression -> expression . TIMES expression 182 (6) expression -> expression . DIVIDE expression 183 184 RPAREN shift and go to state 15 185 PLUS shift and go to state 11 186 MINUS shift and go to state 12 187 TIMES shift and go to state 14 188 DIVIDE shift and go to state 13 189 190 191state 10 192 193 (1) statement -> NAME EQUALS . expression 194 (3) expression -> . expression PLUS expression 195 (4) expression -> . expression MINUS expression 196 (5) expression -> . expression TIMES expression 197 (6) expression -> . expression DIVIDE expression 198 (7) expression -> . MINUS expression 199 (8) expression -> . LPAREN expression RPAREN 200 (9) expression -> . NUMBER 201 (10) expression -> . NAME 202 203 MINUS shift and go to state 1 204 LPAREN shift and go to state 3 205 NUMBER shift and go to state 2 206 NAME shift and go to state 7 207 208 expression shift and go to state 16 209 210state 11 211 212 (3) expression -> expression PLUS . expression 213 (3) expression -> . expression PLUS expression 214 (4) expression -> . expression MINUS expression 215 (5) expression -> . expression TIMES expression 216 (6) expression -> . expression DIVIDE expression 217 (7) expression -> . MINUS expression 218 (8) expression -> . LPAREN expression RPAREN 219 (9) expression -> . NUMBER 220 (10) expression -> . NAME 221 222 MINUS shift and go to state 1 223 LPAREN shift and go to state 3 224 NUMBER shift and go to state 2 225 NAME shift and go to state 7 226 227 expression shift and go to state 17 228 229state 12 230 231 (4) expression -> expression MINUS . expression 232 (3) expression -> . expression PLUS expression 233 (4) expression -> . expression MINUS expression 234 (5) expression -> . expression TIMES expression 235 (6) expression -> . expression DIVIDE expression 236 (7) expression -> . MINUS expression 237 (8) expression -> . LPAREN expression RPAREN 238 (9) expression -> . NUMBER 239 (10) expression -> . NAME 240 241 MINUS shift and go to state 1 242 LPAREN shift and go to state 3 243 NUMBER shift and go to state 2 244 NAME shift and go to state 7 245 246 expression shift and go to state 18 247 248state 13 249 250 (6) expression -> expression DIVIDE . expression 251 (3) expression -> . expression PLUS expression 252 (4) expression -> . expression MINUS expression 253 (5) expression -> . expression TIMES expression 254 (6) expression -> . expression DIVIDE expression 255 (7) expression -> . MINUS expression 256 (8) expression -> . LPAREN expression RPAREN 257 (9) expression -> . NUMBER 258 (10) expression -> . NAME 259 260 MINUS shift and go to state 1 261 LPAREN shift and go to state 3 262 NUMBER shift and go to state 2 263 NAME shift and go to state 7 264 265 expression shift and go to state 19 266 267state 14 268 269 (5) expression -> expression TIMES . expression 270 (3) expression -> . expression PLUS expression 271 (4) expression -> . expression MINUS expression 272 (5) expression -> . expression TIMES expression 273 (6) expression -> . expression DIVIDE expression 274 (7) expression -> . MINUS expression 275 (8) expression -> . LPAREN expression RPAREN 276 (9) expression -> . NUMBER 277 (10) expression -> . NAME 278 279 MINUS shift and go to state 1 280 LPAREN shift and go to state 3 281 NUMBER shift and go to state 2 282 NAME shift and go to state 7 283 284 expression shift and go to state 20 285 286state 15 287 288 (8) expression -> LPAREN expression RPAREN . 289 290 PLUS reduce using rule 8 (expression -> LPAREN expression RPAREN .) 291 MINUS reduce using rule 8 (expression -> LPAREN expression RPAREN .) 292 TIMES reduce using rule 8 (expression -> LPAREN expression RPAREN .) 293 DIVIDE reduce using rule 8 (expression -> LPAREN expression RPAREN .) 294 $end reduce using rule 8 (expression -> LPAREN expression RPAREN .) 295 RPAREN reduce using rule 8 (expression -> LPAREN expression RPAREN .) 296 297 298state 16 299 300 (1) statement -> NAME EQUALS expression . 301 (3) expression -> expression . PLUS expression 302 (4) expression -> expression . MINUS expression 303 (5) expression -> expression . TIMES expression 304 (6) expression -> expression . DIVIDE expression 305 306 $end reduce using rule 1 (statement -> NAME EQUALS expression .) 307 PLUS shift and go to state 11 308 MINUS shift and go to state 12 309 TIMES shift and go to state 14 310 DIVIDE shift and go to state 13 311 312 313state 17 314 315 (3) expression -> expression PLUS expression . 316 (3) expression -> expression . PLUS expression 317 (4) expression -> expression . MINUS expression 318 (5) expression -> expression . TIMES expression 319 (6) expression -> expression . DIVIDE expression 320 321 PLUS reduce using rule 3 (expression -> expression PLUS expression .) 322 MINUS reduce using rule 3 (expression -> expression PLUS expression .) 323 $end reduce using rule 3 (expression -> expression PLUS expression .) 324 RPAREN reduce using rule 3 (expression -> expression PLUS expression .) 325 TIMES shift and go to state 14 326 DIVIDE shift and go to state 13 327 328 ! TIMES [ reduce using rule 3 (expression -> expression PLUS expression .) ] 329 ! DIVIDE [ reduce using rule 3 (expression -> expression PLUS expression .) ] 330 ! PLUS [ shift and go to state 11 ] 331 ! MINUS [ shift and go to state 12 ] 332 333 334state 18 335 336 (4) expression -> expression MINUS expression . 337 (3) expression -> expression . PLUS expression 338 (4) expression -> expression . MINUS expression 339 (5) expression -> expression . TIMES expression 340 (6) expression -> expression . DIVIDE expression 341 342 PLUS reduce using rule 4 (expression -> expression MINUS expression .) 343 MINUS reduce using rule 4 (expression -> expression MINUS expression .) 344 $end reduce using rule 4 (expression -> expression MINUS expression .) 345 RPAREN reduce using rule 4 (expression -> expression MINUS expression .) 346 TIMES shift and go to state 14 347 DIVIDE shift and go to state 13 348 349 ! TIMES [ reduce using rule 4 (expression -> expression MINUS expression .) ] 350 ! DIVIDE [ reduce using rule 4 (expression -> expression MINUS expression .) ] 351 ! PLUS [ shift and go to state 11 ] 352 ! MINUS [ shift and go to state 12 ] 353 354 355state 19 356 357 (6) expression -> expression DIVIDE expression . 358 (3) expression -> expression . PLUS expression 359 (4) expression -> expression . MINUS expression 360 (5) expression -> expression . TIMES expression 361 (6) expression -> expression . DIVIDE expression 362 363 PLUS reduce using rule 6 (expression -> expression DIVIDE expression .) 364 MINUS reduce using rule 6 (expression -> expression DIVIDE expression .) 365 TIMES reduce using rule 6 (expression -> expression DIVIDE expression .) 366 DIVIDE reduce using rule 6 (expression -> expression DIVIDE expression .) 367 $end reduce using rule 6 (expression -> expression DIVIDE expression .) 368 RPAREN reduce using rule 6 (expression -> expression DIVIDE expression .) 369 370 ! PLUS [ shift and go to state 11 ] 371 ! MINUS [ shift and go to state 12 ] 372 ! TIMES [ shift and go to state 14 ] 373 ! DIVIDE [ shift and go to state 13 ] 374 375 376state 20 377 378 (5) expression -> expression TIMES expression . 379 (3) expression -> expression . PLUS expression 380 (4) expression -> expression . MINUS expression 381 (5) expression -> expression . TIMES expression 382 (6) expression -> expression . DIVIDE expression 383 384 PLUS reduce using rule 5 (expression -> expression TIMES expression .) 385 MINUS reduce using rule 5 (expression -> expression TIMES expression .) 386 TIMES reduce using rule 5 (expression -> expression TIMES expression .) 387 DIVIDE reduce using rule 5 (expression -> expression TIMES expression .) 388 $end reduce using rule 5 (expression -> expression TIMES expression .) 389 RPAREN reduce using rule 5 (expression -> expression TIMES expression .) 390 391 ! PLUS [ shift and go to state 11 ] 392 ! MINUS [ shift and go to state 12 ] 393 ! TIMES [ shift and go to state 14 ] 394 ! DIVIDE [ shift and go to state 13 ] 395 396