Changeset 18


Ignore:
Timestamp:
Apr 28, 2008, 7:34:20 AM (16 years ago)
Author:
Tatsukawa, Akimichi
Message:

parsing c_any fails

Location:
ruby/trunk/adl_parser
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/adl_parser/README

    r4 r18  
    66
    77* Ruby 1.8 or later.
     8* Yaparc Library 0.2.0 or later.
    89* Tested in Ruby 1.8.6.
    910* if you use Ruby 1.6, you should prepare racc runtime environment and some adjustment.
  • ruby/trunk/adl_parser/lib/parser.rb

    r17 r18  
    2424    class Parser < Racc::Parser
    2525
    26 module_eval <<'..end lib/parser.y modeval..idbb16065644', 'lib/parser.y', 644
    27 
    28 @@log = Logger.new('log/parser.log')
     26module_eval <<'..end lib/parser.y modeval..idd4a3e5c962', 'lib/parser.y', 654
     27
     28@@log = Logger.new('log/parser.log','daily')
    2929@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
    3030
     
    143143        word = $&
    144144        if @@adl_reserved[word]
     145          @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
    145146          yield @@adl_reserved[word], @@adl_reserved[word]
    146147        elsif #/\A[A-Z][a-zA-Z0-9_]*/
     
    223224        else
    224225          @in_interval = true
    225           @start_block_received = false
     226#          @start_block_received = false
    226227        end
    227228        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    390391        else
    391392          @in_interval = false
     393#          @in_interval = true
    392394        end
    393395        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    520522          @adl_type.push(:dadl)
    521523          yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
    522 #         else
    523 #           @in_interval = false
    524524        end
    525525      when /\A\>/   # >
     
    583583        else
    584584          @in_interval = false
     585#          @in_interval = true
    585586        end
    586587        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    589590###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    590591###         yield :V_LOCAL_TERM_CODE_REF, $&
    591       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    592         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
     592###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
     593###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    593594      when /\A\[/   # [
    594595        yield :Left_bracket_code, :Left_bracket_code
    595596      when /\A\]/   # ]
    596597        yield :Right_bracket_code, :Right_bracket_code
    597       when /\A[A-Z][a-zA-Z0-9_-]*/
    598         yield :V_TYPE_IDENTIFIER, $&
    599       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    600         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    601       when /\A[a-z][a-zA-Z0-9_]*/
    602         word = $&.downcase
    603         if @@dadl_reserved[word]
    604           yield @@dadl_reserved[word], @@dadl_reserved[word]
    605         else
    606           yield :V_ATTRIBUTE_IDENTIFIER, $&
    607         end
    608       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    609         yield :V_LOCAL_CODE, $&
     598###       when /\A[A-Z][a-zA-Z0-9_-]*/
     599###         yield :V_TYPE_IDENTIFIER, $&
     600###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
     601###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
     602###       when /\A[a-z][a-zA-Z0-9_]*/
     603###         word = $&.downcase
     604###         if @@dadl_reserved[word]
     605###           yield @@dadl_reserved[word], @@dadl_reserved[word]
     606###         else
     607###           yield :V_ATTRIBUTE_IDENTIFIER, $&
     608###         end
     609###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
     610###         yield :V_LOCAL_CODE, $&
    610611      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
    611612        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
     
    618619      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
    619620        yield :V_INTEGER, $&
    620       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    621         yield :V_REAL, $&
     621###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
     622###         yield :V_REAL, $&
    622623        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    623       when /\A"([^"]*)"/m #V_STRING
    624         yield :V_STRING, $1
     624###       when /\A"([^"]*)"/m #V_STRING
     625###         yield :V_STRING, $1
    625626      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    626627        yield :V_URI, $&
     
    793794
    794795
    795 ..end lib/parser.y modeval..idbb16065644
     796..end lib/parser.y modeval..idd4a3e5c962
    796797
    797798##### racc 1.4.5 generates ###
     
    799800racc_reduce_table = [
    800801 0, 0, :racc_error,
    801  2, 94, :_reduce_none,
    802  1, 94, :_reduce_none,
    803  8, 95, :_reduce_none,
    804802 2, 96, :_reduce_none,
    805  2, 96, :_reduce_none,
    806  1, 104, :_reduce_none,
    807  2, 104, :_reduce_none,
    808  3, 105, :_reduce_none,
    809  1, 106, :_reduce_none,
    810  3, 106, :_reduce_none,
    811  3, 107, :_reduce_none,
    812  1, 107, :_reduce_none,
    813  0, 97, :_reduce_none,
    814  2, 97, :_reduce_none,
    815  2, 97, :_reduce_none,
     803 1, 96, :_reduce_none,
     804 8, 97, :_reduce_none,
    816805 2, 98, :_reduce_none,
    817806 2, 98, :_reduce_none,
     807 1, 106, :_reduce_none,
     808 2, 106, :_reduce_none,
     809 3, 107, :_reduce_none,
     810 1, 108, :_reduce_none,
     811 3, 108, :_reduce_none,
     812 3, 109, :_reduce_none,
     813 1, 109, :_reduce_none,
    818814 0, 99, :_reduce_none,
    819  2, 99, :_reduce_19,
    820815 2, 99, :_reduce_none,
    821  0, 100, :_reduce_none,
     816 2, 99, :_reduce_none,
    822817 2, 100, :_reduce_none,
    823818 2, 100, :_reduce_none,
     819 0, 101, :_reduce_none,
     820 2, 101, :_reduce_19,
    824821 2, 101, :_reduce_none,
    825  2, 101, :_reduce_none,
    826  1, 109, :_reduce_none,
    827  1, 109, :_reduce_none,
    828  5, 110, :_reduce_none,
    829  5, 110, :_reduce_none,
    830  2, 112, :_reduce_none,
    831  1, 114, :_reduce_31,
    832  2, 114, :_reduce_32,
    833  1, 113, :_reduce_none,
    834  1, 113, :_reduce_none,
    835  1, 119, :_reduce_none,
    836  1, 119, :_reduce_none,
    837  1, 119, :_reduce_none,
    838  1, 119, :_reduce_none,
    839  1, 119, :_reduce_none,
    840  1, 119, :_reduce_none,
    841  1, 119, :_reduce_none,
    842  1, 119, :_reduce_none,
    843  1, 119, :_reduce_none,
    844  1, 119, :_reduce_none,
    845  3, 126, :_reduce_none,
    846  4, 120, :_reduce_none,
    847  3, 120, :_reduce_none,
    848  6, 121, :_reduce_none,
    849  2, 128, :_reduce_none,
    850  2, 131, :_reduce_none,
    851  3, 131, :_reduce_none,
    852  2, 131, :_reduce_none,
    853  1, 125, :_reduce_none,
    854  1, 132, :_reduce_none,
    855  1, 132, :_reduce_none,
    856  1, 132, :_reduce_none,
    857  1, 132, :_reduce_none,
    858  1, 132, :_reduce_none,
    859  1, 132, :_reduce_none,
    860  1, 132, :_reduce_none,
    861  1, 132, :_reduce_none,
    862  1, 117, :_reduce_none,
    863  1, 118, :_reduce_none,
    864  2, 118, :_reduce_none,
    865  5, 141, :_reduce_none,
    866  5, 141, :_reduce_none,
    867  5, 141, :_reduce_none,
    868  2, 142, :_reduce_none,
    869  3, 142, :_reduce_none,
    870  1, 143, :_reduce_none,
    871  2, 143, :_reduce_none,
    872  1, 143, :_reduce_none,
    873  0, 129, :_reduce_none,
    874  2, 129, :_reduce_none,
    875  0, 130, :_reduce_none,
    876  2, 130, :_reduce_none,
    877  1, 146, :_reduce_none,
    878  2, 146, :_reduce_none,
    879  3, 147, :_reduce_none,
    880  1, 147, :_reduce_none,
    881  3, 147, :_reduce_none,
    882822 0, 102, :_reduce_none,
    883823 2, 102, :_reduce_none,
     
    885825 2, 103, :_reduce_none,
    886826 2, 103, :_reduce_none,
    887  1, 108, :_reduce_none,
    888  1, 150, :_reduce_none,
    889  1, 150, :_reduce_none,
    890  1, 151, :_reduce_none,
    891  2, 151, :_reduce_none,
    892  3, 151, :_reduce_none,
    893  3, 153, :_reduce_none,
    894  1, 154, :_reduce_none,
    895  2, 154, :_reduce_none,
    896  1, 155, :_reduce_none,
    897  1, 155, :_reduce_none,
     827 1, 111, :_reduce_none,
     828 1, 111, :_reduce_none,
     829 5, 112, :_reduce_none,
     830 5, 112, :_reduce_none,
     831 2, 114, :_reduce_none,
     832 1, 116, :_reduce_31,
     833 2, 116, :_reduce_32,
     834 1, 115, :_reduce_none,
     835 1, 115, :_reduce_none,
     836 1, 121, :_reduce_none,
     837 1, 121, :_reduce_none,
     838 1, 121, :_reduce_none,
     839 1, 121, :_reduce_none,
     840 1, 121, :_reduce_none,
     841 1, 121, :_reduce_none,
     842 1, 121, :_reduce_none,
     843 1, 121, :_reduce_none,
     844 1, 121, :_reduce_none,
     845 1, 121, :_reduce_none,
     846 3, 128, :_reduce_none,
     847 4, 122, :_reduce_none,
     848 3, 122, :_reduce_none,
     849 6, 123, :_reduce_none,
     850 2, 130, :_reduce_none,
     851 2, 133, :_reduce_none,
     852 3, 133, :_reduce_none,
     853 2, 133, :_reduce_none,
     854 1, 127, :_reduce_none,
     855 1, 134, :_reduce_none,
     856 1, 134, :_reduce_none,
     857 1, 134, :_reduce_none,
     858 1, 134, :_reduce_none,
     859 1, 134, :_reduce_none,
     860 1, 134, :_reduce_none,
     861 1, 134, :_reduce_none,
     862 1, 134, :_reduce_none,
     863 1, 119, :_reduce_none,
     864 1, 120, :_reduce_none,
     865 2, 120, :_reduce_none,
     866 5, 143, :_reduce_none,
     867 5, 143, :_reduce_none,
     868 5, 143, :_reduce_none,
     869 2, 144, :_reduce_none,
     870 3, 144, :_reduce_none,
     871 1, 145, :_reduce_none,
     872 2, 145, :_reduce_none,
     873 1, 145, :_reduce_none,
     874 0, 131, :_reduce_none,
     875 2, 131, :_reduce_none,
     876 0, 132, :_reduce_none,
     877 2, 132, :_reduce_none,
     878 1, 148, :_reduce_none,
     879 2, 148, :_reduce_none,
     880 3, 149, :_reduce_none,
     881 1, 149, :_reduce_none,
     882 3, 149, :_reduce_none,
     883 0, 104, :_reduce_none,
     884 2, 104, :_reduce_none,
     885 2, 104, :_reduce_none,
     886 2, 105, :_reduce_none,
     887 2, 105, :_reduce_none,
     888 1, 110, :_reduce_none,
    898889 1, 152, :_reduce_none,
    899890 1, 152, :_reduce_none,
     891 1, 153, :_reduce_none,
     892 2, 153, :_reduce_none,
     893 3, 153, :_reduce_none,
     894 3, 155, :_reduce_none,
     895 1, 156, :_reduce_94,
     896 2, 156, :_reduce_none,
     897 1, 157, :_reduce_none,
     898 1, 157, :_reduce_none,
     899 1, 154, :_reduce_none,
     900 1, 154, :_reduce_none,
     901 1, 160, :_reduce_none,
     902 2, 160, :_reduce_none,
     903 3, 161, :_reduce_none,
     904 1, 162, :_reduce_none,
     905 1, 163, :_reduce_none,
     906 2, 163, :_reduce_none,
     907 3, 164, :_reduce_none,
     908 3, 165, :_reduce_none,
     909 1, 159, :_reduce_none,
     910 2, 159, :_reduce_none,
     911 2, 167, :_reduce_none,
     912 3, 167, :_reduce_none,
     913 1, 168, :_reduce_none,
    900914 1, 158, :_reduce_none,
    901915 2, 158, :_reduce_none,
    902  3, 159, :_reduce_none,
    903  1, 160, :_reduce_none,
    904  1, 161, :_reduce_none,
    905  2, 161, :_reduce_none,
    906  3, 162, :_reduce_none,
    907  3, 163, :_reduce_none,
    908  1, 157, :_reduce_none,
    909  2, 157, :_reduce_none,
    910  2, 165, :_reduce_none,
    911  3, 165, :_reduce_none,
    912  1, 166, :_reduce_none,
    913  1, 156, :_reduce_none,
    914  2, 156, :_reduce_none,
    915  3, 167, :_reduce_none,
    916  1, 168, :_reduce_none,
    917  1, 168, :_reduce_none,
    918  1, 168, :_reduce_none,
    919  1, 168, :_reduce_none,
    920  1, 168, :_reduce_none,
    921  1, 164, :_reduce_none,
    922  1, 164, :_reduce_none,
    923  1, 164, :_reduce_none,
    924  1, 164, :_reduce_none,
    925  1, 164, :_reduce_none,
    926  1, 164, :_reduce_none,
    927  1, 164, :_reduce_none,
    928  1, 164, :_reduce_none,
    929  1, 164, :_reduce_none,
    930  1, 164, :_reduce_none,
    931  1, 169, :_reduce_none,
    932  1, 169, :_reduce_none,
    933  1, 169, :_reduce_none,
    934  1, 169, :_reduce_none,
    935  1, 169, :_reduce_none,
    936  1, 169, :_reduce_none,
    937  1, 169, :_reduce_none,
    938  1, 169, :_reduce_none,
    939  1, 169, :_reduce_none,
     916 3, 169, :_reduce_none,
    940917 1, 170, :_reduce_none,
    941918 1, 170, :_reduce_none,
     
    943920 1, 170, :_reduce_none,
    944921 1, 170, :_reduce_none,
    945  1, 170, :_reduce_none,
    946  1, 116, :_reduce_none,
    947  1, 116, :_reduce_none,
    948  1, 173, :_reduce_none,
    949  3, 183, :_reduce_none,
    950  3, 183, :_reduce_none,
    951  3, 183, :_reduce_none,
    952  1, 174, :_reduce_none,
    953  2, 174, :_reduce_none,
    954  2, 174, :_reduce_none,
    955  3, 184, :_reduce_none,
    956  3, 184, :_reduce_none,
    957  3, 184, :_reduce_none,
    958  5, 192, :_reduce_none,
    959  6, 192, :_reduce_none,
    960  6, 192, :_reduce_none,
    961  7, 192, :_reduce_none,
    962  4, 192, :_reduce_none,
    963  4, 192, :_reduce_none,
    964  4, 192, :_reduce_none,
    965  4, 192, :_reduce_none,
    966  3, 192, :_reduce_none,
    967  1, 175, :_reduce_none,
    968  2, 175, :_reduce_none,
    969  2, 175, :_reduce_none,
     922 1, 166, :_reduce_none,
     923 1, 166, :_reduce_none,
     924 1, 166, :_reduce_none,
     925 1, 166, :_reduce_none,
     926 1, 166, :_reduce_none,
     927 1, 166, :_reduce_none,
     928 1, 166, :_reduce_none,
     929 1, 166, :_reduce_none,
     930 1, 166, :_reduce_none,
     931 1, 166, :_reduce_none,
     932 1, 171, :_reduce_none,
     933 1, 171, :_reduce_none,
     934 1, 171, :_reduce_none,
     935 1, 171, :_reduce_none,
     936 1, 171, :_reduce_none,
     937 1, 171, :_reduce_none,
     938 1, 171, :_reduce_none,
     939 1, 171, :_reduce_none,
     940 1, 171, :_reduce_none,
     941 1, 172, :_reduce_none,
     942 1, 172, :_reduce_none,
     943 1, 172, :_reduce_none,
     944 1, 172, :_reduce_none,
     945 1, 172, :_reduce_none,
     946 1, 172, :_reduce_none,
     947 1, 118, :_reduce_none,
     948 1, 118, :_reduce_none,
     949 1, 175, :_reduce_148,
    970950 3, 185, :_reduce_none,
    971951 3, 185, :_reduce_none,
    972952 3, 185, :_reduce_none,
    973  5, 193, :_reduce_none,
    974  6, 193, :_reduce_none,
    975  6, 193, :_reduce_none,
    976  7, 193, :_reduce_none,
    977  4, 193, :_reduce_none,
    978  4, 193, :_reduce_none,
    979  4, 193, :_reduce_none,
    980  4, 193, :_reduce_none,
    981  3, 193, :_reduce_none,
    982953 1, 176, :_reduce_none,
    983  1, 176, :_reduce_none,
     954 2, 176, :_reduce_none,
     955 2, 176, :_reduce_none,
    984956 3, 186, :_reduce_none,
    985957 3, 186, :_reduce_none,
    986958 3, 186, :_reduce_none,
    987  1, 177, :_reduce_none,
    988  3, 187, :_reduce_none,
    989  3, 187, :_reduce_none,
    990  3, 187, :_reduce_none,
    991  1, 178, :_reduce_none,
    992  3, 188, :_reduce_none,
    993  3, 188, :_reduce_none,
    994  3, 188, :_reduce_none,
    995959 5, 194, :_reduce_none,
    996960 6, 194, :_reduce_none,
     
    1002966 4, 194, :_reduce_none,
    1003967 3, 194, :_reduce_none,
    1004  1, 179, :_reduce_none,
    1005  3, 189, :_reduce_none,
    1006  3, 189, :_reduce_none,
    1007  3, 189, :_reduce_none,
     968 1, 177, :_reduce_none,
     969 2, 177, :_reduce_none,
     970 2, 177, :_reduce_none,
     971 3, 187, :_reduce_none,
     972 3, 187, :_reduce_none,
     973 3, 187, :_reduce_none,
    1008974 5, 195, :_reduce_none,
    1009975 6, 195, :_reduce_none,
     
    1015981 4, 195, :_reduce_none,
    1016982 3, 195, :_reduce_none,
     983 1, 178, :_reduce_none,
     984 1, 178, :_reduce_none,
     985 3, 188, :_reduce_none,
     986 3, 188, :_reduce_none,
     987 3, 188, :_reduce_none,
     988 1, 179, :_reduce_none,
     989 3, 189, :_reduce_none,
     990 3, 189, :_reduce_none,
     991 3, 189, :_reduce_none,
    1017992 1, 180, :_reduce_none,
    1018993 3, 190, :_reduce_none,
     
    10411016 4, 197, :_reduce_none,
    10421017 3, 197, :_reduce_none,
    1043  1, 171, :_reduce_none,
    1044  3, 172, :_reduce_none,
    1045  3, 172, :_reduce_none,
    1046  3, 172, :_reduce_none,
    10471018 1, 182, :_reduce_none,
    1048  1, 111, :_reduce_none,
    1049  2, 111, :_reduce_none,
     1019 3, 192, :_reduce_none,
     1020 3, 192, :_reduce_none,
     1021 3, 192, :_reduce_none,
     1022 5, 198, :_reduce_none,
     1023 6, 198, :_reduce_none,
     1024 6, 198, :_reduce_none,
     1025 7, 198, :_reduce_none,
     1026 4, 198, :_reduce_none,
     1027 4, 198, :_reduce_none,
     1028 4, 198, :_reduce_none,
     1029 4, 198, :_reduce_none,
    10501030 3, 198, :_reduce_none,
    1051  1, 198, :_reduce_none,
    1052  3, 198, :_reduce_none,
    1053  1, 149, :_reduce_none,
    1054  1, 149, :_reduce_none,
    1055  2, 200, :_reduce_none,
    1056  2, 200, :_reduce_none,
    1057  5, 200, :_reduce_none,
    1058  5, 200, :_reduce_none,
    1059  2, 200, :_reduce_none,
     1031 1, 183, :_reduce_none,
     1032 3, 193, :_reduce_none,
     1033 3, 193, :_reduce_none,
     1034 3, 193, :_reduce_none,
     1035 5, 199, :_reduce_none,
     1036 6, 199, :_reduce_none,
     1037 6, 199, :_reduce_none,
     1038 7, 199, :_reduce_none,
     1039 4, 199, :_reduce_none,
     1040 4, 199, :_reduce_none,
     1041 4, 199, :_reduce_none,
     1042 4, 199, :_reduce_none,
     1043 3, 199, :_reduce_none,
     1044 1, 173, :_reduce_none,
     1045 3, 174, :_reduce_none,
     1046 3, 174, :_reduce_none,
     1047 3, 174, :_reduce_none,
     1048 1, 184, :_reduce_none,
     1049 1, 113, :_reduce_none,
     1050 2, 113, :_reduce_none,
    10601051 3, 200, :_reduce_none,
     1052 1, 200, :_reduce_none,
    10611053 3, 200, :_reduce_none,
    1062  3, 200, :_reduce_none,
    1063  3, 200, :_reduce_none,
    1064  3, 200, :_reduce_none,
    1065  3, 200, :_reduce_none,
    1066  3, 200, :_reduce_none,
    1067  3, 200, :_reduce_none,
    1068  3, 200, :_reduce_none,
    1069  3, 200, :_reduce_none,
    1070  3, 199, :_reduce_none,
    1071  1, 199, :_reduce_none,
    1072  1, 199, :_reduce_none,
    1073  1, 202, :_reduce_none,
    1074  1, 202, :_reduce_none,
    1075  3, 204, :_reduce_none,
    1076  3, 204, :_reduce_none,
    1077  3, 204, :_reduce_none,
    1078  3, 204, :_reduce_none,
    1079  3, 204, :_reduce_none,
     1054 1, 151, :_reduce_none,
     1055 1, 151, :_reduce_none,
     1056 2, 202, :_reduce_none,
     1057 2, 202, :_reduce_none,
     1058 5, 202, :_reduce_none,
     1059 5, 202, :_reduce_none,
     1060 2, 202, :_reduce_none,
     1061 3, 202, :_reduce_none,
     1062 3, 202, :_reduce_none,
     1063 3, 202, :_reduce_none,
     1064 3, 202, :_reduce_none,
     1065 3, 202, :_reduce_none,
     1066 3, 202, :_reduce_none,
     1067 3, 202, :_reduce_none,
     1068 3, 202, :_reduce_none,
     1069 3, 202, :_reduce_none,
     1070 3, 202, :_reduce_none,
     1071 3, 201, :_reduce_none,
     1072 1, 201, :_reduce_none,
     1073 1, 201, :_reduce_none,
     1074 1, 204, :_reduce_none,
     1075 1, 204, :_reduce_none,
     1076 3, 206, :_reduce_none,
     1077 3, 206, :_reduce_none,
     1078 3, 206, :_reduce_none,
     1079 3, 206, :_reduce_none,
     1080 3, 206, :_reduce_none,
     1081 3, 205, :_reduce_none,
     1082 1, 205, :_reduce_none,
     1083 1, 205, :_reduce_none,
     1084 1, 205, :_reduce_none,
     1085 1, 129, :_reduce_none,
     1086 2, 129, :_reduce_none,
     1087 1, 203, :_reduce_none,
    10801088 3, 203, :_reduce_none,
    1081  1, 203, :_reduce_none,
    1082  1, 203, :_reduce_none,
    1083  1, 203, :_reduce_none,
    1084  1, 127, :_reduce_none,
    1085  2, 127, :_reduce_none,
    1086  1, 201, :_reduce_none,
    1087  3, 201, :_reduce_none,
    1088  2, 205, :_reduce_none,
    1089  1, 205, :_reduce_none,
    1090  0, 144, :_reduce_none,
    1091  5, 144, :_reduce_none,
    1092  1, 206, :_reduce_none,
    1093  3, 206, :_reduce_none,
    1094  5, 145, :_reduce_none,
     1089 2, 207, :_reduce_none,
    10951090 1, 207, :_reduce_none,
    1096  3, 207, :_reduce_none,
    1097  3, 207, :_reduce_none,
    1098  3, 207, :_reduce_none,
    1099  5, 207, :_reduce_none,
    1100  5, 207, :_reduce_none,
    1101  5, 207, :_reduce_none,
    1102  5, 207, :_reduce_none,
    1103  1, 209, :_reduce_none,
    1104  1, 209, :_reduce_none,
    1105  0, 115, :_reduce_none,
    1106  5, 115, :_reduce_none,
    1107  2, 115, :_reduce_none,
     1091 0, 146, :_reduce_none,
     1092 5, 146, :_reduce_none,
    11081093 1, 208, :_reduce_none,
    11091094 3, 208, :_reduce_none,
    1110  1, 210, :_reduce_none,
    1111  1, 210, :_reduce_none,
    1112  1, 210, :_reduce_none,
    1113  1, 133, :_reduce_none,
    1114  3, 133, :_reduce_none,
    1115  3, 133, :_reduce_none,
     1095 5, 147, :_reduce_none,
     1096 1, 209, :_reduce_none,
     1097 3, 209, :_reduce_none,
     1098 3, 209, :_reduce_none,
     1099 3, 209, :_reduce_none,
     1100 5, 209, :_reduce_none,
     1101 5, 209, :_reduce_none,
     1102 5, 209, :_reduce_none,
     1103 5, 209, :_reduce_none,
    11161104 1, 211, :_reduce_none,
    11171105 1, 211, :_reduce_none,
    1118  1, 211, :_reduce_none,
    1119  1, 134, :_reduce_none,
    1120  3, 134, :_reduce_none,
    1121  3, 134, :_reduce_none,
     1106 0, 117, :_reduce_none,
     1107 5, 117, :_reduce_none,
     1108 2, 117, :_reduce_none,
     1109 1, 210, :_reduce_none,
     1110 3, 210, :_reduce_none,
    11221111 1, 212, :_reduce_none,
    11231112 1, 212, :_reduce_none,
     
    11391128 3, 137, :_reduce_none,
    11401129 1, 215, :_reduce_none,
    1141  3, 215, :_reduce_none,
    11421130 1, 215, :_reduce_none,
    11431131 1, 215, :_reduce_none,
     
    11451133 3, 138, :_reduce_none,
    11461134 3, 138, :_reduce_none,
    1147  1, 217, :_reduce_none,
    1148  1, 217, :_reduce_none,
    1149  3, 217, :_reduce_none,
     1135 1, 216, :_reduce_none,
     1136 1, 216, :_reduce_none,
     1137 1, 216, :_reduce_none,
    11501138 1, 139, :_reduce_none,
    11511139 3, 139, :_reduce_none,
    11521140 3, 139, :_reduce_none,
    1153  1, 218, :_reduce_none,
    1154  1, 218, :_reduce_none,
    1155  3, 218, :_reduce_none,
    1156  3, 218, :_reduce_none,
     1141 1, 217, :_reduce_none,
     1142 3, 217, :_reduce_none,
     1143 1, 217, :_reduce_none,
     1144 1, 217, :_reduce_none,
    11571145 1, 140, :_reduce_none,
    11581146 3, 140, :_reduce_none,
    11591147 3, 140, :_reduce_none,
    1160  1, 124, :_reduce_none,
    1161  3, 124, :_reduce_none,
    1162  3, 124, :_reduce_none,
     1148 1, 219, :_reduce_none,
    11631149 1, 219, :_reduce_none,
    11641150 3, 219, :_reduce_none,
     1151 1, 141, :_reduce_none,
     1152 3, 141, :_reduce_none,
     1153 3, 141, :_reduce_none,
     1154 1, 220, :_reduce_none,
     1155 1, 220, :_reduce_none,
    11651156 3, 220, :_reduce_none,
    1166  1, 123, :_reduce_none,
    1167  1, 123, :_reduce_none,
     1157 3, 220, :_reduce_none,
     1158 1, 142, :_reduce_none,
     1159 3, 142, :_reduce_none,
     1160 3, 142, :_reduce_none,
     1161 1, 126, :_reduce_none,
     1162 3, 126, :_reduce_none,
     1163 3, 126, :_reduce_none,
     1164 1, 221, :_reduce_none,
    11681165 3, 221, :_reduce_none,
    1169  0, 222, :_reduce_none,
    1170  1, 222, :_reduce_none,
    1171  2, 222, :_reduce_none,
    1172  1, 122, :_reduce_none,
    1173  1, 148, :_reduce_none,
    1174  1, 148, :_reduce_none,
    1175  1, 216, :_reduce_none ]
     1166 3, 222, :_reduce_none,
     1167 1, 125, :_reduce_none,
     1168 1, 125, :_reduce_none,
     1169 3, 223, :_reduce_none,
     1170 0, 224, :_reduce_none,
     1171 1, 224, :_reduce_none,
     1172 2, 224, :_reduce_none,
     1173 1, 124, :_reduce_none,
     1174 1, 150, :_reduce_none,
     1175 1, 150, :_reduce_none,
     1176 1, 218, :_reduce_none ]
    11761177
    11771178racc_reduce_n = 376
     
    11801181
    11811182racc_action_table = [
    1182    576,   435,   474,   155,   409,    92,    96,   471,   467,   469,
    1183     24,   594,   574,   578,    12,   465,     1,   373,   148,   151,
    1184    380,   381,    58,   229,   366,    16,   322,   169,   525,   178,
    1185    170,   118,   120,   125,    14,     6,   538,   513,    25,   515,
    1186    518,   514,   543,    17,   573,   540,    92,    96,   541,   542,
    1187     49,    44,    46,   317,   152,   228,    78,   181,   111,    87,
    1188    296,   300,   410,   123,   125,   109,   111,   529,   111,   525,
    1189    575,   123,   109,   125,    87,   491,   495,   538,   513,    71,
    1190    515,   518,   273,    92,    96,   311,   315,   278,   534,   144,
    1191    145,   288,    44,    46,   317,   158,   489,    78,   181,   111,
    1192     87,   296,   300,   433,   123,   125,   109,   111,   529,   148,
    1193    151,   148,   151,   431,   463,   493,   230,    27,   129,   377,
    1194    378,    92,    96,   262,   148,   151,   311,   315,   278,   534,
    1195    125,   317,   288,   111,    78,   181,   100,    87,   296,   300,
    1196    236,   123,   125,   109,   111,   152,    76,   152,   390,   417,
    1197    123,    92,    96,    60,   380,   381,   480,   215,   138,   109,
    1198    152,   377,   378,   311,   315,   278,   100,   571,   125,   288,
    1199     78,   109,    78,   380,   381,    87,    90,    95,   133,   214,
    1200    144,   145,   144,   145,   631,    82,    85,   274,    98,    92,
    1201     96,   327,    71,   148,   151,   144,   145,    44,    46,   123,
    1202    148,   151,    78,   123,   100,    87,    90,    95,    87,   126,
    1203    148,   151,    78,   153,   154,    82,    85,   146,    44,    46,
    1204    147,   149,    71,   148,   151,   134,   138,    87,   462,   152,
    1205    393,   148,   151,   237,   153,   154,   152,   102,   146,   394,
    1206     78,   147,   149,    87,    90,    95,   152,   236,   143,   168,
    1207    461,   380,   381,    82,    85,    92,    96,   380,   381,   152,
    1208     71,   450,    92,    96,   144,   145,  -373,   152,    92,    96,
    1209    217,   144,   145,    92,    96,   395,   150,   217,    44,    46,
    1210    371,   144,   145,   217,   162,   163,   164,   165,   100,    92,
    1211     96,   111,   142,   166,   144,   145,   167,   150,   396,    92,
    1212     96,   388,   144,   145,   217,    87,    78,   377,   378,    87,
    1213    138,    87,   397,    78,   217,   209,    87,    92,    96,    78,
    1214    380,   381,    87,   102,    78,    34,    71,    87,    90,    95,
    1215     92,    96,   217,    71,   377,   378,   398,    82,    85,    71,
    1216     78,    92,    96,    87,    71,   217,    92,    96,    92,    96,
    1217     78,   399,   369,    87,    92,    96,   217,    49,    78,   400,
    1218     71,   217,   109,   217,    44,    46,    44,    46,    78,   217,
    1219     71,    87,    92,    96,    87,   380,   381,   401,    66,   498,
    1220     55,    78,   377,   378,    87,    78,   449,   100,    71,   211,
    1221     34,   402,    78,   377,   378,    87,   403,    78,    49,    78,
    1222     87,    71,    87,    92,    96,    78,   404,   160,    87,   138,
    1223    405,   212,    71,   377,   378,    92,    96,    71,   100,    71,
    1224     44,    46,    49,    78,   171,    71,    87,    90,    95,    87,
    1225    100,    44,    46,    78,   406,   324,    82,    85,    92,    96,
    1226     98,  -374,   121,    71,    78,   377,   378,    90,    95,    44,
    1227     46,   407,   138,   100,    78,   341,   342,    87,    90,    95,
    1228    408,    92,    96,   383,    78,   263,    78,    82,    85,    87,
    1229     90,    95,   377,   378,    71,    98,   100,   337,   338,    82,
    1230     85,   413,    92,    96,    44,    46,    71,   265,   261,    78,
    1231    570,   264,    87,    90,    95,   265,   412,   100,   138,   377,
    1232    378,   268,    82,    85,   266,    92,    96,   260,   413,    71,
    1233     29,    30,    78,    92,    96,    87,    90,    95,   259,   138,
    1234    100,   258,   386,    78,   385,    82,    85,   375,   217,   479,
    1235    264,    37,    71,    78,    92,    96,    87,    90,    95,   355,
    1236    356,    34,    98,   265,   377,   378,    82,    85,   497,   100,
    1237     78,    44,    46,    71,   357,   358,    78,    92,    96,    87,
    1238     90,    95,   178,    20,    78,    21,    20,    87,    21,    82,
    1239     85,    98,   100,    49,   377,   378,    71,    34,    92,    96,
    1240     44,    46,    44,    46,    71,    78,   602,   603,    87,    90,
    1241     95,   375,   108,   100,    98,    78,    92,    96,    82,    85,
    1242     66,   339,   340,    44,    46,    71,   273,   274,    78,    49,
    1243    413,    87,    90,    95,   266,   138,    92,    96,    44,    46,
    1244     49,    82,    85,   118,   120,   412,   629,   630,    71,    78,
    1245     92,    96,    87,    90,    95,   162,   163,   164,   165,   611,
    1246    612,   613,    82,    85,   126,   428,   429,    78,   267,    71,
    1247     87,   118,   120,   121,   123,   125,   109,   111,   257,   114,
    1248   -103,    92,    96,   256,   201,   426,   427,    78,   181,   255,
    1249     87,   118,   120,   121,   123,   125,   109,   111,   178,   114,
    1250    436,    78,   424,   425,    87,   422,   423,   437,   123,   125,
    1251    109,   111,    92,    96,   420,   421,   253,   418,   419,   245,
    1252    118,   120,   249,   250,    92,    96,   162,   163,   164,   165,
    1253    329,   330,    78,   438,   439,    87,    92,    96,   440,   123,
    1254    125,   109,   111,   162,   163,   164,   165,   162,   163,   164,
    1255    165,   162,   163,   164,   165,   162,   163,   164,   165,   162,
    1256    163,   164,   165,    78,   441,   442,    87,   443,   444,   445,
    1257    123,   125,   109,   111,   446,    78,   447,   254,    87,   243,
    1258    452,   453,   123,   125,   109,   111,   454,    78,   455,   456,
    1259     87,   457,   166,   169,   123,   125,   109,   111,   162,   163,
    1260    164,   165,   167,   170,   459,   460,   242,   241,   240,   239,
    1261    238,   138,   473,   171,   476,   477,   268,   142,   482,   111,
    1262    484,   485,   486,   123,   207,   102,   161,   158,   141,   138,
    1263    500,   125,   502,   109,   504,   111,   506,   136,    49,   509,
    1264    510,   511,   512,   131,    69,    68,   545,   546,   123,   548,
    1265    125,   550,   109,   552,   111,   554,    34,    60,   557,   558,
    1266    559,   560,   561,   562,   563,   564,   566,    57,   568,   109,
    1267    168,  -103,    54,   276,    51,   580,   581,   158,   111,   111,
    1268    111,    32,   583,   584,   585,   586,   587,   588,   277,   591,
    1269    592,   593,    28,   596,   597,   263,   600,   319,   121,   604,
    1270    605,   606,   607,    71,   570,   609,   125,    18,   618,   620,
    1271    621,   622,    15,   624,    10,     9,   626,   627,   628,   123,
    1272      8,     7,   111 ]
     1183   574,   501,   476,   159,   397,   590,   473,   469,   471,   146,
     1184   229,   130,     9,   576,     1,   572,    58,   543,    67,   379,
     1185   540,   383,   600,   541,   542,   385,    29,   451,   523,   390,
     1186    22,   115,    11,     4,   499,   185,   537,   511,    51,   515,
     1187   516,   497,   228,   514,    51,   443,    61,   571,    23,   152,
     1188   154,    46,    49,   316,    30,   147,    77,    80,    83,   188,
     1189   117,    92,   304,   308,   398,   110,   112,   115,   117,   529,
     1190   117,   523,   110,   115,   112,   573,   117,   152,   154,   537,
     1191   511,    75,   515,   516,   272,   156,   117,   280,   284,   286,
     1192   534,   162,   115,   296,    46,    49,   316,   230,   112,    77,
     1193    80,    83,   188,   115,    92,   304,   308,   435,   110,   112,
     1194   115,   117,   529,   156,   495,   627,   214,   101,   433,   108,
     1195   211,   381,   148,   150,   459,   466,   482,    67,   391,   376,
     1196   280,   284,   286,   534,   117,   101,   296,   133,   213,   138,
     1197   112,   331,   212,    73,   152,   154,   458,    51,   124,   126,
     1198   148,   150,   393,    77,    80,    83,   274,   138,    92,    95,
     1199    99,   152,   154,   101,   112,   467,   152,   154,    87,    90,
     1200   110,    77,    80,    83,   110,    75,    92,    95,    99,   128,
     1201   156,    77,   325,   326,   134,   100,    87,    90,   152,   154,
     1202   568,   152,   154,    75,    46,    49,   395,   156,   337,    77,
     1203    80,    83,   156,   396,    92,    95,    99,   236,   110,   152,
     1204   154,   419,   157,   158,    87,    90,   149,   148,   150,   151,
     1205   153,    75,   321,   322,   156,   236,    92,   156,   334,   247,
     1206   388,   170,   387,   217,   148,   150,   238,   127,   164,   148,
     1207   150,    46,    49,   152,   154,   156,   157,   158,  -373,   257,
     1208   149,   101,   250,   151,   153,   253,   255,   239,   171,   321,
     1209   322,   148,   150,    92,   148,   150,   493,   139,   241,    77,
     1210    80,    83,   140,   138,    92,  -374,    16,   155,    17,   156,
     1211    95,    99,   148,   150,   217,   349,   350,    77,    80,    83,
     1212   217,    75,    92,    95,    99,   399,    77,    80,    83,   239,
     1213   217,    92,    87,    90,   570,   110,   112,   115,   117,    75,
     1214   400,   155,   491,   101,   321,   322,   148,   150,    92,   143,
     1215    77,    80,    83,   401,   144,    92,    77,    80,    83,   321,
     1216   322,    92,   217,    92,   402,   138,    77,    80,    83,   217,
     1217   417,    92,    75,   321,   322,   217,   403,    92,    75,    77,
     1218    80,    83,   339,   340,    92,    95,    99,   217,    75,    77,
     1219   325,   326,   404,   237,    87,    90,   341,   342,    77,    80,
     1220    83,    75,   217,    92,   405,    77,    80,    83,    25,    26,
     1221    92,    77,    80,    83,   101,   406,    92,    77,   325,   326,
     1222    75,    46,    49,    77,    80,    83,   407,    75,    92,   408,
     1223   321,   322,   101,    75,    92,   385,   138,   481,    77,    80,
     1224    83,   351,   352,    92,   102,    75,   168,   169,   166,   167,
     1225    77,    80,    83,   409,   100,    92,    95,    99,   101,    16,
     1226    75,    17,   410,    46,    49,    87,    90,   217,    77,    80,
     1227    83,   268,    75,    92,    95,    99,   101,   598,   599,   210,
     1228   138,    39,   267,    87,    90,    46,    49,   359,   360,    35,
     1229    75,    35,   272,   274,    77,    80,    83,   246,   138,    92,
     1230    95,    99,   245,    77,    80,    83,   140,   101,    92,    87,
     1231    90,   144,    77,    80,    83,   217,    75,    92,    95,    99,
     1232   139,    51,   143,    51,   244,    75,   102,    87,    90,   100,
     1233    46,    49,    46,    49,    75,   367,   368,    56,    46,    49,
     1234   101,   124,   126,    77,    80,    83,   243,    35,    92,    95,
     1235    99,    77,    80,    83,   258,    35,    92,   259,    87,    90,
     1236   430,   431,   100,   101,   260,    75,   117,    46,    49,   428,
     1237   429,    46,    49,    75,   261,   217,    77,    80,    83,    51,
     1238   115,    92,    95,    99,   242,   100,   101,    51,    46,    49,
     1239   241,    87,    90,   436,    46,    49,    46,    49,    75,    77,
     1240    80,    83,   426,   427,    92,    95,    99,   437,   100,   101,
     1241   438,    77,    80,    83,    87,    90,    92,    46,    49,   415,
     1242   439,    75,    77,    80,    83,   415,   440,    92,    95,    99,
     1243   441,   138,   240,    75,   414,   325,   326,    87,    90,   415,
     1244   414,   325,   326,   444,    75,    77,    80,    83,   424,   425,
     1245    92,    95,    99,   445,    77,   325,   326,    77,   325,   326,
     1246    87,    90,   617,   618,   619,   316,   446,    75,    77,    80,
     1247    83,   188,   447,    92,   304,   308,   448,   110,   112,   115,
     1248   117,   128,   422,   423,    77,    80,    83,   420,   421,    92,
     1249   124,   126,   127,   110,   112,   115,   117,   449,   120,   280,
     1250   284,   286,  -103,   631,   632,   296,   203,   124,   126,    77,
     1251    80,    83,   188,   239,    92,   124,   126,   127,   110,   112,
     1252   115,   117,   185,   120,    77,    80,    83,   452,   453,    92,
     1253    77,   325,   326,   110,   112,   115,   117,    77,    80,    83,
     1254   454,   455,    92,    77,   325,   326,   110,   112,   115,   117,
     1255    77,    80,    83,   456,   457,    92,    77,   325,   326,   110,
     1256   112,   115,   117,    77,    80,    83,   238,   461,    92,    77,
     1257   325,   326,   110,   112,   115,   117,   328,   462,   321,   322,
     1258   463,   262,    92,   168,   169,   166,   167,   324,    77,   325,
     1259   326,   168,   169,   166,   167,   168,   169,   166,   167,   168,
     1260   169,   166,   167,   168,   169,   166,   167,   168,   169,   166,
     1261   167,   168,   169,   166,   167,   168,   169,   166,   167,   138,
     1262   171,   147,   208,   102,   475,   165,   478,   480,   263,   162,
     1263   484,   485,   486,   264,   488,   145,   138,   135,    51,   109,
     1264    69,    66,   502,   110,   504,   112,   506,   115,   508,   117,
     1265   510,    35,   538,   539,    61,    57,   545,   546,   547,   265,
     1266   549,  -103,   551,   110,   553,   112,   555,   115,   557,   117,
     1267   559,   560,   561,   562,   563,    54,   162,   566,   266,    34,
     1268   170,   112,    31,    28,   578,   579,   580,   581,   117,   117,
     1269   117,   267,   583,   584,   585,   586,   587,   588,   589,    24,
     1270   592,   593,   110,   596,   268,   127,   185,    21,   603,   604,
     1271    75,   570,   606,   608,   609,   610,   319,   616,   276,    15,
     1272   621,    14,   622,    12,   624,   625,   626,     8,     7,   629,
     1273   630,   277,   117 ]
    12731274
    12741275racc_action_check = [
    1275    528,   342,   404,    82,   309,   528,   528,   402,   400,   401,
    1276     18,   569,   526,   528,     6,   399,     0,   260,   223,   223,
    1277    399,   399,    36,   158,   255,    10,   239,    96,   528,   260,
    1278     96,   239,   239,   255,     6,     0,   528,   528,    18,   528,
    1279    528,   462,   477,    10,   526,   477,   462,   462,   477,   477,
    1280     36,   528,   528,   528,   223,   158,   528,   528,   342,   528,
    1281    528,   528,   309,   528,   528,   528,   528,   528,   404,   462,
    1282    526,   400,   402,   401,   399,   421,   425,   462,   462,    82,
    1283    462,   462,   462,   215,   215,   528,   528,   528,   528,   223,
    1284    223,   528,   462,   462,   462,   569,   419,   462,   462,   477,
    1285    462,   462,   462,   340,   462,   462,   462,   462,   462,   219,
    1286    219,   220,   220,   338,   398,   423,   161,    19,    61,   398,
    1287    398,   161,   161,   195,   318,   318,   462,   462,   462,   462,
    1288    421,   215,   462,   425,   215,   215,   161,   215,   215,   215,
    1289    318,   215,   215,   215,   215,   219,    54,   220,   269,   330,
    1290    419,    54,    54,    61,   498,   498,   408,   143,   161,   340,
    1291    318,   263,   263,   215,   215,   215,    54,   518,   338,   215,
    1292    398,   423,   161,   450,   450,   161,   161,   161,    69,   143,
    1293    219,   219,   220,   220,   624,   161,   161,   271,    54,   624,
    1294    624,   243,   161,   227,   227,   318,   318,    54,    54,   243,
    1295    226,   226,    54,   330,   624,    54,    54,    54,   498,   408,
    1296     81,    81,   263,    81,    81,    54,    54,    81,   518,   518,
    1297     81,    81,    54,   222,   222,    69,   624,   450,   394,   227,
    1298    274,   172,   172,   173,   172,   172,   226,   131,   172,   275,
    1299    624,   172,   172,   624,   624,   624,    81,   172,    80,    93,
    1300    394,   268,   268,   624,   624,   151,   151,   358,   358,   222,
    1301    624,   358,   153,   153,   227,   227,    93,   172,   152,   152,
    1302    151,   226,   226,   160,   160,   276,    81,   153,   131,   131,
    1303    259,    81,    81,   152,   173,   173,   173,   173,   160,   154,
    1304    154,   259,    80,    92,   222,   222,    92,   172,   277,   150,
    1305    150,   268,   172,   172,   154,   268,   151,   449,   449,   151,
    1306    160,   358,   279,   153,   150,   136,   153,   149,   149,   152,
    1307    264,   264,   152,    57,   160,   136,   151,   160,   160,   160,
    1308    148,   148,   149,   153,   497,   497,   280,   160,   160,   152,
    1309    154,   147,   147,   154,   160,   148,   146,   146,   145,   145,
    1310    150,   283,   258,   150,   144,   144,   147,   136,   449,   286,
    1311    154,   146,   258,   145,    57,    57,   136,   136,   149,   144,
    1312    150,   149,   163,   163,   264,   429,   429,   290,    45,   429,
    1313     32,   148,   356,   356,   148,   497,   356,   163,   149,   141,
    1314     32,   293,   147,   575,   575,   147,   296,   146,    45,   145,
    1315    146,   148,   145,   618,   618,   144,   297,    85,   144,   163,
    1316    300,   141,   147,   265,   265,   164,   164,   146,   618,   145,
    1317    515,   515,    32,   163,    98,   144,   163,   163,   163,   429,
    1318    164,    32,    32,   356,   301,   241,   163,   163,   625,   625,
    1319    618,    98,   241,   163,   575,   563,   563,    85,    85,   618,
    1320    618,   303,   164,   625,   618,   248,   248,   618,   618,   618,
    1321    305,   165,   165,   265,   265,   307,   164,   618,   618,   164,
    1322    164,   164,   484,   484,   618,   625,   165,   246,   246,   164,
    1323    164,   563,   100,   100,   625,   625,   164,   517,   194,   625,
    1324    517,   312,   625,   625,   625,   313,   563,   100,   165,   573,
    1325    573,   316,   625,   625,   317,   609,   609,   192,   484,   625,
    1326     22,    22,   165,   217,   217,   165,   165,   165,   189,   100,
    1327    609,   186,   266,   484,   266,   165,   165,   407,   217,   407,
    1328    199,    27,   165,   100,   614,   614,   100,   100,   100,   251,
    1329    251,    27,   609,   200,   427,   427,   100,   100,   427,   614,
    1330    573,   609,   609,   100,   252,   252,   609,    75,    75,   609,
    1331    609,   609,   262,    30,   217,    30,    14,   217,    14,   609,
    1332    609,   614,    75,    27,   319,   319,   609,   513,   162,   162,
    1333    614,   614,    27,    27,   217,   614,   579,   579,   614,   614,
    1334    614,   261,    59,   162,    75,   427,    60,    60,   614,   614,
    1335     59,   247,   247,    75,    75,   614,   211,   211,    75,   513,
    1336    319,    75,    75,    75,   201,   162,   102,   102,   513,   513,
    1337     59,    75,    75,   410,   410,   319,   622,   622,    75,   162,
    1338    249,   249,   162,   162,   162,   233,   233,   233,   233,   606,
    1339    606,   606,   162,   162,    60,   336,   336,    60,   203,   162,
    1340     60,    60,    60,    60,    60,    60,    60,    60,   185,    60,
    1341    102,   250,   250,   184,   102,   335,   335,   102,   102,   183,
    1342    102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
    1343    343,   249,   334,   334,   249,   333,   333,   344,   249,   249,
    1344    249,   249,   181,   181,   332,   332,   181,   331,   331,   181,
    1345    267,   267,   181,   181,   245,   245,   231,   231,   231,   231,
    1346    244,   244,   250,   345,   346,   250,   253,   253,   347,   250,
    1347    250,   250,   250,   232,   232,   232,   232,   234,   234,   234,
    1348    234,   235,   235,   235,   235,   617,   617,   617,   617,    91,
    1349     91,    91,    91,   181,   348,   349,   181,   350,   351,   352,
    1350    181,   181,   181,   181,   353,   245,   354,   182,   245,   180,
    1351    359,   360,   245,   245,   245,   245,   361,   253,   362,   363,
    1352    253,   364,   377,   378,   253,   253,   253,   253,   632,   632,
    1353    632,   632,   380,   381,   392,   393,   179,   177,   176,   175,
    1354    174,   142,   403,   138,   405,   406,   204,   137,   409,   257,
    1355    412,   415,   416,   417,   128,   106,    86,    83,    79,    71,
    1356    430,   431,   432,   433,   434,   435,   448,    70,    66,   451,
    1357    459,   460,   461,    63,    53,    49,   487,   488,   489,   490,
    1358    491,   492,   493,   494,   495,   496,    42,    41,   499,   501,
    1359    503,   505,   507,   508,   510,   511,   512,    35,   514,   254,
    1360    516,    34,    31,   212,    28,   534,   535,   537,   540,   541,
    1361    542,    26,   547,   549,   551,   553,   555,   556,   214,   564,
    1362    565,   567,    20,   570,   572,   197,   574,   228,   238,   581,
    1363    589,   590,   591,   595,   599,   604,   242,    11,   610,   611,
    1364    612,   613,     8,   616,     5,     4,   619,   620,   621,   240,
    1365      3,     2,   543 ]
     1276   528,   431,   406,    87,   278,   567,   404,   402,   403,    85,
     1277   162,    62,     4,   528,     0,   526,    42,   480,    52,   262,
     1278   480,   264,   579,   480,   480,   265,    21,   368,   528,   270,
     1279    14,   262,     4,     0,   429,   264,   528,   528,    52,   528,
     1280   528,   427,   162,   459,    42,   360,    62,   526,    14,   226,
     1281   226,   528,   528,   528,    21,    85,   528,   528,   528,   528,
     1282   431,   528,   528,   528,   278,   528,   528,   528,   528,   528,
     1283   406,   459,   402,   404,   403,   526,   480,   224,   224,   459,
     1284   459,    87,   459,   459,   459,   226,   368,   528,   528,   528,
     1285   528,   567,   429,   528,   459,   459,   459,   165,   427,   459,
     1286   459,   459,   459,   360,   459,   459,   459,   352,   459,   459,
     1287   459,   459,   459,   224,   425,   621,   146,   165,   350,    59,
     1288   145,   263,   226,   226,   390,   400,   410,    59,   271,   259,
     1289   459,   459,   459,   459,   263,   621,   459,    69,   146,   165,
     1290   259,   243,   145,    54,   227,   227,   390,    59,   243,   243,
     1291   224,   224,   274,   165,   165,   165,   275,   621,   165,   165,
     1292   165,   222,   222,    54,   352,   401,   218,   218,   165,   165,
     1293   425,   621,   621,   621,   350,   165,   621,   621,   621,   410,
     1294   227,   400,   400,   400,    69,    54,   621,   621,   220,   220,
     1295   516,   318,   318,   621,    54,    54,   276,   222,   247,    54,
     1296    54,    54,   218,   277,    54,    54,    54,   318,   247,   172,
     1297   172,   342,   172,   172,    54,    54,   172,   227,   227,   172,
     1298   172,    54,   401,   401,   220,   172,   401,   318,   245,   187,
     1299   267,    97,   267,   158,   222,   222,   281,   245,    90,   218,
     1300   218,   516,   516,    86,    86,   172,    86,    86,    97,   188,
     1301    86,   164,   188,    86,    86,   188,   188,   282,   100,   342,
     1302   342,   220,   220,   342,   318,   318,   423,    80,   285,   158,
     1303   158,   158,    80,   164,   158,   100,    11,   172,    11,    86,
     1304    90,    90,   172,   172,   157,   251,   251,   164,   164,   164,
     1305   156,   158,   164,   164,   164,   287,   188,   188,   188,   519,
     1306   155,   188,   164,   164,   519,   188,   188,   188,   188,   164,
     1307   288,    86,   421,   166,   423,   423,    86,    86,   423,    83,
     1308   157,   157,   157,   291,    83,   157,   156,   156,   156,   419,
     1309   419,   156,   154,   419,   294,   166,   155,   155,   155,   153,
     1310   340,   155,   157,   493,   493,   152,   298,   493,   156,   166,
     1311   166,   166,   248,   248,   166,   166,   166,   151,   155,   421,
     1312   421,   421,   301,   173,   166,   166,   249,   249,   154,   154,
     1313   154,   166,   150,   154,   304,   153,   153,   153,    18,    18,
     1314   153,   152,   152,   152,   167,   305,   152,   340,   340,   340,
     1315   154,   515,   515,   151,   151,   151,   308,   153,   151,   309,
     1316   238,   238,    81,   152,   238,   409,   167,   409,   150,   150,
     1317   150,   252,   252,   150,    57,   151,   173,   173,   173,   173,
     1318   167,   167,   167,   311,    81,   167,   167,   167,   168,    26,
     1319   150,    26,   313,    81,    81,   167,   167,   149,    81,    81,
     1320    81,   315,   167,    81,    81,    81,   169,   577,   577,   135,
     1321   168,    28,   316,    81,    81,    57,    57,   254,   254,   135,
     1322    81,    28,   211,   211,   168,   168,   168,   186,   169,   168,
     1323   168,   168,   184,   149,   149,   149,   321,   606,   149,   168,
     1324   168,   322,   169,   169,   169,   148,   168,   169,   169,   169,
     1325   325,   135,   326,    28,   183,   149,   109,   169,   169,   606,
     1326   135,   135,    28,    28,   169,   256,   256,    34,   606,   606,
     1327   611,   398,   398,   606,   606,   606,   182,    34,   606,   606,
     1328   606,   148,   148,   148,   189,   511,   148,   190,   606,   606,
     1329   348,   348,   611,   616,   191,   606,   261,   109,   109,   347,
     1330   347,   611,   611,   148,   192,   217,   611,   611,   611,    34,
     1331   258,   611,   611,   611,   181,   616,   623,   511,    34,    34,
     1332   179,   611,   611,   353,   616,   616,   511,   511,   611,   616,
     1333   616,   616,   346,   346,   616,   616,   616,   354,   623,   101,
     1334   355,   217,   217,   217,   616,   616,   217,   623,   623,   319,
     1335   356,   616,   623,   623,   623,   580,   357,   623,   623,   623,
     1336   358,   101,   178,   217,   319,   319,   319,   623,   623,   485,
     1337   580,   580,   580,   361,   623,   101,   101,   101,   345,   345,
     1338   101,   101,   101,   362,   485,   485,   485,   268,   268,   268,
     1339   101,   101,   609,   609,   609,   214,   363,   101,   214,   214,
     1340   214,   214,   364,   214,   214,   214,   365,   214,   214,   214,
     1341   214,    61,   344,   344,    61,    61,    61,   343,   343,    61,
     1342    61,    61,    61,    61,    61,    61,    61,   366,    61,   214,
     1343   214,   214,   102,   626,   626,   214,   102,   240,   240,   102,
     1344   102,   102,   102,   176,   102,   102,   102,   102,   102,   102,
     1345   102,   102,   102,   102,   250,   250,   250,   369,   370,   250,
     1346   417,   417,   417,   250,   250,   250,   250,   257,   257,   257,
     1347   371,   372,   257,   573,   573,   573,   257,   257,   257,   257,
     1348   253,   253,   253,   373,   374,   253,   571,   571,   571,   253,
     1349   253,   253,   253,   255,   255,   255,   175,   392,   255,   491,
     1350   491,   491,   255,   255,   255,   255,   241,   393,   241,   241,
     1351   397,   193,   241,   234,   234,   234,   234,   239,   239,   239,
     1352   239,    96,    96,    96,    96,   614,   614,   614,   614,   235,
     1353   235,   235,   235,   231,   231,   231,   231,   232,   232,   232,
     1354   232,   233,   233,   233,   233,   628,   628,   628,   628,   147,
     1355   138,   137,   114,   107,   405,    91,   407,   408,   196,    88,
     1356   412,   414,   416,   199,   418,    84,    75,    70,    67,    60,
     1357    53,    51,   432,   433,   434,   435,   442,   443,   450,   451,
     1358   458,    48,   461,   462,    47,    41,   487,   489,   490,   201,
     1359   492,    35,   494,   495,   496,   497,   498,   499,   500,   501,
     1360   503,   505,   507,   509,   510,    33,   512,   514,   202,    27,
     1361   517,   246,    24,    20,   534,   535,   538,   539,   540,   541,
     1362   542,   203,   548,   550,   552,   554,   556,   558,   564,    16,
     1363   569,   570,   244,   572,   205,   242,   266,    13,   581,   582,
     1364   591,   594,   600,   601,   602,   603,   228,   607,   212,     8,
     1365   613,     6,   615,     5,   617,   618,   619,     3,     2,   624,
     1366   625,   213,   543 ]
    13661367
    13671368racc_action_pointer = [
    1368     15,   nil,   882,   900,   877,   867,    13,   nil,   892,   nil,
    1369     24,   859,   nil,   nil,   542,   nil,   nil,   nil,     9,    87,
    1370    864,   nil,   488,   nil,   nil,   nil,   830,   530,   829,   nil,
    1371    539,   820,   379,   nil,   801,   839,     7,   nil,   nil,   nil,
    1372    nil,   787,   825,   nil,   nil,   355,   nil,   nil,   nil,   824,
    1373    nil,   nil,   nil,   777,   145,   nil,   nil,   312,   nil,   577,
    1374    590,   103,   nil,   815,   nil,   nil,   775,   nil,   nil,   177,
    1375    768,   766,   nil,   nil,   nil,   551,   nil,   nil,   nil,   775,
    1376    215,   204,     2,   722,   nil,   386,   760,   nil,   nil,   nil,
    1377    nil,   666,   236,   220,   nil,   nil,   -30,   nil,   395,   nil,
    1378    476,   nil,   610,   nil,   nil,   nil,   794,   nil,   nil,   nil,
     1369    13,   nil,   879,   897,    11,   875,   864,   nil,   889,   nil,
     1370   nil,   252,   nil,   849,    29,   nil,   861,   nil,   356,   nil,
     1371   823,    25,   nil,   nil,   827,   nil,   405,   818,   450,   nil,
     1372   nil,   nil,   nil,   813,   506,   781,   nil,   nil,   nil,   nil,
     1373   nil,   817,     1,   nil,   nil,   nil,   nil,   774,   810,   nil,
     1374   nil,   810,    -5,   763,   142,   nil,   nil,   403,   nil,   104,
     1375   801,   597,    -4,   nil,   nil,   nil,   nil,   765,   nil,   136,
     1376   758,   nil,   nil,   nil,   nil,   763,   nil,   nil,   nil,   nil,
     1377   210,   381,   nil,   262,   772,   -24,   237,     2,   712,   nil,
     1378   217,   749,   nil,   nil,   nil,   nil,   686,   202,   nil,   nil,
     1379   229,   558,   622,   nil,   nil,   nil,   nil,   782,   nil,   485,
     1380   nil,   nil,   nil,   nil,   741,   nil,   nil,   nil,   nil,   nil,
    13791381   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1380    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   753,   nil,
    1381    nil,   226,   nil,   nil,   nil,   nil,   314,   720,   764,   nil,
    1382    nil,   377,   748,   145,   348,   342,   340,   335,   324,   311,
    1383    293,   249,   262,   256,   283,   nil,   nil,   nil,    22,   nil,
    1384    267,   115,   572,   366,   409,   455,   nil,   nil,   nil,   nil,
    1385    nil,   nil,   225,   211,   735,   734,   733,   732,   nil,   731,
    1386    704,   686,   702,   614,   648,   603,   466,   nil,   nil,   463,
    1387    nil,   nil,   452,   nil,   433,    68,   nil,   820,   nil,   475,
    1388    488,   559,   nil,   593,   741,   nil,   nil,   nil,   nil,   nil,
    1389    nil,   564,   818,   nil,   833,    77,   nil,   507,   nil,   103,
    1390    105,   nil,   217,    12,   nil,   nil,   194,   187,   865,   nil,
    1391    nil,   633,   650,   562,   654,   658,   nil,   nil,   815,   -30,
    1392    835,   379,   821,   135,   652,   698,   419,   543,   397,   624,
    1393    655,   481,   496,   710,   783,   -32,   nil,   732,   296,   224,
    1394    -39,   537,   494,   155,   314,   407,   468,   639,   245,   134,
    1395    nil,   144,   nil,   nil,   151,   206,   239,   262,   nil,   298,
    1396    255,   nil,   nil,   270,   nil,   nil,   278,   nil,   nil,   nil,
    1397    296,   nil,   nil,   310,   nil,   nil,   341,   325,   nil,   nil,
    1398    355,   357,   nil,   396,   nil,   379,   nil,   410,   nil,   -19,
    1399    nil,   nil,   436,   440,   nil,   nil,   446,   449,   118,   568,
     1382   nil,   nil,   nil,   nil,   nil,   448,   nil,   712,   761,   nil,
     1383   nil,   nil,   nil,   nil,   nil,   108,   104,   746,   464,   416,
     1384   351,   336,   324,   318,   311,   279,   269,   263,   212,   nil,
     1385   nil,   nil,     9,   nil,   230,    96,   292,   363,   407,   425,
     1386   nil,   nil,   203,   341,   nil,   681,   628,   nil,   547,   505,
     1387   nil,   499,   461,   439,   417,   nil,   412,   174,   239,   469,
     1388   472,   519,   489,   696,   nil,   nil,   743,   nil,   nil,   748,
     1389   nil,   774,   793,   806,   nil,   819,   nil,   nil,   nil,   nil,
     1390   nil,   420,   853,   866,   581,   nil,   nil,   524,   160,   nil,
     1391   182,   nil,   155,   nil,    71,   nil,    43,   138,   874,   nil,
     1392   nil,   698,   702,   706,   678,   694,   nil,   nil,   342,   701,
     1393   614,   690,   810,    85,   806,   172,   784,   142,   292,   306,
     1394   637,   225,   351,   663,   397,   676,   445,   650,   482,    73,
     1395   nil,   467,   -37,    65,   -35,   -29,   806,   176,   570,   nil,
     1396    -4,   114,   nil,   nil,    71,   113,   160,   167,   -19,   nil,
     1397   nil,   181,   202,   nil,   nil,   213,   nil,   281,   227,   nil,
     1398   nil,   240,   nil,   nil,   251,   nil,   nil,   nil,   263,   nil,
     1399   nil,   279,   nil,   nil,   319,   302,   nil,   nil,   341,   320,
     1400   nil,   368,   nil,   349,   nil,   386,   397,   nil,   185,   547,
     1401   nil,   414,   419,   nil,   nil,   433,   435,   nil,   nil,   nil,
    14001402   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1401    139,   639,   636,   627,   624,   607,   587,   nil,   103,   nil,
    1402     93,   nil,    -9,   622,   629,   655,   656,   660,   686,   687,
    1403    689,   690,   691,   696,   698,   nil,   376,   nil,   251,   702,
    1404    703,   708,   710,   711,   713,   nil,   nil,   nil,   nil,   nil,
    1405    nil,   nil,   nil,   nil,   nil,   nil,   nil,   715,   716,   nil,
    1406    722,   723,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1407    nil,   nil,   704,   752,   216,   nil,   nil,   nil,   113,    14,
    1408      7,     8,     6,   730,     1,   733,   737,   473,   155,   797,
    1409    562,   nil,   741,   nil,   nil,   787,   744,   739,   nil,    86,
    1410    nil,    65,   nil,   105,   nil,    66,   nil,   538,   nil,   369,
    1411    752,   746,   754,   747,   756,   748,   nil,   nil,   nil,   nil,
    1412    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   758,   301,
    1413    167,   761,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   787,
    1414    809,   787,    40,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1415    nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,   nil,
    1416    nil,   nil,   nil,   nil,   466,   nil,   nil,   768,   769,   764,
    1417    771,   765,   773,   766,   775,   767,   777,   328,   148,   780,
    1418    nil,   781,   nil,   782,   nil,   783,   nil,   784,   785,   nil,
    1419    832,   788,   810,   566,   834,   368,   821,   432,   166,   nil,
    1420    nil,   nil,   nil,   nil,   nil,   nil,   -11,   nil,    -1,   nil,
    1421    nil,   nil,   nil,   nil,   764,   823,   nil,   772,   nil,   nil,
    1422    791,   792,   793,   835,   nil,   nil,   nil,   804,   nil,   805,
    1423    nil,   806,   nil,   807,   nil,   808,   809,   nil,   nil,   nil,
    1424    nil,   nil,   nil,   439,   810,   856,   nil,   832,   nil,    10,
    1425    805,   nil,   845,   493,   875,   387,   nil,   nil,   nil,   496,
    1426    nil,   867,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   866,
    1427    800,   825,   nil,   nil,   nil,   806,   nil,   nil,   nil,   826,
    1428    nil,   nil,   nil,   nil,   841,   nil,   557,   nil,   nil,   499,
    1429    843,   808,   809,   810,   528,   nil,   847,   662,   397,   882,
    1430    813,   814,   544,   nil,   183,   432,   nil,   nil,   nil,   nil,
    1431    nil,   nil,   705 ]
     1403   330,   nil,   201,   597,   592,   558,   512,   479,   470,   nil,
     1404   108,   nil,    97,   503,   517,   520,   530,   536,   540,   nil,
     1405    35,   553,   563,   576,   582,   586,   607,   nil,    17,   637,
     1406   638,   650,   651,   663,   664,   nil,   nil,   nil,   nil,   nil,
     1407   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1408   112,   nil,   655,   714,   nil,   nil,   nil,   749,   448,   nil,
     1409   124,   164,     6,     7,     5,   730,     1,   733,   737,   351,
     1410   125,   nil,   786,   nil,   740,   nil,   742,   643,   744,   271,
     1411   nil,   302,   nil,   256,   nil,   104,   nil,    31,   nil,    24,
     1412   nil,    -9,   752,   747,   754,   748,   nil,   nil,   nil,   nil,
     1413   nil,   nil,   756,   749,   nil,   nil,   nil,   nil,   nil,   nil,
     1414   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,   785,    42,
     1415   nil,   789,   811,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1416   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1417     7,   nil,   nil,   nil,   nil,   567,   nil,   766,   nil,   767,
     1418   768,   682,   770,   285,   772,   767,   774,   768,   776,   769,
     1419   778,   770,   nil,   780,   nil,   781,   nil,   782,   nil,   783,
     1420   808,   514,   759,   nil,   833,   339,   189,   821,   nil,   244,
     1421   nil,   nil,   nil,   nil,   nil,   nil,    -8,   nil,    -1,   nil,
     1422   nil,   nil,   nil,   nil,   761,   822,   nil,   nil,   844,   800,
     1423   789,   790,   791,   833,   nil,   nil,   nil,   nil,   802,   nil,
     1424   803,   nil,   804,   nil,   805,   nil,   806,   nil,   807,   nil,
     1425   nil,   nil,   nil,   nil,   829,   nil,   nil,     4,   nil,   841,
     1426   801,   669,   872,   656,   nil,   nil,   nil,   355,   nil,    10,
     1427   553,   817,   865,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1428   nil,   801,   nil,   nil,   821,   nil,   nil,   nil,   nil,   nil,
     1429   838,   869,   801,   828,   nil,   nil,   456,   842,   nil,   548,
     1430   nil,   489,   nil,   844,   690,   878,   512,   811,   812,   813,
     1431   nil,   114,   nil,   535,   813,   814,   589,   nil,   710,   nil,
     1432   nil,   nil,   nil ]
    14321433
    14331434racc_action_default = [
    1434   -376,    -2,  -376,  -376,  -376,   -13,    -6,    -4,  -376,    -1,
    1435   -376,  -376,    -5,    -7,  -376,   633,   -15,   -14,  -376,   -18,
    1436   -376,   -12,  -376,    -9,   -17,   -16,   -21,  -376,  -376,    -8,
    1437   -376,  -376,  -376,  -108,  -112,  -376,  -376,   -20,   -98,   -99,
    1438   -100,  -376,  -376,   -87,  -146,   -88,  -147,   -89,   -19,   -94,
    1439    -90,   -11,   -10,   -82,  -376,   -23,   -22,  -376,  -110,  -376,
    1440   -376,  -376,  -104,  -376,  -109,  -101,  -376,   -91,   -95,  -376,
    1441   -376,  -284,  -248,   -26,  -253,   -27,   -25,  -254,  -152,  -376,
    1442   -376,  -376,  -376,  -305,  -273,  -376,  -376,  -167,  -283,  -274,
    1443   -271,  -251,  -376,   -31,  -286,  -272,  -376,  -281,  -289,  -282,
    1444   -376,   -24,  -112,   -93,  -113,   -97,  -376,   -96,  -111,  -217,
    1445   -124,  -230,  -125,  -126,  -247,  -127,  -128,  -129,  -182,  -130,
    1446   -183,  -187,  -121,  -191,  -122,  -204,  -148,  -123,  -376,  -102,
    1447   -105,  -376,   -92,   -84,   -83,    -3,  -376,  -285,  -289,  -249,
    1448   -373,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1449   -376,  -376,  -376,  -376,  -376,  -256,  -255,   -30,  -376,  -259,
    1450   -376,  -376,  -376,  -376,  -376,  -376,  -153,  -168,   -32,  -154,
    1451   -169,  -288,  -376,  -376,  -135,  -124,  -136,  -125,  -243,  -137,
    1452   -126,  -376,  -138,  -127,  -376,  -139,  -128,  -117,  -140,  -129,
    1453   -118,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -144,  -133,
    1454   -122,  -148,  -145,  -134,  -123,  -116,  -114,  -107,  -106,   -86,
    1455    -85,  -376,  -376,  -287,  -376,  -376,  -278,  -376,  -279,  -263,
    1456   -264,  -275,  -265,  -260,  -276,  -277,  -261,  -262,  -376,  -307,
    1457   -252,  -250,  -266,  -267,  -268,  -269,  -280,  -270,  -376,  -376,
     1435  -376,    -2,  -376,  -376,    -6,  -376,   -13,    -4,  -376,    -5,
     1436    -7,  -376,    -1,  -376,  -376,   633,  -376,   -12,  -376,    -9,
     1437   -18,  -376,   -15,   -14,  -376,    -8,  -376,   -21,  -376,   -17,
     1438   -16,   -11,   -10,  -376,  -376,  -112,   -89,   -19,   -90,   -20,
     1439  -108,  -376,  -376,   -98,   -99,  -100,  -146,  -376,  -376,  -147,
     1440   -87,   -94,   -88,   -82,  -376,   -22,   -23,  -376,  -110,  -376,
     1441  -376,  -376,  -376,  -104,  -109,  -101,   -95,  -376,   -91,  -376,
     1442  -376,  -281,  -282,   -25,   -24,  -284,  -248,  -152,   -26,  -253,
     1443  -376,   -27,  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,
     1444  -376,  -376,  -167,  -283,  -274,  -271,  -251,   -31,  -286,  -272,
     1445  -289,  -376,  -112,   -96,   -93,  -113,   -97,  -376,  -111,  -376,
     1446  -191,  -122,  -204,  -123,  -376,  -217,  -124,  -230,  -125,  -126,
     1447  -247,  -127,  -128,  -129,  -182,  -130,  -183,  -187,  -148,  -121,
     1448  -102,  -105,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -153,
     1449  -168,  -249,  -373,  -154,  -169,  -376,  -376,  -376,  -376,  -376,
     1450  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -256,
     1451  -255,   -30,  -376,  -259,  -376,  -376,  -376,  -376,  -376,  -376,
     1452   -32,  -288,  -376,  -376,  -144,  -133,  -122,  -145,  -134,  -123,
     1453  -116,  -135,  -124,  -136,  -125,  -243,  -137,  -126,  -376,  -138,
     1454  -127,  -376,  -139,  -128,  -117,  -140,  -129,  -118,  -141,  -119,
     1455  -142,  -131,  -120,  -148,  -143,  -132,  -114,  -106,  -107,   -85,
     1456   -86,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
     1457  -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -376,  -307,
     1458  -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,  -376,
    14581459  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1459   -376,  -376,  -376,  -376,  -376,  -376,  -115,  -376,  -376,  -376,
    14601460  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1461    -33,   -34,   -63,   -62,  -290,  -376,  -376,  -376,  -334,  -376,
    1462   -313,   -54,  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,
    1463   -331,   -57,  -342,  -337,  -312,   -58,  -353,  -344,  -318,   -59,
    1464   -354,  -340,  -324,  -348,   -60,  -350,  -330,  -311,   -61,  -357,
    1465   -336,  -322,  -317,  -310,  -343,  -328,  -316,  -347,  -376,  -376,
    1466   -189,  -184,  -186,  -193,  -190,  -188,  -206,  -194,  -192,  -203,
    1467   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -216,  -376,  -229,
    1468   -376,  -242,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1469   -376,  -376,  -376,  -376,  -376,  -166,  -376,  -181,  -376,  -376,
     1461  -115,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -63,
     1462  -376,  -376,   -62,   -33,  -290,   -34,  -376,  -376,  -357,  -336,
     1463  -322,  -317,  -310,  -343,  -328,  -316,  -334,  -376,  -313,   -54,
     1464  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,  -331,   -57,
     1465  -342,  -337,  -312,   -58,  -353,  -344,  -318,   -59,  -354,  -340,
     1466  -324,  -348,   -60,  -350,  -330,  -311,  -347,   -61,  -376,  -376,
     1467  -171,  -376,  -376,  -155,  -157,  -376,  -376,  -185,  -172,  -170,
     1468  -189,  -186,  -184,  -193,  -190,  -188,  -206,  -194,  -192,  -166,
     1469  -376,  -181,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -203,
     1470  -376,  -216,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -229,
     1471  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -242,  -376,  -376,
    14701472  -376,  -376,  -376,  -376,  -376,  -219,  -207,  -205,  -232,  -220,
    1471   -218,  -233,  -231,  -246,  -244,  -150,  -245,  -376,  -376,  -156,
    1472   -376,  -376,  -171,  -157,  -155,  -151,  -149,  -185,  -172,  -170,
    1473    -29,   -64,   -68,  -376,  -376,   -28,  -258,  -257,  -376,  -376,
     1473  -218,  -233,  -231,  -246,  -244,  -150,  -245,  -151,  -149,  -156,
     1474  -376,   -29,   -68,  -376,   -64,   -28,  -258,  -376,  -376,  -257,
    14741475  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1475   -376,  -308,  -152,  -304,  -303,  -376,  -376,  -376,  -201,  -376,
    1476   -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,  -179,  -376,
    1477   -376,  -376,  -376,  -376,  -376,  -376,  -200,  -213,  -226,  -239,
    1478   -163,  -178,  -202,  -215,  -228,  -241,  -165,  -180,  -376,  -376,
    1479   -376,  -376,  -199,  -212,  -225,  -238,  -162,  -177,   -69,  -376,
    1480   -376,  -376,  -376,  -315,  -314,  -321,  -320,  -327,  -326,  -333,
    1481   -332,  -339,  -338,  -355,  -346,  -345,  -356,  -376,  -341,  -349,
    1482   -352,  -351,  -359,  -358,  -376,  -306,  -195,  -376,  -376,  -376,
     1476  -376,  -303,  -376,  -308,  -152,  -304,  -376,  -376,  -376,  -376,
     1477  -164,  -376,  -179,  -376,  -201,  -376,  -214,  -376,  -227,  -376,
     1478  -240,  -376,  -376,  -376,  -376,  -376,  -163,  -178,  -200,  -213,
     1479  -226,  -239,  -376,  -376,  -165,  -180,  -202,  -215,  -228,  -241,
     1480  -376,  -376,  -162,  -177,  -199,  -212,  -225,  -238,  -376,  -376,
     1481   -69,  -376,  -376,  -359,  -358,  -314,  -315,  -321,  -320,  -327,
     1482  -326,  -333,  -332,  -339,  -338,  -355,  -346,  -345,  -356,  -341,
     1483  -376,  -349,  -352,  -351,  -306,  -376,  -158,  -376,  -173,  -376,
    14831484  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    1484   -208,  -376,  -221,  -376,  -234,  -376,  -158,  -376,  -376,  -173,
    1485   -376,  -376,  -376,  -376,   -44,  -376,   -31,  -310,  -376,   -72,
    1486    -70,   -36,   -37,   -38,   -39,  -372,  -360,   -40,  -376,  -367,
    1487   -363,   -41,  -366,   -42,  -369,  -376,   -35,  -305,   -43,   -53,
    1488   -376,  -376,  -376,  -376,  -309,  -197,  -196,  -376,  -209,  -376,
    1489   -222,  -376,  -235,  -376,  -159,  -376,  -376,  -174,  -210,  -223,
    1490   -236,  -160,  -175,  -376,  -292,  -376,   -66,  -376,   -67,  -305,
    1491   -376,   -52,   -50,  -376,  -376,  -376,   -44,   -71,   -65,  -376,
    1492   -370,  -376,   -49,  -198,  -211,  -224,  -237,  -161,  -176,  -376,
    1493   -295,  -376,  -291,   -45,   -47,  -376,  -365,   -51,  -364,  -376,
    1494   -362,  -361,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,
    1495    -75,  -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,
    1496   -376,  -376,  -376,   -78,  -376,   -76,   -48,  -299,  -300,  -301,
    1497   -302,   -81,   -79 ]
     1485  -376,  -376,  -195,  -376,  -208,  -376,  -221,  -376,  -234,  -376,
     1486  -376,  -376,  -305,   -53,   -44,  -376,  -376,   -31,   -72,  -310,
     1487   -70,   -36,   -37,  -372,   -38,   -39,  -360,   -40,  -376,  -367,
     1488  -363,   -41,  -366,   -42,  -369,  -376,   -35,   -43,  -376,  -376,
     1489  -376,  -376,  -376,  -376,  -309,  -160,  -175,  -159,  -376,  -174,
     1490  -376,  -196,  -376,  -209,  -376,  -222,  -376,  -235,  -376,  -197,
     1491  -210,  -223,  -236,   -66,  -376,   -49,   -67,  -305,   -52,   -50,
     1492  -376,  -376,  -376,  -376,   -44,   -71,   -65,  -376,  -370,  -376,
     1493  -376,  -292,  -376,  -161,  -176,  -198,  -211,  -224,  -237,   -45,
     1494   -47,  -376,   -51,  -365,  -376,  -364,  -362,  -361,  -368,  -371,
     1495   -73,  -376,  -295,  -376,  -291,   -46,  -376,   -75,  -294,  -376,
     1496  -293,   -74,   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,
     1497   -78,  -376,   -48,   -76,  -376,  -376,  -376,   -81,   -79,  -299,
     1498  -300,  -301,  -302 ]
    14981499
    14991500racc_goto_table = [
    1500     91,   124,   156,   157,    48,   110,   202,   127,    42,    56,
    1501    270,   415,   192,    42,   172,   107,   103,   112,   520,    65,
    1502    117,    91,    64,   128,    23,   272,   623,    86,     3,    72,
    1503     67,   116,    62,   614,   392,    93,   528,   623,   106,    59,
    1504     52,   279,   625,   200,    67,   115,   173,   175,    86,   204,
    1505    139,   132,   130,   619,   610,   271,   113,    61,   269,   177,
    1506    219,   220,   189,   222,   223,   205,   458,   226,   227,    75,
    1507    216,   218,   206,   186,   221,   184,   187,   224,   225,   190,
    1508     73,   195,   481,    65,   577,   391,    64,   183,   101,   107,
    1509    208,    22,    13,     2,   135,    70,    53,    31,   180,   194,
    1510    197,   199,   203,   174,   176,   179,   173,   231,   232,   233,
    1511    234,   235,   106,   210,   182,   185,   188,    42,   191,   193,
    1512    196,   198,   251,    26,    19,   159,   137,    11,   252,     5,
    1513    213,   318,   565,   589,     4,   544,   598,   579,   nil,   nil,
    1514    nil,   248,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1515    nil,   nil,   247,   nil,   nil,   nil,   313,   nil,   nil,   nil,
    1516    nil,   nil,   316,   nil,   nil,   nil,   246,   nil,   nil,   nil,
    1517    374,   nil,   376,   nil,   nil,   nil,   nil,   244,   nil,   nil,
    1518    nil,   nil,   nil,   nil,   321,   nil,   335,   nil,   nil,   nil,
    1519    347,   353,   336,   nil,   363,   320,   348,   354,   325,   nil,
    1520    364,   nil,   nil,   nil,   379,   334,   384,   nil,   nil,   346,
    1521    352,   382,   387,   362,   nil,   389,   333,   368,   nil,   372,
    1522    345,   351,   nil,   nil,   361,   365,   nil,   326,   nil,   370,
    1523    332,   nil,   nil,   nil,   344,   350,   323,   nil,   360,   328,
    1524    367,   331,   nil,   nil,   nil,   343,   349,   nil,   nil,   359,
    1525    nil,   nil,   nil,   nil,   nil,   590,   nil,   nil,   nil,   nil,
    1526    414,   519,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1501    96,   111,   160,   161,   116,   177,   412,   123,   273,    48,
     1502    37,   199,   269,   172,   520,    48,    55,   114,    64,    65,
     1503   103,   122,   104,    91,    76,   620,    19,    96,     3,    68,
     1504   392,    63,   528,    59,   113,    97,    68,   620,   107,   611,
     1505   121,    32,   176,   118,   132,   182,   131,   173,   196,   623,
     1506    91,   141,   287,   615,   607,   275,    62,   119,   180,   271,
     1507   460,   218,   193,   220,    81,   222,   206,   224,   191,   226,
     1508   227,   194,   103,   197,   207,   179,   394,    64,    65,    78,
     1509   202,   190,   483,   575,   184,   216,    74,   219,    18,   221,
     1510   107,   223,    10,   225,     2,   136,    70,    53,   187,    33,
     1511   201,   205,   175,   178,   181,   183,   186,   189,   192,   195,
     1512   173,   231,   232,   233,   234,   235,    48,   209,   198,   200,
     1513   204,   174,    27,    20,   163,   137,    13,     6,   248,   318,
     1514   215,   582,   601,     5,   256,   544,   595,   577,   nil,   nil,
     1515   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   254,   nil,
     1516   nil,   nil,   nil,   nil,   282,   nil,   nil,   nil,   nil,   nil,
     1517   nil,   249,   nil,   nil,   nil,   nil,   nil,   252,   nil,   nil,
     1518   nil,   nil,   nil,   384,   nil,   386,   nil,   nil,   nil,   323,
     1519   nil,   nil,   nil,   327,   251,   nil,   332,   285,   nil,   nil,
     1520   343,   nil,   nil,   353,   nil,   361,   348,   369,   nil,   358,
     1521   nil,   366,   nil,   374,   nil,   nil,   nil,   378,   389,   382,
     1522   347,   320,   nil,   357,   329,   365,   nil,   373,   375,   nil,
     1523   nil,   nil,   380,   344,   330,   336,   354,   335,   362,   346,
     1524   370,   nil,   356,   nil,   364,   nil,   372,   nil,   377,   nil,
     1525   333,   nil,   nil,   338,   nil,   nil,   345,   nil,   nil,   355,
     1526   nil,   363,   nil,   371,   nil,   nil,   518,   nil,   nil,   411,
     1527   nil,   nil,   nil,   nil,   nil,   nil,   nil,   602,   nil,   nil,
     1528   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1529   416,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15271530   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15281531   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1529    nil,   nil,   nil,   nil,   nil,   nil,   nil,   448,   nil,   nil,
    1530    nil,   nil,   434,   nil,   nil,   451,   nil,   nil,   nil,   nil,
    1531    478,   432,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1532    nil,   nil,   nil,   430,   nil,   nil,   416,   nil,   nil,   nil,
    1533    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   464,
    1534    nil,   nil,   nil,   nil,   nil,   nil,   466,   nil,   nil,   nil,
    1535    nil,   nil,   nil,   nil,   nil,   483,   nil,   nil,   nil,   nil,
    1536    nil,   nil,   nil,   nil,   475,   nil,   nil,   nil,   496,   nil,
    1537    nil,   nil,   nil,   472,   nil,   nil,   499,   nil,   nil,   nil,
    1538    nil,   nil,   nil,   nil,   nil,   494,   470,   nil,   nil,   nil,
    1539    507,   nil,   nil,   nil,   492,   505,   468,   508,   nil,   nil,
    1540    nil,   nil,   nil,   517,   503,   nil,   490,   nil,   nil,   316,
    1541    nil,   nil,   nil,   487,   nil,   488,   501,   nil,   nil,   nil,
    1542    nil,   nil,   nil,   nil,   nil,   414,   nil,   nil,   nil,   nil,
    1543    nil,   nil,   nil,   nil,   nil,   nil,   nil,   248,   555,   nil,
    1544    nil,   nil,   nil,   516,   nil,   556,   nil,   nil,   nil,   nil,
    1545    nil,   nil,   nil,   nil,   nil,   553,   nil,   582,   nil,   nil,
    1546    nil,   nil,   nil,   nil,   551,   nil,   nil,   nil,   nil,   517,
    1547    nil,   nil,   nil,   nil,   nil,   316,   549,   nil,   nil,   nil,
    1548    nil,   nil,   nil,   nil,   nil,   547,   nil,   nil,   nil,   595,
    1549    567,   nil,   nil,   nil,    42,   nil,   569,   nil,   nil,   572,
    1550    334,   346,   352,   362,   414,   nil,   nil,   nil,   nil,   516,
    1551    nil,   nil,   nil,   nil,   599,   608,   601,   nil,   nil,   nil,
     1532   nil,   479,   nil,   nil,   450,   418,   nil,   nil,   nil,   nil,
     1533   442,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1534   nil,   434,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1535   465,   464,   nil,   nil,   nil,   nil,   432,   nil,   nil,   nil,
     1536   nil,   nil,   477,   nil,   nil,   nil,   nil,   487,   nil,   nil,
     1537   nil,   490,   nil,   nil,   474,   nil,   nil,   nil,   nil,   nil,
     1538   nil,   nil,   nil,   nil,   468,   nil,   nil,   500,   nil,   nil,
     1539   nil,   nil,   472,   nil,   nil,   nil,   nil,   nil,   nil,   498,
     1540   nil,   nil,   489,   nil,   nil,   nil,   492,   509,   470,   519,
     1541   nil,   nil,   nil,   507,   nil,   nil,   496,   nil,   nil,   nil,
     1542   nil,   nil,   nil,   nil,   505,   nil,   nil,   nil,   nil,   nil,
     1543   nil,   494,   nil,   nil,   nil,   411,   256,   565,   nil,   503,
     1544   nil,   548,   285,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1545   517,   nil,   nil,   nil,   nil,   nil,   nil,   558,   nil,   nil,
     1546   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   556,
     1547   nil,   nil,   nil,   nil,   nil,   nil,   550,   nil,   519,   nil,
     1548   nil,   nil,   nil,   nil,   nil,   nil,   554,   nil,   nil,   nil,
     1549   nil,   nil,   591,   nil,   nil,   nil,   348,   358,   366,   374,
     1550   nil,   552,    48,   564,   nil,   nil,   567,   569,   nil,   nil,
     1551   nil,   285,   nil,   nil,   nil,   nil,   605,   nil,   nil,   517,
     1552   nil,   594,   nil,   597,   nil,   nil,   nil,   nil,   nil,   nil,
     1553   411,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15521554   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15531555   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15541556   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1557   nil,   nil,   nil,   nil,   nil,   nil,   nil,   628 ]
     1558
     1559racc_goto_check = [
     1560    56,    81,    34,    22,    83,   104,   115,    88,    24,    23,
     1561    15,    78,    48,   109,    26,    23,    15,    71,    72,    66,
     1562    59,    87,    62,    55,   105,    54,    14,    56,     1,    60,
     1563    51,    69,    50,    58,    82,    23,    60,    54,    23,    53,
     1564    86,    14,    81,    84,    60,    83,    69,    56,    88,    53,
     1565    55,   105,    39,    37,    36,    25,    68,    85,    71,    20,
     1566    52,   109,    87,   109,    18,   109,    74,   109,    75,   109,
     1567   109,    76,    59,    77,    62,    82,    48,    72,    66,    17,
     1568    79,    86,    80,    26,    84,   110,    16,   110,    13,   110,
     1569    23,   110,    12,   110,    11,    10,     9,     8,    85,     7,
     1570    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
     1571    56,    56,    56,    56,    56,    56,    23,    15,   100,   101,
     1572   102,   103,     6,     5,   106,   108,     4,     3,    81,   109,
     1573   112,   113,   114,     2,    88,   116,   127,   129,   nil,   nil,
     1574   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,   nil,
     1575   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,   nil,
     1576   nil,    82,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,
     1577   nil,   nil,   nil,    78,   nil,    78,   nil,   nil,   nil,    81,
     1578   nil,   nil,   nil,    83,    85,   nil,    83,    82,   nil,   nil,
     1579    81,   nil,   nil,    81,   nil,    81,    88,    81,   nil,    88,
     1580   nil,    88,   nil,    88,   nil,   nil,   nil,    88,    81,    88,
     1581    87,    82,   nil,    87,    82,    87,   nil,    87,    87,   nil,
     1582   nil,   nil,    87,    82,    84,    86,    82,    84,    82,    86,
     1583    82,   nil,    86,   nil,    86,   nil,    86,   nil,    86,   nil,
     1584    85,   nil,   nil,    85,   nil,   nil,    85,   nil,   nil,    85,
     1585   nil,    85,   nil,    85,   nil,   nil,    24,   nil,   nil,    81,
     1586   nil,   nil,   nil,   nil,   nil,   nil,   nil,   115,   nil,   nil,
     1587   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1588    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15551589   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    15561590   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1557    632 ]
    1558 
    1559 racc_goto_check = [
    1560     56,    81,    34,    22,    15,    83,   104,    82,    23,    15,
    1561     24,   115,    78,    23,   109,    59,    62,    84,    26,    66,
    1562     88,    56,    72,    71,    14,    48,    54,    55,     1,   105,
    1563     60,    87,    69,    53,    51,    23,    50,    54,    23,    58,
    1564     14,    39,    53,    81,    60,    86,    56,    83,    55,    82,
    1565    105,    60,    69,    37,    36,    25,    85,    68,    20,    84,
    1566    109,   109,    88,   109,   109,    71,    52,   109,   109,    18,
    1567    110,   110,    74,    87,   110,    75,    76,   110,   110,    77,
    1568     17,    79,    80,    66,    26,    48,    72,    86,    16,    59,
    1569     62,    13,    12,    11,    10,     9,     8,     7,    85,    90,
    1570     91,    92,    93,    94,    95,    96,    56,    56,    56,    56,
    1571     56,    56,    23,    15,    97,    98,    99,    23,   100,   101,
    1572    102,   103,    81,     6,     5,   106,   108,     4,    82,     3,
    1573    112,   109,   113,   114,     2,   116,   127,   129,   nil,   nil,
    1574    nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1575    nil,   nil,    87,   nil,   nil,   nil,    81,   nil,   nil,   nil,
    1576    nil,   nil,    82,   nil,   nil,   nil,    86,   nil,   nil,   nil,
    1577     78,   nil,    78,   nil,   nil,   nil,   nil,    85,   nil,   nil,
    1578    nil,   nil,   nil,   nil,    83,   nil,    81,   nil,   nil,   nil,
    1579     81,    81,    82,   nil,    81,    84,    82,    82,    84,   nil,
    1580     82,   nil,   nil,   nil,    81,    88,    81,   nil,   nil,    88,
    1581     88,    82,    83,    88,   nil,    82,    87,    88,   nil,    88,
    1582     87,    87,   nil,   nil,    87,    87,   nil,    86,   nil,    87,
    1583     86,   nil,   nil,   nil,    86,    86,    85,   nil,    86,    85,
    1584     86,    85,   nil,   nil,   nil,    85,    85,   nil,   nil,    85,
    1585    nil,   nil,   nil,   nil,   nil,   115,   nil,   nil,   nil,   nil,
    1586     81,    24,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1587    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1588    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1589    nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
    1590    nil,   nil,    88,   nil,   nil,    82,   nil,   nil,   nil,   nil,
    1591    104,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1592    nil,   nil,   nil,    86,   nil,   nil,    85,   nil,   nil,   nil,
    1593    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    1594    nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,
    1595    nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,   nil,
    1596    nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,    81,   nil,
    1597    nil,   nil,   nil,    87,   nil,   nil,    82,   nil,   nil,   nil,
    1598    nil,   nil,   nil,   nil,   nil,    88,    86,   nil,   nil,   nil,
    1599     81,   nil,   nil,   nil,    87,    88,    85,    82,   nil,   nil,
    1600    nil,   nil,   nil,    81,    87,   nil,    86,   nil,   nil,    82,
    1601    nil,   nil,   nil,    85,   nil,    85,    86,   nil,   nil,   nil,
    1602    nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,
    1603    nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,    81,   nil,
    1604    nil,   nil,   nil,    23,   nil,    82,   nil,   nil,   nil,   nil,
    1605    nil,   nil,   nil,   nil,   nil,    88,   nil,    22,   nil,   nil,
    1606    nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,    81,
    1607    nil,   nil,   nil,   nil,   nil,    82,    86,   nil,   nil,   nil,
    1608    nil,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,    22,
    1609     15,   nil,   nil,   nil,    23,   nil,    23,   nil,   nil,    23,
    1610     88,    88,    88,    88,    81,   nil,   nil,   nil,   nil,    23,
    1611    nil,   nil,   nil,   nil,    81,    34,    81,   nil,   nil,   nil,
     1591   nil,   104,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
     1592    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1593   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1594    81,    83,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,
     1595   nil,   nil,    88,   nil,   nil,   nil,   nil,    81,   nil,   nil,
     1596   nil,    81,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,
     1597   nil,   nil,   nil,   nil,    82,   nil,   nil,    88,   nil,   nil,
     1598   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,    87,
     1599   nil,   nil,    82,   nil,   nil,   nil,    82,    88,    85,    81,
     1600   nil,   nil,   nil,    87,   nil,   nil,    86,   nil,   nil,   nil,
     1601   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
     1602   nil,    85,   nil,   nil,   nil,    81,    88,    22,   nil,    85,
     1603   nil,    81,    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     1604    23,   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,
     1605   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
     1606   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,    81,   nil,
     1607   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,
     1608   nil,   nil,    22,   nil,   nil,   nil,    88,    88,    88,    88,
     1609   nil,    85,    23,    15,   nil,   nil,    23,    23,   nil,   nil,
     1610   nil,    82,   nil,   nil,   nil,   nil,    34,   nil,   nil,    23,
     1611   nil,    81,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,
     1612    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    16121613   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    16131614   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    16141615   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1615    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1616    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1617     56 ]
     1616   nil,   nil,   nil,   nil,   nil,   nil,   nil,    56 ]
    16181617
    16191618racc_goto_pointer = [
    1620    nil,    28,   134,   129,   122,   113,   104,    71,    65,    42,
    1621     24,    93,    86,    77,    10,   -23,    34,    26,    15,   nil,
    1622   -153,   nil,   -80,   -19,  -201,  -156,  -444,   nil,   nil,   nil,
    1623    nil,   nil,   nil,   nil,   -80,   nil,  -550,  -557,   nil,  -174,
    1624    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -186,   nil,
    1625   -426,  -240,  -326,  -576,  -588,   -27,   -54,   nil,     3,   -42,
    1626    -15,   nil,   -41,   nil,   nil,   nil,   -23,   nil,    16,    -9,
    1627    nil,   -37,   -20,   nil,   -34,   -27,   -26,   -23,   -90,   -21,
    1628   -326,   -59,   -53,   -55,   -43,    -4,   -15,   -29,   -40,   nil,
    1629     -3,    -2,    -1,     0,     1,     2,     3,    12,    13,    14,
    1630     16,    17,    18,    19,   -96,   -25,    40,   nil,    55,   -86,
    1631    -74,   nil,   -12,  -379,  -430,  -308,  -349,   nil,   nil,   nil,
    1632    nil,   nil,   nil,   nil,   nil,   nil,   nil,  -437,   nil,  -397 ]
     1619   nil,    28,   133,   127,   120,   110,   102,    72,    64,    43,
     1620    25,    94,    88,    77,    15,   -18,    32,    25,    10,   nil,
     1621  -152,   nil,   -85,   -19,  -203,  -156,  -445,   nil,   nil,   nil,
     1622   nil,   nil,   nil,   nil,   -85,   nil,  -546,  -554,   nil,  -162,
     1623   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -199,   nil,
     1624  -427,  -244,  -332,  -567,  -586,   -31,   -54,   nil,    -9,   -37,
     1625   -23,   nil,   -35,   nil,   nil,   nil,   -29,   nil,     9,   -16,
     1626   nil,   -44,   -30,   nil,   -41,   -34,   -31,   -29,   -91,   -22,
     1627  -328,   -60,   -27,   -57,   -18,    -4,   -21,   -40,   -54,   nil,
     1628    -2,    -1,     0,     1,     2,     3,     4,     5,     6,     7,
     1629    16,    17,    18,    19,   -97,   -30,    34,   nil,    50,   -88,
     1630   -63,   nil,   -17,  -408,  -448,  -313,  -350,   nil,   nil,   nil,
     1631   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -435,   nil,  -397 ]
    16331632
    16341633racc_goto_default = [
    16351634   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    1636    nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    79,
    1637    nil,    83,   nil,   140,   nil,   nil,   nil,   521,   522,   523,
    1638    524,   527,   531,   533,    88,   535,   nil,   nil,   537,   539,
    1639    281,   284,   287,   291,   295,   299,   304,   308,   nil,   275,
    1640    nil,   nil,   nil,   nil,   615,   616,   617,    43,    45,    47,
    1641     50,    35,   nil,   105,    38,    39,    40,    41,   nil,   nil,
    1642     63,   nil,    33,    36,   104,   nil,   nil,   nil,   nil,   nil,
    1643    122,    97,    99,   nil,   nil,   282,   285,   289,   292,   119,
    1644    303,   307,   312,   nil,   nil,   nil,   nil,   nil,   nil,   294,
    1645    298,   302,   306,   310,   314,   nil,    74,    77,    80,    81,
    1646     84,    89,    94,   nil,   nil,   nil,   411,   280,   283,   286,
    1647    290,   293,   297,   301,   305,   309,   526,   530,   532,   nil ]
     1635   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    84,
     1636   nil,    88,   nil,   142,   nil,   nil,   nil,   521,   522,   524,
     1637   525,   527,   531,   533,    93,   535,   nil,   nil,   512,   513,
     1638   289,   292,   295,   299,   303,   307,   312,   317,   nil,   270,
     1639   nil,   nil,   nil,   nil,   612,   613,   614,    50,    52,    36,
     1640    38,    41,   nil,   106,    43,    44,    45,    47,   nil,   nil,
     1641    60,   nil,    40,    42,   105,   nil,   nil,   nil,   nil,   nil,
     1642   129,    71,    72,   nil,   nil,   290,   293,   297,   300,   125,
     1643   311,   315,   281,   nil,   nil,   nil,   nil,   nil,   nil,   302,
     1644   306,   310,   314,   279,   283,   nil,    79,    82,    85,    86,
     1645    89,    94,    98,   nil,   nil,   nil,   413,   288,   291,   294,
     1646   298,   301,   305,   309,   313,   278,   526,   530,   532,   nil ]
    16481647
    16491648racc_token_table = {
     
    17061705 :SYM_LIST_CONTINUE => 56,
    17071706 :V_INTEGER => 57,
    1708  :SYM_INTERVAL_DELIM => 58,
    1709  :SYM_ELLIPSIS => 59,
    1710  :V_REAL => 60,
    1711  :SYM_TRUE => 61,
    1712  :SYM_FALSE => 62,
    1713  :V_CHARACTER => 63,
    1714  :V_ISO8601_EXTENDED_DATE => 64,
    1715  :V_ISO8601_EXTENDED_TIME => 65,
    1716  :V_ISO8601_EXTENDED_DATE_TIME => 66,
    1717  :V_ISO8601_DURATION => 67,
    1718  :V_QUALIFIED_TERM_CODE_REF => 68,
    1719  :V_URI => 69,
    1720  :SYM_EXISTS => 70,
    1721  :SYM_NOT => 71,
    1722  "=" => 72,
    1723  :SYM_AND => 73,
    1724  :SYM_OR => 74,
    1725  :SYM_XOR => 75,
    1726  :SYM_IMPLIES => 76,
    1727  :Slash_code => 77,
    1728  "^" => 78,
    1729  :SYM_EXISTENCE => 79,
    1730  :SYM_CARDINALITY => 80,
    1731  :Semicolon_code => 81,
    1732  :SYM_ORDERED => 82,
    1733  :SYM_UNORDERED => 83,
    1734  :SYM_UNIQUE => 84,
    1735  :SYM_OCCURRENCES => 85,
    1736  :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86,
    1737  :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87,
    1738  :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88,
    1739  :START_TERM_CODE_CONSTRAINT => 89,
    1740  :END_TERM_CODE_CONSTRAINT => 90,
    1741  :TERM_CODE => 91,
    1742  :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 }
     1707 :Plus_code => 58,
     1708 :Minus_code => 59,
     1709 :SYM_INTERVAL_DELIM => 60,
     1710 :SYM_ELLIPSIS => 61,
     1711 :V_REAL => 62,
     1712 :SYM_TRUE => 63,
     1713 :SYM_FALSE => 64,
     1714 :V_CHARACTER => 65,
     1715 :V_ISO8601_EXTENDED_DATE => 66,
     1716 :V_ISO8601_EXTENDED_TIME => 67,
     1717 :V_ISO8601_EXTENDED_DATE_TIME => 68,
     1718 :V_ISO8601_DURATION => 69,
     1719 :V_QUALIFIED_TERM_CODE_REF => 70,
     1720 :V_URI => 71,
     1721 :SYM_EXISTS => 72,
     1722 :SYM_NOT => 73,
     1723 "=" => 74,
     1724 :SYM_AND => 75,
     1725 :SYM_OR => 76,
     1726 :SYM_XOR => 77,
     1727 :SYM_IMPLIES => 78,
     1728 :Slash_code => 79,
     1729 "^" => 80,
     1730 :SYM_EXISTENCE => 81,
     1731 :SYM_CARDINALITY => 82,
     1732 :Semicolon_code => 83,
     1733 :SYM_ORDERED => 84,
     1734 :SYM_UNORDERED => 85,
     1735 :SYM_UNIQUE => 86,
     1736 :SYM_OCCURRENCES => 87,
     1737 :V_ISO8601_DATE_CONSTRAINT_PATTERN => 88,
     1738 :V_ISO8601_TIME_CONSTRAINT_PATTERN => 89,
     1739 :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 90,
     1740 :START_TERM_CODE_CONSTRAINT => 91,
     1741 :END_TERM_CODE_CONSTRAINT => 92,
     1742 :TERM_CODE => 93,
     1743 :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 94 }
    17431744
    17441745racc_use_result_var = true
    17451746
    1746 racc_nt_base = 93
     1747racc_nt_base = 95
    17471748
    17481749Racc_arg = [
     
    18211822'SYM_LIST_CONTINUE',
    18221823'V_INTEGER',
     1824'Plus_code',
     1825'Minus_code',
    18231826'SYM_INTERVAL_DELIM',
    18241827'SYM_ELLIPSIS',
     
    21942197 # reduce 93 omitted
    21952198
    2196  # reduce 94 omitted
     2199module_eval <<'.,.,', 'lib/parser.y', 233
     2200  def _reduce_94( val, _values, result )
     2201    @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
     2202   result
     2203  end
     2204.,.,
    21972205
    21982206 # reduce 95 omitted
     
    23022310 # reduce 147 omitted
    23032311
    2304  # reduce 148 omitted
     2312module_eval <<'.,.,', 'lib/parser.y', 302
     2313  def _reduce_148( val, _values, result )
     2314    @@log.info("V_STRING: #{val[0]} at #{@filename}")
     2315   result
     2316  end
     2317.,.,
    23052318
    23062319 # reduce 149 omitted
  • ruby/trunk/adl_parser/lib/parser.y

    r17 r18  
    229229
    230230attr_id: V_ATTRIBUTE_IDENTIFIER
     231  {
     232    @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
     233  }
    231234  | V_ATTRIBUTE_IDENTIFIER error
    232235
     
    295298
    296299string_value: V_STRING
     300  {
     301    @@log.info("V_STRING: #{val[0]} at #{@filename}")
     302  }
    297303
    298304string_list_value: V_STRING Comma_code V_STRING
     
    301307
    302308integer_value: V_INTEGER
    303   | '+' V_INTEGER
    304   | '-' V_INTEGER
     309  | Plus_code V_INTEGER
     310  | Minus_code V_INTEGER
     311###   | '+' V_INTEGER
     312###   | '-' V_INTEGER
    305313
    306314integer_list_value: integer_value Comma_code integer_value
     
    319327
    320328real_value: V_REAL
    321   | '+' V_REAL
    322   | '-' V_REAL
     329  | Plus_code V_REAL
     330  | Minus_code V_REAL
     331#  | '+' V_REAL
     332#  | '-' V_REAL
    323333
    324334real_list_value: real_value Comma_code real_value
     
    643653---- inner
    644654
    645 @@log = Logger.new('log/parser.log')
     655@@log = Logger.new('log/parser.log','daily')
    646656@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
    647657
     
    760770        word = $&
    761771        if @@adl_reserved[word]
     772          @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
    762773          yield @@adl_reserved[word], @@adl_reserved[word]
    763774        elsif #/\A[A-Z][a-zA-Z0-9_]*/
     
    840851        else
    841852          @in_interval = true
    842           @start_block_received = false
     853#          @start_block_received = false
    843854        end
    844855        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    10071018        else
    10081019          @in_interval = false
     1020#          @in_interval = true
    10091021        end
    10101022        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    11371149          @adl_type.push(:dadl)
    11381150          yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
    1139 #         else
    1140 #           @in_interval = false
    11411151        end
    11421152      when /\A\>/   # >
     
    12001210        else
    12011211          @in_interval = false
     1212#          @in_interval = true
    12021213        end
    12031214        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     
    12061217###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    12071218###         yield :V_LOCAL_TERM_CODE_REF, $&
    1208       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    1209         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
     1219###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
     1220###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    12101221      when /\A\[/   # [
    12111222        yield :Left_bracket_code, :Left_bracket_code
    12121223      when /\A\]/   # ]
    12131224        yield :Right_bracket_code, :Right_bracket_code
    1214       when /\A[A-Z][a-zA-Z0-9_-]*/
    1215         yield :V_TYPE_IDENTIFIER, $&
    1216       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    1217         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    1218       when /\A[a-z][a-zA-Z0-9_]*/
    1219         word = $&.downcase
    1220         if @@dadl_reserved[word]
    1221           yield @@dadl_reserved[word], @@dadl_reserved[word]
    1222         else
    1223           yield :V_ATTRIBUTE_IDENTIFIER, $&
    1224         end
    1225       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    1226         yield :V_LOCAL_CODE, $&
     1225###       when /\A[A-Z][a-zA-Z0-9_-]*/
     1226###         yield :V_TYPE_IDENTIFIER, $&
     1227###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
     1228###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
     1229###       when /\A[a-z][a-zA-Z0-9_]*/
     1230###         word = $&.downcase
     1231###         if @@dadl_reserved[word]
     1232###           yield @@dadl_reserved[word], @@dadl_reserved[word]
     1233###         else
     1234###           yield :V_ATTRIBUTE_IDENTIFIER, $&
     1235###         end
     1236###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
     1237###         yield :V_LOCAL_CODE, $&
    12271238      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
    12281239        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
     
    12351246      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
    12361247        yield :V_INTEGER, $&
    1237       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    1238         yield :V_REAL, $&
     1248###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
     1249###         yield :V_REAL, $&
    12391250        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    1240       when /\A"([^"]*)"/m #V_STRING
    1241         yield :V_STRING, $1
     1251###       when /\A"([^"]*)"/m #V_STRING
     1252###         yield :V_STRING, $1
    12421253      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    12431254        yield :V_URI, $&
  • ruby/trunk/adl_parser/lib/scanner.rb

    r17 r18  
    1010      module DADL
    1111        # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/adl/parser/adl_scanner.l
    12         @@dadl_reserved = {
     12        RESERVED = {
    1313          'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE
    1414          'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE
     
    1616        }
    1717
    18         LOG = Logger.new('log/scanner.log')
     18        LOG = Logger.new('log/scanner.log','daily')
    1919
    2020        class RootScanner
     
    2222          def initialize
    2323            @parser = lambda do |input|
    24               Yaparc::Alt.new(
     24              Yaparc::Alt.new(Reserved.new,
    2525                              V_QUALIFIED_TERM_CODE_REF.new,
    26                               V_LOCAL_TERM_CODE_REF.new
     26                              V_LOCAL_TERM_CODE_REF.new,
     27                              ERR_V_QUALIFIED_TERM_CODE_REF.new,
     28                              V_TYPE_IDENTIFIER.new,
     29                              V_GENERIC_TYPE_IDENTIFIER.new,
     30                              V_STRING.new,
     31                              V_LOCAL_CODE.new,
     32                              V_REAL.new
    2733                              )
     34            end
     35          end
     36        end
     37
     38        class Reserved
     39          include Yaparc::Parsable
     40         
     41          def initialize
     42            @parser = lambda do |input|
     43              reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword|
     44                Yaparc::Tokenize.new(Yaparc::Literal.new(keyword))
     45              end
     46              Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
     47                                LOG.info("Reserved: #{match}")
     48                                [OpenEHR::ADL::Scanner::DADL::RESERVED[match], OpenEHR::ADL::Scanner::DADL::RESERVED[match]]
     49                              end,
     50                              Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
     51                                LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
     52                                [:V_ATTRIBUTE_IDENTIFIER, match]
     53                              end)
    2854            end
    2955          end
     
    5379          end
    5480        end
     81
     82        class ERR_V_QUALIFIED_TERM_CODE_REF
     83          include Yaparc::Parsable
     84          def initialize
     85            @parser = lambda do |input|
     86              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/)) do |match|
     87                LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
     88                [:ERR_V_QUALIFIED_TERM_CODE_REF, match]
     89              end
     90            end
     91          end
     92        end
     93
     94        class V_TYPE_IDENTIFIER
     95          include Yaparc::Parsable
     96          def initialize
     97            @parser = lambda do |input|
     98              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*/)) do |match|
     99                LOG.info("V_TYPE_IDENTIFIER: #{match}")
     100                [:V_TYPE_IDENTIFIER, match]
     101              end
     102            end
     103          end
     104        end
     105
     106        class V_GENERIC_TYPE_IDENTIFIER
     107          include Yaparc::Parsable
     108          def initialize
     109            @parser = lambda do |input|
     110              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/)) do |match|
     111                LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
     112                [:V_GENERIC_TYPE_IDENTIFIER, match]
     113              end
     114            end
     115          end
     116        end
     117
     118
     119        class V_LOCAL_CODE
     120          include Yaparc::Parsable
     121          def initialize
     122            @parser = lambda do |input|
     123              Yaparc::Apply.new(Yaparc::Regex.new(/\Aa[ct][0-9.]+/)) do |match|
     124                LOG.info("V_LOCAL_CODE: #{match}")
     125                [:V_LOCAL_CODE, match]
     126              end
     127            end
     128          end
     129        end
     130
     131        class V_STRING
     132          include Yaparc::Parsable
     133          def initialize
     134            @parser = lambda do |input|
     135              Yaparc::Apply.new(Yaparc::Regex.new(/\A"([^"]*)"/m)) do |match|
     136                LOG.info("V_STRING: #{match}")
     137                [:V_STRING, match]
     138              end
     139            end
     140          end
     141        end
     142
     143        class V_REAL
     144          include Yaparc::Parsable
     145          def initialize
     146            @parser = lambda do |input|
     147              Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+/)) do |match|
     148                LOG.info("V_REAL: #{match}")
     149                [:V_REAL, match]
     150              end
     151            end
     152          end
     153        end
     154
    55155      end # of DADL
     156
    56157      module CADL
    57158        # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/cadl/parser/cadl_scanner.l
  • ruby/trunk/adl_parser/tests/openEHR-EHR-OBSERVATION.apgar.v1.adl

    r16 r18  
    55    [at0000]    -- Apgar score
    66language
    7 --    original_language = <[ISO_639-1::en]>
    8     original_language = <[ISO_639::en]>
     7    original_language = <[ISO_639-1::en]>
    98    translations = <
    109        ["de"] = <
    11 --            language = <[ISO_639-1::de]>
    12             language = <[ISO_639::de]>
     10            language = <[ISO_639-1::de]>
    1311            author = <
    1412                ["name"] = <"Jasmin Buck, Sebastian Garde">
     
    1715        >
    1816        ["en-us"] = <
    19 --            language = <[ISO_639-1::en-us]>
    20             language = <[ISO_639::en-us]>
     17            language = <[ISO_639-1::en-us]>
    2118            author = <
    2219                ["name"] = <"????">
  • ruby/trunk/adl_parser/tests/parser_test.rb

    r17 r18  
    9696      @parser.parse(imaging, 'openEHR-EHR-ACTION.imaging.v1.adl')
    9797    end
    98 #     apgar = File.read('tests/openEHR-EHR-OBSERVATION.apgar.v1.adl')
    99 # #    assert_nothing_raised do
    100 #       result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
    101 #       assert_equal "", result
    102 # #    end
     98     laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     99     assert_nothing_raised do
     100       @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     101     end
     102     apgar = File.read('tests/openEHR-EHR-OBSERVATION.apgar.v1.adl')
     103     assert_nothing_raised do
     104       result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
     105       assert_equal "", result
     106     end
    103107#     evaluation = File.read('tests/openEHR-EHR-EVALUATION.adverse.v1.adl')
    104108#     assert_nothing_raised do
    105109#       @parser.parse(evaluation, 'openEHR-EHR-EVALUATION.adverse.v1.adl')
    106110#     end
    107 #     encounter = File.read('tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
    108 #     assert_nothing_raised do
    109 #       @parser.parse(encounter, 'openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
    110 #     end
    111 #       medication = File.read('tests/openEHR-EHR-ITEM_TREE.medication.v1.adl')
     111     encounter = File.read('tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
     112     assert_nothing_raised do
     113       @parser.parse(encounter, 'openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
     114     end
     115#      medication = File.read('tests/openEHR-EHR-ITEM_TREE.medication.v1.adl')
     116#      assert_nothing_raised do
     117#        @parser.parse(medication, 'openEHR-EHR-ITEM_TREE.medication.v1.adl')
     118#      end
     119#       referral = File.read('tests/openEHR-EHR-ITEM_TREE.referral.v1.adl')
    112120#       assert_nothing_raised do
    113 #         @parser.parse(medication, 'openEHR-EHR-ITEM_TREE.medication.v1.adl')
     121#         @parser.parse(referral, 'openEHR-EHR-ITEM_TREE.referral.v1.adl')
    114122#       end
    115 #      referral = File.read('tests/openEHR-EHR-ITEM_TREE.referral.v1.adl')
    116 #      assert_nothing_raised do
    117 #        @parser.parse(referral, 'openEHR-EHR-ITEM_TREE.referral.v1.adl')
    118 #      end
    119      laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     123      exam_fetus = File.read('tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
     124      assert_nothing_raised do
     125        @parser.parse(exam_fetus, 'openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
     126      end
     127     exam_uterine_cervix = File.read('tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
    120128     assert_nothing_raised do
    121        @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     129       @parser.parse(exam_uterine_cervix, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
    122130     end
    123 #      exam_fetus = File.read('tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
    124 #      assert_nothing_raised do
    125 #        @parser.parse(exam_fetus, 'openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
    126 #      end
    127 #      exam_uterine_cervix = File.read('tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
    128 #      assert_nothing_raised do
    129 #        @parser.parse(exam_uterine_cervix, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
    130 #      end
    131131
    132132  end
  • ruby/trunk/adl_parser/tests/scanner_test.rb

    r17 r18  
    1212    parser = OpenEHR::ADL::Scanner::DADL::V_LOCAL_TERM_CODE_REF.new
    1313    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_LOCAL_TERM_CODE_REF,parser
    14     result = parser.parse('')
     14    result = parser.parse('[en-us]')
     15    assert_instance_of Yaparc::Result::OK, result
     16  end
     17
     18  def test_V_QUALIFIED_TERM_CODE_REF
     19    parser = OpenEHR::ADL::Scanner::DADL::V_QUALIFIED_TERM_CODE_REF.new
     20    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_QUALIFIED_TERM_CODE_REF,parser
     21    result = parser.parse('[ISO_639::en]')
     22    assert_instance_of Yaparc::Result::OK, result
     23    result = parser.parse('[ISO_639::en-us]')
     24    assert_instance_of Yaparc::Result::OK, result
     25  end
     26
     27  def test_V_STRING
     28    parser = OpenEHR::ADL::Scanner::DADL::V_STRING.new
     29    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_STRING,parser
     30    result = parser.parse('"this is a string"')
     31    assert_instance_of Yaparc::Result::OK, result
     32    result = parser.parse('"en-us"')
     33    assert_instance_of Yaparc::Result::OK, result
     34  end
     35
     36  def test_V_REAL
     37    parser = OpenEHR::ADL::Scanner::DADL::V_REAL.new
     38    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_REAL,parser
     39    result = parser.parse('0.1')
     40    assert_instance_of Yaparc::Result::OK, result
     41    result = parser.parse('0.0..20000.0')
     42    assert_instance_of Yaparc::Result::OK, result
     43    assert_equal [:V_REAL, "0.0"], result.value
     44    assert_equal "..20000.0", result.input
     45
    1546  end
    1647end
Note: See TracChangeset for help on using the changeset viewer.