Changeset 16


Ignore:
Timestamp:
Apr 26, 2008, 12:47:03 AM (16 years ago)
Author:
Tatsukawa, Akimichi
Message:

working on dADL language tag

Location:
ruby/trunk/adl_parser
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/adl_parser/lib/parser.rb

    r14 r16  
    2121    class Parser < Racc::Parser
    2222
    23 module_eval <<'..end lib/parser.y modeval..id7c96f38efa', 'lib/parser.y', 634
     23module_eval <<'..end lib/parser.y modeval..id35ef94ed29', 'lib/parser.y', 642
    2424###----------/* keywords */ ---------------------------------------------
    2525@@adl_reserved = {
     
    153153#          @start_block_received = true
    154154          @adl_type.push(:dadl)
    155           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     155          yield :SYM_START_DBLOCK,  $&
    156156        end
    157157      when /\A\>/   # >
     
    171171#        puts "Escaping #{adl_type}"
    172172        assert_at(__FILE__,__LINE__){adl_type == :cadl}
    173         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
     173        yield :SYM_END_CBLOCK, $&
    174174      when /\A\-/   # -
    175175        yield :Minus_code, :Minus_code
     
    307307        @in_c_domain_type = true
    308308        @adl_type.push(:dadl)
    309           yield :START_V_C_DOMAIN_TYPE_BLOCK, :START_V_C_DOMAIN_TYPE_BLOCK
     309          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    310310###         else
    311311###           raise
     
    316316        else
    317317          @adl_type.push(:dadl)
    318           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     318          yield :SYM_START_DBLOCK,  $&
    319319        end
    320320      when /\A\>/   # >
     
    508508          @in_interval = false
    509509          yield :SYM_GT, :SYM_GT
    510         elsif @in_c_domain_type
    511           @in_c_domain_type = false
     510        elsif @in_c_domain_type == true
     511          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
    512512          adl_type = @adl_type.pop
    513           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    514           yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK
    515         else
     513          if @adl_type.last == :cadl
     514            @in_c_domain_type = false
     515            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
     516          else
     517            yield :SYM_END_DBLOCK, $&
     518          end
     519        elsif @in_c_domain_type == false
    516520          adl_type = @adl_type.pop
    517521#          puts "Escaping #{adl_type}"
    518522          assert_at(__FILE__,__LINE__){adl_type == :dadl}
    519           yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
     523          yield :SYM_END_DBLOCK, $&
     524        else
     525          raise
    520526        end
    521527      when /\A\-/   # -
     
    556562        if @in_interval
    557563          @in_interval = false
    558 #        elsif @start_block_received
    559 #          @start_block_received = false
    560564        else
    561565          @in_interval = false
    562566        end
    563567        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    564       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
    565 #      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
     568      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    566569        yield :V_QUALIFIED_TERM_CODE_REF, $&
     570      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
     571        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
     572      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
     573        yield :V_LOCAL_TERM_CODE_REF, $&
    567574      when /\A\[/   # [
    568575        yield :Left_bracket_code, :Left_bracket_code
    569576      when /\A\]/   # ]
    570577        yield :Right_bracket_code, :Right_bracket_code
    571       when /\A[A-Z][a-zA-Z0-9_]*/
     578      when /\A[A-Z][a-zA-Z0-9_-]*/
    572579        yield :V_TYPE_IDENTIFIER, $&
    573580      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
     
    580587          yield :V_ATTRIBUTE_IDENTIFIER, $&
    581588        end
    582       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    583         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    584       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    585         yield :V_LOCAL_TERM_CODE_REF, $&
    586589      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    587590        yield :V_LOCAL_CODE, $&
     
    771774
    772775
    773 ..end lib/parser.y modeval..id7c96f38efa
     776..end lib/parser.y modeval..id35ef94ed29
    774777
    775778##### racc 1.4.5 generates ###
     
    795798 2, 98, :_reduce_none,
    796799 0, 99, :_reduce_none,
    797  2, 99, :_reduce_none,
     800 2, 99, :_reduce_19,
    798801 2, 99, :_reduce_none,
    799802 0, 100, :_reduce_none,
     
    807810 5, 110, :_reduce_none,
    808811 2, 112, :_reduce_none,
    809  1, 114, :_reduce_none,
    810  2, 114, :_reduce_none,
     812 1, 114, :_reduce_31,
     813 2, 114, :_reduce_32,
    811814 1, 113, :_reduce_none,
    812815 1, 113, :_reduce_none,
     
    822825 1, 119, :_reduce_none,
    823826 3, 126, :_reduce_none,
    824  1, 127, :_reduce_none,
    825827 4, 120, :_reduce_none,
    826828 3, 120, :_reduce_none,
    827829 6, 121, :_reduce_none,
    828  2, 129, :_reduce_none,
    829  2, 132, :_reduce_none,
    830  3, 132, :_reduce_none,
    831  2, 132, :_reduce_none,
     830 2, 128, :_reduce_none,
     831 2, 131, :_reduce_none,
     832 3, 131, :_reduce_none,
     833 2, 131, :_reduce_none,
    832834 1, 125, :_reduce_none,
    833  1, 133, :_reduce_none,
    834  1, 133, :_reduce_none,
    835  1, 133, :_reduce_none,
    836  1, 133, :_reduce_none,
    837  1, 133, :_reduce_none,
    838  1, 133, :_reduce_none,
    839  1, 133, :_reduce_none,
    840  1, 133, :_reduce_none,
     835 1, 132, :_reduce_none,
     836 1, 132, :_reduce_none,
     837 1, 132, :_reduce_none,
     838 1, 132, :_reduce_none,
     839 1, 132, :_reduce_none,
     840 1, 132, :_reduce_none,
     841 1, 132, :_reduce_none,
     842 1, 132, :_reduce_none,
    841843 1, 117, :_reduce_none,
    842844 1, 118, :_reduce_none,
    843845 2, 118, :_reduce_none,
    844  5, 142, :_reduce_none,
    845  5, 142, :_reduce_none,
    846  5, 142, :_reduce_none,
     846 5, 141, :_reduce_none,
     847 5, 141, :_reduce_none,
     848 5, 141, :_reduce_none,
     849 2, 142, :_reduce_none,
     850 3, 142, :_reduce_none,
     851 1, 143, :_reduce_none,
    847852 2, 143, :_reduce_none,
    848  3, 143, :_reduce_none,
    849  1, 144, :_reduce_none,
    850  2, 144, :_reduce_none,
    851  1, 144, :_reduce_none,
     853 1, 143, :_reduce_none,
     854 0, 129, :_reduce_none,
     855 2, 129, :_reduce_none,
    852856 0, 130, :_reduce_none,
    853857 2, 130, :_reduce_none,
    854  0, 131, :_reduce_none,
    855  2, 131, :_reduce_none,
     858 1, 146, :_reduce_none,
     859 2, 146, :_reduce_none,
     860 3, 147, :_reduce_none,
    856861 1, 147, :_reduce_none,
    857  2, 147, :_reduce_none,
    858  3, 148, :_reduce_none,
    859  1, 148, :_reduce_none,
    860  3, 148, :_reduce_none,
     862 3, 147, :_reduce_none,
    861863 0, 102, :_reduce_none,
    862864 2, 102, :_reduce_none,
     
    865867 2, 103, :_reduce_none,
    866868 1, 108, :_reduce_none,
     869 1, 150, :_reduce_none,
     870 1, 150, :_reduce_none,
    867871 1, 151, :_reduce_none,
    868  1, 151, :_reduce_none,
     872 2, 151, :_reduce_none,
     873 3, 151, :_reduce_none,
     874 3, 153, :_reduce_none,
     875 1, 154, :_reduce_none,
     876 2, 154, :_reduce_none,
     877 1, 155, :_reduce_none,
     878 1, 155, :_reduce_none,
    869879 1, 152, :_reduce_none,
    870  2, 152, :_reduce_none,
    871  3, 152, :_reduce_none,
    872  3, 154, :_reduce_none,
    873  1, 155, :_reduce_none,
    874  2, 155, :_reduce_none,
    875  1, 156, :_reduce_none,
    876  1, 156, :_reduce_none,
    877  1, 153, :_reduce_none,
    878  1, 153, :_reduce_none,
    879  1, 159, :_reduce_none,
    880  2, 159, :_reduce_none,
    881  3, 160, :_reduce_none,
    882  1, 161, :_reduce_none,
    883  1, 162, :_reduce_none,
    884  2, 162, :_reduce_none,
    885  3, 163, :_reduce_none,
    886  3, 164, :_reduce_none,
     880 1, 152, :_reduce_none,
    887881 1, 158, :_reduce_none,
    888882 2, 158, :_reduce_none,
    889  2, 166, :_reduce_none,
    890  3, 166, :_reduce_none,
    891  1, 167, :_reduce_none,
     883 3, 159, :_reduce_none,
     884 1, 160, :_reduce_none,
     885 1, 161, :_reduce_none,
     886 2, 161, :_reduce_none,
     887 3, 162, :_reduce_none,
     888 3, 163, :_reduce_none,
    892889 1, 157, :_reduce_none,
    893890 2, 157, :_reduce_none,
    894  3, 168, :_reduce_none,
     891 2, 165, :_reduce_none,
     892 3, 165, :_reduce_none,
     893 1, 166, :_reduce_none,
     894 1, 156, :_reduce_none,
     895 2, 156, :_reduce_none,
     896 3, 167, :_reduce_none,
     897 1, 168, :_reduce_none,
     898 1, 168, :_reduce_none,
     899 1, 168, :_reduce_none,
     900 1, 168, :_reduce_none,
     901 1, 168, :_reduce_none,
     902 1, 164, :_reduce_none,
     903 1, 164, :_reduce_none,
     904 1, 164, :_reduce_none,
     905 1, 164, :_reduce_none,
     906 1, 164, :_reduce_none,
     907 1, 164, :_reduce_none,
     908 1, 164, :_reduce_none,
     909 1, 164, :_reduce_none,
     910 1, 164, :_reduce_none,
     911 1, 164, :_reduce_none,
    895912 1, 169, :_reduce_none,
    896913 1, 169, :_reduce_none,
     
    898915 1, 169, :_reduce_none,
    899916 1, 169, :_reduce_none,
    900  1, 165, :_reduce_none,
    901  1, 165, :_reduce_none,
    902  1, 165, :_reduce_none,
    903  1, 165, :_reduce_none,
    904  1, 165, :_reduce_none,
    905  1, 165, :_reduce_none,
    906  1, 165, :_reduce_none,
    907  1, 165, :_reduce_none,
    908  1, 165, :_reduce_none,
    909  1, 165, :_reduce_none,
     917 1, 169, :_reduce_none,
     918 1, 169, :_reduce_none,
     919 1, 169, :_reduce_none,
     920 1, 169, :_reduce_none,
    910921 1, 170, :_reduce_none,
    911922 1, 170, :_reduce_none,
     
    914925 1, 170, :_reduce_none,
    915926 1, 170, :_reduce_none,
    916  1, 170, :_reduce_none,
    917  1, 170, :_reduce_none,
    918  1, 170, :_reduce_none,
    919  1, 171, :_reduce_none,
    920  1, 171, :_reduce_none,
    921  1, 171, :_reduce_none,
    922  1, 171, :_reduce_none,
    923  1, 171, :_reduce_none,
    924  1, 171, :_reduce_none,
    925927 1, 116, :_reduce_none,
    926928 1, 116, :_reduce_none,
     929 1, 173, :_reduce_none,
     930 3, 183, :_reduce_none,
     931 3, 183, :_reduce_none,
     932 3, 183, :_reduce_none,
    927933 1, 174, :_reduce_none,
     934 2, 174, :_reduce_none,
     935 2, 174, :_reduce_none,
    928936 3, 184, :_reduce_none,
    929937 3, 184, :_reduce_none,
    930938 3, 184, :_reduce_none,
     939 5, 192, :_reduce_none,
     940 6, 192, :_reduce_none,
     941 6, 192, :_reduce_none,
     942 7, 192, :_reduce_none,
     943 4, 192, :_reduce_none,
     944 4, 192, :_reduce_none,
     945 4, 192, :_reduce_none,
     946 4, 192, :_reduce_none,
     947 3, 192, :_reduce_none,
    931948 1, 175, :_reduce_none,
    932949 2, 175, :_reduce_none,
     
    945962 3, 193, :_reduce_none,
    946963 1, 176, :_reduce_none,
    947  2, 176, :_reduce_none,
    948  2, 176, :_reduce_none,
     964 1, 176, :_reduce_none,
    949965 3, 186, :_reduce_none,
    950966 3, 186, :_reduce_none,
    951967 3, 186, :_reduce_none,
     968 1, 177, :_reduce_none,
     969 3, 187, :_reduce_none,
     970 3, 187, :_reduce_none,
     971 3, 187, :_reduce_none,
     972 1, 178, :_reduce_none,
     973 3, 188, :_reduce_none,
     974 3, 188, :_reduce_none,
     975 3, 188, :_reduce_none,
    952976 5, 194, :_reduce_none,
    953977 6, 194, :_reduce_none,
     
    959983 4, 194, :_reduce_none,
    960984 3, 194, :_reduce_none,
    961  1, 177, :_reduce_none,
    962  1, 177, :_reduce_none,
    963  3, 187, :_reduce_none,
    964  3, 187, :_reduce_none,
    965  3, 187, :_reduce_none,
    966  1, 178, :_reduce_none,
    967  3, 188, :_reduce_none,
    968  3, 188, :_reduce_none,
    969  3, 188, :_reduce_none,
    970985 1, 179, :_reduce_none,
    971986 3, 189, :_reduce_none,
     
    10071022 4, 197, :_reduce_none,
    10081023 3, 197, :_reduce_none,
     1024 1, 171, :_reduce_none,
     1025 3, 172, :_reduce_none,
     1026 3, 172, :_reduce_none,
     1027 3, 172, :_reduce_none,
    10091028 1, 182, :_reduce_none,
    1010  3, 192, :_reduce_none,
    1011  3, 192, :_reduce_none,
    1012  3, 192, :_reduce_none,
    1013  5, 198, :_reduce_none,
    1014  6, 198, :_reduce_none,
    1015  6, 198, :_reduce_none,
    1016  7, 198, :_reduce_none,
    1017  4, 198, :_reduce_none,
    1018  4, 198, :_reduce_none,
    1019  4, 198, :_reduce_none,
    1020  4, 198, :_reduce_none,
    1021  3, 198, :_reduce_none,
    1022  1, 172, :_reduce_none,
    1023  3, 173, :_reduce_none,
    1024  3, 173, :_reduce_none,
    1025  3, 173, :_reduce_none,
    1026  1, 183, :_reduce_none,
    10271029 1, 111, :_reduce_none,
    10281030 2, 111, :_reduce_none,
     1031 3, 198, :_reduce_none,
     1032 1, 198, :_reduce_none,
     1033 3, 198, :_reduce_none,
     1034 1, 149, :_reduce_none,
     1035 1, 149, :_reduce_none,
     1036 2, 200, :_reduce_none,
     1037 2, 200, :_reduce_none,
     1038 5, 200, :_reduce_none,
     1039 5, 200, :_reduce_none,
     1040 2, 200, :_reduce_none,
     1041 3, 200, :_reduce_none,
     1042 3, 200, :_reduce_none,
     1043 3, 200, :_reduce_none,
     1044 3, 200, :_reduce_none,
     1045 3, 200, :_reduce_none,
     1046 3, 200, :_reduce_none,
     1047 3, 200, :_reduce_none,
     1048 3, 200, :_reduce_none,
     1049 3, 200, :_reduce_none,
     1050 3, 200, :_reduce_none,
    10291051 3, 199, :_reduce_none,
    10301052 1, 199, :_reduce_none,
    1031  3, 199, :_reduce_none,
    1032  1, 150, :_reduce_none,
    1033  1, 150, :_reduce_none,
    1034  2, 201, :_reduce_none,
    1035  2, 201, :_reduce_none,
    1036  5, 201, :_reduce_none,
    1037  5, 201, :_reduce_none,
    1038  2, 201, :_reduce_none,
    1039  3, 201, :_reduce_none,
    1040  3, 201, :_reduce_none,
    1041  3, 201, :_reduce_none,
    1042  3, 201, :_reduce_none,
    1043  3, 201, :_reduce_none,
    1044  3, 201, :_reduce_none,
    1045  3, 201, :_reduce_none,
    1046  3, 201, :_reduce_none,
    1047  3, 201, :_reduce_none,
    1048  3, 201, :_reduce_none,
    1049  3, 200, :_reduce_none,
    1050  1, 200, :_reduce_none,
    1051  1, 200, :_reduce_none,
     1053 1, 199, :_reduce_none,
     1054 1, 202, :_reduce_none,
     1055 1, 202, :_reduce_none,
     1056 3, 204, :_reduce_none,
     1057 3, 204, :_reduce_none,
     1058 3, 204, :_reduce_none,
     1059 3, 204, :_reduce_none,
     1060 3, 204, :_reduce_none,
     1061 3, 203, :_reduce_none,
    10521062 1, 203, :_reduce_none,
    10531063 1, 203, :_reduce_none,
    1054  3, 205, :_reduce_none,
    1055  3, 205, :_reduce_none,
    1056  3, 205, :_reduce_none,
    1057  3, 205, :_reduce_none,
    1058  3, 205, :_reduce_none,
    1059  3, 204, :_reduce_none,
    1060  1, 204, :_reduce_none,
    1061  1, 204, :_reduce_none,
    1062  1, 204, :_reduce_none,
    1063  1, 128, :_reduce_none,
    1064  2, 128, :_reduce_none,
    1065  1, 202, :_reduce_none,
    1066  3, 202, :_reduce_none,
    1067  2, 206, :_reduce_none,
     1064 1, 203, :_reduce_none,
     1065 1, 127, :_reduce_none,
     1066 2, 127, :_reduce_none,
     1067 1, 201, :_reduce_none,
     1068 3, 201, :_reduce_none,
     1069 2, 205, :_reduce_none,
     1070 1, 205, :_reduce_none,
     1071 0, 144, :_reduce_none,
     1072 5, 144, :_reduce_none,
    10681073 1, 206, :_reduce_none,
    1069  0, 145, :_reduce_none,
     1074 3, 206, :_reduce_none,
    10701075 5, 145, :_reduce_none,
    10711076 1, 207, :_reduce_none,
    10721077 3, 207, :_reduce_none,
    1073  5, 146, :_reduce_none,
    1074  1, 208, :_reduce_none,
    1075  3, 208, :_reduce_none,
    1076  3, 208, :_reduce_none,
    1077  3, 208, :_reduce_none,
    1078  5, 208, :_reduce_none,
    1079  5, 208, :_reduce_none,
    1080  5, 208, :_reduce_none,
    1081  5, 208, :_reduce_none,
    1082  1, 210, :_reduce_none,
    1083  1, 210, :_reduce_none,
     1078 3, 207, :_reduce_none,
     1079 3, 207, :_reduce_none,
     1080 5, 207, :_reduce_none,
     1081 5, 207, :_reduce_none,
     1082 5, 207, :_reduce_none,
     1083 5, 207, :_reduce_none,
     1084 1, 209, :_reduce_none,
     1085 1, 209, :_reduce_none,
    10841086 0, 115, :_reduce_none,
    10851087 5, 115, :_reduce_none,
    10861088 2, 115, :_reduce_none,
    1087  1, 209, :_reduce_none,
    1088  3, 209, :_reduce_none,
     1089 1, 208, :_reduce_none,
     1090 3, 208, :_reduce_none,
     1091 1, 210, :_reduce_none,
     1092 1, 210, :_reduce_none,
     1093 1, 210, :_reduce_none,
     1094 1, 133, :_reduce_none,
     1095 3, 133, :_reduce_none,
     1096 3, 133, :_reduce_none,
    10891097 1, 211, :_reduce_none,
    10901098 1, 211, :_reduce_none,
     
    11121120 3, 137, :_reduce_none,
    11131121 1, 215, :_reduce_none,
     1122 3, 215, :_reduce_none,
    11141123 1, 215, :_reduce_none,
    11151124 1, 215, :_reduce_none,
     
    11171126 3, 138, :_reduce_none,
    11181127 3, 138, :_reduce_none,
    1119  1, 216, :_reduce_none,
    1120  3, 216, :_reduce_none,
    1121  1, 216, :_reduce_none,
    1122  1, 216, :_reduce_none,
     1128 1, 217, :_reduce_none,
     1129 1, 217, :_reduce_none,
     1130 3, 217, :_reduce_none,
    11231131 1, 139, :_reduce_none,
    11241132 3, 139, :_reduce_none,
     
    11271135 1, 218, :_reduce_none,
    11281136 3, 218, :_reduce_none,
     1137 3, 218, :_reduce_none,
    11291138 1, 140, :_reduce_none,
    11301139 3, 140, :_reduce_none,
    11311140 3, 140, :_reduce_none,
    1132  1, 219, :_reduce_none,
    1133  1, 219, :_reduce_none,
    1134  3, 219, :_reduce_none,
    1135  3, 219, :_reduce_none,
    1136  1, 141, :_reduce_none,
    1137  3, 141, :_reduce_none,
    1138  3, 141, :_reduce_none,
    11391141 1, 124, :_reduce_none,
    11401142 3, 124, :_reduce_none,
    11411143 3, 124, :_reduce_none,
    1142  1, 220, :_reduce_none,
     1144 1, 219, :_reduce_none,
     1145 3, 219, :_reduce_none,
    11431146 3, 220, :_reduce_none,
    1144  3, 221, :_reduce_none,
    11451147 1, 123, :_reduce_none,
    11461148 1, 123, :_reduce_none,
    1147  3, 222, :_reduce_none,
    1148  0, 223, :_reduce_none,
    1149  1, 223, :_reduce_none,
    1150  2, 223, :_reduce_none,
     1149 3, 221, :_reduce_none,
     1150 0, 222, :_reduce_none,
     1151 1, 222, :_reduce_none,
     1152 2, 222, :_reduce_none,
    11511153 1, 122, :_reduce_none,
    1152  1, 149, :_reduce_none,
    1153  1, 149, :_reduce_none,
    1154  1, 217, :_reduce_none ]
    1155 
    1156 racc_reduce_n = 377
    1157 
    1158 racc_shift_n = 634
     1154 1, 148, :_reduce_none,
     1155 1, 148, :_reduce_none,
     1156 1, 216, :_reduce_none ]
     1157
     1158racc_reduce_n = 376
     1159
     1160racc_shift_n = 633
    11591161
    11601162racc_action_table = [
    1161    574,   497,   475,   144,   409,    90,    96,   472,   467,   469,
    1162     24,   591,   572,   576,     1,   466,   376,    16,   152,   155,
    1163    323,   324,   108,    67,   368,    54,   162,   112,   524,   163,
    1164     67,   262,   124,     6,   236,    17,   536,   511,    25,   514,
    1165    516,   513,   543,    49,   571,   540,    90,    96,   541,   542,
    1166     49,    44,    46,   317,   156,   495,    78,   183,   112,    86,
    1167    294,   299,   410,   124,   126,   109,   112,   526,   112,   524,
    1168    573,   124,   109,   126,    86,   493,   443,   536,   511,    71,
    1169    514,   516,   273,    90,    96,   309,   314,   279,   532,   148,
    1170    149,   287,    44,    46,   317,   147,   435,    78,   183,   112,
    1171     86,   294,   299,   491,   124,   126,   109,   112,   526,   480,
    1172    160,   109,   152,   155,   431,   143,   628,   217,   463,   323,
    1173    324,    90,    96,   382,   383,   433,   309,   314,   279,   532,
    1174    126,   317,   287,   112,    78,   183,   100,    86,   294,   299,
    1175    230,   124,   126,   109,   112,    90,    96,   371,   156,   216,
    1176     88,    94,   109,   152,   155,   133,   126,   124,   138,   142,
    1177    100,    76,   127,   309,   314,   279,    90,    96,   124,   287,
    1178    152,   155,    78,    86,    78,    86,    88,    94,   152,   155,
    1179    126,   100,   138,   148,   149,    82,    85,   152,   155,   156,
    1180    157,   158,    71,   459,   150,   390,    78,   151,   153,    86,
    1181     88,    94,   134,    98,   152,   155,   156,   152,   155,    82,
    1182     85,   237,    44,    46,   156,   458,    71,    78,    90,    96,
    1183     86,    88,    94,   156,   148,   149,   129,   391,   323,   324,
    1184     82,    85,   568,   219,   382,   383,   274,    71,   323,   324,
    1185    156,   148,   149,   156,   152,   155,   211,   157,   158,   148,
    1186    149,   150,   393,   154,   151,   153,   382,   383,   148,   149,
    1187    236,    62,   165,   166,   167,   168,    90,    96,   212,    78,
    1188     12,   395,    86,   323,   324,   148,   149,   489,   148,   149,
    1189    156,   100,    86,    44,    46,    78,   215,    90,    96,    71,
    1190     14,   396,    86,   323,   324,   382,   383,   417,   102,    90,
    1191     96,   378,   100,   138,   341,   342,   164,    78,   214,   239,
    1192    154,    90,    96,   180,   100,   148,   149,    78,    90,    96,
    1193     86,    88,    94,  -374,   138,   397,   100,    86,   382,   383,
    1194     82,    85,   456,   219,    90,    96,   138,    71,    78,    44,
    1195     46,    86,    88,    94,    90,    96,    78,    86,   138,   219,
    1196     78,    82,    85,    86,    88,    94,    90,    96,    71,   100,
    1197    398,   329,    78,    82,    85,    86,    88,    94,   123,    78,
    1198     71,   100,    86,   374,    37,    82,    85,    90,    96,    78,
    1199    399,    98,    71,   109,    33,    78,    90,    96,    86,    71,
    1200     44,    46,   100,   138,    58,    78,   382,   383,    86,    88,
    1201     94,   219,    90,    96,   386,    71,   385,    78,    82,    85,
    1202     86,    88,    94,   400,    98,    71,    49,   219,   323,   324,
    1203     82,    85,    49,    44,    46,    44,    46,    71,    78,    90,
    1204     96,    86,    88,    94,   171,    90,    96,    78,   401,   209,
    1205     86,    82,    85,   380,   100,   479,   388,    78,    71,    33,
    1206    219,  -375,   402,    78,   382,   383,    86,    71,   403,    90,
    1207     96,    90,    96,   382,   383,    20,   138,    21,   322,   382,
    1208    383,   404,    86,    71,   219,   405,   100,    90,    96,   169,
    1209     78,    49,   170,    86,    88,    94,    78,    90,    96,    86,
    1210     44,    46,   219,    82,    85,   406,    90,    96,    98,   414,
    1211     71,   407,   100,    90,    96,    78,    71,    44,    46,   408,
    1212     78,   219,    78,    86,   413,    86,    88,    94,   219,   265,
    1213     78,    90,    96,   261,    98,    82,    85,    20,    78,    21,
    1214     71,    86,    71,    44,    46,   267,   219,   102,    78,   343,
    1215    344,    86,    88,    94,    90,    96,   268,    78,    71,   570,
    1216     86,    82,    85,   268,    78,    55,   266,    86,    71,   100,
    1217    382,   383,    90,    96,   260,    33,   259,    71,   163,    90,
    1218     96,   170,    78,   258,    71,    86,   264,   219,    44,    46,
    1219     33,    98,   165,   166,   167,   168,   180,    90,    96,   380,
    1220     44,    46,    71,   339,   340,    78,   414,    49,    86,    88,
    1221     94,    90,    96,   618,   619,   620,    44,    46,    82,    85,
    1222    265,    78,    49,    78,   266,    71,    86,   127,    90,    96,
    1223     78,    44,    46,    86,   119,   121,   123,   124,   126,   109,
    1224    112,  -104,   115,    71,   267,   202,    90,    96,    78,   183,
    1225    257,    86,   119,   121,   123,   124,   126,   109,   112,   180,
    1226    115,   256,    78,   382,   383,    86,   255,   498,   436,   124,
    1227    126,   109,   112,    90,    96,   382,   383,   252,   437,    78,
    1228    245,   438,    86,   249,   251,   439,   124,   126,   109,   112,
    1229     90,    96,   440,   326,   351,   352,   441,    78,   119,   121,
    1230     86,   599,   600,   254,   124,   126,   109,   112,    29,    30,
    1231    444,   414,   365,   366,    78,   165,   166,   167,   168,   165,
    1232    166,   167,   168,   445,    78,   446,   413,    86,   119,   121,
    1233    447,   124,   126,   109,   112,   165,   166,   167,   168,   273,
    1234    274,    78,    44,    46,    86,   119,   121,   448,   124,   126,
    1235    109,   112,   165,   166,   167,   168,   165,   166,   167,   168,
    1236    165,   166,   167,   168,   165,   166,   167,   168,   632,   633,
    1237    428,   429,   426,   427,   424,   425,   422,   423,   420,   421,
    1238    418,   419,   331,   332,   449,   450,   451,   452,   453,   454,
    1239    455,   243,   162,   169,   242,   460,   461,   241,   240,   239,
    1240    238,   471,   138,   474,   171,   478,   112,   142,   482,   268,
    1241    484,   485,   486,   207,   102,   161,   147,   141,   138,   136,
    1242    500,   124,   502,   126,   504,   109,   506,   112,    49,   509,
    1243    510,   131,   538,   539,    69,    68,   545,   546,    62,   548,
    1244    124,   550,   126,   552,   109,   554,   112,    33,   557,   558,
    1245    559,   560,   561,   562,   563,    57,   566,   109,   164,  -104,
    1246    263,   126,    51,   577,   579,   147,   581,   583,   112,   112,
    1247    112,    32,   584,   585,   586,   587,   588,   589,   590,   276,
    1248    593,   594,    28,   597,    27,   277,   601,   602,   603,   318,
    1249     71,   570,   607,   609,   610,   611,    18,   616,   124,    15,
    1250    622,    10,     9,   624,   625,   626,   627,     8,     7,   630,
    1251    631,   123,   112 ]
     1163   576,   435,   474,   155,   409,    92,    96,   471,   467,   469,
     1164    24,   594,   574,   578,    12,   465,     1,   373,   148,   151,
     1165   380,   381,    58,   229,   366,    16,   322,   169,   525,   178,
     1166   170,   118,   120,   125,    14,     6,   538,   513,    25,   515,
     1167   518,   514,   543,    17,   573,   540,    92,    96,   541,   542,
     1168    49,    44,    46,   317,   152,   228,    78,   181,   111,    87,
     1169   296,   300,   410,   123,   125,   109,   111,   529,   111,   525,
     1170   575,   123,   109,   125,    87,   491,   495,   538,   513,    71,
     1171   515,   518,   273,    92,    96,   311,   315,   278,   534,   144,
     1172   145,   288,    44,    46,   317,   158,   489,    78,   181,   111,
     1173    87,   296,   300,   433,   123,   125,   109,   111,   529,   148,
     1174   151,   148,   151,   431,   463,   493,   230,    27,   129,   377,
     1175   378,    92,    96,   262,   148,   151,   311,   315,   278,   534,
     1176   125,   317,   288,   111,    78,   181,   100,    87,   296,   300,
     1177   236,   123,   125,   109,   111,   152,    76,   152,   390,   417,
     1178   123,    92,    96,    60,   380,   381,   480,   215,   138,   109,
     1179   152,   377,   378,   311,   315,   278,   100,   571,   125,   288,
     1180    78,   109,    78,   380,   381,    87,    90,    95,   133,   214,
     1181   144,   145,   144,   145,   631,    82,    85,   274,    98,    92,
     1182    96,   327,    71,   148,   151,   144,   145,    44,    46,   123,
     1183   148,   151,    78,   123,   100,    87,    90,    95,    87,   126,
     1184   148,   151,    78,   153,   154,    82,    85,   146,    44,    46,
     1185   147,   149,    71,   148,   151,   134,   138,    87,   462,   152,
     1186   393,   148,   151,   237,   153,   154,   152,   102,   146,   394,
     1187    78,   147,   149,    87,    90,    95,   152,   236,   143,   168,
     1188   461,   380,   381,    82,    85,    92,    96,   380,   381,   152,
     1189    71,   450,    92,    96,   144,   145,  -373,   152,    92,    96,
     1190   217,   144,   145,    92,    96,   395,   150,   217,    44,    46,
     1191   371,   144,   145,   217,   162,   163,   164,   165,   100,    92,
     1192    96,   111,   142,   166,   144,   145,   167,   150,   396,    92,
     1193    96,   388,   144,   145,   217,    87,    78,   377,   378,    87,
     1194   138,    87,   397,    78,   217,   209,    87,    92,    96,    78,
     1195   380,   381,    87,   102,    78,    34,    71,    87,    90,    95,
     1196    92,    96,   217,    71,   377,   378,   398,    82,    85,    71,
     1197    78,    92,    96,    87,    71,   217,    92,    96,    92,    96,
     1198    78,   399,   369,    87,    92,    96,   217,    49,    78,   400,
     1199    71,   217,   109,   217,    44,    46,    44,    46,    78,   217,
     1200    71,    87,    92,    96,    87,   380,   381,   401,    66,   498,
     1201    55,    78,   377,   378,    87,    78,   449,   100,    71,   211,
     1202    34,   402,    78,   377,   378,    87,   403,    78,    49,    78,
     1203    87,    71,    87,    92,    96,    78,   404,   160,    87,   138,
     1204   405,   212,    71,   377,   378,    92,    96,    71,   100,    71,
     1205    44,    46,    49,    78,   171,    71,    87,    90,    95,    87,
     1206   100,    44,    46,    78,   406,   324,    82,    85,    92,    96,
     1207    98,  -374,   121,    71,    78,   377,   378,    90,    95,    44,
     1208    46,   407,   138,   100,    78,   341,   342,    87,    90,    95,
     1209   408,    92,    96,   383,    78,   263,    78,    82,    85,    87,
     1210    90,    95,   377,   378,    71,    98,   100,   337,   338,    82,
     1211    85,   413,    92,    96,    44,    46,    71,   265,   261,    78,
     1212   570,   264,    87,    90,    95,   265,   412,   100,   138,   377,
     1213   378,   268,    82,    85,   266,    92,    96,   260,   413,    71,
     1214    29,    30,    78,    92,    96,    87,    90,    95,   259,   138,
     1215   100,   258,   386,    78,   385,    82,    85,   375,   217,   479,
     1216   264,    37,    71,    78,    92,    96,    87,    90,    95,   355,
     1217   356,    34,    98,   265,   377,   378,    82,    85,   497,   100,
     1218    78,    44,    46,    71,   357,   358,    78,    92,    96,    87,
     1219    90,    95,   178,    20,    78,    21,    20,    87,    21,    82,
     1220    85,    98,   100,    49,   377,   378,    71,    34,    92,    96,
     1221    44,    46,    44,    46,    71,    78,   602,   603,    87,    90,
     1222    95,   375,   108,   100,    98,    78,    92,    96,    82,    85,
     1223    66,   339,   340,    44,    46,    71,   273,   274,    78,    49,
     1224   413,    87,    90,    95,   266,   138,    92,    96,    44,    46,
     1225    49,    82,    85,   118,   120,   412,   629,   630,    71,    78,
     1226    92,    96,    87,    90,    95,   162,   163,   164,   165,   611,
     1227   612,   613,    82,    85,   126,   428,   429,    78,   267,    71,
     1228    87,   118,   120,   121,   123,   125,   109,   111,   257,   114,
     1229  -103,    92,    96,   256,   201,   426,   427,    78,   181,   255,
     1230    87,   118,   120,   121,   123,   125,   109,   111,   178,   114,
     1231   436,    78,   424,   425,    87,   422,   423,   437,   123,   125,
     1232   109,   111,    92,    96,   420,   421,   253,   418,   419,   245,
     1233   118,   120,   249,   250,    92,    96,   162,   163,   164,   165,
     1234   329,   330,    78,   438,   439,    87,    92,    96,   440,   123,
     1235   125,   109,   111,   162,   163,   164,   165,   162,   163,   164,
     1236   165,   162,   163,   164,   165,   162,   163,   164,   165,   162,
     1237   163,   164,   165,    78,   441,   442,    87,   443,   444,   445,
     1238   123,   125,   109,   111,   446,    78,   447,   254,    87,   243,
     1239   452,   453,   123,   125,   109,   111,   454,    78,   455,   456,
     1240    87,   457,   166,   169,   123,   125,   109,   111,   162,   163,
     1241   164,   165,   167,   170,   459,   460,   242,   241,   240,   239,
     1242   238,   138,   473,   171,   476,   477,   268,   142,   482,   111,
     1243   484,   485,   486,   123,   207,   102,   161,   158,   141,   138,
     1244   500,   125,   502,   109,   504,   111,   506,   136,    49,   509,
     1245   510,   511,   512,   131,    69,    68,   545,   546,   123,   548,
     1246   125,   550,   109,   552,   111,   554,    34,    60,   557,   558,
     1247   559,   560,   561,   562,   563,   564,   566,    57,   568,   109,
     1248   168,  -103,    54,   276,    51,   580,   581,   158,   111,   111,
     1249   111,    32,   583,   584,   585,   586,   587,   588,   277,   591,
     1250   592,   593,    28,   596,   597,   263,   600,   319,   121,   604,
     1251   605,   606,   607,    71,   570,   609,   125,    18,   618,   620,
     1252   621,   622,    15,   624,    10,     9,   626,   627,   628,   123,
     1253     8,     7,   111 ]
    12521254
    12531255racc_action_check = [
    1254    529,   427,   405,    82,   312,   529,   529,   403,   400,   401,
    1255     18,   567,   527,   529,     0,   399,   261,    10,   319,   319,
    1256    399,   399,    59,    47,   255,    31,    90,   261,   529,    90,
    1257     59,   196,   255,     0,   319,    10,   529,   529,    18,   529,
    1258    529,   459,   478,    47,   527,   478,   459,   459,   478,   478,
    1259     59,   529,   529,   529,   319,   425,   529,   529,   427,   529,
    1260    529,   529,   312,   529,   529,   529,   529,   529,   405,   459,
    1261    527,   400,   403,   401,   399,   423,   352,   459,   459,    82,
    1262    459,   459,   459,   215,   215,   529,   529,   529,   529,   319,
    1263    319,   529,   459,   459,   459,   567,   344,   459,   459,   478,
    1264    459,   459,   459,   421,   459,   459,   459,   459,   459,   408,
    1265     85,   425,   222,   222,   340,    81,   622,   147,   398,   267,
    1266    267,   622,   622,   398,   398,   342,   459,   459,   459,   459,
    1267    423,   215,   459,   352,   215,   215,   622,   215,   215,   215,
    1268    161,   215,   215,   215,   215,   161,   161,   257,   222,   147,
    1269     85,    85,   344,   225,   225,    69,   257,   421,   622,    81,
    1270    161,    54,   408,   215,   215,   215,    54,    54,   340,   215,
    1271    228,   228,   622,   267,   398,   622,   622,   622,   224,   224,
    1272    342,    54,   161,   222,   222,   622,   622,    84,    84,   225,
    1273     84,    84,   622,   390,    84,   269,   161,    84,    84,   161,
    1274    161,   161,    69,    54,   229,   229,   228,   221,   221,   161,
    1275    161,   173,    54,    54,   224,   390,   161,    54,   158,   158,
    1276     54,    54,    54,    84,   225,   225,    63,   270,   417,   417,
    1277     54,    54,   516,   158,   456,   456,   272,    54,   489,   489,
    1278    229,   228,   228,   221,   172,   172,   141,   172,   172,   224,
    1279    224,   172,   274,    84,   172,   172,   498,   498,    84,    84,
    1280    172,    63,   173,   173,   173,   173,   165,   165,   141,   158,
    1281      6,   276,   158,   419,   419,   229,   229,   419,   221,   221,
    1282    172,   165,   417,   516,   516,   456,   143,   168,   168,   158,
    1283      6,   277,   489,   332,   332,   573,   573,   332,    57,   167,
    1284    167,   262,   168,   165,   247,   247,    91,   498,   143,   280,
    1285    172,   166,   166,   262,   167,   172,   172,   165,   219,   219,
    1286    165,   165,   165,    91,   168,   281,   166,   419,   366,   366,
    1287    165,   165,   366,   219,   157,   157,   167,   165,   168,    57,
    1288     57,   168,   168,   168,   623,   623,   573,   332,   166,   157,
    1289    167,   168,   168,   167,   167,   167,   160,   160,   168,   623,
    1290    282,   243,   166,   167,   167,   166,   166,   166,   243,   219,
    1291    167,   160,   219,   260,    27,   166,   166,   616,   616,   366,
    1292    285,   623,   166,   260,    27,   157,   156,   156,   157,   219,
    1293    623,   623,   616,   160,    38,   623,   268,   268,   623,   623,
    1294    623,   156,   155,   155,   266,   157,   266,   160,   623,   623,
    1295    160,   160,   160,   289,   616,   623,    27,   155,   239,   239,
    1296    160,   160,    38,   616,   616,    27,    27,   160,   616,   100,
    1297    100,   616,   616,   616,    98,   154,   154,   156,   292,   136,
    1298    156,   616,   616,   407,   100,   407,   268,   268,   616,   136,
    1299    154,    98,   294,   155,   265,   265,   155,   156,   296,   153,
    1300    153,   612,   612,   318,   318,    14,   100,    14,   239,   571,
    1301    571,   299,   239,   155,   153,   300,   612,   148,   148,    96,
    1302    100,   136,    96,   100,   100,   100,   154,   607,   607,   154,
    1303    136,   136,   148,   100,   100,   303,   151,   151,   612,   318,
    1304    100,   305,   607,   150,   150,   265,   154,   612,   612,   307,
    1305    153,   151,   612,   153,   318,   612,   612,   612,   150,   310,
    1306    571,   149,   149,   193,   607,   612,   612,    30,   148,    30,
    1307    153,   148,   612,   607,   607,   315,   149,   131,   607,   248,
    1308    248,   607,   607,   607,    75,    75,   518,   151,   148,   518,
    1309    151,   607,   607,   316,   150,    32,   317,   150,   607,    75,
    1310    485,   485,   152,   152,   190,    32,   189,   151,   323,    62,
    1311     62,   324,   149,   188,   150,   149,   199,   152,   131,   131,
    1312    511,    75,   233,   233,   233,   233,   264,   102,   102,   263,
    1313     75,    75,   149,   246,   246,    75,   485,    32,    75,    75,
    1314     75,   251,   251,   610,   610,   610,    32,    32,    75,    75,
    1315    201,   485,   511,   152,   202,    75,   152,    62,   245,   245,
    1316     62,   511,   511,    62,    62,    62,    62,    62,    62,    62,
    1317     62,   102,    62,   152,   204,   102,   249,   249,   102,   102,
    1318    187,   102,   102,   102,   102,   102,   102,   102,   102,   102,
    1319    102,   186,   251,   429,   429,   251,   185,   429,   345,   251,
    1320    251,   251,   251,   183,   183,   583,   583,   183,   346,   245,
    1321    183,   347,   245,   183,   183,   348,   245,   245,   245,   245,
    1322    252,   252,   349,   241,   250,   250,   350,   249,   241,   241,
    1323    249,   578,   578,   184,   249,   249,   249,   249,    22,    22,
    1324    353,   583,   253,   253,   429,   231,   231,   231,   231,   232,
    1325    232,   232,   232,   354,   183,   355,   583,   183,   238,   238,
    1326    356,   183,   183,   183,   183,    95,    95,    95,    95,   211,
    1327    211,   252,   514,   514,   252,   410,   410,   357,   252,   252,
    1328    252,   252,   234,   234,   234,   234,   235,   235,   235,   235,
    1329    615,   615,   615,   615,   629,   629,   629,   629,   627,   627,
    1330    338,   338,   337,   337,   336,   336,   335,   335,   334,   334,
    1331    333,   333,   244,   244,   358,   359,   360,   361,   362,   363,
    1332    364,   182,   382,   383,   181,   393,   394,   179,   178,   176,
    1333    175,   402,   142,   404,   138,   406,   259,   137,   409,   205,
    1334    411,   413,   416,   111,   106,    89,    83,    79,    71,    70,
    1335    430,   431,   432,   433,   434,   435,   442,   443,    67,   457,
    1336    458,    65,   460,   461,    53,    49,   487,   488,    43,   490,
    1337    491,   492,   493,   494,   495,   496,   497,    41,   499,   501,
    1338    503,   505,   507,   508,   510,    36,   513,   256,   515,    33,
    1339    198,   254,    28,   532,   534,   537,   538,   539,   540,   541,
    1340    542,    26,   547,   549,   551,   553,   555,   556,   564,   212,
    1341    569,   570,    20,   572,    19,   214,   579,   581,   582,   216,
    1342    592,   596,   601,   602,   604,   605,    11,   608,   242,     8,
    1343    614,     5,     4,   617,   618,   619,   620,     3,     2,   625,
    1344    626,   240,   543 ]
     1256   528,   342,   404,    82,   309,   528,   528,   402,   400,   401,
     1257    18,   569,   526,   528,     6,   399,     0,   260,   223,   223,
     1258   399,   399,    36,   158,   255,    10,   239,    96,   528,   260,
     1259    96,   239,   239,   255,     6,     0,   528,   528,    18,   528,
     1260   528,   462,   477,    10,   526,   477,   462,   462,   477,   477,
     1261    36,   528,   528,   528,   223,   158,   528,   528,   342,   528,
     1262   528,   528,   309,   528,   528,   528,   528,   528,   404,   462,
     1263   526,   400,   402,   401,   399,   421,   425,   462,   462,    82,
     1264   462,   462,   462,   215,   215,   528,   528,   528,   528,   223,
     1265   223,   528,   462,   462,   462,   569,   419,   462,   462,   477,
     1266   462,   462,   462,   340,   462,   462,   462,   462,   462,   219,
     1267   219,   220,   220,   338,   398,   423,   161,    19,    61,   398,
     1268   398,   161,   161,   195,   318,   318,   462,   462,   462,   462,
     1269   421,   215,   462,   425,   215,   215,   161,   215,   215,   215,
     1270   318,   215,   215,   215,   215,   219,    54,   220,   269,   330,
     1271   419,    54,    54,    61,   498,   498,   408,   143,   161,   340,
     1272   318,   263,   263,   215,   215,   215,    54,   518,   338,   215,
     1273   398,   423,   161,   450,   450,   161,   161,   161,    69,   143,
     1274   219,   219,   220,   220,   624,   161,   161,   271,    54,   624,
     1275   624,   243,   161,   227,   227,   318,   318,    54,    54,   243,
     1276   226,   226,    54,   330,   624,    54,    54,    54,   498,   408,
     1277    81,    81,   263,    81,    81,    54,    54,    81,   518,   518,
     1278    81,    81,    54,   222,   222,    69,   624,   450,   394,   227,
     1279   274,   172,   172,   173,   172,   172,   226,   131,   172,   275,
     1280   624,   172,   172,   624,   624,   624,    81,   172,    80,    93,
     1281   394,   268,   268,   624,   624,   151,   151,   358,   358,   222,
     1282   624,   358,   153,   153,   227,   227,    93,   172,   152,   152,
     1283   151,   226,   226,   160,   160,   276,    81,   153,   131,   131,
     1284   259,    81,    81,   152,   173,   173,   173,   173,   160,   154,
     1285   154,   259,    80,    92,   222,   222,    92,   172,   277,   150,
     1286   150,   268,   172,   172,   154,   268,   151,   449,   449,   151,
     1287   160,   358,   279,   153,   150,   136,   153,   149,   149,   152,
     1288   264,   264,   152,    57,   160,   136,   151,   160,   160,   160,
     1289   148,   148,   149,   153,   497,   497,   280,   160,   160,   152,
     1290   154,   147,   147,   154,   160,   148,   146,   146,   145,   145,
     1291   150,   283,   258,   150,   144,   144,   147,   136,   449,   286,
     1292   154,   146,   258,   145,    57,    57,   136,   136,   149,   144,
     1293   150,   149,   163,   163,   264,   429,   429,   290,    45,   429,
     1294    32,   148,   356,   356,   148,   497,   356,   163,   149,   141,
     1295    32,   293,   147,   575,   575,   147,   296,   146,    45,   145,
     1296   146,   148,   145,   618,   618,   144,   297,    85,   144,   163,
     1297   300,   141,   147,   265,   265,   164,   164,   146,   618,   145,
     1298   515,   515,    32,   163,    98,   144,   163,   163,   163,   429,
     1299   164,    32,    32,   356,   301,   241,   163,   163,   625,   625,
     1300   618,    98,   241,   163,   575,   563,   563,    85,    85,   618,
     1301   618,   303,   164,   625,   618,   248,   248,   618,   618,   618,
     1302   305,   165,   165,   265,   265,   307,   164,   618,   618,   164,
     1303   164,   164,   484,   484,   618,   625,   165,   246,   246,   164,
     1304   164,   563,   100,   100,   625,   625,   164,   517,   194,   625,
     1305   517,   312,   625,   625,   625,   313,   563,   100,   165,   573,
     1306   573,   316,   625,   625,   317,   609,   609,   192,   484,   625,
     1307    22,    22,   165,   217,   217,   165,   165,   165,   189,   100,
     1308   609,   186,   266,   484,   266,   165,   165,   407,   217,   407,
     1309   199,    27,   165,   100,   614,   614,   100,   100,   100,   251,
     1310   251,    27,   609,   200,   427,   427,   100,   100,   427,   614,
     1311   573,   609,   609,   100,   252,   252,   609,    75,    75,   609,
     1312   609,   609,   262,    30,   217,    30,    14,   217,    14,   609,
     1313   609,   614,    75,    27,   319,   319,   609,   513,   162,   162,
     1314   614,   614,    27,    27,   217,   614,   579,   579,   614,   614,
     1315   614,   261,    59,   162,    75,   427,    60,    60,   614,   614,
     1316    59,   247,   247,    75,    75,   614,   211,   211,    75,   513,
     1317   319,    75,    75,    75,   201,   162,   102,   102,   513,   513,
     1318    59,    75,    75,   410,   410,   319,   622,   622,    75,   162,
     1319   249,   249,   162,   162,   162,   233,   233,   233,   233,   606,
     1320   606,   606,   162,   162,    60,   336,   336,    60,   203,   162,
     1321    60,    60,    60,    60,    60,    60,    60,    60,   185,    60,
     1322   102,   250,   250,   184,   102,   335,   335,   102,   102,   183,
     1323   102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
     1324   343,   249,   334,   334,   249,   333,   333,   344,   249,   249,
     1325   249,   249,   181,   181,   332,   332,   181,   331,   331,   181,
     1326   267,   267,   181,   181,   245,   245,   231,   231,   231,   231,
     1327   244,   244,   250,   345,   346,   250,   253,   253,   347,   250,
     1328   250,   250,   250,   232,   232,   232,   232,   234,   234,   234,
     1329   234,   235,   235,   235,   235,   617,   617,   617,   617,    91,
     1330    91,    91,    91,   181,   348,   349,   181,   350,   351,   352,
     1331   181,   181,   181,   181,   353,   245,   354,   182,   245,   180,
     1332   359,   360,   245,   245,   245,   245,   361,   253,   362,   363,
     1333   253,   364,   377,   378,   253,   253,   253,   253,   632,   632,
     1334   632,   632,   380,   381,   392,   393,   179,   177,   176,   175,
     1335   174,   142,   403,   138,   405,   406,   204,   137,   409,   257,
     1336   412,   415,   416,   417,   128,   106,    86,    83,    79,    71,
     1337   430,   431,   432,   433,   434,   435,   448,    70,    66,   451,
     1338   459,   460,   461,    63,    53,    49,   487,   488,   489,   490,
     1339   491,   492,   493,   494,   495,   496,    42,    41,   499,   501,
     1340   503,   505,   507,   508,   510,   511,   512,    35,   514,   254,
     1341   516,    34,    31,   212,    28,   534,   535,   537,   540,   541,
     1342   542,    26,   547,   549,   551,   553,   555,   556,   214,   564,
     1343   565,   567,    20,   570,   572,   197,   574,   228,   238,   581,
     1344   589,   590,   591,   595,   599,   604,   242,    11,   610,   611,
     1345   612,   613,     8,   616,     5,     4,   619,   620,   621,   240,
     1346     3,     2,   543 ]
    13451347
    13461348racc_action_pointer = [
    1347     13,   nil,   879,   897,   874,   864,   269,   nil,   889,   nil,
    1348     16,   858,   nil,   nil,   441,   nil,   nil,   nil,     9,   844,
    1349    864,   nil,   676,   nil,   nil,   nil,   830,   373,   827,   nil,
    1350    503,    -7,   554,   799,   nil,   nil,   837,   nil,   379,   nil,
    1351    nil,   826,   nil,   778,   nil,   nil,   nil,     0,   nil,   824,
    1352    nil,   nil,   nil,   777,   160,   nil,   nil,   287,   nil,     7,
    1353    nil,   nil,   563,   211,   nil,   813,   nil,   775,   nil,   154,
    1354    760,   765,   nil,   nil,   nil,   538,   nil,   nil,   nil,   774,
    1355    nil,    82,     2,   721,   181,    89,   nil,   nil,   nil,   759,
    1356    -31,   277,   nil,   nil,   nil,   652,   422,   nil,   405,   nil,
    1357    423,   nil,   581,   nil,   nil,   nil,   793,   nil,   nil,   nil,
    1358    nil,   752,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1349    15,   nil,   882,   900,   877,   867,    13,   nil,   892,   nil,
     1350    24,   859,   nil,   nil,   542,   nil,   nil,   nil,     9,    87,
     1351   864,   nil,   488,   nil,   nil,   nil,   830,   530,   829,   nil,
     1352   539,   820,   379,   nil,   801,   839,     7,   nil,   nil,   nil,
     1353   nil,   787,   825,   nil,   nil,   355,   nil,   nil,   nil,   824,
     1354   nil,   nil,   nil,   777,   145,   nil,   nil,   312,   nil,   577,
     1355   590,   103,   nil,   815,   nil,   nil,   775,   nil,   nil,   177,
     1356   768,   766,   nil,   nil,   nil,   551,   nil,   nil,   nil,   775,
     1357   215,   204,     2,   722,   nil,   386,   760,   nil,   nil,   nil,
     1358   nil,   666,   236,   220,   nil,   nil,   -30,   nil,   395,   nil,
     1359   476,   nil,   610,   nil,   nil,   nil,   794,   nil,   nil,   nil,
    13591360   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1360    nil,   526,   nil,   nil,   nil,   nil,   438,   720,   765,   nil,
    1361    nil,   234,   749,   274,   nil,   nil,   nil,   116,   471,   515,
    1362    497,   490,   556,   453,   429,   396,   380,   328,   212,   nil,
    1363    350,   139,   nil,   nil,   nil,   260,   305,   293,   281,   nil,
    1364    nil,   nil,   238,   189,   nil,   735,   734,   nil,   733,   732,
    1365    nil,   729,   726,   657,   638,   601,   596,   585,   558,   511,
    1366    509,   nil,   nil,   468,   nil,   nil,   -24,   nil,   795,   521,
    1367    nil,   555,   559,   nil,   579,   744,   nil,   nil,   nil,   nil,
    1368    nil,   687,   834,   nil,   840,    77,   867,   nil,   nil,   312,
    1369    nil,   201,   106,   nil,   172,   147,   nil,   nil,   164,   198,
    1370    nil,   632,   636,   509,   669,   673,   nil,   nil,   657,   412,
    1371    838,   627,   824,   305,   714,   612,   535,   246,   481,   630,
    1372    626,   595,   674,   644,   786,   -32,   781,    91,   nil,   729,
    1373    317,   -40,   245,   535,   518,   448,   350,   113,   390,   162,
    1374    213,   nil,   193,   nil,   173,   nil,   235,   255,   nil,   nil,
    1375    254,   311,   279,   nil,   nil,   299,   nil,   nil,   nil,   332,
    1376    nil,   nil,   357,   nil,   397,   nil,   377,   nil,   nil,   416,
    1377    394,   nil,   nil,   418,   nil,   446,   nil,   428,   nil,   nil,
    1378    464,   nil,   -19,   nil,   nil,   480,   498,   501,   457,    12,
    1379    nil,   nil,   nil,   508,   511,   nil,   nil,   nil,   nil,   nil,
    1380    nil,   nil,   287,   712,   710,   708,   706,   704,   702,   nil,
    1381    104,   nil,   115,   nil,    86,   600,   610,   613,   617,   624,
    1382    628,   nil,    66,   642,   655,   657,   662,   679,   716,   717,
    1383    718,   719,   720,   721,   722,   nil,   322,   nil,   nil,   nil,
     1361   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   753,   nil,
     1362   nil,   226,   nil,   nil,   nil,   nil,   314,   720,   764,   nil,
     1363   nil,   377,   748,   145,   348,   342,   340,   335,   324,   311,
     1364   293,   249,   262,   256,   283,   nil,   nil,   nil,    22,   nil,
     1365   267,   115,   572,   366,   409,   455,   nil,   nil,   nil,   nil,
     1366   nil,   nil,   225,   211,   735,   734,   733,   732,   nil,   731,
     1367   704,   686,   702,   614,   648,   603,   466,   nil,   nil,   463,
     1368   nil,   nil,   452,   nil,   433,    68,   nil,   820,   nil,   475,
     1369   488,   559,   nil,   593,   741,   nil,   nil,   nil,   nil,   nil,
     1370   nil,   564,   818,   nil,   833,    77,   nil,   507,   nil,   103,
     1371   105,   nil,   217,    12,   nil,   nil,   194,   187,   865,   nil,
     1372   nil,   633,   650,   562,   654,   658,   nil,   nil,   815,   -30,
     1373   835,   379,   821,   135,   652,   698,   419,   543,   397,   624,
     1374   655,   481,   496,   710,   783,   -32,   nil,   732,   296,   224,
     1375   -39,   537,   494,   155,   314,   407,   468,   639,   245,   134,
     1376   nil,   144,   nil,   nil,   151,   206,   239,   262,   nil,   298,
     1377   255,   nil,   nil,   270,   nil,   nil,   278,   nil,   nil,   nil,
     1378   296,   nil,   nil,   310,   nil,   nil,   341,   325,   nil,   nil,
     1379   355,   357,   nil,   396,   nil,   379,   nil,   410,   nil,   -19,
     1380   nil,   nil,   436,   440,   nil,   nil,   446,   449,   118,   568,
    13841381   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1385    nil,   nil,   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,
    1386    181,   nil,   nil,   752,   706,   nil,   nil,   nil,   117,    14,
    1387      7,     8,   729,     6,   732,     1,   737,   389,   108,   797,
    1388    674,   786,   nil,   742,   nil,   nil,   744,   222,   nil,   267,
    1389    nil,    93,   nil,    65,   nil,    45,   nil,    -9,   nil,   647,
    1390    752,   747,   754,   748,   756,   749,   nil,   nil,   nil,   nil,
    1391    nil,   nil,   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,
    1392    nil,   nil,   nil,   nil,   nil,   nil,   228,   761,   785,    40,
    1393    810,   790,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1394    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,
    1395    nil,   nil,   nil,   nil,   nil,   554,   nil,   768,   769,   232,
    1396    771,   766,   773,   767,   775,   768,   777,   769,   250,   780,
     1382   139,   639,   636,   627,   624,   607,   587,   nil,   103,   nil,
     1383    93,   nil,    -9,   622,   629,   655,   656,   660,   686,   687,
     1384   689,   690,   691,   696,   698,   nil,   376,   nil,   251,   702,
     1385   703,   708,   710,   711,   713,   nil,   nil,   nil,   nil,   nil,
     1386   nil,   nil,   nil,   nil,   nil,   nil,   nil,   715,   716,   nil,
     1387   722,   723,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1388   nil,   nil,   704,   752,   216,   nil,   nil,   nil,   113,    14,
     1389     7,     8,     6,   730,     1,   733,   737,   473,   155,   797,
     1390   562,   nil,   741,   nil,   nil,   787,   744,   739,   nil,    86,
     1391   nil,    65,   nil,   105,   nil,    66,   nil,   538,   nil,   369,
     1392   752,   746,   754,   747,   756,   748,   nil,   nil,   nil,   nil,
     1393   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   758,   301,
     1394   167,   761,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   787,
     1395   809,   787,    40,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1396   nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,   nil,
     1397   nil,   nil,   nil,   nil,   466,   nil,   nil,   768,   769,   764,
     1398   771,   765,   773,   766,   775,   767,   777,   328,   148,   780,
    13971399   nil,   781,   nil,   782,   nil,   783,   nil,   784,   785,   nil,
    1398    808,   569,   nil,   832,   680,   819,   231,   nil,   491,   nil,
    1399    nil,   nil,   nil,   nil,   nil,   nil,   nil,   -11,   nil,    -1,
    1400    nil,   nil,   762,   nil,   821,   nil,   nil,   770,   799,   845,
     1400   832,   788,   810,   566,   834,   368,   821,   432,   166,   nil,
     1401   nil,   nil,   nil,   nil,   nil,   nil,   -11,   nil,    -1,   nil,
     1402   nil,   nil,   nil,   nil,   764,   823,   nil,   772,   nil,   nil,
    14011403   791,   792,   793,   835,   nil,   nil,   nil,   804,   nil,   805,
    14021404   nil,   806,   nil,   807,   nil,   808,   809,   nil,   nil,   nil,
    1403    nil,   nil,   nil,   nil,   829,   nil,   nil,    10,   nil,   841,
    1404    803,   463,   872,   289,   nil,   nil,   nil,   nil,   601,   864,
    1405    nil,   818,   864,   659,   nil,   nil,   nil,   nil,   nil,   nil,
    1406    nil,   nil,   803,   nil,   nil,   nil,   823,   nil,   nil,   nil,
    1407    nil,   838,   826,   nil,   803,   871,   nil,   481,   842,   nil,
    1408    521,   nil,   455,   nil,   844,   677,   371,   879,   813,   814,
    1409    815,   nil,   115,   338,   nil,   815,   816,   676,   nil,   681,
    1410    nil,   nil,   nil,   nil ]
     1405   nil,   nil,   nil,   439,   810,   856,   nil,   832,   nil,    10,
     1406   805,   nil,   845,   493,   875,   387,   nil,   nil,   nil,   496,
     1407   nil,   867,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   866,
     1408   800,   825,   nil,   nil,   nil,   806,   nil,   nil,   nil,   826,
     1409   nil,   nil,   nil,   nil,   841,   nil,   557,   nil,   nil,   499,
     1410   843,   808,   809,   810,   528,   nil,   847,   662,   397,   882,
     1411   813,   814,   544,   nil,   183,   432,   nil,   nil,   nil,   nil,
     1412   nil,   nil,   705 ]
    14111413
    14121414racc_action_default = [
    1413   -377,    -2,  -377,  -377,  -377,   -13,    -6,    -4,  -377,    -1,
    1414   -377,  -377,    -5,    -7,  -377,   634,   -15,   -14,  -377,   -18,
    1415   -377,   -12,  -377,    -9,   -17,   -16,   -21,  -377,  -377,    -8,
    1416   -377,  -377,  -377,  -113,   -91,  -109,  -377,   -20,  -377,   -99,
    1417   -100,  -377,  -101,  -377,  -147,   -88,  -148,   -89,   -19,   -95,
    1418    -90,   -11,   -10,   -83,  -377,   -23,   -22,  -377,  -111,  -377,
    1419   -110,  -102,  -377,  -377,  -105,  -377,   -92,  -377,   -96,  -377,
    1420   -377,  -285,  -283,   -26,  -249,   -27,   -25,  -254,  -153,  -377,
    1421   -255,  -377,  -377,  -306,  -377,  -377,  -168,  -274,  -272,  -377,
    1422   -377,   -31,  -284,  -275,  -273,  -252,  -377,  -287,  -290,  -282,
    1423   -377,   -24,  -113,   -94,  -114,   -98,  -377,   -97,  -112,  -218,
    1424   -124,  -377,  -231,  -125,  -126,  -248,  -127,  -128,  -129,  -183,
    1425   -130,  -184,  -131,  -188,  -192,  -122,  -205,  -149,  -123,  -103,
    1426   -106,  -377,   -93,   -85,   -84,    -3,  -377,  -286,  -290,  -250,
    1427   -374,  -377,  -377,  -377,  -257,  -256,   -30,  -377,  -377,  -377,
    1428   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -260,
    1429   -377,  -377,  -154,  -169,   -32,  -377,  -377,  -377,  -377,  -155,
    1430   -170,  -289,  -377,  -377,  -146,  -135,  -124,  -117,  -136,  -125,
    1431   -244,  -137,  -126,  -377,  -138,  -127,  -139,  -128,  -377,  -140,
    1432   -129,  -118,  -141,  -130,  -119,  -142,  -120,  -143,  -132,  -121,
    1433   -144,  -133,  -149,  -145,  -134,  -123,  -115,  -108,  -107,   -87,
    1434    -86,  -377,  -377,  -288,  -377,  -377,  -377,  -308,  -279,  -377,
    1435   -280,  -264,  -265,  -276,  -266,  -261,  -277,  -278,  -262,  -263,
    1436   -253,  -251,  -267,  -268,  -269,  -270,  -281,  -271,  -377,  -377,
    1437   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
    1438   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -116,  -377,
    1439   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
    1440   -377,   -33,   -34,   -63,  -291,   -64,  -377,  -377,  -344,  -335,
    1441   -317,  -377,  -314,   -55,  -324,  -320,   -56,  -376,  -330,  -326,
    1442    -57,  -336,  -332,   -58,  -354,  -343,  -338,  -313,   -59,  -355,
    1443   -345,  -319,   -60,  -341,  -325,  -349,   -61,  -351,  -331,  -323,
    1444   -312,   -62,  -358,  -337,  -329,  -318,  -311,  -348,  -377,  -377,
    1445   -186,  -171,  -173,  -377,  -377,  -190,  -187,  -185,  -194,  -191,
    1446   -189,  -182,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -204,
    1447   -377,  -217,  -377,  -230,  -377,  -377,  -377,  -377,  -377,  -377,
    1448   -377,  -243,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
    1449   -377,  -377,  -377,  -377,  -377,  -167,  -377,  -207,  -195,  -193,
    1450   -220,  -208,  -206,  -233,  -221,  -219,  -234,  -232,  -247,  -245,
    1451   -151,  -246,  -377,  -377,  -157,  -152,  -150,  -172,  -158,  -156,
    1452   -377,   -29,   -65,  -377,   -69,   -28,  -259,  -258,  -377,  -377,
    1453   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
    1454   -377,  -377,  -309,  -153,  -305,  -304,  -377,  -377,  -180,  -377,
    1455   -202,  -377,  -215,  -377,  -228,  -377,  -241,  -377,  -165,  -377,
    1456   -377,  -377,  -377,  -377,  -377,  -377,  -179,  -201,  -214,  -227,
    1457   -240,  -164,  -377,  -377,  -181,  -203,  -216,  -229,  -242,  -166,
    1458   -178,  -200,  -213,  -226,  -239,  -163,  -377,  -377,  -377,  -377,
    1459   -377,  -377,   -70,  -316,  -315,  -321,  -322,  -328,  -327,  -334,
    1460   -333,  -356,  -340,  -339,  -357,  -347,  -346,  -342,  -377,  -350,
    1461   -353,  -352,  -360,  -359,  -307,  -377,  -174,  -377,  -377,  -377,
    1462   -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
    1463   -196,  -377,  -209,  -377,  -222,  -377,  -235,  -377,  -377,  -159,
    1464   -377,  -377,   -54,   -44,  -377,   -31,  -377,   -73,  -311,   -71,
    1465    -36,   -37,   -38,   -39,  -373,   -40,  -368,  -361,   -41,  -377,
    1466   -364,   -42,  -370,  -367,  -377,   -35,   -43,  -306,  -377,  -377,
    1467   -377,  -377,  -377,  -377,  -310,  -176,  -175,  -377,  -197,  -377,
    1468   -210,  -377,  -223,  -377,  -236,  -377,  -377,  -160,  -198,  -211,
    1469   -224,  -237,  -161,   -67,  -377,   -46,   -68,  -306,   -53,   -51,
    1470   -377,  -377,  -377,  -377,   -44,   -72,   -66,  -371,  -377,  -377,
    1471    -50,  -293,  -377,  -377,  -177,  -199,  -212,  -225,  -238,  -162,
    1472    -45,   -48,  -377,   -52,  -366,  -365,  -377,  -363,  -362,  -369,
    1473   -372,   -74,  -377,  -292,  -296,  -377,   -47,  -377,   -76,  -294,
    1474   -377,  -295,   -75,   -78,  -377,   -81,  -377,  -377,  -297,  -298,
    1475   -299,   -79,  -377,   -77,   -49,  -377,  -377,  -377,   -82,   -80,
    1476   -300,  -301,  -302,  -303 ]
     1415  -376,    -2,  -376,  -376,  -376,   -13,    -6,    -4,  -376,    -1,
     1416  -376,  -376,    -5,    -7,  -376,   633,   -15,   -14,  -376,   -18,
     1417  -376,   -12,  -376,    -9,   -17,   -16,   -21,  -376,  -376,    -8,
     1418  -376,  -376,  -376,  -108,  -112,  -376,  -376,   -20,   -98,   -99,
     1419  -100,  -376,  -376,   -87,  -146,   -88,  -147,   -89,   -19,   -94,
     1420   -90,   -11,   -10,   -82,  -376,   -23,   -22,  -376,  -110,  -376,
     1421  -376,  -376,  -104,  -376,  -109,  -101,  -376,   -91,   -95,  -376,
     1422  -376,  -284,  -248,   -26,  -253,   -27,   -25,  -254,  -152,  -376,
     1423  -376,  -376,  -376,  -305,  -273,  -376,  -376,  -167,  -283,  -274,
     1424  -271,  -251,  -376,   -31,  -286,  -272,  -376,  -281,  -289,  -282,
     1425  -376,   -24,  -112,   -93,  -113,   -97,  -376,   -96,  -111,  -217,
     1426  -124,  -230,  -125,  -126,  -247,  -127,  -128,  -129,  -182,  -130,
     1427  -183,  -187,  -121,  -191,  -122,  -204,  -148,  -123,  -376,  -102,
     1428  -105,  -376,   -92,   -84,   -83,    -3,  -376,  -285,  -289,  -249,
     1429  -373,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1430  -376,  -376,  -376,  -376,  -376,  -256,  -255,   -30,  -376,  -259,
     1431  -376,  -376,  -376,  -376,  -376,  -376,  -153,  -168,   -32,  -154,
     1432  -169,  -288,  -376,  -376,  -135,  -124,  -136,  -125,  -243,  -137,
     1433  -126,  -376,  -138,  -127,  -376,  -139,  -128,  -117,  -140,  -129,
     1434  -118,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -144,  -133,
     1435  -122,  -148,  -145,  -134,  -123,  -116,  -114,  -107,  -106,   -86,
     1436   -85,  -376,  -376,  -287,  -376,  -376,  -278,  -376,  -279,  -263,
     1437  -264,  -275,  -265,  -260,  -276,  -277,  -261,  -262,  -376,  -307,
     1438  -252,  -250,  -266,  -267,  -268,  -269,  -280,  -270,  -376,  -376,
     1439  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1440  -376,  -376,  -376,  -376,  -376,  -376,  -115,  -376,  -376,  -376,
     1441  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1442   -33,   -34,   -63,   -62,  -290,  -376,  -376,  -376,  -334,  -376,
     1443  -313,   -54,  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,
     1444  -331,   -57,  -342,  -337,  -312,   -58,  -353,  -344,  -318,   -59,
     1445  -354,  -340,  -324,  -348,   -60,  -350,  -330,  -311,   -61,  -357,
     1446  -336,  -322,  -317,  -310,  -343,  -328,  -316,  -347,  -376,  -376,
     1447  -189,  -184,  -186,  -193,  -190,  -188,  -206,  -194,  -192,  -203,
     1448  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -216,  -376,  -229,
     1449  -376,  -242,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1450  -376,  -376,  -376,  -376,  -376,  -166,  -376,  -181,  -376,  -376,
     1451  -376,  -376,  -376,  -376,  -376,  -219,  -207,  -205,  -232,  -220,
     1452  -218,  -233,  -231,  -246,  -244,  -150,  -245,  -376,  -376,  -156,
     1453  -376,  -376,  -171,  -157,  -155,  -151,  -149,  -185,  -172,  -170,
     1454   -29,   -64,   -68,  -376,  -376,   -28,  -258,  -257,  -376,  -376,
     1455  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1456  -376,  -308,  -152,  -304,  -303,  -376,  -376,  -376,  -201,  -376,
     1457  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,  -179,  -376,
     1458  -376,  -376,  -376,  -376,  -376,  -376,  -200,  -213,  -226,  -239,
     1459  -163,  -178,  -202,  -215,  -228,  -241,  -165,  -180,  -376,  -376,
     1460  -376,  -376,  -199,  -212,  -225,  -238,  -162,  -177,   -69,  -376,
     1461  -376,  -376,  -376,  -315,  -314,  -321,  -320,  -327,  -326,  -333,
     1462  -332,  -339,  -338,  -355,  -346,  -345,  -356,  -376,  -341,  -349,
     1463  -352,  -351,  -359,  -358,  -376,  -306,  -195,  -376,  -376,  -376,
     1464  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     1465  -208,  -376,  -221,  -376,  -234,  -376,  -158,  -376,  -376,  -173,
     1466  -376,  -376,  -376,  -376,   -44,  -376,   -31,  -310,  -376,   -72,
     1467   -70,   -36,   -37,   -38,   -39,  -372,  -360,   -40,  -376,  -367,
     1468  -363,   -41,  -366,   -42,  -369,  -376,   -35,  -305,   -43,   -53,
     1469  -376,  -376,  -376,  -376,  -309,  -197,  -196,  -376,  -209,  -376,
     1470  -222,  -376,  -235,  -376,  -159,  -376,  -376,  -174,  -210,  -223,
     1471  -236,  -160,  -175,  -376,  -292,  -376,   -66,  -376,   -67,  -305,
     1472  -376,   -52,   -50,  -376,  -376,  -376,   -44,   -71,   -65,  -376,
     1473  -370,  -376,   -49,  -198,  -211,  -224,  -237,  -161,  -176,  -376,
     1474  -295,  -376,  -291,   -45,   -47,  -376,  -365,   -51,  -364,  -376,
     1475  -362,  -361,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,
     1476   -75,  -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,
     1477  -376,  -376,  -376,   -78,  -376,   -76,   -48,  -299,  -300,  -301,
     1478  -302,   -81,   -79 ]
    14771479
    14781480racc_goto_table = [
    1479     95,   128,   146,   145,   113,   411,    41,    48,   271,   110,
    1480    174,    41,    56,   196,   172,   103,   114,   519,   107,   120,
    1481     61,    95,   275,    60,    74,   181,   111,    89,   621,   612,
    1482    118,   394,    64,    91,    23,    66,   106,   529,   623,   621,
    1483    117,   205,   281,    59,   179,   139,   173,    66,    89,   176,
    1484     52,   116,   130,   218,   220,   132,   182,   223,   617,   193,
    1485    226,   227,   608,   564,   221,   222,   177,   224,   225,   272,
    1486    190,   228,   229,    63,   270,    75,    73,   206,   188,   191,
    1487    187,   194,   101,   392,   199,    61,   481,   575,    60,   208,
    1488      3,   185,   107,    22,    13,     2,   135,    70,    53,    31,
    1489    198,   201,   204,   175,   178,   462,   173,   231,   184,   186,
    1490    106,   232,   233,   234,   235,    41,   210,   189,   192,   195,
    1491    197,   200,   253,   203,    26,    19,   159,   137,    11,     5,
    1492    244,   213,   582,   319,   605,     4,   544,   595,   578,   nil,
    1493    250,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1494    nil,   248,   nil,   nil,   316,   nil,   nil,   nil,   nil,   nil,
    1495    nil,   247,   280,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1496    nil,   nil,   246,   379,   nil,   381,   nil,   nil,   nil,   nil,
    1497    320,   nil,   nil,   327,   338,   nil,   321,   nil,   350,   nil,
    1498    358,   364,   333,   nil,   325,   nil,   345,   330,   353,   359,
    1499    nil,   nil,   337,   nil,   384,   nil,   349,   389,   357,   363,
    1500    nil,   nil,   nil,   336,   387,   nil,   373,   348,   377,   356,
    1501    362,   nil,   nil,   335,   370,   nil,   nil,   347,   375,   355,
    1502    361,   328,   367,   nil,   334,   372,   nil,   nil,   346,   nil,
    1503    354,   360,   nil,   nil,   369,   nil,   nil,   nil,   nil,   nil,
    1504    nil,   nil,   nil,   nil,   nil,   nil,   517,   415,   nil,   nil,
    1505    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1506    604,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   416,
     1481    91,   124,   156,   157,    48,   110,   202,   127,    42,    56,
     1482   270,   415,   192,    42,   172,   107,   103,   112,   520,    65,
     1483   117,    91,    64,   128,    23,   272,   623,    86,     3,    72,
     1484    67,   116,    62,   614,   392,    93,   528,   623,   106,    59,
     1485    52,   279,   625,   200,    67,   115,   173,   175,    86,   204,
     1486   139,   132,   130,   619,   610,   271,   113,    61,   269,   177,
     1487   219,   220,   189,   222,   223,   205,   458,   226,   227,    75,
     1488   216,   218,   206,   186,   221,   184,   187,   224,   225,   190,
     1489    73,   195,   481,    65,   577,   391,    64,   183,   101,   107,
     1490   208,    22,    13,     2,   135,    70,    53,    31,   180,   194,
     1491   197,   199,   203,   174,   176,   179,   173,   231,   232,   233,
     1492   234,   235,   106,   210,   182,   185,   188,    42,   191,   193,
     1493   196,   198,   251,    26,    19,   159,   137,    11,   252,     5,
     1494   213,   318,   565,   589,     4,   544,   598,   579,   nil,   nil,
     1495   nil,   248,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1496   nil,   nil,   247,   nil,   nil,   nil,   313,   nil,   nil,   nil,
     1497   nil,   nil,   316,   nil,   nil,   nil,   246,   nil,   nil,   nil,
     1498   374,   nil,   376,   nil,   nil,   nil,   nil,   244,   nil,   nil,
     1499   nil,   nil,   nil,   nil,   321,   nil,   335,   nil,   nil,   nil,
     1500   347,   353,   336,   nil,   363,   320,   348,   354,   325,   nil,
     1501   364,   nil,   nil,   nil,   379,   334,   384,   nil,   nil,   346,
     1502   352,   382,   387,   362,   nil,   389,   333,   368,   nil,   372,
     1503   345,   351,   nil,   nil,   361,   365,   nil,   326,   nil,   370,
     1504   332,   nil,   nil,   nil,   344,   350,   323,   nil,   360,   328,
     1505   367,   331,   nil,   nil,   nil,   343,   349,   nil,   nil,   359,
     1506   nil,   nil,   nil,   nil,   nil,   590,   nil,   nil,   nil,   nil,
     1507   414,   519,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15071508   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15081509   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1509    nil,   nil,   nil,   nil,   nil,   457,   nil,   nil,   nil,   442,
    1510    nil,   nil,   434,   nil,   477,   nil,   nil,   nil,   nil,   nil,
    1511    432,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   430,
    1512    nil,   nil,   nil,   nil,   nil,   nil,   nil,   464,   nil,   nil,
    1513    nil,   nil,   nil,   nil,   nil,   nil,   465,   nil,   nil,   nil,
    1514    nil,   nil,   483,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1515    nil,   nil,   476,   nil,   487,   nil,   488,   nil,   499,   nil,
    1516    nil,   473,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   470,
    1517    nil,   nil,   nil,   nil,   496,   nil,   nil,   nil,   nil,   468,
    1518    nil,   nil,   nil,   494,   nil,   508,   nil,   nil,   518,   nil,
    1519    507,   492,   nil,   505,   nil,   nil,   280,   nil,   nil,   nil,
    1520    490,   503,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1521    501,   nil,   nil,   nil,   415,   nil,   nil,   nil,   nil,   nil,
    1522    nil,   nil,   nil,   nil,   nil,   250,   547,   556,   515,   nil,
    1523    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1524    nil,   nil,   nil,   nil,   555,   nil,   580,   nil,   nil,   nil,
    1525    nil,   nil,   nil,   553,   nil,   nil,   nil,   nil,   518,   nil,
    1526    nil,   551,   nil,   nil,   nil,   nil,   280,   nil,   nil,   nil,
    1527    549,   nil,   nil,   nil,   nil,   nil,   592,   nil,   nil,   nil,
    1528     41,   565,   nil,   567,   nil,   569,   nil,   337,   349,   357,
    1529    363,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   515,   nil,
    1530    596,   nil,   598,   606,   nil,   nil,   nil,   nil,   nil,   nil,
    1531    nil,   nil,   415,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1510   nil,   nil,   nil,   nil,   nil,   nil,   nil,   448,   nil,   nil,
     1511   nil,   nil,   434,   nil,   nil,   451,   nil,   nil,   nil,   nil,
     1512   478,   432,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1513   nil,   nil,   nil,   430,   nil,   nil,   416,   nil,   nil,   nil,
     1514   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   464,
     1515   nil,   nil,   nil,   nil,   nil,   nil,   466,   nil,   nil,   nil,
     1516   nil,   nil,   nil,   nil,   nil,   483,   nil,   nil,   nil,   nil,
     1517   nil,   nil,   nil,   nil,   475,   nil,   nil,   nil,   496,   nil,
     1518   nil,   nil,   nil,   472,   nil,   nil,   499,   nil,   nil,   nil,
     1519   nil,   nil,   nil,   nil,   nil,   494,   470,   nil,   nil,   nil,
     1520   507,   nil,   nil,   nil,   492,   505,   468,   508,   nil,   nil,
     1521   nil,   nil,   nil,   517,   503,   nil,   490,   nil,   nil,   316,
     1522   nil,   nil,   nil,   487,   nil,   488,   501,   nil,   nil,   nil,
     1523   nil,   nil,   nil,   nil,   nil,   414,   nil,   nil,   nil,   nil,
     1524   nil,   nil,   nil,   nil,   nil,   nil,   nil,   248,   555,   nil,
     1525   nil,   nil,   nil,   516,   nil,   556,   nil,   nil,   nil,   nil,
     1526   nil,   nil,   nil,   nil,   nil,   553,   nil,   582,   nil,   nil,
     1527   nil,   nil,   nil,   nil,   551,   nil,   nil,   nil,   nil,   517,
     1528   nil,   nil,   nil,   nil,   nil,   316,   549,   nil,   nil,   nil,
     1529   nil,   nil,   nil,   nil,   nil,   547,   nil,   nil,   nil,   595,
     1530   567,   nil,   nil,   nil,    42,   nil,   569,   nil,   nil,   572,
     1531   334,   346,   352,   362,   414,   nil,   nil,   nil,   nil,   516,
     1532   nil,   nil,   nil,   nil,   599,   608,   601,   nil,   nil,   nil,
    15321533   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15331534   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15341535   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1535    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   629 ]
    1536 
    1537 racc_goto_check = [
    1538     57,    82,    22,    35,    84,   116,    23,    15,    24,    83,
    1539    105,    23,    15,    79,   110,    63,    85,    26,    60,    89,
    1540     67,    57,    49,    73,   106,    96,    72,    56,    55,    54,
    1541     88,    52,    70,    23,    14,    61,    23,    51,    54,    55,
    1542     87,    82,    40,    59,    84,   106,    57,    61,    56,    83,
    1543     14,    86,    70,   111,   111,    61,    85,   111,    38,    89,
    1544    111,   111,    37,    34,   110,   110,    72,   110,   110,    25,
    1545     88,   110,   110,    69,    20,    18,    17,    75,    76,    77,
    1546     87,    78,    16,    49,    80,    67,    81,    26,    73,    63,
    1547      1,    86,    60,    13,    12,    11,    10,     9,     8,     7,
    1548     91,    92,    93,    94,    95,    53,    57,    57,    97,    98,
    1549     23,    57,    57,    57,    57,    23,    15,    99,   100,   101,
    1550    102,   103,    82,   104,     6,     5,   107,   109,     4,     3,
    1551     83,   113,   114,   110,   115,     2,   117,   128,   130,   nil,
    1552     89,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1553    nil,    88,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
    1554    nil,    87,    83,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1555    nil,   nil,    86,    79,   nil,    79,   nil,   nil,   nil,   nil,
    1556     84,   nil,   nil,    84,    82,   nil,    83,   nil,    82,   nil,
    1557     82,    82,    83,   nil,    85,   nil,    83,    85,    83,    83,
    1558    nil,   nil,    89,   nil,    82,   nil,    89,    82,    89,    89,
    1559    nil,   nil,   nil,    88,    83,   nil,    89,    88,    89,    88,
    1560     88,   nil,   nil,    87,    88,   nil,   nil,    87,    88,    87,
    1561     87,    86,    87,   nil,    86,    87,   nil,   nil,    86,   nil,
    1562     86,    86,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
    1563    nil,   nil,   nil,   nil,   nil,   nil,    24,    82,   nil,   nil,
    1564    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1565    116,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    83,
    15661536   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15671537   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1568    nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,    89,
    1569    nil,   nil,    88,   nil,   105,   nil,   nil,   nil,   nil,   nil,
    1570     87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,
    1571    nil,   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,
    1572    nil,   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,
    1573    nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1574    nil,   nil,    89,   nil,    83,   nil,    83,   nil,    82,   nil,
    1575    nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
    1576    nil,   nil,   nil,   nil,    89,   nil,   nil,   nil,   nil,    86,
    1577    nil,   nil,   nil,    88,   nil,    82,   nil,   nil,    82,   nil,
    1578     89,    87,   nil,    88,   nil,   nil,    83,   nil,   nil,   nil,
    1579     86,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1580     86,   nil,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
    1581    nil,   nil,   nil,   nil,   nil,    89,    83,    82,    23,   nil,
     1538   632 ]
     1539
     1540racc_goto_check = [
     1541    56,    81,    34,    22,    15,    83,   104,    82,    23,    15,
     1542    24,   115,    78,    23,   109,    59,    62,    84,    26,    66,
     1543    88,    56,    72,    71,    14,    48,    54,    55,     1,   105,
     1544    60,    87,    69,    53,    51,    23,    50,    54,    23,    58,
     1545    14,    39,    53,    81,    60,    86,    56,    83,    55,    82,
     1546   105,    60,    69,    37,    36,    25,    85,    68,    20,    84,
     1547   109,   109,    88,   109,   109,    71,    52,   109,   109,    18,
     1548   110,   110,    74,    87,   110,    75,    76,   110,   110,    77,
     1549    17,    79,    80,    66,    26,    48,    72,    86,    16,    59,
     1550    62,    13,    12,    11,    10,     9,     8,     7,    85,    90,
     1551    91,    92,    93,    94,    95,    96,    56,    56,    56,    56,
     1552    56,    56,    23,    15,    97,    98,    99,    23,   100,   101,
     1553   102,   103,    81,     6,     5,   106,   108,     4,    82,     3,
     1554   112,   109,   113,   114,     2,   116,   127,   129,   nil,   nil,
     1555   nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1556   nil,   nil,    87,   nil,   nil,   nil,    81,   nil,   nil,   nil,
     1557   nil,   nil,    82,   nil,   nil,   nil,    86,   nil,   nil,   nil,
     1558    78,   nil,    78,   nil,   nil,   nil,   nil,    85,   nil,   nil,
     1559   nil,   nil,   nil,   nil,    83,   nil,    81,   nil,   nil,   nil,
     1560    81,    81,    82,   nil,    81,    84,    82,    82,    84,   nil,
     1561    82,   nil,   nil,   nil,    81,    88,    81,   nil,   nil,    88,
     1562    88,    82,    83,    88,   nil,    82,    87,    88,   nil,    88,
     1563    87,    87,   nil,   nil,    87,    87,   nil,    86,   nil,    87,
     1564    86,   nil,   nil,   nil,    86,    86,    85,   nil,    86,    85,
     1565    86,    85,   nil,   nil,   nil,    85,    85,   nil,   nil,    85,
     1566   nil,   nil,   nil,   nil,   nil,   115,   nil,   nil,   nil,   nil,
     1567    81,    24,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15821568   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1583    nil,   nil,   nil,   nil,    89,   nil,    22,   nil,   nil,   nil,
    1584    nil,   nil,   nil,    88,   nil,   nil,   nil,   nil,    82,   nil,
    1585    nil,    87,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,
    1586     86,   nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,
    1587     23,    15,   nil,    23,   nil,    23,   nil,    89,    89,    89,
    1588     89,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,
    1589     82,   nil,    82,    35,   nil,   nil,   nil,   nil,   nil,   nil,
    1590    nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1569   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1570   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
     1571   nil,   nil,    88,   nil,   nil,    82,   nil,   nil,   nil,   nil,
     1572   104,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1573   nil,   nil,   nil,    86,   nil,   nil,    85,   nil,   nil,   nil,
     1574   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
     1575   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,
     1576   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,   nil,
     1577   nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,    81,   nil,
     1578   nil,   nil,   nil,    87,   nil,   nil,    82,   nil,   nil,   nil,
     1579   nil,   nil,   nil,   nil,   nil,    88,    86,   nil,   nil,   nil,
     1580    81,   nil,   nil,   nil,    87,    88,    85,    82,   nil,   nil,
     1581   nil,   nil,   nil,    81,    87,   nil,    86,   nil,   nil,    82,
     1582   nil,   nil,   nil,    85,   nil,    85,    86,   nil,   nil,   nil,
     1583   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,
     1584   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,    81,   nil,
     1585   nil,   nil,   nil,    23,   nil,    82,   nil,   nil,   nil,   nil,
     1586   nil,   nil,   nil,   nil,   nil,    88,   nil,    22,   nil,   nil,
     1587   nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,    81,
     1588   nil,   nil,   nil,   nil,   nil,    82,    86,   nil,   nil,   nil,
     1589   nil,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,    22,
     1590    15,   nil,   nil,   nil,    23,   nil,    23,   nil,   nil,    23,
     1591    88,    88,    88,    88,    81,   nil,   nil,   nil,   nil,    23,
     1592   nil,   nil,   nil,   nil,    81,    34,    81,   nil,   nil,   nil,
    15911593   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15921594   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15931595   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1594    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    57 ]
     1596   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1597   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1598    56 ]
    15951599
    15961600racc_goto_pointer = [
    1597    nil,    90,   135,   129,   123,   114,   105,    73,    67,    44,
    1598     26,    95,    88,    79,    20,   -20,    28,    22,    21,   nil,
    1599   -137,   nil,   -81,   -21,  -203,  -142,  -442,   nil,   nil,   nil,
    1600    nil,   nil,   nil,   nil,  -448,   -79,   nil,  -539,  -550,   nil,
    1601   -173,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -189,
    1602    nil,  -422,  -243,  -289,  -578,  -584,   -27,   -54,   nil,     5,
    1603    -39,   -12,   nil,   -42,   nil,   nil,   nil,   -21,   nil,    30,
    1604    -11,   nil,   -36,   -18,   nil,   -29,   -24,   -23,   -21,   -89,
    1605    -18,  -322,   -61,   -53,   -58,   -46,   -11,   -22,   -32,   -43,
    1606    nil,    -2,    -1,     0,     1,     2,   -77,     6,     7,    15,
    1607     16,    17,    18,    19,    21,   -92,   -30,    41,   nil,    56,
    1608    -86,   -95,   nil,   -11,  -406,  -449,  -313,  -349,   nil,   nil,
    1609    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -434,   nil,
    1610   -394 ]
     1601   nil,    28,   134,   129,   122,   113,   104,    71,    65,    42,
     1602    24,    93,    86,    77,    10,   -23,    34,    26,    15,   nil,
     1603  -153,   nil,   -80,   -19,  -201,  -156,  -444,   nil,   nil,   nil,
     1604   nil,   nil,   nil,   nil,   -80,   nil,  -550,  -557,   nil,  -174,
     1605   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -186,   nil,
     1606  -426,  -240,  -326,  -576,  -588,   -27,   -54,   nil,     3,   -42,
     1607   -15,   nil,   -41,   nil,   nil,   nil,   -23,   nil,    16,    -9,
     1608   nil,   -37,   -20,   nil,   -34,   -27,   -26,   -23,   -90,   -21,
     1609  -326,   -59,   -53,   -55,   -43,    -4,   -15,   -29,   -40,   nil,
     1610    -3,    -2,    -1,     0,     1,     2,     3,    12,    13,    14,
     1611    16,    17,    18,    19,   -96,   -25,    40,   nil,    55,   -86,
     1612   -74,   nil,   -12,  -379,  -430,  -308,  -349,   nil,   nil,   nil,
     1613   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -437,   nil,  -397 ]
    16111614
    16121615racc_goto_default = [
    16131616   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1614    nil,   nil,   nil,   nil,   nil,   nil,   nil,   535,   nil,    79,
    1615    nil,    83,   nil,   140,   nil,   nil,   nil,   520,   521,   522,
    1616    523,   525,   528,   531,   nil,    92,   534,   nil,   nil,   537,
    1617    512,   283,   286,   290,   293,   298,   302,   306,   311,   nil,
    1618    269,   nil,   nil,   nil,   nil,   613,   614,   615,    45,    47,
    1619     50,    34,    36,   nil,   105,    39,    40,    42,    43,   nil,
    1620    nil,    65,   nil,    35,    38,   104,   nil,   nil,   nil,   nil,
    1621    nil,   125,    99,    72,   nil,   nil,   284,   288,   291,   295,
    1622    122,   305,   310,   315,   nil,   nil,   nil,   nil,   nil,   nil,
    1623    297,   301,   304,   308,   313,   278,   nil,    77,    80,    81,
    1624     84,    87,    93,    97,   nil,   nil,   nil,   412,   282,   285,
    1625    289,   292,   296,   300,   303,   307,   312,   527,   530,   533,
    1626    nil ]
     1617   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    79,
     1618   nil,    83,   nil,   140,   nil,   nil,   nil,   521,   522,   523,
     1619   524,   527,   531,   533,    88,   535,   nil,   nil,   537,   539,
     1620   281,   284,   287,   291,   295,   299,   304,   308,   nil,   275,
     1621   nil,   nil,   nil,   nil,   615,   616,   617,    43,    45,    47,
     1622    50,    35,   nil,   105,    38,    39,    40,    41,   nil,   nil,
     1623    63,   nil,    33,    36,   104,   nil,   nil,   nil,   nil,   nil,
     1624   122,    97,    99,   nil,   nil,   282,   285,   289,   292,   119,
     1625   303,   307,   312,   nil,   nil,   nil,   nil,   nil,   nil,   294,
     1626   298,   302,   306,   310,   314,   nil,    74,    77,    80,    81,
     1627    84,    89,    94,   nil,   nil,   nil,   411,   280,   283,   286,
     1628   290,   293,   297,   301,   305,   309,   526,   530,   532,   nil ]
    16271629
    16281630racc_token_table = {
     
    16651667 :END_REGEXP_BLOCK => 36,
    16661668 :ERR_C_DOMAIN_TYPE => 37,
    1667  :START_V_C_DOMAIN_TYPE => 38,
    1668  :END_V_C_DOMAIN_TYPE => 39,
     1669 :START_V_C_DOMAIN_TYPE_BLOCK => 38,
     1670 :END_V_C_DOMAIN_TYPE_BLOCK => 39,
    16691671 :SYM_USE_NODE => 40,
    16701672 :SYM_ALLOW_ARCHETYPE => 41,
     
    17801782'END_REGEXP_BLOCK',
    17811783'ERR_C_DOMAIN_TYPE',
    1782 'START_V_C_DOMAIN_TYPE',
    1783 'END_V_C_DOMAIN_TYPE',
     1784'START_V_C_DOMAIN_TYPE_BLOCK',
     1785'END_V_C_DOMAIN_TYPE_BLOCK',
    17841786'SYM_USE_NODE',
    17851787'SYM_ALLOW_ARCHETYPE',
     
    18691871'c_primitive_object',
    18701872'v_c_domain_type',
    1871 'v_c_domain_type_body',
    18721873'absolute_path',
    18731874'c_archetype_slot_head',
     
    20092010 # reduce 18 omitted
    20102011
    2011  # reduce 19 omitted
     2012module_eval <<'.,.,', 'lib/parser.y', 74
     2013  def _reduce_19( val, _values, result )
     2014    result = {:language => val[1]}
     2015   result
     2016  end
     2017.,.,
    20122018
    20132019 # reduce 20 omitted
     
    20332039 # reduce 30 omitted
    20342040
    2035  # reduce 31 omitted
    2036 
    2037  # reduce 32 omitted
     2041module_eval <<'.,.,', 'lib/parser.y', 111
     2042  def _reduce_31( val, _values, result )
     2043    result = {:c_complex_object_id => {:type_identifier => val[0]}}
     2044   result
     2045  end
     2046.,.,
     2047
     2048module_eval <<'.,.,', 'lib/parser.y', 115
     2049  def _reduce_32( val, _values, result )
     2050    result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
     2051   result
     2052  end
     2053.,.,
    20382054
    20392055 # reduce 33 omitted
     
    27222738
    27232739 # reduce 375 omitted
    2724 
    2725  # reduce 376 omitted
    27262740
    27272741 def _reduce_none( val, _values, result )
  • ruby/trunk/adl_parser/lib/parser.y

    r14 r16  
    7070arch_language: #-- empty is ok for ADL 1.4 tools
    7171    | SYM_LANGUAGE dadl_section
    72     | SYM_LANGUAGE error
     72  {
     73    result = {:language => val[1]}
     74  }
     75  | SYM_LANGUAGE error
    7376
    7477#arch_description: #-- no meta-data ok
     
    104107
    105108c_complex_object_id: type_identifier
     109  {
     110    result = {:c_complex_object_id => {:type_identifier => val[0]}}
     111  }
    106112  | type_identifier V_LOCAL_TERM_CODE_REF
     113  {
     114    result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
     115  }
    107116
    108117c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
     
    130139  | error
    131140
    132 v_c_domain_type: START_V_C_DOMAIN_TYPE v_c_domain_type_body END_V_C_DOMAIN_TYPE
    133 v_c_domain_type_body: dadl_section
     141v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK
    134142
    135143# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
     
    246254single_attr_object_block: untyped_single_attr_object_block
    247255  | type_identifier untyped_single_attr_object_block
    248 untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK
     256untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <>
    249257  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
    250258single_attr_object_complex_head: SYM_START_DBLOCK
     
    763771#          @start_block_received = true
    764772          @adl_type.push(:dadl)
    765           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     773          yield :SYM_START_DBLOCK,  $&
    766774        end
    767775      when /\A\>/   # >
     
    781789#        puts "Escaping #{adl_type}"
    782790        assert_at(__FILE__,__LINE__){adl_type == :cadl}
    783         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
     791        yield :SYM_END_CBLOCK, $&
    784792      when /\A\-/   # -
    785793        yield :Minus_code, :Minus_code
     
    917925        @in_c_domain_type = true
    918926        @adl_type.push(:dadl)
    919           yield :START_V_C_DOMAIN_TYPE_BLOCK, :START_V_C_DOMAIN_TYPE_BLOCK
     927          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    920928###         else
    921929###           raise
     
    926934        else
    927935          @adl_type.push(:dadl)
    928           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     936          yield :SYM_START_DBLOCK,  $&
    929937        end
    930938      when /\A\>/   # >
     
    11181126          @in_interval = false
    11191127          yield :SYM_GT, :SYM_GT
    1120         elsif @in_c_domain_type
    1121           @in_c_domain_type = false
     1128        elsif @in_c_domain_type == true
     1129          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
    11221130          adl_type = @adl_type.pop
    1123           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    1124           yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK
    1125         else
     1131          if @adl_type.last == :cadl
     1132            @in_c_domain_type = false
     1133            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
     1134          else
     1135            yield :SYM_END_DBLOCK, $&
     1136          end
     1137        elsif @in_c_domain_type == false
    11261138          adl_type = @adl_type.pop
    11271139#          puts "Escaping #{adl_type}"
    11281140          assert_at(__FILE__,__LINE__){adl_type == :dadl}
    1129           yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
     1141          yield :SYM_END_DBLOCK, $&
     1142        else
     1143          raise
    11301144        end
    11311145      when /\A\-/   # -
     
    11661180        if @in_interval
    11671181          @in_interval = false
    1168 #        elsif @start_block_received
    1169 #          @start_block_received = false
    11701182        else
    11711183          @in_interval = false
    11721184        end
    11731185        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    1174       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
    1175 #      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
     1186      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    11761187        yield :V_QUALIFIED_TERM_CODE_REF, $&
     1188      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
     1189        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
     1190      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
     1191        yield :V_LOCAL_TERM_CODE_REF, $&
    11771192      when /\A\[/   # [
    11781193        yield :Left_bracket_code, :Left_bracket_code
    11791194      when /\A\]/   # ]
    11801195        yield :Right_bracket_code, :Right_bracket_code
    1181       when /\A[A-Z][a-zA-Z0-9_]*/
     1196      when /\A[A-Z][a-zA-Z0-9_-]*/
    11821197        yield :V_TYPE_IDENTIFIER, $&
    11831198      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
     
    11901205          yield :V_ATTRIBUTE_IDENTIFIER, $&
    11911206        end
    1192       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    1193         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    1194       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    1195         yield :V_LOCAL_TERM_CODE_REF, $&
    11961207      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    11971208        yield :V_LOCAL_CODE, $&
  • ruby/trunk/adl_parser/tests/openEHR-EHR-OBSERVATION.apgar.v1.adl

    r15 r16  
    55    [at0000]    -- Apgar score
    66language
    7     original_language = <[ISO_639-1::en]>
     7--    original_language = <[ISO_639-1::en]>
     8    original_language = <[ISO_639::en]>
    89    translations = <
    910        ["de"] = <
    10             language = <[ISO_639-1::de]>
     11--            language = <[ISO_639-1::de]>
     12            language = <[ISO_639::de]>
    1113            author = <
    1214                ["name"] = <"Jasmin Buck, Sebastian Garde">
     
    1517        >
    1618        ["en-us"] = <
    17             language = <[ISO_639-1::en-us]>
     19--            language = <[ISO_639-1::en-us]>
     20            language = <[ISO_639::en-us]>
    1821            author = <
    1922                ["name"] = <"????">
  • ruby/trunk/adl_parser/tests/parser_test.rb

    r15 r16  
    9797    end
    9898    apgar = File.read('tests/openEHR-EHR-OBSERVATION.apgar.v1.adl')
    99     assert_nothing_raised do
    100       @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
    101     end
     99#    assert_nothing_raised do
     100      result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
     101      assert_equal "", result
     102#    end
    102103#     evaluation = File.read('tests/openEHR-EHR-EVALUATION.adverse.v1.adl')
    103104#     assert_nothing_raised do
Note: See TracChangeset for help on using the changeset viewer.