1[example { 2# -*- text -*- 3# Parsing Expression Grammar 'TEMPLATE'. 4# Generated for unknown, from file 'TEST' 5 6# 7# Grammar Start Expression 8# 9 10<<MAIN>>: 11 call sym_Expression 12 halt 13 14# 15# value Symbol 'AddOp' 16# 17 18sym_AddOp: 19# / 20# '-' 21# '+' 22 23 symbol_restore AddOp 24 found! jump found_7 25 loc_push 26 27 call choice_5 28 29 fail! value_clear 30 ok! value_leaf AddOp 31 symbol_save AddOp 32 error_nonterminal AddOp 33 loc_pop_discard 34 35found_7: 36 ok! ast_value_push 37 return 38 39choice_5: 40# / 41# '-' 42# '+' 43 44 error_clear 45 46 loc_push 47 error_push 48 49 input_next "t -" 50 ok! test_char "-" 51 52 error_pop_merge 53 ok! jump oknoast_4 54 55 loc_pop_rewind 56 loc_push 57 error_push 58 59 input_next "t +" 60 ok! test_char "+" 61 62 error_pop_merge 63 ok! jump oknoast_4 64 65 loc_pop_rewind 66 status_fail 67 return 68 69oknoast_4: 70 loc_pop_discard 71 return 72# 73# value Symbol 'Digit' 74# 75 76sym_Digit: 77# / 78# '0' 79# '1' 80# '2' 81# '3' 82# '4' 83# '5' 84# '6' 85# '7' 86# '8' 87# '9' 88 89 symbol_restore Digit 90 found! jump found_22 91 loc_push 92 93 call choice_20 94 95 fail! value_clear 96 ok! value_leaf Digit 97 symbol_save Digit 98 error_nonterminal Digit 99 loc_pop_discard 100 101found_22: 102 ok! ast_value_push 103 return 104 105choice_20: 106# / 107# '0' 108# '1' 109# '2' 110# '3' 111# '4' 112# '5' 113# '6' 114# '7' 115# '8' 116# '9' 117 118 error_clear 119 120 loc_push 121 error_push 122 123 input_next "t 0" 124 ok! test_char "0" 125 126 error_pop_merge 127 ok! jump oknoast_19 128 129 loc_pop_rewind 130 loc_push 131 error_push 132 133 input_next "t 1" 134 ok! test_char "1" 135 136 error_pop_merge 137 ok! jump oknoast_19 138 139 loc_pop_rewind 140 loc_push 141 error_push 142 143 input_next "t 2" 144 ok! test_char "2" 145 146 error_pop_merge 147 ok! jump oknoast_19 148 149 loc_pop_rewind 150 loc_push 151 error_push 152 153 input_next "t 3" 154 ok! test_char "3" 155 156 error_pop_merge 157 ok! jump oknoast_19 158 159 loc_pop_rewind 160 loc_push 161 error_push 162 163 input_next "t 4" 164 ok! test_char "4" 165 166 error_pop_merge 167 ok! jump oknoast_19 168 169 loc_pop_rewind 170 loc_push 171 error_push 172 173 input_next "t 5" 174 ok! test_char "5" 175 176 error_pop_merge 177 ok! jump oknoast_19 178 179 loc_pop_rewind 180 loc_push 181 error_push 182 183 input_next "t 6" 184 ok! test_char "6" 185 186 error_pop_merge 187 ok! jump oknoast_19 188 189 loc_pop_rewind 190 loc_push 191 error_push 192 193 input_next "t 7" 194 ok! test_char "7" 195 196 error_pop_merge 197 ok! jump oknoast_19 198 199 loc_pop_rewind 200 loc_push 201 error_push 202 203 input_next "t 8" 204 ok! test_char "8" 205 206 error_pop_merge 207 ok! jump oknoast_19 208 209 loc_pop_rewind 210 loc_push 211 error_push 212 213 input_next "t 9" 214 ok! test_char "9" 215 216 error_pop_merge 217 ok! jump oknoast_19 218 219 loc_pop_rewind 220 status_fail 221 return 222 223oknoast_19: 224 loc_pop_discard 225 return 226# 227# value Symbol 'Expression' 228# 229 230sym_Expression: 231# / 232# x 233# '\(' 234# (Expression) 235# '\)' 236# x 237# (Factor) 238# * 239# x 240# (MulOp) 241# (Factor) 242 243 symbol_restore Expression 244 found! jump found_46 245 loc_push 246 ast_push 247 248 call choice_44 249 250 fail! value_clear 251 ok! value_reduce Expression 252 symbol_save Expression 253 error_nonterminal Expression 254 ast_pop_rewind 255 loc_pop_discard 256 257found_46: 258 ok! ast_value_push 259 return 260 261choice_44: 262# / 263# x 264# '\(' 265# (Expression) 266# '\)' 267# x 268# (Factor) 269# * 270# x 271# (MulOp) 272# (Factor) 273 274 error_clear 275 276 ast_push 277 loc_push 278 error_push 279 280 call sequence_27 281 282 error_pop_merge 283 ok! jump ok_43 284 285 ast_pop_rewind 286 loc_pop_rewind 287 ast_push 288 loc_push 289 error_push 290 291 call sequence_40 292 293 error_pop_merge 294 ok! jump ok_43 295 296 ast_pop_rewind 297 loc_pop_rewind 298 status_fail 299 return 300 301ok_43: 302 ast_pop_discard 303 loc_pop_discard 304 return 305 306sequence_27: 307# x 308# '\(' 309# (Expression) 310# '\)' 311 312 loc_push 313 error_clear 314 315 error_push 316 317 input_next "t (" 318 ok! test_char "(" 319 320 error_pop_merge 321 fail! jump failednoast_29 322 ast_push 323 error_push 324 325 call sym_Expression 326 327 error_pop_merge 328 fail! jump failed_28 329 error_push 330 331 input_next "t )" 332 ok! test_char ")" 333 334 error_pop_merge 335 fail! jump failed_28 336 337 ast_pop_discard 338 loc_pop_discard 339 return 340 341failed_28: 342 ast_pop_rewind 343 344failednoast_29: 345 loc_pop_rewind 346 return 347 348sequence_40: 349# x 350# (Factor) 351# * 352# x 353# (MulOp) 354# (Factor) 355 356 ast_push 357 loc_push 358 error_clear 359 360 error_push 361 362 call sym_Factor 363 364 error_pop_merge 365 fail! jump failed_41 366 error_push 367 368 call kleene_37 369 370 error_pop_merge 371 fail! jump failed_41 372 373 ast_pop_discard 374 loc_pop_discard 375 return 376 377failed_41: 378 ast_pop_rewind 379 loc_pop_rewind 380 return 381 382kleene_37: 383# * 384# x 385# (MulOp) 386# (Factor) 387 388 loc_push 389 error_push 390 391 call sequence_34 392 393 error_pop_merge 394 fail! jump failed_38 395 loc_pop_discard 396 jump kleene_37 397 398failed_38: 399 loc_pop_rewind 400 status_ok 401 return 402 403sequence_34: 404# x 405# (MulOp) 406# (Factor) 407 408 ast_push 409 loc_push 410 error_clear 411 412 error_push 413 414 call sym_MulOp 415 416 error_pop_merge 417 fail! jump failed_35 418 error_push 419 420 call sym_Factor 421 422 error_pop_merge 423 fail! jump failed_35 424 425 ast_pop_discard 426 loc_pop_discard 427 return 428 429failed_35: 430 ast_pop_rewind 431 loc_pop_rewind 432 return 433# 434# value Symbol 'Factor' 435# 436 437sym_Factor: 438# x 439# (Term) 440# * 441# x 442# (AddOp) 443# (Term) 444 445 symbol_restore Factor 446 found! jump found_60 447 loc_push 448 ast_push 449 450 call sequence_57 451 452 fail! value_clear 453 ok! value_reduce Factor 454 symbol_save Factor 455 error_nonterminal Factor 456 ast_pop_rewind 457 loc_pop_discard 458 459found_60: 460 ok! ast_value_push 461 return 462 463sequence_57: 464# x 465# (Term) 466# * 467# x 468# (AddOp) 469# (Term) 470 471 ast_push 472 loc_push 473 error_clear 474 475 error_push 476 477 call sym_Term 478 479 error_pop_merge 480 fail! jump failed_58 481 error_push 482 483 call kleene_54 484 485 error_pop_merge 486 fail! jump failed_58 487 488 ast_pop_discard 489 loc_pop_discard 490 return 491 492failed_58: 493 ast_pop_rewind 494 loc_pop_rewind 495 return 496 497kleene_54: 498# * 499# x 500# (AddOp) 501# (Term) 502 503 loc_push 504 error_push 505 506 call sequence_51 507 508 error_pop_merge 509 fail! jump failed_55 510 loc_pop_discard 511 jump kleene_54 512 513failed_55: 514 loc_pop_rewind 515 status_ok 516 return 517 518sequence_51: 519# x 520# (AddOp) 521# (Term) 522 523 ast_push 524 loc_push 525 error_clear 526 527 error_push 528 529 call sym_AddOp 530 531 error_pop_merge 532 fail! jump failed_52 533 error_push 534 535 call sym_Term 536 537 error_pop_merge 538 fail! jump failed_52 539 540 ast_pop_discard 541 loc_pop_discard 542 return 543 544failed_52: 545 ast_pop_rewind 546 loc_pop_rewind 547 return 548# 549# value Symbol 'MulOp' 550# 551 552sym_MulOp: 553# / 554# '*' 555# '/' 556 557 symbol_restore MulOp 558 found! jump found_67 559 loc_push 560 561 call choice_65 562 563 fail! value_clear 564 ok! value_leaf MulOp 565 symbol_save MulOp 566 error_nonterminal MulOp 567 loc_pop_discard 568 569found_67: 570 ok! ast_value_push 571 return 572 573choice_65: 574# / 575# '*' 576# '/' 577 578 error_clear 579 580 loc_push 581 error_push 582 583 input_next "t *" 584 ok! test_char "*" 585 586 error_pop_merge 587 ok! jump oknoast_64 588 589 loc_pop_rewind 590 loc_push 591 error_push 592 593 input_next "t /" 594 ok! test_char "/" 595 596 error_pop_merge 597 ok! jump oknoast_64 598 599 loc_pop_rewind 600 status_fail 601 return 602 603oknoast_64: 604 loc_pop_discard 605 return 606# 607# value Symbol 'Number' 608# 609 610sym_Number: 611# x 612# ? 613# (Sign) 614# + 615# (Digit) 616 617 symbol_restore Number 618 found! jump found_80 619 loc_push 620 ast_push 621 622 call sequence_77 623 624 fail! value_clear 625 ok! value_reduce Number 626 symbol_save Number 627 error_nonterminal Number 628 ast_pop_rewind 629 loc_pop_discard 630 631found_80: 632 ok! ast_value_push 633 return 634 635sequence_77: 636# x 637# ? 638# (Sign) 639# + 640# (Digit) 641 642 ast_push 643 loc_push 644 error_clear 645 646 error_push 647 648 call optional_70 649 650 error_pop_merge 651 fail! jump failed_78 652 error_push 653 654 call poskleene_73 655 656 error_pop_merge 657 fail! jump failed_78 658 659 ast_pop_discard 660 loc_pop_discard 661 return 662 663failed_78: 664 ast_pop_rewind 665 loc_pop_rewind 666 return 667 668optional_70: 669# ? 670# (Sign) 671 672 loc_push 673 error_push 674 675 call sym_Sign 676 677 error_pop_merge 678 fail! loc_pop_rewind 679 ok! loc_pop_discard 680 status_ok 681 return 682 683poskleene_73: 684# + 685# (Digit) 686 687 loc_push 688 689 call sym_Digit 690 691 fail! jump failed_74 692 693loop_75: 694 loc_pop_discard 695 loc_push 696 error_push 697 698 call sym_Digit 699 700 error_pop_merge 701 ok! jump loop_75 702 status_ok 703 704failed_74: 705 loc_pop_rewind 706 return 707# 708# value Symbol 'Sign' 709# 710 711sym_Sign: 712# / 713# '-' 714# '+' 715 716 symbol_restore Sign 717 found! jump found_86 718 loc_push 719 720 call choice_5 721 722 fail! value_clear 723 ok! value_leaf Sign 724 symbol_save Sign 725 error_nonterminal Sign 726 loc_pop_discard 727 728found_86: 729 ok! ast_value_push 730 return 731# 732# value Symbol 'Term' 733# 734 735sym_Term: 736# (Number) 737 738 symbol_restore Term 739 found! jump found_89 740 loc_push 741 ast_push 742 743 call sym_Number 744 745 fail! value_clear 746 ok! value_reduce Term 747 symbol_save Term 748 error_nonterminal Term 749 ast_pop_rewind 750 loc_pop_discard 751 752found_89: 753 ok! ast_value_push 754 return 755 756# 757# 758}] 759