Class: BELParser::Parsers::Expression::ObservedTerm::Parser
- Inherits:
-
Object
- Object
- BELParser::Parsers::Expression::ObservedTerm::Parser
- Defined in:
- lib/bel_parser/parsers/expression/observed_term.rb
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(content) ⇒ Parser
constructor
A new instance of Parser.
Methods included from Tracer
Methods included from AST::Sexp
#annotation_definition, #argument, #blank_line, build, #comment, #comment_line, #document_property, #domain, #function, #identifier, #keyword, #list, #list_item, #multi_identifier, #name, #namespace_definition, #nested_statement, #object, #observed_term, #parameter, #pattern, #prefix, #relationship, #set, #simple_statement, #statement, #string, #subject, #term, #unset, #uri, #url, #value
Methods included from Buffer
Constructor Details
#initialize(content) ⇒ Parser
Returns a new instance of Parser.
30652 30653 30654 30655 30656 30657 30658 30659 30660 30661 30662 30663 30664 30665 30666 30667 30668 30669 30670 30671 30672 30673 30674 30675 30676 30677 30678 30679 30680 30681 30682 30683 30684 30685 30686 30687 30688 30689 30690 30691 30692 30693 30694 30695 30696 30697 30698 30699 30700 30701 30702 30703 30704 30705 30706 30707 30708 30709 30710 30711 30712 30713 30714 30715 30716 30717 30718 30719 30720 30721 30722 30723 30724 30725 30726 30727 30728 30729 30730 30731 30732 30733 30734 30735 30736 30737 30738 30739 30740 30741 30742 30743 30744 30745 30746 30747 30748 30749 30750 30751 30752 30753 30754 30755 30756 30757 30758 30759 30760 30761 30762 30763 30764 30765 30766 30767 30768 30769 30770 30771 30772 30773 30774 30775 30776 30777 30778 30779 30780 30781 30782 30783 30784 30785 30786 30787 30788 30789 30790 30791 30792 30793 30794 30795 30796 30797 30798 30799 30800 30801 30802 30803 30804 30805 30806 30807 30808 30809 30810 30811 30812 30813 30814 30815 30816 30817 30818 30819 30820 30821 30822 30823 30824 30825 30826 30827 30828 30829 30830 30831 30832 30833 30834 30835 30836 30837 30838 30839 30840 30841 30842 30843 30844 30845 30846 30847 30848 30849 30850 30851 30852 30853 30854 30855 30856 30857 30858 30859 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 30872 30873 30874 30875 30876 30877 30878 30879 30880 30881 30882 30883 30884 30885 30886 30887 30888 30889 30890 30891 30892 30893 30894 30895 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 30908 30909 30910 30911 30912 30913 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30926 30927 30928 30929 30930 30931 30932 30933 30934 30935 30936 30937 30938 30939 30940 30941 30942 30943 30944 30945 30946 30947 30948 30949 30950 30951 30952 30953 30954 30955 30956 30957 30958 30959 30960 30961 30962 30963 30964 30965 30966 30967 30968 30969 30970 30971 30972 30973 30974 30975 30976 30977 30978 30979 30980 30981 30982 30983 30984 30985 30986 30987 30988 30989 30990 30991 30992 30993 30994 30995 30996 30997 30998 30999 31000 31001 31002 31003 31004 31005 31006 31007 31008 31009 31010 31011 31012 31013 31014 31015 31016 31017 31018 31019 31020 31021 31022 31023 31024 31025 31026 31027 31028 31029 31030 31031 31032 31033 31034 31035 31036 31037 31038 31039 31040 31041 31042 31043 31044 31045 31046 31047 31048 31049 31050 31051 31052 31053 31054 31055 31056 31057 31058 31059 31060 31061 31062 31063 31064 31065 31066 31067 31068 31069 31070 31071 31072 31073 31074 31075 31076 31077 31078 31079 31080 31081 31082 31083 31084 31085 31086 31087 31088 31089 31090 31091 31092 31093 31094 31095 31096 31097 31098 31099 31100 31101 31102 31103 31104 31105 31106 31107 31108 31109 31110 31111 31112 31113 31114 31115 31116 31117 31118 31119 31120 31121 31122 31123 31124 31125 31126 31127 31128 31129 31130 31131 31132 31133 31134 31135 31136 31137 31138 31139 31140 31141 31142 31143 31144 31145 31146 31147 31148 31149 31150 31151 31152 31153 31154 31155 31156 31157 31158 31159 31160 31161 31162 31163 31164 31165 31166 31167 31168 31169 31170 31171 31172 31173 31174 31175 31176 31177 31178 31179 31180 31181 31182 31183 31184 31185 31186 31187 31188 31189 31190 31191 31192 31193 31194 31195 31196 31197 31198 31199 31200 31201 31202 31203 31204 31205 31206 31207 31208 31209 31210 31211 31212 31213 31214 31215 31216 31217 31218 31219 31220 31221 31222 31223 31224 31225 31226 31227 31228 31229 31230 31231 31232 31233 31234 31235 31236 31237 31238 31239 31240 31241 31242 31243 31244 31245 31246 31247 31248 31249 31250 31251 31252 31253 31254 31255 31256 31257 31258 31259 31260 31261 31262 31263 31264 31265 31266 31267 31268 31269 31270 31271 31272 31273 31274 31275 31276 31277 31278 31279 31280 31281 31282 31283 31284 31285 31286 31287 31288 31289 31290 31291 31292 31293 31294 31295 31296 31297 31298 31299 31300 31301 31302 31303 31304 31305 31306 31307 31308 31309 31310 31311 31312 31313 31314 31315 31316 31317 31318 31319 31320 31321 31322 31323 31324 31325 31326 31327 31328 31329 31330 31331 31332 31333 31334 31335 31336 31337 31338 31339 31340 31341 31342 31343 31344 31345 31346 31347 31348 31349 31350 31351 31352 31353 31354 31355 31356 31357 31358 31359 31360 31361 31362 31363 31364 31365 31366 31367 31368 31369 31370 31371 31372 31373 31374 31375 31376 31377 31378 31379 31380 31381 31382 31383 31384 31385 31386 31387 31388 31389 31390 31391 31392 31393 31394 31395 31396 31397 31398 31399 31400 31401 31402 31403 31404 31405 31406 31407 31408 31409 31410 31411 31412 31413 31414 31415 31416 31417 31418 31419 31420 31421 31422 31423 31424 31425 31426 31427 31428 31429 31430 31431 31432 31433 31434 31435 31436 31437 31438 31439 31440 31441 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 31454 31455 31456 31457 31458 31459 31460 31461 31462 31463 31464 31465 31466 31467 31468 31469 31470 31471 31472 31473 31474 31475 31476 31477 31478 31479 31480 31481 31482 31483 31484 31485 31486 31487 31488 31489 31490 31491 31492 31493 31494 31495 31496 31497 31498 31499 31500 31501 31502 31503 31504 31505 31506 31507 31508 31509 31510 31511 31512 31513 31514 31515 31516 31517 31518 31519 31520 31521 31522 31523 31524 31525 31526 31527 31528 31529 31530 31531 31532 31533 31534 31535 31536 31537 31538 31539 31540 31541 31542 31543 31544 31545 31546 31547 31548 31549 31550 31551 31552 31553 31554 31555 31556 31557 31558 31559 31560 31561 31562 31563 31564 31565 31566 31567 31568 31569 31570 31571 31572 31573 31574 31575 31576 31577 31578 31579 31580 31581 31582 31583 31584 31585 31586 31587 31588 31589 31590 31591 31592 31593 31594 31595 31596 31597 31598 31599 31600 31601 31602 31603 31604 31605 31606 31607 31608 31609 31610 31611 31612 31613 31614 31615 31616 31617 31618 31619 31620 31621 31622 31623 31624 31625 31626 31627 31628 31629 31630 31631 31632 31633 31634 31635 31636 31637 31638 31639 31640 31641 31642 31643 31644 31645 31646 31647 31648 31649 31650 31651 31652 31653 31654 31655 31656 31657 31658 31659 31660 31661 31662 31663 31664 31665 31666 31667 31668 31669 31670 31671 31672 31673 31674 31675 31676 31677 31678 31679 31680 31681 31682 31683 31684 31685 31686 31687 31688 31689 31690 31691 31692 31693 31694 31695 31696 31697 31698 31699 31700 31701 31702 31703 31704 31705 31706 31707 31708 31709 31710 31711 31712 31713 31714 31715 31716 31717 31718 31719 31720 31721 31722 31723 31724 31725 31726 31727 31728 31729 31730 31731 31732 31733 31734 31735 31736 31737 31738 31739 31740 31741 31742 31743 31744 31745 31746 31747 31748 31749 31750 31751 31752 31753 31754 31755 31756 31757 31758 31759 31760 31761 31762 31763 31764 31765 31766 31767 31768 31769 31770 31771 31772 31773 31774 31775 31776 31777 31778 31779 31780 31781 31782 31783 31784 31785 31786 31787 31788 31789 31790 31791 31792 31793 31794 31795 31796 31797 31798 31799 31800 31801 31802 31803 31804 31805 31806 31807 31808 31809 31810 31811 31812 31813 31814 31815 31816 31817 31818 31819 31820 31821 31822 31823 31824 31825 31826 31827 31828 31829 31830 31831 31832 31833 31834 31835 31836 31837 31838 31839 31840 31841 31842 31843 31844 31845 31846 31847 31848 31849 31850 31851 31852 31853 31854 31855 31856 31857 31858 31859 31860 31861 31862 31863 31864 31865 31866 31867 31868 31869 31870 31871 31872 31873 31874 31875 31876 31877 31878 31879 31880 31881 31882 31883 31884 31885 31886 31887 31888 31889 31890 31891 31892 31893 31894 31895 31896 31897 31898 31899 31900 31901 31902 31903 31904 31905 31906 31907 31908 31909 31910 31911 31912 31913 31914 31915 31916 31917 31918 31919 31920 31921 31922 31923 31924 31925 31926 31927 31928 31929 31930 31931 31932 31933 31934 31935 31936 31937 31938 31939 31940 31941 31942 31943 31944 31945 31946 31947 31948 31949 31950 31951 31952 31953 31954 31955 31956 31957 31958 31959 31960 31961 31962 31963 31964 31965 31966 31967 31968 31969 31970 31971 31972 31973 31974 31975 31976 31977 31978 31979 31980 31981 31982 31983 31984 31985 31986 31987 31988 31989 31990 31991 31992 31993 31994 31995 31996 31997 31998 31999 32000 32001 32002 32003 32004 32005 32006 32007 32008 32009 32010 32011 32012 32013 32014 32015 32016 32017 32018 32019 32020 32021 32022 32023 32024 32025 32026 32027 32028 32029 32030 32031 32032 32033 32034 32035 32036 32037 32038 32039 32040 32041 32042 32043 32044 32045 32046 32047 32048 32049 32050 32051 32052 32053 32054 32055 32056 32057 32058 32059 32060 32061 32062 32063 32064 32065 32066 32067 32068 32069 32070 32071 32072 32073 32074 32075 32076 32077 32078 32079 32080 32081 32082 32083 32084 32085 32086 32087 32088 32089 32090 32091 32092 32093 32094 32095 32096 32097 32098 32099 32100 32101 32102 32103 32104 32105 32106 32107 32108 32109 32110 32111 32112 32113 32114 32115 32116 32117 32118 32119 32120 32121 32122 32123 32124 32125 32126 32127 32128 32129 32130 32131 32132 32133 32134 32135 32136 32137 32138 32139 32140 32141 32142 32143 32144 32145 32146 32147 32148 32149 32150 32151 32152 32153 32154 32155 32156 32157 32158 32159 32160 32161 32162 32163 32164 32165 32166 32167 32168 32169 32170 32171 32172 32173 32174 32175 32176 32177 32178 32179 32180 32181 32182 32183 32184 32185 32186 32187 32188 32189 32190 32191 32192 32193 32194 32195 32196 32197 32198 32199 32200 32201 32202 32203 32204 32205 32206 32207 32208 32209 32210 32211 32212 32213 32214 32215 32216 32217 32218 32219 32220 32221 32222 32223 32224 32225 32226 32227 32228 32229 32230 32231 32232 32233 32234 32235 32236 32237 32238 32239 32240 32241 32242 32243 32244 32245 32246 32247 32248 32249 32250 32251 32252 32253 32254 32255 32256 32257 32258 32259 32260 32261 32262 32263 32264 32265 32266 32267 32268 32269 32270 32271 32272 32273 32274 32275 32276 32277 32278 32279 32280 32281 32282 32283 32284 32285 32286 32287 32288 32289 32290 32291 32292 32293 32294 32295 32296 32297 32298 32299 32300 32301 32302 32303 32304 32305 32306 32307 32308 32309 32310 32311 32312 32313 32314 32315 32316 32317 32318 32319 32320 32321 32322 32323 32324 32325 32326 32327 32328 32329 32330 32331 32332 32333 32334 32335 32336 32337 32338 32339 32340 32341 32342 32343 32344 32345 32346 |
# File 'lib/bel_parser/parsers/expression/observed_term.rb', line 30652 def initialize(content) @content = content # begin: ragel class << self attr_accessor :_bel_trans_keys private :_bel_trans_keys, :_bel_trans_keys= end self._bel_trans_keys = [ 0, 0, 33, 126, 9, 126, 9, 40, 9, 126, 9, 122, 9, 34, 34, 92, 34, 92, 9, 44, 9, 44, 9, 126, 33, 126, 9, 44, 47, 47, 10, 10, 9, 126, 33, 126, 10, 126, 0, 0, 9, 126, 9, 126, 9, 122, 9, 122, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 33, 126, 48, 122, 9, 34, 34, 92, 34, 92, 0, 0, 9, 122, 9, 122, 9, 34, 34, 92, 34, 92, 0, 0, 33, 126, 9, 126, 9, 40, 9, 126, 9, 122, 9, 34, 34, 92, 34, 92, 9, 44, 9, 44, 9, 126, 33, 126, 9, 44, 9, 126, 9, 126, 9, 126, 9, 122, 9, 122, 9, 126, 0, 0, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 33, 126, 9, 126, 9, 40, 9, 126, 9, 122, 9, 34, 34, 92, 34, 92, 9, 44, 9, 44, 9, 126, 33, 126, 9, 44, 9, 126, 9, 126, 9, 126, 9, 122, 9, 122, 9, 126, 0, 0, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 47, 47, 47, 47, 10, 10, 9, 47, 0, 0, 10, 10, 9, 126, 10, 126, 9, 44, 9, 44, 9, 126, 9, 34, 9, 34, 10, 92, 10, 92, 34, 92, 9, 44, 9, 47, 10, 47, 10, 10, 10, 10, 9, 126, 9, 126, 10, 126, 10, 126, 9, 126, 9, 126, 9, 122, 9, 122, 9, 126, 10, 126, 0, 0, 10, 122, 0, 0, 0, 0, 10, 10, 0, 0, 10, 122, 10, 122, 9, 122, 9, 122, 9, 34, 0, 0, 33, 126, 10, 10, 0, 0, 10, 126, 10, 10, 0, 0, 0 ] class << self attr_accessor :_bel_key_spans private :_bel_key_spans, :_bel_key_spans= end self._bel_key_spans = [ 0, 94, 118, 32, 118, 114, 26, 59, 59, 36, 36, 118, 94, 36, 1, 1, 118, 94, 117, 0, 118, 118, 114, 114, 118, 118, 118, 118, 118, 118, 118, 118, 94, 75, 26, 59, 59, 0, 114, 114, 26, 59, 59, 0, 94, 118, 32, 118, 114, 26, 59, 59, 36, 36, 118, 94, 36, 118, 118, 118, 114, 114, 118, 0, 118, 118, 118, 118, 118, 118, 118, 94, 118, 32, 118, 114, 26, 59, 59, 36, 36, 118, 94, 36, 118, 118, 118, 114, 114, 118, 0, 118, 118, 118, 118, 118, 118, 118, 1, 1, 1, 39, 0, 1, 118, 117, 36, 36, 118, 26, 26, 83, 83, 59, 36, 39, 38, 1, 1, 118, 118, 117, 117, 118, 118, 114, 114, 118, 117, 0, 113, 0, 0, 1, 0, 113, 113, 114, 114, 26, 0, 94, 1, 0, 117, 1, 0 ] class << self attr_accessor :_bel_index_offsets private :_bel_index_offsets, :_bel_index_offsets= end self._bel_index_offsets = [ 0, 0, 95, 214, 247, 366, 481, 508, 568, 628, 665, 702, 821, 916, 953, 955, 957, 1076, 1171, 1289, 1290, 1409, 1528, 1643, 1758, 1877, 1996, 2115, 2234, 2353, 2472, 2591, 2710, 2805, 2881, 2908, 2968, 3028, 3029, 3144, 3259, 3286, 3346, 3406, 3407, 3502, 3621, 3654, 3773, 3888, 3915, 3975, 4035, 4072, 4109, 4228, 4323, 4360, 4479, 4598, 4717, 4832, 4947, 5066, 5067, 5186, 5305, 5424, 5543, 5662, 5781, 5900, 5995, 6114, 6147, 6266, 6381, 6408, 6468, 6528, 6565, 6602, 6721, 6816, 6853, 6972, 7091, 7210, 7325, 7440, 7559, 7560, 7679, 7798, 7917, 8036, 8155, 8274, 8393, 8395, 8397, 8399, 8439, 8440, 8442, 8561, 8679, 8716, 8753, 8872, 8899, 8926, 9010, 9094, 9154, 9191, 9231, 9270, 9272, 9274, 9393, 9512, 9630, 9748, 9867, 9986, 10101, 10216, 10335, 10453, 10454, 10568, 10569, 10570, 10572, 10573, 10687, 10801, 10916, 11031, 11058, 11059, 11154, 11156, 11157, 11275, 11277 ] class << self attr_accessor :_bel_indicies private :_bel_indicies, :_bel_indicies= end self._bel_indicies = [ 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 3, 3, 3, 3, 1, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 6, 1, 8, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 10, 11, 10, 10, 10, 10, 7, 7, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 12, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 7, 8, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 11, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 7, 7, 7, 7, 7, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 7, 7, 7, 13, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 9, 9, 9, 9, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 11, 14, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 17, 15, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 14, 22, 14, 14, 23, 14, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 25, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 10, 11, 10, 10, 10, 10, 7, 7, 10, 10, 10, 10, 10, 10, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 10, 10, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 26, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 7, 27, 1, 27, 27, 27, 27, 1, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 29, 1, 1, 25, 1, 30, 1, 1, 31, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 35, 27, 27, 27, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 27, 27, 27, 27, 27, 27, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 27, 27, 27, 27, 36, 27, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 27, 27, 27, 27, 32, 27, 1, 27, 27, 27, 27, 1, 28, 27, 27, 27, 27, 27, 27, 38, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 39, 31, 39, 39, 39, 39, 31, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 18, 25, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 10, 11, 10, 10, 10, 10, 7, 28, 10, 10, 10, 10, 10, 10, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 10, 10, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 26, 10, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 10, 10, 10, 10, 7, 41, 42, 42, 42, 42, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 41, 27, 43, 27, 27, 27, 27, 7, 28, 44, 27, 27, 45, 27, 27, 27, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 27, 27, 27, 27, 27, 27, 27, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 27, 27, 27, 27, 46, 27, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 27, 27, 27, 27, 7, 47, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 47, 7, 11, 7, 7, 7, 7, 7, 7, 48, 7, 7, 49, 7, 7, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 7, 7, 7, 7, 7, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 7, 7, 7, 13, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 32, 32, 32, 32, 32, 32, 32, 32, 50, 32, 32, 51, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 32, 32, 32, 32, 52, 32, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 32, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 35, 27, 27, 27, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 27, 27, 27, 27, 27, 27, 27, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 27, 27, 27, 27, 53, 27, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 27, 27, 27, 27, 32, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 54, 27, 27, 27, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 27, 27, 27, 27, 27, 27, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 27, 27, 27, 27, 55, 27, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 27, 27, 27, 27, 32, 25, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 25, 10, 11, 10, 10, 10, 10, 7, 28, 10, 10, 10, 10, 10, 10, 10, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 10, 10, 10, 10, 10, 10, 10, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 10, 10, 10, 10, 57, 10, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 10, 10, 10, 10, 7, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 54, 27, 27, 27, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 27, 27, 27, 27, 27, 27, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 27, 27, 27, 27, 58, 27, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 27, 27, 27, 27, 32, 41, 42, 42, 42, 42, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 41, 27, 43, 27, 27, 27, 27, 7, 28, 44, 27, 27, 60, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, 61, 27, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, 7, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 54, 27, 27, 27, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 27, 27, 27, 27, 27, 27, 27, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 27, 27, 27, 27, 62, 27, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 27, 27, 27, 27, 32, 41, 42, 42, 42, 42, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 41, 27, 43, 27, 27, 27, 27, 7, 28, 44, 27, 27, 60, 27, 27, 27, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 27, 27, 27, 27, 27, 27, 27, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 27, 27, 27, 27, 63, 27, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 27, 27, 27, 27, 7, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 27, 32, 27, 27, 27, 27, 32, 28, 34, 27, 27, 54, 27, 27, 27, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 27, 27, 27, 27, 27, 27, 27, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 27, 27, 27, 27, 64, 27, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 27, 27, 27, 27, 32, 66, 65, 66, 66, 66, 66, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 65, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 1, 1, 1, 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 1, 1, 1, 67, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 69, 69, 69, 69, 69, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 70, 68, 72, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 73, 71, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 74, 74, 77, 78, 78, 78, 78, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 77, 7, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 7, 7, 7, 7, 7, 7, 7, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 7, 7, 7, 7, 80, 7, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 7, 77, 78, 78, 78, 78, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 77, 7, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 7, 7, 7, 7, 7, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 7, 7, 7, 81, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 78, 78, 78, 78, 78, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 78, 14, 79, 14, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 82, 86, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 85, 85, 88, 1, 88, 88, 88, 88, 1, 1, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 1, 89, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 89, 90, 1, 90, 90, 90, 90, 1, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 92, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 1, 1, 1, 1, 1, 1, 1, 93, 1, 94, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 94, 96, 97, 96, 96, 96, 96, 7, 7, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 96, 96, 96, 96, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 96, 96, 96, 96, 7, 94, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 94, 7, 97, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 7, 7, 7, 7, 7, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 7, 7, 7, 99, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 95, 95, 95, 95, 95, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 95, 14, 97, 14, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 102, 100, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 105, 103, 106, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 14, 14, 14, 14, 14, 14, 14, 14, 107, 14, 14, 108, 14, 109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 110, 1, 110, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 110, 96, 97, 96, 96, 96, 96, 7, 7, 96, 96, 96, 96, 96, 96, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 96, 96, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 111, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 7, 112, 1, 112, 112, 112, 112, 1, 113, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 1, 109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 109, 1, 1, 1, 1, 1, 1, 1, 1, 114, 1, 1, 110, 1, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 117, 112, 112, 112, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 119, 112, 112, 112, 112, 112, 112, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 112, 112, 112, 112, 118, 112, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 112, 112, 112, 112, 32, 110, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 110, 96, 97, 96, 96, 96, 96, 7, 113, 96, 96, 96, 96, 96, 96, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 96, 96, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 111, 96, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 96, 96, 96, 7, 120, 121, 121, 121, 121, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 120, 112, 122, 112, 112, 112, 112, 7, 113, 123, 112, 112, 124, 112, 112, 112, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 112, 112, 112, 112, 112, 112, 112, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 112, 112, 112, 112, 125, 112, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 112, 112, 112, 112, 7, 126, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 126, 7, 97, 7, 7, 7, 7, 7, 7, 127, 7, 7, 128, 7, 7, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 7, 7, 7, 7, 7, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 7, 7, 7, 99, 7, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 7, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 32, 32, 32, 32, 32, 32, 32, 32, 129, 32, 32, 130, 32, 32, 32, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 32, 32, 32, 32, 32, 32, 32, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 32, 32, 32, 32, 131, 32, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 32, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 117, 112, 112, 112, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 112, 112, 112, 112, 112, 112, 112, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 112, 112, 112, 112, 132, 112, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 112, 112, 112, 112, 32, 103, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 133, 112, 112, 112, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 112, 112, 112, 112, 112, 112, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 112, 112, 112, 112, 134, 112, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 112, 112, 112, 112, 32, 110, 95, 95, 95, 95, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 110, 96, 97, 96, 96, 96, 96, 7, 113, 96, 96, 96, 96, 96, 96, 96, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 96, 96, 96, 96, 96, 96, 96, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 96, 96, 96, 96, 136, 96, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 96, 96, 96, 96, 7, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 133, 112, 112, 112, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 112, 112, 112, 112, 112, 112, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 112, 112, 112, 112, 137, 112, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 112, 112, 112, 112, 32, 120, 121, 121, 121, 121, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 120, 112, 122, 112, 112, 112, 112, 7, 113, 123, 112, 112, 139, 112, 112, 112, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 112, 112, 112, 112, 112, 112, 112, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 112, 112, 112, 112, 140, 112, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 112, 112, 112, 112, 7, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 133, 112, 112, 112, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 112, 112, 112, 112, 112, 112, 112, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 112, 112, 112, 112, 141, 112, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 112, 112, 112, 112, 32, 120, 121, 121, 121, 121, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 120, 112, 122, 112, 112, 112, 112, 7, 113, 123, 112, 112, 139, 112, 112, 112, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 112, 112, 112, 112, 112, 112, 112, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 112, 112, 112, 112, 142, 112, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 112, 112, 112, 112, 7, 115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 112, 32, 112, 112, 112, 112, 32, 113, 116, 112, 112, 133, 112, 112, 112, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 112, 112, 112, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 143, 112, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 32, 144, 1, 144, 144, 144, 144, 1, 1, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 1, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 145, 146, 1, 146, 146, 146, 146, 1, 147, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 1, 148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 148, 1, 1, 1, 1, 1, 1, 1, 149, 1, 150, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 150, 152, 153, 152, 152, 152, 152, 7, 7, 152, 152, 152, 152, 152, 152, 152, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 152, 152, 152, 152, 152, 152, 152, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 152, 152, 152, 152, 154, 152, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 152, 152, 152, 152, 7, 150, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 150, 7, 153, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 7, 7, 7, 7, 7, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 7, 7, 7, 155, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 151, 151, 151, 151, 151, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 151, 14, 153, 14, 157, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 158, 156, 160, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 161, 159, 162, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 162, 14, 14, 14, 14, 14, 14, 14, 14, 163, 14, 14, 164, 14, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 166, 1, 166, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 166, 152, 153, 152, 152, 152, 152, 7, 7, 152, 152, 152, 152, 152, 152, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 152, 152, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 167, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 7, 168, 1, 168, 168, 168, 168, 1, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 170, 1, 1, 166, 1, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 173, 168, 168, 168, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 175, 168, 168, 168, 168, 168, 168, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 168, 168, 168, 168, 174, 168, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 168, 168, 168, 168, 32, 166, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 166, 152, 153, 152, 152, 152, 152, 7, 169, 152, 152, 152, 152, 152, 152, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 152, 152, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 167, 152, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 152, 152, 152, 152, 7, 176, 177, 177, 177, 177, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 176, 168, 178, 168, 168, 168, 168, 7, 169, 179, 168, 168, 180, 168, 168, 168, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 168, 168, 168, 168, 168, 168, 168, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 168, 168, 168, 168, 181, 168, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 168, 168, 168, 168, 7, 182, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 182, 7, 153, 7, 7, 7, 7, 7, 7, 183, 7, 7, 184, 7, 7, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 7, 7, 7, 7, 7, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 7, 7, 7, 155, 7, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 7, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 32, 32, 32, 32, 32, 32, 32, 32, 185, 32, 32, 186, 32, 32, 32, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 32, 32, 32, 32, 32, 32, 32, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 32, 32, 32, 32, 187, 32, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 32, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 173, 168, 168, 168, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 168, 168, 168, 168, 168, 168, 168, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 168, 168, 168, 168, 188, 168, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 168, 168, 168, 168, 32, 159, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 189, 168, 168, 168, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 168, 168, 168, 168, 168, 168, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 168, 168, 168, 168, 190, 168, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 168, 168, 168, 168, 32, 166, 151, 151, 151, 151, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 166, 152, 153, 152, 152, 152, 152, 7, 169, 152, 152, 152, 152, 152, 152, 152, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 152, 152, 152, 152, 152, 152, 152, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 152, 152, 152, 152, 192, 152, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 152, 152, 152, 152, 7, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 189, 168, 168, 168, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, 168, 168, 168, 168, 168, 168, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 168, 168, 168, 168, 193, 168, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 168, 168, 168, 168, 32, 176, 177, 177, 177, 177, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 176, 168, 178, 168, 168, 168, 168, 7, 169, 179, 168, 168, 195, 168, 168, 168, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 168, 168, 168, 168, 168, 168, 168, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 168, 168, 168, 168, 196, 168, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 168, 168, 168, 168, 7, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 189, 168, 168, 168, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 168, 168, 168, 168, 168, 168, 168, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 168, 168, 168, 168, 197, 168, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 168, 168, 168, 168, 32, 176, 177, 177, 177, 177, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 176, 168, 178, 168, 168, 168, 168, 7, 169, 179, 168, 168, 195, 168, 168, 168, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 168, 168, 168, 168, 168, 168, 168, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 168, 168, 168, 168, 198, 168, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 168, 168, 168, 168, 7, 171, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 171, 168, 32, 168, 168, 168, 168, 32, 169, 172, 168, 168, 189, 168, 168, 168, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 168, 168, 168, 168, 168, 168, 168, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 168, 168, 168, 168, 199, 168, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 168, 168, 168, 168, 32, 200, 1, 201, 1, 1, 202, 29, 203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 204, 1, 1, 206, 205, 29, 203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 27, 1, 27, 27, 27, 27, 1, 28, 27, 27, 27, 27, 27, 27, 207, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 208, 205, 208, 208, 208, 208, 205, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 205, 210, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 210, 205, 205, 205, 205, 205, 205, 205, 205, 211, 205, 205, 212, 205, 210, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 210, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 212, 205, 212, 213, 214, 214, 214, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 212, 215, 216, 215, 215, 215, 215, 205, 205, 215, 215, 215, 215, 215, 215, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 215, 215, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 217, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 205, 9, 9, 9, 9, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 11, 14, 214, 213, 214, 214, 214, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 214, 205, 216, 205, 219, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 220, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 221, 218, 223, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 224, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 225, 222, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18, 226, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 226, 205, 205, 205, 205, 205, 205, 205, 205, 227, 205, 205, 228, 205, 211, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 211, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 229, 205, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 230, 205, 206, 31, 223, 222, 231, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 231, 208, 205, 208, 208, 208, 208, 205, 209, 232, 208, 208, 233, 208, 208, 208, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 208, 208, 208, 208, 208, 208, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 208, 208, 208, 208, 234, 208, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 208, 208, 208, 208, 205, 211, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 211, 208, 205, 208, 208, 208, 208, 205, 209, 208, 208, 208, 208, 208, 208, 236, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 205, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 208, 205, 208, 208, 208, 208, 205, 209, 208, 208, 208, 208, 208, 208, 237, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 205, 206, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 39, 31, 39, 39, 39, 39, 31, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 212, 213, 214, 214, 214, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 212, 215, 216, 215, 215, 215, 215, 205, 209, 215, 215, 215, 215, 215, 215, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 215, 215, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 217, 215, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 215, 215, 215, 215, 205, 238, 239, 240, 240, 240, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 238, 208, 241, 208, 208, 208, 208, 205, 209, 242, 208, 208, 243, 208, 208, 208, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 208, 208, 208, 208, 208, 208, 208, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 208, 208, 208, 208, 244, 208, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 208, 208, 208, 208, 205, 245, 213, 214, 214, 214, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 245, 205, 216, 205, 205, 205, 205, 205, 205, 246, 205, 205, 247, 205, 205, 205, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 205, 205, 205, 205, 205, 205, 205, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 205, 205, 205, 205, 248, 205, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 205, 231, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 231, 205, 205, 205, 205, 205, 205, 205, 205, 249, 205, 205, 250, 205, 205, 205, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 205, 205, 205, 205, 205, 205, 205, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 205, 205, 205, 205, 251, 205, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 205, 231, 206, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 231, 208, 205, 208, 208, 208, 208, 205, 209, 232, 208, 208, 233, 208, 208, 208, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 208, 208, 208, 208, 208, 208, 208, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 208, 208, 208, 208, 252, 208, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 208, 208, 208, 208, 205, 253, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 254, 65, 254, 254, 254, 254, 65, 65, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 65, 1, 256, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 255, 255, 255, 255, 255, 255, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 255, 255, 255, 255, 257, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 255, 255, 68, 258, 14, 1, 259, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 32, 32, 32, 32, 32, 32, 32, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 32, 32, 32, 32, 260, 32, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 32, 259, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 262, 32, 32, 32, 32, 32, 32, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 32, 32, 32, 32, 261, 32, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 32, 263, 264, 265, 265, 265, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 263, 7, 266, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 7, 7, 7, 7, 7, 7, 7, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 7, 7, 7, 7, 267, 7, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 7, 268, 269, 78, 78, 78, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 268, 7, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 7, 7, 7, 7, 7, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 7, 7, 7, 81, 7, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 7, 78, 78, 78, 78, 78, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 78, 14, 79, 14, 1, 112, 1, 112, 112, 112, 112, 1, 113, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 1, 270, 1, 1, 270, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 1, 168, 168, 168, 168, 1, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 272, 271, 1, 0 ] class << self attr_accessor :_bel_trans_targs private :_bel_trans_targs, :_bel_trans_targs= end self._bel_trans_targs = [ 2, 0, 3, 2, 4, 3, 4, 0, 5, 6, 12, 7, 25, 23, 0, 8, 9, 19, 8, 9, 19, 10, 101, 11, 10, 11, 16, 12, 13, 101, 15, 103, 0, 10, 104, 20, 16, 21, 18, 105, 106, 22, 6, 7, 104, 20, 24, 22, 101, 11, 101, 11, 23, 24, 26, 25, 30, 27, 27, 28, 26, 29, 29, 31, 31, 0, 128, 130, 0, 34, 35, 36, 132, 37, 36, 132, 37, 39, 40, 41, 136, 135, 42, 133, 43, 42, 133, 43, 45, 46, 45, 47, 46, 47, 48, 49, 55, 50, 64, 61, 51, 52, 63, 51, 52, 63, 53, 140, 54, 53, 54, 57, 55, 56, 140, 53, 141, 58, 57, 59, 60, 49, 50, 141, 58, 62, 60, 140, 54, 140, 54, 61, 62, 65, 64, 69, 66, 66, 67, 65, 68, 68, 70, 70, 72, 73, 72, 74, 73, 74, 75, 76, 82, 77, 91, 88, 78, 79, 90, 78, 79, 90, 80, 142, 81, 80, 81, 84, 82, 83, 142, 80, 144, 85, 84, 86, 87, 76, 77, 144, 85, 89, 87, 142, 81, 142, 81, 88, 89, 92, 91, 96, 93, 93, 94, 92, 95, 95, 97, 97, 99, 100, 145, 102, 14, 103, 102, 17, 105, 106, 107, 115, 108, 109, 110, 105, 111, 119, 112, 113, 114, 118, 112, 113, 114, 118, 107, 115, 108, 116, 117, 107, 120, 123, 119, 124, 121, 122, 125, 109, 110, 111, 120, 123, 127, 125, 115, 108, 126, 115, 108, 126, 127, 129, 128, 0, 131, 130, 134, 134, 135, 136, 137, 138, 139, 40, 41, 135, 138, 139, 143, 145, 146 ] class << self attr_accessor :_bel_trans_actions private :_bel_trans_actions, :_bel_trans_actions= end self._bel_trans_actions = [ 2, 0, 3, 0, 4, 0, 5, 7, 0, 0, 8, 0, 9, 11, 13, 15, 16, 15, 0, 17, 0, 19, 19, 19, 0, 0, 9, 0, 20, 0, 0, 21, 23, 24, 24, 24, 0, 25, 0, 21, 26, 28, 29, 29, 28, 28, 30, 32, 32, 32, 24, 24, 0, 0, 24, 0, 25, 9, 0, 25, 28, 30, 0, 30, 0, 37, 8, 11, 39, 0, 0, 15, 41, 15, 0, 42, 0, 0, 0, 0, 11, 11, 15, 16, 15, 0, 17, 0, 46, 3, 0, 4, 0, 5, 0, 0, 8, 0, 9, 11, 15, 16, 15, 0, 17, 0, 19, 51, 19, 0, 0, 9, 0, 20, 52, 24, 54, 24, 0, 25, 28, 29, 29, 56, 28, 30, 32, 58, 32, 54, 24, 0, 0, 24, 0, 25, 9, 0, 25, 28, 30, 0, 30, 0, 2, 3, 0, 4, 0, 5, 0, 0, 8, 0, 9, 11, 15, 16, 15, 0, 17, 0, 19, 19, 19, 0, 0, 9, 0, 20, 0, 24, 24, 24, 0, 25, 28, 29, 29, 28, 28, 30, 32, 32, 32, 24, 24, 0, 0, 24, 0, 25, 9, 0, 25, 28, 30, 0, 30, 0, 0, 0, 21, 63, 0, 0, 64, 0, 0, 20, 0, 0, 0, 64, 0, 8, 0, 9, 15, 71, 16, 15, 0, 64, 17, 0, 19, 19, 19, 0, 0, 24, 24, 24, 0, 25, 0, 0, 28, 75, 29, 29, 28, 28, 30, 32, 32, 32, 11, 24, 24, 0, 0, 3, 0, 80, 25, 0, 82, 84, 0, 0, 25, 29, 87, 29, 29, 30, 0, 89, 91, 0, 93 ] class << self attr_accessor :_bel_eof_actions private :_bel_eof_actions, :_bel_eof_actions= end self._bel_eof_actions = [ 0, 1, 1, 0, 6, 10, 12, 14, 14, 18, 0, 6, 1, 0, 0, 0, 22, 1, 1, 14, 6, 27, 31, 33, 22, 22, 34, 35, 36, 35, 27, 22, 37, 0, 38, 40, 40, 40, 43, 43, 44, 45, 45, 45, 1, 1, 0, 47, 48, 49, 50, 50, 13, 0, 47, 1, 0, 53, 47, 55, 57, 59, 53, 50, 53, 60, 61, 62, 61, 55, 53, 1, 1, 0, 6, 10, 12, 14, 14, 18, 0, 6, 1, 0, 22, 6, 27, 31, 33, 22, 14, 22, 34, 35, 36, 35, 27, 22, 0, 0, 0, 63, 0, 64, 65, 66, 64, 64, 67, 68, 69, 70, 70, 72, 73, 64, 64, 64, 70, 74, 66, 66, 66, 67, 74, 76, 76, 74, 77, 78, 79, 81, 0, 82, 0, 83, 85, 86, 88, 90, 0, 1, 91, 0, 92, 93, 0 ] class << self attr_accessor :bel_start end self.bel_start = 1; class << self attr_accessor :bel_first_final end self.bel_first_final = 101; class << self attr_accessor :bel_error end self.bel_error = 0; class << self attr_accessor :bel_en_function_node end self.bel_en_function_node = 32; class << self attr_accessor :bel_en_ident_node end self.bel_en_ident_node = 33; class << self attr_accessor :bel_en_string_node end self.bel_en_string_node = 34; class << self attr_accessor :bel_en_parameter_node end self.bel_en_parameter_node = 38; class << self attr_accessor :bel_en_inner_term end self.bel_en_inner_term = 44; class << self attr_accessor :bel_en_term end self.bel_en_term = 71; class << self attr_accessor :bel_en_comment_node end self.bel_en_comment_node = 98; class << self attr_accessor :bel_en_observed_term end self.bel_en_observed_term = 1; # end: ragel end |
Instance Method Details
#each ⇒ Object
32348 32349 32350 32351 32352 32353 32354 32355 32356 32357 32358 32359 32360 32361 32362 32363 32364 32365 32366 32367 32368 32369 32370 32371 32372 32373 32374 32375 32376 32377 32378 32379 32380 32381 32382 32383 32384 32385 32386 32387 32388 32389 32390 32391 32392 32393 32394 32395 32396 32397 32398 32399 32400 32401 32402 32403 32404 32405 32406 32407 32408 32409 32410 32411 32412 32413 32414 32415 32416 32417 32418 32419 32420 32421 32422 32423 32424 32425 32426 32427 32428 32429 32430 32431 32432 32433 32434 32435 32436 32437 32438 32439 32440 32441 32442 32443 32444 32445 32446 32447 32448 32449 32450 32451 32452 32453 32454 32455 32456 32457 32458 32459 32460 32461 32462 32463 32464 32465 32466 32467 32468 32469 32470 32471 32472 32473 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 32492 32493 32494 32495 32496 32497 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 32516 32517 32518 32519 32520 32521 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 32540 32541 32542 32543 32544 32545 32546 32547 32548 32549 32550 32551 32552 32553 32554 32555 32556 32557 32558 32559 32560 32561 32562 32563 32564 32565 32566 32567 32568 32569 32570 32571 32572 32573 32574 32575 32576 32577 32578 32579 32580 32581 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32594 32595 32596 32597 32598 32599 32600 32601 32602 32603 32604 32605 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 32624 32625 32626 32627 32628 32629 32630 32631 32632 32633 32634 32635 32636 32637 32638 32639 32640 32641 32642 32643 32644 32645 32646 32647 32648 32649 32650 32651 32652 32653 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32678 32679 32680 32681 32682 32683 32684 32685 32686 32687 32688 32689 32690 32691 32692 32693 32694 32695 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32708 32709 32710 32711 32712 32713 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 32786 32787 32788 32789 32790 32791 32792 32793 32794 32795 32796 32797 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32822 32823 32824 32825 32826 32827 32828 32829 32830 32831 32832 32833 32834 32835 32836 32837 32838 32839 32840 32841 32842 32843 32844 32845 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32864 32865 32866 32867 32868 32869 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 32906 32907 32908 32909 32910 32911 32912 32913 32914 32915 32916 32917 32918 32919 32920 32921 32922 32923 32924 32925 32926 32927 32928 32929 32930 32931 32932 32933 32934 32935 32936 32937 32938 32939 32940 32941 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32954 32955 32956 32957 32958 32959 32960 32961 32962 32963 32964 32965 32966 32967 32968 32969 32970 32971 32972 32973 32974 32975 32976 32977 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 32990 32991 32992 32993 32994 32995 32996 32997 32998 32999 33000 33001 33002 33003 33004 33005 33006 33007 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33026 33027 33028 33029 33030 33031 33032 33033 33034 33035 33036 33037 33038 33039 33040 33041 33042 33043 33044 33045 33046 33047 33048 33049 33050 33051 33052 33053 33054 33055 33056 33057 33058 33059 33060 33061 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33074 33075 33076 33077 33078 33079 33080 33081 33082 33083 33084 33085 33086 33087 33088 33089 33090 33091 33092 33093 33094 33095 33096 33097 33098 33099 33100 33101 33102 33103 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33122 33123 33124 33125 33126 33127 33128 33129 33130 33131 33132 33133 33134 33135 33136 33137 33138 33139 33140 33141 33142 33143 33144 33145 33146 33147 33148 33149 33150 33151 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 33162 33163 33164 33165 33166 33167 33168 33169 33170 33171 33172 33173 33174 33175 33176 33177 33178 33179 33180 33181 33182 33183 33184 33185 33186 33187 33188 33189 33190 33191 33192 33193 33194 33195 33196 33197 33198 33199 33200 33201 33202 33203 33204 33205 33206 33207 33208 33209 33210 33211 33212 33213 33214 33215 33216 33217 33218 33219 33220 33221 33222 33223 33224 33225 33226 33227 33228 33229 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 33254 33255 33256 33257 33258 33259 33260 33261 33262 33263 33264 33265 33266 33267 33268 33269 33270 33271 33272 33273 33274 33275 33276 33277 33278 33279 33280 33281 33282 33283 33284 33285 33286 33287 33288 33289 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33302 33303 33304 33305 33306 33307 33308 33309 33310 33311 33312 33313 33314 33315 33316 33317 33318 33319 33320 33321 33322 33323 33324 33325 33326 33327 33328 33329 33330 33331 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33350 33351 33352 33353 33354 33355 33356 33357 33358 33359 33360 33361 33362 33363 33364 33365 33366 33367 33368 33369 33370 33371 33372 33373 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 33397 33398 33399 33400 33401 33402 33403 33404 33405 33406 33407 33408 33409 33410 33411 33412 33413 33414 33415 33416 33417 33418 33419 33420 33421 33422 33423 33424 33425 33426 33427 33428 33429 33430 33431 33432 33433 33434 33435 33436 33437 33438 33439 33440 33441 33442 33443 33444 33445 33446 33447 33448 33449 33450 33451 33452 33453 33454 33455 33456 33457 33458 33459 33460 33461 33462 33463 33464 33465 33466 33467 33468 33469 33470 33471 33472 33473 33474 33475 33476 33477 33478 33479 33480 33481 33482 33483 33484 33485 33486 33487 33488 33489 33490 33491 33492 33493 33494 33495 33496 33497 33498 33499 33500 33501 33502 33503 33504 33505 33506 33507 33508 33509 33510 33511 33512 33513 33514 33515 33516 33517 33518 33519 33520 33521 33522 33523 33524 33525 33526 33527 33528 33529 33530 33531 33532 33533 33534 33535 33536 33537 33538 33539 33540 33541 33542 33543 33544 33545 33546 33547 33548 33549 33550 33551 33552 33553 33554 33555 33556 33557 33558 33559 33560 33561 33562 33563 33564 33565 33566 33567 33568 33569 33570 33571 33572 33573 33574 33575 33576 33577 33578 33579 33580 33581 33582 33583 33584 33585 33586 33587 33588 33589 33590 33591 33592 33593 33594 33595 33596 33597 33598 33599 33600 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 33619 33620 33621 33622 33623 33624 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 33643 33644 33645 33646 33647 33648 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 33667 33668 33669 33670 33671 33672 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 33691 33692 33693 33694 33695 33696 33697 33698 33699 33700 33701 33702 33703 33704 33705 33706 33707 33708 33709 33710 33711 33712 33713 33714 33715 33716 33717 33718 33719 33720 33721 33722 33723 33724 33725 33726 33727 33728 33729 33730 33731 33732 33733 33734 33735 33736 33737 33738 33739 33740 33741 33742 33743 33744 33745 33746 33747 33748 33749 33750 33751 33752 33753 33754 33755 33756 33757 33758 33759 33760 33761 33762 33763 33764 33765 33766 33767 33768 33769 33770 33771 33772 33773 33774 33775 33776 33777 33778 33779 33780 33781 33782 33783 33784 33785 33786 33787 33788 33789 33790 33791 33792 33793 33794 33795 33796 33797 33798 33799 33800 33801 33802 33803 33804 33805 33806 33807 33808 33809 33810 33811 33812 33813 33814 33815 33816 33817 33818 33819 33820 33821 33822 33823 33824 33825 33826 33827 33828 33829 33830 33831 33832 33833 33834 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33853 33854 33855 33856 33857 33858 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 33895 33896 33897 33898 33899 33900 33901 33902 33903 33904 33905 33906 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33931 33932 33933 33934 33935 33936 33937 33938 33939 33940 33941 33942 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33955 33956 33957 33958 33959 33960 33961 33962 33963 33964 33965 33966 33967 33968 33969 33970 33971 33972 33973 33974 33975 33976 33977 33978 33979 33980 33981 33982 33983 33984 33985 33986 33987 33988 33989 33990 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 34009 34010 34011 34012 34013 34014 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 34051 34052 34053 34054 34055 34056 34057 34058 34059 34060 34061 34062 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34087 34088 34089 34090 34091 34092 34093 34094 34095 34096 34097 34098 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34123 34124 34125 34126 34127 34128 34129 34130 34131 34132 34133 34134 34135 34136 34137 34138 34139 34140 34141 34142 34143 34144 34145 34146 34147 34148 34149 34150 34151 34152 34153 34154 34155 34156 34157 34158 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34177 34178 34179 34180 34181 34182 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 34219 34220 34221 34222 34223 34224 34225 34226 34227 34228 34229 34230 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34255 34256 34257 34258 34259 34260 34261 34262 34263 34264 34265 34266 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34291 34292 34293 34294 34295 34296 34297 34298 34299 34300 34301 34302 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 34313 34314 34315 34316 34317 34318 34319 34320 34321 34322 34323 34324 34325 34326 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34345 34346 34347 34348 34349 34350 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 34387 34388 34389 34390 34391 34392 34393 34394 34395 34396 34397 34398 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34423 34424 34425 34426 34427 34428 34429 34430 34431 34432 34433 34434 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34459 34460 34461 34462 34463 34464 34465 34466 34467 34468 34469 34470 34471 34472 34473 34474 34475 34476 34477 34478 34479 34480 34481 34482 34483 34484 34485 34486 34487 34488 34489 34490 34491 34492 34493 34494 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34531 34532 34533 34534 34535 34536 34537 34538 34539 34540 34541 34542 34543 34544 34545 34546 34547 34548 34549 34550 34551 34552 34553 34554 34555 34556 34557 34558 34559 34560 34561 34562 34563 34564 34565 34566 34567 34568 34569 34570 34571 34572 34573 34574 34575 34576 34577 34578 34579 34580 34581 34582 34583 34584 34585 34586 34587 34588 34589 34590 34591 34592 34593 34594 34595 34596 34597 34598 34599 34600 34601 34602 34603 34604 34605 34606 34607 34608 34609 34610 34611 34612 34613 34614 34615 34616 34617 34618 34619 34620 34621 34622 34623 34624 34625 34626 34627 34628 34629 34630 34631 34632 34633 34634 34635 34636 34637 34638 34639 34640 34641 34642 34643 34644 34645 34646 34647 34648 34649 34650 34651 34652 34653 34654 34655 34656 34657 34658 34659 34660 34661 34662 34663 34664 34665 34666 34667 34668 34669 34670 34671 34672 34673 34674 34675 34676 34677 34678 34679 34680 34681 34682 34683 34684 34685 34686 34687 34688 34689 34690 34691 34692 34693 34694 34695 34696 34697 34698 34699 34700 34701 34702 34703 34704 34705 34706 34707 34708 34709 34710 34711 34712 34713 34714 34715 34716 34717 34718 34719 34720 34721 34722 34723 34724 34725 34726 34727 34728 34729 34730 34731 34732 34733 34734 34735 34736 34737 34738 34739 34740 34741 34742 34743 34744 34745 34746 34747 34748 34749 34750 34751 34752 34753 34754 34755 34756 34757 34758 34759 34760 34761 34762 34763 34764 34765 34766 34767 34768 34769 34770 34771 34772 34773 34774 34775 34776 34777 34778 34779 34780 34781 34782 34783 34784 34785 34786 34787 34788 34789 34790 34791 34792 34793 34794 34795 34796 34797 34798 34799 34800 34801 34802 34803 34804 34805 34806 34807 34808 34809 34810 34811 34812 34813 34814 34815 34816 34817 34818 34819 34820 34821 34822 34823 34824 34825 34826 34827 34828 34829 34830 34831 34832 34833 34834 34835 34836 34837 34838 34839 34840 34841 34842 34843 34844 34845 34846 34847 34848 34849 34850 34851 34852 34853 34854 34855 34856 34857 34858 34859 34860 34861 34862 34863 34864 34865 34866 34867 34868 34869 34870 34871 34872 34873 34874 34875 34876 34877 34878 34879 34880 34881 34882 34883 34884 34885 34886 34887 34888 34889 34890 34891 34892 34893 34894 34895 34896 34897 34898 34899 34900 34901 34902 34903 34904 34905 34906 34907 34908 34909 34910 34911 34912 34913 34914 34915 34916 34917 34918 34919 34920 34921 34922 34923 34924 34925 34926 34927 34928 34929 34930 34931 34932 34933 34934 34935 34936 34937 34938 34939 34940 34941 34942 34943 34944 34945 34946 34947 34948 34949 34950 34951 34952 34953 34954 34955 34956 34957 34958 34959 34960 34961 34962 34963 34964 34965 34966 34967 34968 34969 34970 34971 34972 34973 34974 34975 34976 34977 34978 34979 34980 34981 34982 34983 34984 34985 34986 34987 34988 34989 34990 34991 34992 34993 34994 34995 34996 34997 34998 34999 35000 35001 35002 35003 35004 35005 35006 35007 35008 35009 35010 35011 35012 35013 35014 35015 35016 35017 35018 35019 35020 35021 35022 35023 35024 35025 35026 35027 35028 35029 35030 35031 35032 35033 35034 35035 35036 35037 35038 35039 35040 35041 35042 35043 35044 35045 35046 35047 35048 35049 35050 35051 35052 35053 35054 35055 35056 35057 35058 35059 35060 35061 35062 35063 35064 35065 35066 35067 35068 35069 35070 35071 35072 35073 35074 35075 35076 35077 35078 35079 35080 35081 35082 35083 35084 35085 35086 35087 35088 35089 35090 35091 35092 35093 35094 35095 35096 35097 35098 35099 35100 35101 35102 35103 35104 35105 35106 35107 35108 35109 35110 35111 35112 35113 35114 35115 35116 35117 35118 35119 35120 35121 35122 35123 35124 35125 35126 35127 35128 35129 35130 35131 35132 35133 35134 35135 35136 35137 35138 35139 35140 35141 35142 35143 35144 35145 35146 35147 35148 35149 35150 35151 35152 35153 35154 35155 35156 35157 35158 35159 35160 35161 35162 35163 35164 35165 35166 35167 35168 35169 35170 35171 35172 35173 35174 35175 35176 35177 35178 35179 35180 35181 35182 35183 35184 35185 35186 35187 35188 35189 35190 35191 35192 35193 35194 35195 35196 35197 35198 35199 35200 35201 35202 35203 35204 35205 35206 35207 35208 35209 35210 35211 35212 35213 35214 35215 35216 35217 35218 35219 35220 35221 35222 35223 35224 35225 35226 35227 35228 35229 35230 35231 35232 35233 35234 35235 35236 35237 35238 35239 35240 35241 35242 35243 35244 35245 35246 35247 35248 35249 35250 35251 35252 35253 35254 35255 35256 35257 35258 35259 35260 35261 35262 35263 35264 35265 35266 35267 35268 35269 35270 35271 35272 35273 35274 35275 35276 35277 35278 35279 35280 35281 35282 35283 35284 35285 35286 35287 35288 35289 35290 35291 35292 35293 35294 35295 35296 35297 35298 35299 35300 35301 35302 35303 35304 35305 35306 35307 35308 35309 35310 35311 35312 35313 35314 35315 35316 35317 35318 35319 35320 35321 35322 35323 35324 35325 35326 35327 35328 35329 35330 35331 35332 35333 35334 35335 35336 35337 35338 35339 35340 35341 35342 35343 35344 35345 35346 35347 35348 35349 35350 35351 35352 35353 35354 35355 35356 35357 35358 35359 35360 35361 35362 35363 35364 35365 35366 35367 35368 35369 35370 35371 35372 35373 35374 35375 35376 35377 35378 35379 35380 35381 35382 35383 35384 35385 35386 35387 35388 35389 35390 35391 35392 35393 35394 35395 35396 35397 35398 35399 35400 35401 35402 35403 35404 35405 35406 35407 35408 35409 35410 35411 35412 35413 35414 35415 35416 35417 35418 35419 35420 35421 35422 35423 35424 35425 35426 35427 35428 35429 35430 35431 35432 35433 35434 35435 35436 35437 35438 35439 35440 35441 35442 35443 35444 35445 35446 35447 35448 35449 35450 35451 35452 35453 35454 35455 35456 35457 35458 35459 35460 35461 35462 35463 35464 35465 35466 35467 35468 35469 35470 35471 35472 35473 35474 35475 35476 35477 35478 35479 35480 35481 35482 35483 35484 35485 35486 35487 35488 35489 35490 35491 35492 35493 35494 35495 35496 35497 35498 35499 35500 35501 35502 35503 35504 35505 35506 35507 35508 35509 35510 35511 35512 35513 35514 35515 35516 35517 35518 35519 35520 35521 35522 35523 35524 35525 35526 35527 35528 35529 35530 35531 35532 35533 35534 35535 35536 35537 35538 35539 35540 35541 35542 35543 35544 35545 35546 35547 35548 35549 35550 35551 35552 35553 35554 35555 35556 35557 35558 35559 35560 35561 35562 35563 35564 35565 35566 35567 35568 35569 35570 35571 35572 35573 35574 35575 35576 35577 35578 35579 35580 35581 35582 35583 35584 35585 35586 35587 35588 35589 35590 35591 35592 35593 35594 35595 35596 35597 35598 35599 35600 35601 35602 35603 35604 35605 35606 35607 35608 35609 35610 35611 35612 35613 35614 35615 35616 35617 35618 35619 35620 35621 35622 35623 35624 35625 35626 35627 35628 35629 35630 35631 35632 35633 35634 35635 35636 35637 35638 35639 35640 35641 35642 35643 35644 35645 35646 35647 35648 35649 35650 35651 35652 35653 35654 35655 35656 35657 35658 35659 35660 35661 35662 35663 35664 35665 35666 35667 35668 35669 35670 35671 35672 35673 35674 35675 35676 35677 35678 35679 35680 35681 35682 35683 35684 35685 35686 35687 35688 35689 35690 35691 35692 35693 35694 35695 35696 35697 35698 35699 35700 35701 35702 35703 35704 35705 35706 35707 35708 35709 35710 35711 35712 35713 35714 35715 35716 35717 35718 35719 35720 35721 35722 35723 35724 35725 35726 35727 35728 35729 35730 35731 35732 35733 35734 35735 35736 35737 35738 35739 35740 35741 35742 35743 35744 35745 35746 35747 35748 35749 35750 35751 35752 35753 35754 35755 35756 35757 35758 35759 35760 35761 35762 35763 35764 35765 35766 35767 35768 35769 35770 35771 35772 35773 35774 |
# File 'lib/bel_parser/parsers/expression/observed_term.rb', line 32348 def each @buffers = {} @incomplete = {} stack = [] data = @content.unpack('C*') p = 0 pe = data.length eof = data.length # begin: ragel begin p ||= 0 pe ||= data.length cs = bel_start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _bel_index_offsets[cs] _slen = _bel_key_spans[cs] _wide = data[p].ord _trans = if ( _slen > 0 && _bel_trans_keys[_keys] <= _wide && _wide <= _bel_trans_keys[_keys + 1] ) then _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ] else _bel_indicies[ _inds + _slen ] end cs = _bel_trans_targs[_trans] if _bel_trans_actions[_trans] != 0 case _bel_trans_actions[_trans] when 8 then begin trace('FUNCTION start_function') @function_started = true p_start = p; end when 3 then begin trace('FUNCTION end_function') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end when 37 then begin trace('FUNCTION function_node_err') if @function_started # hit invalid char, include it in the identifier that results p_end = p + 1 chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: false, character_range: ident_node.character_range) @buffers[:function] = fx_node yield @buffers[:function] end end when 11 then begin trace('IDENTIFIER start_identifier') @identifier_started = true id_start = p; end when 25 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end when 23 then begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end when 80 then begin trace('IDENTIFIER ident_node_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) yield ast_node end when 15 then begin trace('STRING start_string') @string_opened = true p_start = p end when 13 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 39 then begin trace('STRING string_node_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) yield ast_node end when 29 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end when 5 then begin trace('TERM term_fx') new_term = @buffers[:term_stack][-1] << @buffers[:function] @buffers[:term_stack][-1] = new_term end when 52 then begin trace('TERM fxret') inner_term = @buffers[:term_stack].pop arg_node = argument(inner_term) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term begin top -= 1 cs = stack[top] _goto_level = _again next end end when 21 then begin trace('COMMENT start_comment') p_start = p; end when 63 then begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 4 then begin trace('FUNCTION end_function') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end begin trace('TERM term_fx') new_term = @buffers[:term_stack][-1] << @buffers[:function] @buffers[:term_stack][-1] = new_term end when 20 then begin trace('FUNCTION end_function') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end begin trace('TERM fxbt') function_string = @buffers[:function].identifier.string_literal p -= function_string.length + 1 begin stack[top] = cs top+= 1 cs = 44 _goto_level = _again next end end when 9 then begin trace('IDENTIFIER start_identifier') @identifier_started = true id_start = p; end begin trace('FUNCTION start_function') @function_started = true p_start = p; end when 7 then begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 17 then begin trace('STRING stop_string') @string_closed = true p_end = p end begin trace('STRING string_end') completed = @string_opened && @string_closed chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 89 then begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 32 then begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end when 30 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('IDENTIFIER start_identifier') @identifier_started = true id_start = p; end when 2 then begin trace('TERM term_init') @buffers[:term_stack] = [ term() ] end begin trace('FUNCTION start_function') @function_started = true p_start = p; end when 46 then begin trace('TERM inner_term_init') @buffers[:term_stack] << term() end begin trace('FUNCTION start_function') @function_started = true p_start = p; end when 91 then begin trace('TERM outer_term_end') term_stack = @buffers[:term_stack] term_stack.each { |term| term.complete = true } end begin yield @buffers[:term_stack][-1] end when 26 then begin trace('FUNCTION end_function') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end begin trace('TERM fxbt') function_string = @buffers[:function].identifier.string_literal p -= function_string.length + 1 begin stack[top] = cs top+= 1 cs = 44 _goto_level = _again next end end begin trace('COMMENT start_comment') p_start = p; end when 16 then begin trace('STRING start_string') @string_opened = true p_start = p end begin trace('STRING stop_string') @string_closed = true p_end = p end begin trace('STRING string_end') completed = @string_opened && @string_closed chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 42 then begin trace('STRING stop_string') @string_closed = true p_end = p end begin trace('STRING string_end') completed = @string_opened && @string_closed chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING yield_string') yield @buffers[:string] end when 82 then begin trace('PARAMETER add_string_param_value') string_node = @buffers.delete(:string) value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 19 then begin trace('PARAMETER add_string_param_value') string_node = @buffers.delete(:string) value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end when 58 then begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end begin trace('TERM fxret') inner_term = @buffers[:term_stack].pop arg_node = argument(inner_term) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term begin top -= 1 cs = stack[top] _goto_level = _again next end end when 87 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 28 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end when 93 then begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin trace('COMMENT yield_comment') yield @buffers[:comment] || comment(nil) end when 64 then begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 84 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('PARAMETER add_ident_param_value') ident = @buffers.delete(:ident) value_node = value(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 24 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('PARAMETER add_ident_param_value') ident = @buffers.delete(:ident) value_node = value(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end when 41 then begin trace('STRING start_string') @string_opened = true p_start = p end begin trace('STRING stop_string') @string_closed = true p_end = p end begin trace('STRING string_end') completed = @string_opened && @string_closed chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING yield_string') yield @buffers[:string] end when 71 then begin trace('STRING start_string') @string_opened = true p_start = p end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 51 then begin trace('PARAMETER add_string_param_value') string_node = @buffers.delete(:string) value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end begin trace('TERM fxret') inner_term = @buffers[:term_stack].pop arg_node = argument(inner_term) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term begin top -= 1 cs = stack[top] _goto_level = _again next end end when 56 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end begin trace('TERM fxret') inner_term = @buffers[:term_stack].pop arg_node = argument(inner_term) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term begin top -= 1 cs = stack[top] _goto_level = _again next end end when 75 then begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 54 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('PARAMETER add_ident_param_value') ident = @buffers.delete(:ident) value_node = value(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM term_argument') arg_node = argument(@buffers[:parameter]) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term @buffers[:parameter] = nil end begin trace('TERM fxret') inner_term = @buffers[:term_stack].pop arg_node = argument(inner_term) new_term = @buffers[:term_stack][-1] << arg_node @buffers[:term_stack][-1] = new_term begin top -= 1 cs = stack[top] _goto_level = _again next end end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _bel_eof_actions[cs] when 1 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 37 then begin trace('FUNCTION function_node_err') if @function_started # hit invalid char, include it in the identifier that results p_end = p + 1 chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: false, character_range: ident_node.character_range) @buffers[:function] = fx_node yield @buffers[:function] end end when 78 then begin trace('FUNCTION yield_function') yield @buffers[:function] end when 81 then begin trace('IDENTIFIER yield_identifier') yield @buffers[:ident] end when 13 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 90 then begin trace("PARAMETER parameter_node_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed yield param_node end when 63 then begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 77 then begin trace('FUNCTION end_function') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end begin trace('FUNCTION yield_function') yield @buffers[:function] end when 65 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 79 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('IDENTIFIER yield_identifier') yield @buffers[:ident] end when 59 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end when 49 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end when 44 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER parameter_node_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed yield param_node end when 18 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 38 then begin trace('STRING string_node_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) yield ast_node end begin trace('STRING string_node_eof') yield @buffers[:string] end when 68 then begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 91 then begin trace('TERM outer_term_end') term_stack = @buffers[:term_stack] term_stack.each { |term| term.complete = true } end begin yield @buffers[:term_stack][-1] end when 61 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end when 92 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('TERM outer_term_end') term_stack = @buffers[:term_stack] term_stack.each { |term| term.complete = true } end begin yield @buffers[:term_stack][-1] end when 53 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 57 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 33 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 88 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 50 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end when 45 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER parameter_node_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed yield param_node end when 40 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING string_node_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) yield ast_node end begin trace('STRING string_node_eof') yield @buffers[:string] end when 72 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 12 then begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 82 then begin trace('PARAMETER add_string_param_value') string_node = @buffers.delete(:string) value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 93 then begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin trace('COMMENT yield_comment') yield @buffers[:comment] || comment(nil) end when 64 then begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 62 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end when 35 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 66 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 55 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 48 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end when 43 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER parameter_node_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed yield param_node end when 31 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 22 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 86 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('PARAMETER add_prefix') ident = @buffers.delete(:ident) prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_prefix] = prefix_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 14 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 73 then begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 60 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end when 36 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 83 then begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('PARAMETER add_ident_param_value') ident = @buffers.delete(:ident) value_node = value(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 85 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER end_identifier') id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('PARAMETER add_ident_param_value') ident = @buffers.delete(:ident) value_node = value(ident, complete: ident.complete, character_range: ident.character_range) @buffers[:param_value] = value_node end begin trace('PARAMETER parameter_end') param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) if prefix_node param_node <<= prefix_node unless prefix_node.complete trace('PN incomplete') completed = false end param_start = prefix_node.range_start else prefix_node = prefix(nil) prefix_node.complete = true trace('PN complete (no prefix)') param_node <<= prefix_node completed = true end value_node = @buffers.delete(:param_value) unless value_node.nil? param_node <<= value_node unless value_node.complete trace('VN incomplete') completed = false end param_start ||= value_node.range_start param_node.character_range = [param_start, value_node.range_end] else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('PARAMETER yield_parameter') yield @buffers[:parameter] end when 47 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 10 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 27 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 76 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 69 then begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 34 then begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end when 6 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('IDENTIFIER an_ident_err') id_end = p chars = data[id_start...id_end] ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end begin trace('STRING a_string_err') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end when 74 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 70 then begin trace('STRING eof_string') p_end = p chars = data[p_start...p_end] ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end]) @buffers[:string] = ast_node end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end when 67 then begin trace('IDENTIFIER an_ident_eof') if @identifier_started id_end = p chars = data[id_start...id_end] completed = !chars.empty? ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end]) @buffers[:ident] = ast_node end end begin trace("PARAMETER a_parameter_eof") param_node = parameter() completed = true prefix_node = @buffers.delete(:param_prefix) unless prefix_node.nil? param_node <<= prefix_node unless prefix_node.complete completed = false end end string_value_node = @buffers.delete(:string) unless string_value_node.nil? param_node <<= string_value_node unless string_value_node.complete completed = false end else completed = false end param_node.complete = completed @buffers[:parameter] = param_node end begin trace('TERM eof_parameter_argument') @buffers[:term_stack][-1].complete = false yield @buffers[:term_stack][-1] end begin trace('FUNCTION a_function_eof') if @function_started p_end = p chars = data[p_start...p_end] completed = !chars.empty? ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end]) fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range) @buffers[:function] = fx_node end end begin trace('COMMENT stop_comment') p_end = p; end begin trace('COMMENT comment_end') p_end = p chars = data[p_start...p_end] completed = !chars.empty? ast_node = comment(utf8_string(chars), complete: completed) @buffers[:comment] = ast_node end begin @buffers[:comment] ||= comment(nil) comment = @buffers[:comment] term = @buffers[:term_stack][-1] subject_term = subject(term) rel = relationship(nil) obj = object(nil) stmt = observed_term(statement(subject_term, rel, obj, comment)) stmt.complete = true yield stmt end end end end if _goto_level <= _out break end end end # end: ragel end |