Changeset 307


Ignore:
Timestamp:
Sep 27, 2009, 9:24:19 PM (15 years ago)
Author:
Tatsukawa, Akimichi
Message:

ADL parser is roughly coupled with open_ehr model classes

Location:
ruby/trunk/lib/adl_parser
Files:
2 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/adl_parser/Rakefile

    r283 r307  
    8989  s.extra_rdoc_files = ["README"]
    9090#  s.add_dependency("yaparc", ">= 0.2.3")
    91   s.add_dependency("openehr_models", ">= 0.0.3")
     91#  s.add_dependency("openehr_models", ">= 0.0.3")
     92  s.add_dependency("open_ehr", ">= 0.0.1")
    9293end
    9394
  • ruby/trunk/lib/adl_parser/lib/adl_exception.rb

    r283 r307  
    1 module OpenEHR
     1module OpenEhr
    22  module ADL
    33    module Exception
  • ruby/trunk/lib/adl_parser/lib/adl_parser.rb

    r291 r307  
    1010require 'adl_scanner.rb'
    1111require 'adl_exception.rb'
     12require 'parser.rb'
    1213
    1314module OpenEhr
  • ruby/trunk/lib/adl_parser/lib/adl_scanner.rb

    r291 r307  
    11require 'rubygems'
    2 require 'yaparc'
    32require 'logger'
    43require 'adl_parser.rb'
    5 require 'am.rb'
    6 require 'rm.rb'
     4require 'open_ehr'
     5#require 'am.rb'
     6#require 'rm.rb'
    77require 'util.rb'
    88
    99
    10 module OpenEHR
     10module OpenEhr
    1111  module ADL
    1212    module Scanner
    1313      LOGGER = Logger.new('log/scanner.log')
    14       LOGGER.level = Logger::WARN
     14      LOGGER.level = Logger::DEBUG
    1515
    1616      class Base
     
    3333        attr_accessor :adl_type, :lineno, :cadl_scanner, :dadl_scanner, :regex_scanner, :term_constraint_scanner
    3434
    35         @@logger = OpenEHR::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
     35        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
    3636        RESERVED = {
    3737          'archetype' => :SYM_ARCHETYPE,
     
    8585              when /\A(\w+)-(\w+)-(\w+)\.(\w+)((?:-\w+)*)\.(v\w+)/   #V_ARCHETYPE_ID
    8686                object_id, rm_originator, rm_name, rm_entity, concept_name, specialisation, version_id = $&, $1, $2, $3, $4, $5, $6
    87                 archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new(object_id, concept_name, rm_name, rm_entity, rm_originator, specialisation, version_id)
     87                #archetype_id = OpenEhr::RM::Support::Identification::ArchetypeID.new(object_id, concept_name, rm_name, rm_entity, rm_originator, specialisation, version_id)
     88                archetype_id = OpenEhr::RM::Support::Identification::ArchetypeID.new(:concept_name => concept_name, :rm_name => rm_name, :rm_entity => rm_entity, :rm_originator => :rm_originator, :specialisation => specialisation, :version_id => version_id)
    8889                yield :V_ARCHETYPE_ID, archetype_id
    8990              when /\A[a-z][a-zA-Z0-9_]*/
     
    173174              when /\A\[([a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+)\]/ #V_QUALIFIED_TERM_CODE_REF form such as [ICD10AM(1998)::F23]
    174175                yield :V_QUALIFIED_TERM_CODE_REF, $1
    175               when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    176                 yield :V_LOCAL_TERM_CODE_REF, $&
     176              when /\A\[([a-zA-Z0-9][a-zA-Z0-9._\-]*)\]/   #V_LOCAL_TERM_CODE_REF
     177                yield :V_LOCAL_TERM_CODE_REF, $1
    177178              when /\A\[/   # [
    178179                yield :Left_bracket_code, :Left_bracket_code
     
    208209              data = $' # variable $' receives the string after the match
    209210            when :dadl
    210               dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
     211              dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
    211212              data = dadl_scanner.scan(data) do |sym, val|
    212213                yield sym, val
    213214              end
    214215            when :cadl
    215               cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
     216              cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
    216217              data = cadl_scanner.scan(data) do |sym, val|
    217218                yield sym, val
    218219              end
    219220            when :regexp
    220               regex_scanner = OpenEHR::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
     221              regex_scanner = OpenEhr::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
    221222              data = regex_scanner.scan(data) do |sym, val|
    222223                yield sym, val
    223224              end
    224225            when :term_constraint
    225               term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
     226              term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    226227              data = term_constraint_scanner.scan(data) do |sym, val|
    227228                yield sym, val
     
    238239      #
    239240      class DADLScanner < Base
    240         @@logger = OpenEHR::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
     241        attr_accessor :in_interval, :in_c_domain_type, :in_dblock
     242        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
    241243        RESERVED = {
    242244          'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE
     
    249251          @in_interval = false
    250252          @in_c_domain_type = false
     253          @in_dblock = true
    251254        end
    252255
     
    258261          until data.nil?  do
    259262            @@logger.debug("#{@filename}:#{@lineno}: DADLScanner#scan:loop data = #{data.inspect}")
     263            @@logger.debug("#{@filename}:#{@lineno}: DADLScanner#scan:loop self = \n#{self.to_yaml}")
    260264            case @adl_type.last
    261265            when :dadl
     
    297301                if @in_interval
    298302                  yield :SYM_GT, :SYM_GT
     303#                 elsif @in_dblock == true
     304#                   @in_dblock = false
     305#                   yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    299306                elsif @in_c_domain_type == true
    300307                  assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
    301308                  adl_type = @adl_type.pop
    302                   if @adl_type.last == :cadl
     309                  if adl_type == :dadl
    303310                    @in_c_domain_type = false
    304                     yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
     311                    yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK
     312#                    yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    305313                  else
    306                     yield :SYM_END_DBLOCK, $&
     314                    yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    307315                  end
    308316                elsif @in_c_domain_type == false
     
    392400              data = $' # variable $' receives the string after the match
    393401            when :adl
    394               adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
     402              adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
    395403              data = adl_scanner.scan(data) do |sym, val|
    396404                yield sym, val
    397405              end
    398406            when :cadl
    399               cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
     407              cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
    400408              data = cadl_scanner.scan(data) do |sym, val|
    401409                yield sym, val
    402410              end
    403411            when :regexp
    404               regex_scanner = OpenEHR::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
     412              regex_scanner = OpenEhr::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
    405413              data = regex_scanner.scan(data) do |sym, val|
    406414                yield sym, val
     
    408416            when :term_constraint
    409417              @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    410               term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
     418              term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    411419              data = term_constraint_scanner.scan(data) do |sym, val|
    412420                yield sym, val
     
    423431      class CADLScanner < Base
    424432
    425         @@logger = OpenEHR::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
     433        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
    426434        RESERVED = {
    427435          'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
     
    568576                @adl_type.push(:term_constraint)
    569577                yield :START_TERM_CODE_CONSTRAINT, $1
    570               when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    571                 yield :V_LOCAL_TERM_CODE_REF, $&
     578              when /\A\[([a-zA-Z0-9][a-zA-Z0-9._\-]*)\]/   #V_LOCAL_TERM_CODE_REF
     579                yield :V_LOCAL_TERM_CODE_REF, $1
    572580              when /\A\[/   # [
    573581                yield :Left_bracket_code, :Left_bracket_code
     
    595603                  yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
    596604                end
     605              when /\A([A-Z][a-zA-Z0-9_]*)[ \n]*\</ # V_C_DOMAIN_TYPE
     606                @in_c_domain_type = true
     607                @adl_type.push(:dadl)
     608                yield  :START_V_C_DOMAIN_TYPE_BLOCK, $1
    597609              when /\A[A-Z][a-zA-Z0-9_]*/
    598610                word = $&.dup
     
    624636                yield :UTF8CHAR, $&
    625637              when /\A.+/ #
    626                 raise OpenEHR::ADL::Exception::CADLScanner::Base.new, "can't handle #{data.inspect}"
     638                raise OpenEhr::ADL::Exception::CADLScanner::Base.new, "can't handle #{data.inspect}"
    627639              end
    628640              data = $' # variable $' receives the string after the match
    629641            when :adl
    630               adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
     642              adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
    631643              data = adl_scanner.scan(data) do |sym, val|
    632644                yield sym, val
    633645              end
    634646            when :dadl
    635               dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
     647              dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
     648              dadl_scanner.in_c_domain_type = @in_c_domain_type
    636649              data = dadl_scanner.scan(data) do |sym, val|
    637650                yield sym, val
    638651              end
    639652            when :regexp
    640               regex_scanner = OpenEHR::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
     653              regex_scanner = OpenEhr::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
    641654              data = regex_scanner.scan(data) do |sym, val|
    642655                yield sym, val
     
    644657            when :term_constraint
    645658              @@logger.debug("Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    646               term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
     659              term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    647660              data = term_constraint_scanner.scan(data) do |sym, val|
    648661                yield sym, val
    649662              end
    650663            else
    651               raise OpenEHR::ADL::Exception::CADLScanner.new, "unexpected adl_type: #{@adl_type.last}"
     664              raise OpenEhr::ADL::Exception::CADLScanner.new, "unexpected adl_type: #{@adl_type.last}"
    652665            end
    653666          end # of until
     
    661674      class RegexScanner < Base
    662675
    663         @@logger = OpenEHR::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
     676        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
    664677       
    665678        def initialize(adl_type, filename, lineno = 1)
     
    695708              data = $' # variable $' receives the string after the match
    696709            when :adl
    697               adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
     710              adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
    698711              data = adl_scanner.scan(data) do |sym, val|
    699712                yield sym, val
    700713              end
    701714            when :dadl
    702               dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
     715              dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
    703716              data = dadl_scanner.scan(data) do |sym, val|
    704717                yield sym, val
    705718              end
    706719            when :cadl
    707               cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
     720              cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
    708721              data = cadl_scanner.scan(data) do |sym, val|
    709722                yield sym, val
     
    711724            when :term_constraint
    712725              #@@logger.debug("#{__FILE__}:#{__LINE__}: scan_regexp: Entering scan_term_constraint at #{@filename}:#{@lineno}")
    713               term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
     726              term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    714727              data = term_constraint_scanner.scan(data) do |sym, val|
    715728                yield sym, val
     
    726739      #
    727740      class TermConstraintScanner < Base
    728         @@logger = OpenEHR::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
     741        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
    729742        def initialize(adl_type, filename, lineno = 1)
    730743          super(adl_type, filename, lineno)
     
    759772              data = $' # variable $' receives the string after the match
    760773            when :adl
    761               adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
     774              adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
    762775              data = adl_scanner.scan(data) do |sym, val|
    763776                yield sym, val
    764777              end
    765778            when :dadl
    766               dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
     779              dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
    767780              data = dadl_scanner.scan(data) do |sym, val|
    768781                yield sym, val
    769782              end
    770783            when :cadl
    771               cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
     784              cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
    772785              data = cadl_scanner.scan(data) do |sym, val|
    773786                yield sym, val
     
    794807#             @parser = lambda do |input|
    795808#               Yaparc::Apply.new(Yaparc::Regex.new(/[ \t\n]*\[([a-zA-Z0-9\(\)\._\-]+)::[ \t\n]*/)) do |match|
    796 #                 OpenEHR::LOG.info("START_TERM_CODE_CONSTRAINT: #{match}")
     809#                 OpenEhr::LOG.info("START_TERM_CODE_CONSTRAINT: #{match}")
    797810#                 [:START_TERM_CODE_CONSTRAINT, match]
    798811#               end
     
    807820#             @parser = lambda do |input|
    808821#               Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/)) do |match|
    809 #                 OpenEHR::LOG.info("V_QUALIFIED_TERM_CODE_REF: #{match}")
     822#                 OpenEhr::LOG.info("V_QUALIFIED_TERM_CODE_REF: #{match}")
    810823#                 [:V_QUALIFIED_TERM_CODE_REF, match]
    811824#               end
     
    819832#             @parser = lambda do |input|
    820833#               Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/)) do |match|
    821 #                 OpenEHR::LOG.info("V_TERM_CODE_REF: #{match}")
     834#                 OpenEhr::LOG.info("V_TERM_CODE_REF: #{match}")
    822835#                 [:V_LOCAL_TERM_CODE_REF, match]
    823836#               end
     
    831844#             @parser = lambda do |input|
    832845#               Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/)) do |match|
    833 #                 OpenEHR::LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
     846#                 OpenEhr::LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
    834847#                 [:ERR_V_QUALIFIED_TERM_CODE_REF, match]
    835848#               end
     
    843856#             @parser = lambda do |input|
    844857#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*/)) do |match|
    845 #                 OpenEHR::LOG.info("V_TYPE_IDENTIFIER: #{match}")
     858#                 OpenEhr::LOG.info("V_TYPE_IDENTIFIER: #{match}")
    846859#                 [:V_TYPE_IDENTIFIER, match]
    847860#               end
     
    855868#             @parser = lambda do |input|
    856869#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/)) do |match|
    857 #                 OpenEHR::LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
     870#                 OpenEhr::LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
    858871#                 [:V_GENERIC_TYPE_IDENTIFIER, match]
    859872#               end
     
    868881#             @parser = lambda do |input|
    869882#               Yaparc::Apply.new(Yaparc::Regex.new(/\Aa[ct][0-9.]+/)) do |match|
    870 #                 OpenEHR::LOG.info("V_LOCAL_CODE: #{match}")
     883#                 OpenEhr::LOG.info("V_LOCAL_CODE: #{match}")
    871884#                 [:V_LOCAL_CODE, match]
    872885#               end
     
    880893#             @parser = lambda do |input|
    881894#               Yaparc::Apply.new(Yaparc::Regex.new(/\A"([^"]*)"/m)) do |match|
    882 #                 OpenEHR::LOG.info("V_STRING: #{match}")
     895#                 OpenEhr::LOG.info("V_STRING: #{match}")
    883896#                 [:V_STRING, match]
    884897#               end
     
    892905#             @parser = lambda do |input|
    893906#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+/)) do |match|
    894 #                 OpenEHR::LOG.info("V_REAL: #{match}")
     907#                 OpenEhr::LOG.info("V_REAL: #{match}")
    895908#                 [:V_REAL, match]
    896909#               end
     
    907920#                                 Yaparc::Alt.new(Yaparc::Regex.new(/\AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?T([0-9]+|[hH])?([0-9]+|[mM])?([0-9]+|[sS])?/),
    908921#                                                 Yaparc::Regex.new(/\AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?/))) do |match|
    909 #                 OpenEHR::LOG.info("V_ISO8601_DURATION: #{match}")
     922#                 OpenEhr::LOG.info("V_ISO8601_DURATION: #{match}")
    910923#                 [:V_ISO8601_DURATION, match]
    911924#               end
     
    931944#             @parser = lambda do |input|
    932945#               Yaparc::Alt.new(Reserved.new,
    933 #                               OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
    934 #                               OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
    935 #                               OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
    936 #                               OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
    937 #                               OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
    938 #                               OpenEHR::ADL::Scanner::Common::V_STRING.new,
    939 #                               OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
    940 #                               OpenEHR::ADL::Scanner::Common::V_REAL.new,
    941 #                               OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new#,
    942 #                               #OpenEHR::ADL::Scanner::Common::START_TERM_CODE_CONSTRAINT.new
     946#                               OpenEhr::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
     947#                               OpenEhr::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
     948#                               OpenEhr::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
     949#                               OpenEhr::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
     950#                               OpenEhr::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
     951#                               OpenEhr::ADL::Scanner::Common::V_STRING.new,
     952#                               OpenEhr::ADL::Scanner::Common::V_LOCAL_CODE.new,
     953#                               OpenEhr::ADL::Scanner::Common::V_REAL.new,
     954#                               OpenEhr::ADL::Scanner::Common::V_ISO8601_DURATION.new#,
     955#                               #OpenEhr::ADL::Scanner::Common::START_TERM_CODE_CONSTRAINT.new
    943956#                               )
    944957#             end
     
    952965#           def initialize
    953966#             @parser = lambda do |input|
    954 #               reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword|
     967#               reserved_parsers = OpenEhr::ADL::Scanner::DADL::RESERVED.map do |keyword|
    955968#                 Yaparc::Tokenize.new(
    956969#                                      Yaparc::Literal.new(keyword[0],false)
     
    958971#               end
    959972#               Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
    960 #                                 OpenEHR::LOG.info("Reserved: #{match}")
    961 #                                 [OpenEHR::ADL::Scanner::DADL::RESERVED[match], OpenEHR::ADL::Scanner::DADL::RESERVED[match]]
     973#                                 OpenEhr::LOG.info("Reserved: #{match}")
     974#                                 [OpenEhr::ADL::Scanner::DADL::RESERVED[match], OpenEhr::ADL::Scanner::DADL::RESERVED[match]]
    962975#                               end,
    963976#                               Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
    964 #                                 OpenEHR::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
     977#                                 OpenEhr::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
    965978#                                 [:V_ATTRIBUTE_IDENTIFIER, match]
    966979#                               end)
     
    10071020#             @parser = lambda do |input|
    10081021#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
    1009 #                 OpenEHR::LOG.info("V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN: #{match}")
     1022#                 OpenEhr::LOG.info("V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN: #{match}")
    10101023#                 [:V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, match]
    10111024#               end
     
    10201033#             @parser = lambda do |input|
    10211034#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/)) do |match|
    1022 #                 OpenEHR::LOG.info("V_ISO8601_DATE_CONSTRAINT_PATTERN: #{match}")
     1035#                 OpenEhr::LOG.info("V_ISO8601_DATE_CONSTRAINT_PATTERN: #{match}")
    10231036#                 [:V_ISO8601_DATE_CONSTRAINT_PATTERN, match]
    10241037#               end
     
    10331046#             @parser = lambda do |input|
    10341047#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
    1035 #                 OpenEHR::LOG.info("V_ISO8601_TIME_CONSTRAINT_PATTERN: #{match}")
     1048#                 OpenEhr::LOG.info("V_ISO8601_TIME_CONSTRAINT_PATTERN: #{match}")
    10361049#                 [:V_ISO8601_TIME_CONSTRAINT_PATTERN, match]
    10371050#               end
     
    10471060#               Yaparc::Apply.new(Yaparc::Alt.new(Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?T[hH]?[mM]?[sS]?/),
    10481061#                                                 Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?/))) do |match|
    1049 #                 OpenEHR::LOG.info("V_ISO8601_DURATION_CONSTRAINT_PATTERN: #{match}")
     1062#                 OpenEhr::LOG.info("V_ISO8601_DURATION_CONSTRAINT_PATTERN: #{match}")
    10501063#                 [:V_ISO8601_DURATION_CONSTRAINT_PATTERN, match]
    10511064#               end
     
    10601073#             @parser = lambda do |input|
    10611074#               Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*[ \n]*\</)) do |match|
    1062 #                 OpenEHR::LOG.info("V_C_DOMAIN_TYPE: #{match}")
     1075#                 OpenEhr::LOG.info("V_C_DOMAIN_TYPE: #{match}")
    10631076#                 [:START_V_C_DOMAIN_TYPE_BLOCK, match]
    10641077#               end
     
    10771090#                               V_ISO8601_DATE_CONSTRAINT_PATTERN.new,
    10781091#                               V_ISO8601_TIME_CONSTRAINT_PATTERN.new,
    1079 #                               OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new,
     1092#                               OpenEhr::ADL::Scanner::Common::V_ISO8601_DURATION.new,
    10801093#                               V_C_DOMAIN_TYPE.new,
    10811094#                               V_ISO8601_DURATION_CONSTRAINT_PATTERN.new,
    10821095#                               Reserved.new,
    1083 #                               OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
    1084 #                               OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
    1085 #                               OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
    1086 #                               OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
    1087 #                               OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
    1088 #                               OpenEHR::ADL::Scanner::Common::V_STRING.new,
    1089 #                               OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
    1090 #                               OpenEHR::ADL::Scanner::Common::V_REAL.new,
    1091 #                               OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new#,
    1092 #                               #OpenEHR::ADL::Scanner::Common::START_TERM_CODE_CONSTRAINT.new
     1096#                               OpenEhr::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
     1097#                               OpenEhr::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
     1098#                               OpenEhr::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
     1099#                               OpenEhr::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
     1100#                               OpenEhr::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
     1101#                               OpenEhr::ADL::Scanner::Common::V_STRING.new,
     1102#                               OpenEhr::ADL::Scanner::Common::V_LOCAL_CODE.new,
     1103#                               OpenEhr::ADL::Scanner::Common::V_REAL.new,
     1104#                               OpenEhr::ADL::Scanner::Common::V_ISO8601_DURATION.new#,
     1105#                               #OpenEhr::ADL::Scanner::Common::START_TERM_CODE_CONSTRAINT.new
    10931106#                               )
    10941107#             end
     
    11071120#               end
    11081121#               Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
    1109 #                                 OpenEHR::LOG.info("Reserved: #{match}")
    1110 #                                 [OpenEHR::ADL::Scanner::CADL::RESERVED[match], OpenEHR::ADL::Scanner::CADL::RESERVED[match]]
     1122#                                 OpenEhr::LOG.info("Reserved: #{match}")
     1123#                                 [OpenEhr::ADL::Scanner::CADL::RESERVED[match], OpenEhr::ADL::Scanner::CADL::RESERVED[match]]
    11111124#                               end,
    11121125#                               Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
    1113 #                                 OpenEHR::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
     1126#                                 OpenEhr::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
    11141127#                                 [:V_ATTRIBUTE_IDENTIFIER, match]
    11151128#                               end)
  • ruby/trunk/lib/adl_parser/lib/parser.rb

    r291 r307  
    1313require 'yaml'
    1414require 'rubygems'
    15 require 'adl_parser.rb'
    16 require 'am.rb'
    17 require 'rm.rb'
    18 $DEBUG = false
     15require 'open_ehr'
     16#require 'adl_parser.rb'
     17#require 'am.rb'
     18#require 'rm.rb'
     19#require 'rm/support/assumed_types.rb'
     20#require 'assumed_library_types.rb'
     21$DEBUG = true
    1922
    2023
     
    2427    class Parser < Racc::Parser
    2528
    26 module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1208)
     29module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1245)
    2730
    2831def assert_at(file,line, message = "")
     
    102105def scan
    103106  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
    104   scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
     107  scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
    105108
    106109  until @data.nil?  do
     
    149152
    150153racc_action_table = [
    151    576,   483,   147,   164,   476,   594,   474,    59,   215,   472,
    152    131,   470,   452,   578,   575,   464,   462,    29,   383,   341,
    153    387,    67,   385,   321,   155,   157,    25,    26,   526,   114,
    154    119,   216,    73,   500,   190,   121,    36,   513,   515,   463,
    155    518,   519,    36,   517,   502,    30,    62,   574,   148,   155,
    156    157,   434,    49,    51,   284,   112,   444,    81,    84,    87,
    157    194,   160,    97,   309,   314,   238,   114,   117,   119,   121,
    158    534,   526,   121,   121,   119,    73,   117,   114,   128,   129,
    159    513,   515,    79,   518,   519,   277,   160,   281,   286,   288,
    160    537,   163,   119,   298,    75,    49,    51,   284,   152,   153,
    161     81,    84,    87,   194,   121,    97,   309,   314,   114,   114,
    162    117,   119,   121,   534,   102,   119,   436,   230,   232,   494,
    163    168,   498,   134,   152,   153,     9,    73,   496,   155,   157,
    164    281,   286,   288,   537,   155,   157,   298,    71,   102,   338,
    165    249,   322,   631,   323,   344,    11,    49,    51,   111,   248,
    166    231,    81,    84,    87,   467,   117,    97,   100,   101,   155,
    167    157,   140,   102,   100,   101,   160,    91,    95,   325,   326,
    168    135,   160,    97,    79,   117,    81,    84,    87,   468,   117,
    169     97,   100,   101,   389,   114,   140,   190,   155,   157,   138,
    170     91,    95,   173,   155,   157,   121,   160,    79,   392,    81,
    171     84,    87,   152,   153,    97,   100,   101,  -374,   152,   153,
    172   -373,    81,   329,   330,    91,    95,   155,   157,   219,   158,
    173    161,    79,   571,   151,   160,    22,   154,   156,   155,   157,
    174    160,   158,   161,   152,   153,   151,   325,   326,   154,   156,
    175     97,   219,   242,    23,   238,   544,   103,   573,   541,   394,
    176    601,   542,   543,   160,     1,    81,    84,    87,   602,   603,
    177     97,   152,   153,   263,   109,   160,   256,   152,   153,   259,
    178    261,   395,    67,     4,    49,    51,   103,    79,    81,    84,
    179     87,   144,    16,    97,    17,   159,   145,   102,    49,    51,
    180    152,   153,   333,    36,   325,   326,   219,   159,    97,   149,
    181     79,   396,   152,   153,   150,   121,   219,    81,   329,   330,
    182    140,    81,    84,    87,   102,    16,    97,    17,    49,    51,
    183    114,   117,   119,   121,    81,    84,    87,   128,   129,    97,
    184    100,   101,   219,    81,    84,    87,   420,   140,    97,    91,
    185     95,   272,   219,    81,    84,    87,    79,   416,    97,   277,
    186    272,    81,    84,    87,   398,    79,    97,   100,   101,   389,
    187    102,   481,   415,   329,   330,    79,    91,    95,   335,    81,
    188     84,    87,   102,    79,    97,   128,   129,   212,   241,    81,
    189     84,    87,   242,    71,    97,   325,   326,    35,   240,    97,
    190    244,    79,    49,    51,   399,   140,   400,    81,    84,    87,
    191    102,    79,    97,   100,   101,   401,   418,   402,   219,    81,
    192     84,    87,    91,    95,    97,   100,   101,   403,    40,    79,
    193     36,   629,   630,    71,    91,    95,   404,   219,    35,    49,
    194     51,    79,    49,    51,    81,   329,   330,    81,    84,    87,
    195    102,   405,    97,   100,   101,    81,    84,    87,   431,   432,
    196     97,   406,    91,    95,    81,   329,   330,   492,   102,    79,
    197    407,    36,   408,    71,    81,    84,    87,    79,   409,    97,
    198     49,    51,    49,    51,   429,   430,   219,    81,    84,    87,
    199    410,    71,    97,   100,   101,   102,    79,    81,   329,   330,
    200     49,    51,    91,    95,   270,    81,    84,    87,   411,    79,
    201     97,   100,   101,   102,   239,    81,   329,   330,   140,   247,
    202     91,    95,   246,    81,    84,    87,   145,    79,    97,    81,
    203    329,   330,    81,    84,    87,   150,   140,    97,   100,   101,
    204    144,   102,   611,   612,   613,    79,   416,    91,    95,   219,
    205     81,    84,    87,   149,    79,    97,   100,   101,   245,   219,
    206    244,   415,   329,   330,    71,    91,    95,   219,   172,   169,
    207    170,   171,    79,    49,    51,   346,   347,    35,    81,    84,
    208     87,   348,   349,    97,   100,   101,    81,    84,    87,   251,
    209    102,    97,    56,    91,    95,   252,    81,    84,    87,   416,
    210     79,    97,    35,   253,    81,    84,    87,   264,    79,    97,
    211     36,   427,   428,   140,    81,   329,   330,   265,    79,    49,
    212     51,   325,   326,   356,   357,    97,    79,    81,    84,    87,
    213    358,   359,    97,   100,   101,    36,   325,   326,   425,   426,
    214     97,   119,    91,    95,    49,    51,   243,   284,   242,    79,
    215     81,    84,    87,   194,   437,    97,   309,   314,   438,   114,
    216    117,   119,   121,    81,    84,    87,   325,   326,    97,   439,
    217     97,   440,   114,   117,   119,   121,   172,   169,   170,   171,
    218    281,   286,   288,  -103,   366,   367,   298,   176,   423,   424,
    219     81,    84,    87,   194,   441,    97,   128,   129,   111,   114,
    220    117,   119,   121,   190,   124,   112,   374,   375,    81,    84,
    221     87,   421,   422,    97,   128,   129,   111,   114,   117,   119,
    222    121,   442,   124,    81,    84,    87,    49,    51,    97,    81,
    223    329,   330,   114,   117,   119,   121,    81,    84,    87,   241,
    224    445,    97,   446,   447,   448,   114,   117,   119,   121,    81,
    225     84,    87,   449,   450,    97,   240,   453,   454,   114,   117,
    226    119,   121,   172,   169,   170,   171,   172,   169,   170,   171,
    227    328,    81,   329,   330,   172,   169,   170,   171,   172,   169,
    228    170,   171,   172,   169,   170,   171,   172,   169,   170,   171,
    229    172,   169,   170,   171,   455,   456,   457,   458,   460,   461,
    230    140,   214,   148,   138,   213,   210,   103,   166,   478,   480,
    231    266,   482,   163,   485,   486,   487,   117,   489,   146,   140,
    232    139,   136,    36,   110,    69,   503,   114,   505,   117,   507,
    233    119,   509,   121,   511,   512,    35,   540,    62,    58,   546,
    234    547,   548,   267,   550,    57,   552,   114,   554,   117,   556,
    235    119,   558,   121,   560,   561,   562,   563,   564,   565,   163,
    236   -103,   569,   250,    54,   173,    34,   114,    31,   580,   581,
    237    582,   121,   121,    28,   121,   583,   584,   585,   586,   587,
    238    588,   268,   591,   592,   593,    24,   596,   597,   111,    21,
    239    269,   604,   605,   606,   607,    79,   573,   609,   270,   271,
    240    619,   620,   621,   622,    15,   624,    14,   625,    12,   627,
    241    628,   319,     8,     7,   121 ]
     154   575,   474,   143,   163,   468,   593,   466,   433,    29,   464,
     155   129,   462,   497,   577,   229,   476,    58,   137,    67,   213,
     156   381,   335,   330,   564,   152,   154,    25,    26,   529,   125,
     157   127,   113,    72,   495,   189,  -373,    30,   516,   518,    36,
     158   521,   523,   214,   520,   443,    36,    60,   230,   144,   152,
     159   154,   431,    48,    50,   274,   110,   435,    80,    83,    86,
     160   193,   157,    96,   300,   306,   115,   113,   115,   117,   119,
     161   538,   529,   119,   119,   117,    72,   115,   113,   125,   127,
     162   516,   518,    78,   521,   523,   317,   157,   272,   275,   276,
     163   540,   162,   117,   288,   630,    48,    50,   274,   149,   150,
     164    80,    83,    86,   193,   119,    96,   300,   306,   113,   113,
     165   115,   117,   119,   538,   101,   117,   571,    35,   231,   513,
     166   167,   574,   510,   149,   150,   511,   512,   491,   152,   154,
     167   272,   275,   276,   540,   461,     9,   288,   139,   101,   332,
     168   493,   133,    74,   326,   327,    48,    50,    96,   109,   482,
     169    36,    80,    83,    86,   573,    11,    96,    98,   100,    48,
     170    50,   139,   101,    98,   100,   157,    90,    94,    48,    50,
     171   152,   154,   483,    78,    72,    80,    83,    86,   458,   119,
     172    96,    98,   100,   599,   113,    70,   383,   152,   154,   134,
     173    90,    94,   326,   327,    48,    50,    96,    78,   115,    80,
     174    83,    86,   149,   150,    96,    98,   100,   157,   189,   152,
     175   154,   250,   155,   158,    90,    94,   148,   601,   602,   151,
     176   153,    78,   152,   154,   157,   155,   158,   152,   154,   148,
     177   152,   154,   151,   153,   218,    80,   385,   386,   237,   456,
     178    80,   385,   386,   237,   149,   150,   157,     1,   341,   248,
     179   261,   172,    22,   254,   338,   379,   258,   260,   145,   157,
     180   117,   149,   150,   146,   157,   115,     4,   157,   119,  -372,
     181    23,    80,    83,    86,   218,   247,    96,   269,   156,   391,
     182   218,   238,   570,   149,   150,   159,   218,    80,   385,   386,
     183   160,   156,   218,    78,   417,   241,   149,   150,    80,    83,
     184    86,   149,   150,    96,   149,   150,   102,   113,   115,   117,
     185   119,    80,    83,    86,   239,   218,    96,    80,    83,    86,
     186   392,   218,    96,    80,    83,    86,   393,   218,    96,    80,
     187    83,    86,   394,    78,    96,   171,   168,   169,   170,    78,
     188   218,   102,   395,   326,   327,    78,   396,    96,    48,    50,
     189   101,    78,    80,    83,    86,   125,   127,    96,    80,    83,
     190    86,   397,   108,    96,    80,    83,    86,   398,   218,    96,
     191    67,   628,   629,   139,    78,   218,   498,    80,    83,    86,
     192    78,   399,    96,    48,    50,   400,    78,    80,    83,    86,
     193   401,    36,    96,    98,   100,   489,   326,   327,   101,    78,
     194    96,   402,    90,    94,   267,    80,    83,    86,   403,    78,
     195    96,   404,    80,    83,    86,   268,   101,    96,    16,    41,
     196    17,    70,   428,   429,    80,   385,   386,    78,   269,    35,
     197    48,    50,   426,   427,    78,    80,    83,    86,   405,   139,
     198    96,    98,   100,   101,   326,   327,   407,    16,    96,    17,
     199    90,    94,   408,    80,    83,    86,   409,    78,    96,    98,
     200   100,   101,    36,   321,   211,   322,   139,   312,    90,    94,
     201   246,    48,    50,   245,    35,    78,   414,    80,   385,   386,
     202    80,    83,    86,   146,   139,    96,    98,   100,   101,   343,
     203   344,   413,   385,   386,   160,    90,    94,   244,    80,    83,
     204    86,   251,    78,    96,    98,   100,   101,    36,   383,    55,
     205   472,   139,   252,    90,    94,   263,    48,    50,   264,    35,
     206    78,   171,   168,   169,   170,    80,    83,    86,   265,    70,
     207    96,    98,   100,   101,   171,   168,   169,   170,    48,    50,
     208    90,    94,   119,    80,    83,    86,   243,    78,    96,    98,
     209   100,   101,    36,   326,   327,   242,   139,    96,    90,    94,
     210   241,    48,    50,   424,   425,    78,   171,   168,   169,   170,
     211    80,    83,    86,   436,    70,    96,    98,   100,   437,   101,
     212    80,   385,   386,    48,    50,    90,    94,   438,    80,    83,
     213    86,   414,    78,    96,    98,   100,   439,   101,   414,   610,
     214   611,   612,    70,    90,    94,   218,   413,   385,   386,   440,
     215    78,    48,    50,    80,   385,   386,    80,    83,    86,   441,
     216    70,    96,    98,   100,   171,   168,   169,   170,   240,    48,
     217    50,    90,    94,   444,    80,    83,    86,   445,    78,    96,
     218    98,   100,    80,    83,    86,   351,   352,    96,   446,    90,
     219    94,   447,   325,   448,   326,   327,    78,   274,    96,   449,
     220    80,    83,    86,   193,    78,    96,   300,   306,   450,   113,
     221   115,   117,   119,    80,    83,    86,   353,   354,    96,    80,
     222   385,   386,   113,   115,   117,   119,   389,    80,   385,   386,
     223   272,   275,   276,  -102,   355,   356,   288,   175,   422,   423,
     224    80,    83,    86,   193,   451,    96,   125,   127,   109,   113,
     225   115,   117,   119,   189,   122,   110,   363,   364,    80,    83,
     226    86,   420,   421,    96,   125,   127,   109,   113,   115,   117,
     227   119,   452,   122,    80,    83,    86,   418,   419,    96,    80,
     228   385,   386,   113,   115,   117,   119,    80,    83,    86,   377,
     229   378,    96,   317,   312,   453,   113,   115,   117,   119,    80,
     230    83,    86,   454,   455,    96,   239,   145,   159,   113,   115,
     231   117,   119,   171,   168,   169,   170,   171,   168,   169,   170,
     232   171,   168,   169,   170,   171,   168,   169,   170,   216,   139,
     233   144,   137,   212,   208,   471,   266,   473,   102,   165,   478,
     234   480,   481,   162,   484,   485,   486,   147,   139,   138,   135,
     235    36,   131,    68,   500,   113,   502,   115,   504,   117,   506,
     236   119,   117,   509,    35,   514,   515,    60,   543,    57,   545,
     237   546,    56,   548,   113,   550,   115,   552,   117,   554,   119,
     238   267,   557,   558,   559,   560,   561,   562,   119,   119,   119,
     239   119,   563,   249,   162,  -102,   568,   115,    53,    34,   172,
     240   268,    31,   579,    28,   581,   582,   583,   584,   585,   586,
     241   587,   113,   590,   591,   592,    24,   595,   596,   269,    21,
     242   109,   603,   604,   605,   606,    78,   570,   608,   270,   311,
     243   618,   619,   620,   621,    15,   623,    14,   624,    12,   626,
     244   627,   320,     8,     7,   580 ]
    242245
    243246racc_action_check = [
    244    531,   410,    86,    91,   405,   570,   404,    43,   147,   403,
    245     63,   402,   375,   531,   529,   398,   395,    21,   265,   250,
    246    267,    52,   266,   231,   222,   222,    18,    18,   531,   250,
    247    265,   147,   531,   430,   267,   266,    43,   531,   531,   395,
    248    531,   531,    52,   462,   432,    21,    63,   529,    86,   320,
    249    320,   357,   531,   531,   531,   410,   367,   531,   531,   531,
    250    531,   222,   531,   531,   531,   320,   531,   531,   531,   531,
    251    531,   462,   375,   405,   404,   462,   403,   402,   398,   398,
    252    462,   462,    91,   462,   462,   462,   320,   531,   531,   531,
    253    531,   570,   430,   531,    54,   462,   462,   462,   222,   222,
    254    462,   462,   462,   462,   432,   462,   462,   462,   357,   462,
    255    462,   462,   462,   462,    54,   367,   359,   163,   166,   424,
    256     95,   428,    69,   320,   320,     4,    54,   426,   227,   227,
    257    462,   462,   462,   462,   229,   229,   462,    54,   166,   248,
    258    188,   240,   624,   240,   252,     4,    54,    54,   248,   187,
    259    163,    54,    54,    54,   400,   252,    54,    54,    54,   224,
    260    224,   166,   624,    95,    95,   227,    54,    54,   424,   424,
    261     69,   229,   424,    54,   359,   166,   166,   166,   401,   428,
    262    166,   166,   166,   268,   426,   624,   269,   218,   218,    71,
    263    166,   166,    98,   226,   226,   264,   224,   166,   271,   624,
    264    624,   624,   227,   227,   624,   624,   624,    71,   229,   229,
    265     98,   400,   400,   400,   624,   624,    88,    88,   157,    88,
    266     88,   624,   519,    88,   218,    14,    88,    88,   174,   174,
    267    226,   174,   174,   224,   224,   174,   401,   401,   174,   174,
    268    401,   152,   522,    14,   174,   480,   110,   522,   480,   272,
    269    575,   480,   480,    88,     0,   157,   157,   157,   579,   579,
    270    157,   218,   218,   194,    60,   174,   194,   226,   226,   194,
    271    194,   274,    60,     0,   519,   519,    58,   157,   152,   152,
    272    152,    84,    11,   152,    11,    88,    84,   171,   110,   110,
    273     88,    88,   244,    60,   244,   244,   153,   174,   244,    87,
    274    152,   275,   174,   174,    87,   480,   161,   575,   575,   575,
    275    171,   194,   194,   194,   168,    26,   194,    26,    58,    58,
    276    194,   194,   194,   194,   171,   171,   171,   243,   243,   171,
    277    171,   171,   160,   153,   153,   153,   349,   168,   153,   171,
    278    171,   278,   159,   161,   161,   161,   171,   321,   161,   214,
    279    214,   168,   168,   168,   279,   153,   168,   168,   168,   408,
    280    626,   408,   321,   321,   321,   161,   168,   168,   246,   160,
    281    160,   160,   170,   168,   160,   246,   246,   136,   282,   159,
    282    159,   159,   283,   626,   159,   349,   349,   136,   284,   349,
    283    287,   160,   626,   626,   289,   170,   290,   626,   626,   626,
    284    619,   159,   626,   626,   626,   293,   347,   296,   158,   170,
    285    170,   170,   626,   626,   170,   170,   170,   300,    28,   626,
    286    136,   622,   622,   619,   170,   170,   303,   151,    28,   136,
    287    136,   170,   619,   619,   270,   270,   270,   619,   619,   619,
    288     82,   306,   619,   619,   619,   158,   158,   158,   355,   355,
    289    158,   309,   619,   619,   347,   347,   347,   422,   614,   619,
    290    310,    28,   312,    82,   151,   151,   151,   158,   314,   151,
    291     28,    28,    82,    82,   354,   354,   154,    82,    82,    82,
    292    315,   614,    82,    82,    82,   169,   151,   574,   574,   574,
    293    614,   614,    82,    82,   317,   614,   614,   614,   319,    82,
    294    614,   614,   614,   102,   175,   422,   422,   422,   169,   186,
    295    614,   614,   185,   154,   154,   154,   325,   614,   154,   418,
    296    418,   418,   169,   169,   169,   326,   102,   169,   169,   169,
    297    329,   609,   606,   606,   606,   154,   564,   169,   169,   219,
    298    102,   102,   102,   330,   169,   102,   102,   102,   184,   156,
    299    182,   564,   564,   564,   609,   102,   102,   155,   175,   175,
    300    175,   175,   102,   609,   609,   254,   254,   515,   609,   609,
    301    609,   255,   255,   609,   609,   609,   219,   219,   219,   191,
    302    172,   219,    34,   609,   609,   192,   156,   156,   156,   486,
    303    609,   156,    34,   193,   155,   155,   155,   195,   219,   155,
    304    515,   353,   353,   172,   486,   486,   486,   196,   156,   515,
    305    515,   420,   420,   257,   257,   420,   155,   172,   172,   172,
    306    258,   258,   172,   172,   172,    34,   494,   494,   352,   352,
    307    494,   251,   172,   172,    34,    34,   181,   215,   179,   172,
    308    215,   215,   215,   215,   360,   215,   215,   215,   361,   215,
    309    215,   215,   215,   263,   263,   263,   241,   241,   263,   362,
    310    241,   363,   263,   263,   263,   263,    96,    96,    96,    96,
    311    215,   215,   215,   103,   260,   260,   215,   103,   351,   351,
    312    103,   103,   103,   103,   364,   103,   103,   103,   103,   103,
    313    103,   103,   103,   103,   103,    62,   262,   262,    62,    62,
    314     62,   350,   350,    62,    62,    62,    62,    62,    62,    62,
    315     62,   365,    62,   256,   256,   256,   518,   518,   256,   492,
    316    492,   492,   256,   256,   256,   256,   261,   261,   261,   178,
    317    368,   261,   369,   370,   371,   261,   261,   261,   261,   259,
    318    259,   259,   372,   373,   259,   176,   376,   377,   259,   259,
    319    259,   259,   237,   237,   237,   237,   234,   234,   234,   234,
    320    242,   242,   242,   242,   236,   236,   236,   236,   617,   617,
    321    617,   617,   235,   235,   235,   235,   233,   233,   233,   233,
    322    632,   632,   632,   632,   378,   379,   380,   381,   393,   394,
    323    148,   146,   141,   140,   139,   116,   108,    92,   406,   407,
    324    199,   409,    89,   413,   415,   417,   249,   419,    85,    79,
    325     73,    70,    67,    61,    53,   433,   434,   435,   436,   443,
    326    444,   451,   452,   460,   461,    48,   463,    47,    42,   488,
    327    490,   491,   202,   493,    36,   495,   496,   497,   498,   499,
    328    500,   501,   502,   504,   506,   508,   510,   511,   512,   514,
    329     35,   517,   189,    33,   520,    27,   247,    24,   537,   538,
    330    540,   541,   542,    20,   544,   549,   551,   553,   555,   557,
    331    559,   204,   565,   566,   568,    16,   572,   573,   245,    13,
    332    205,   581,   589,   590,   591,   595,   598,   604,   207,   213,
    333    610,   611,   612,   613,     8,   616,     6,   618,     5,   620,
    334    621,   216,     3,     2,   543 ]
     247   535,   402,    82,    90,   398,   569,   397,   354,    21,   396,
     248    61,   395,   427,   535,   162,   403,    42,    70,    49,   143,
     249   264,   247,   243,   515,   217,   217,    18,    18,   535,   243,
     250   243,   247,   535,   425,   264,    70,    21,   535,   535,    49,
     251   535,   535,   143,   482,   364,    42,    61,   162,    82,   228,
     252   228,   352,   535,   535,   535,   402,   356,   535,   535,   535,
     253   535,   217,   535,   535,   535,   354,   535,   535,   535,   535,
     254   535,   482,   427,   398,   397,   482,   396,   395,   403,   403,
     255   482,   482,    90,   482,   482,   482,   228,   535,   535,   535,
     256   535,   569,   425,   535,   623,   482,   482,   482,   217,   217,
     257   482,   482,   482,   482,   364,   482,   482,   482,   352,   482,
     258   482,   482,   482,   482,   623,   356,   523,   518,   165,   471,
     259    94,   531,   471,   228,   228,   471,   471,   421,   225,   225,
     260   482,   482,   482,   482,   394,     4,   482,   623,   165,   245,
     261   423,    68,    53,   417,   417,   521,   521,   417,   245,   408,
     262   518,   623,   623,   623,   531,     4,   623,   623,   623,   518,
     263   518,   165,    53,    94,    94,   225,   623,   623,   523,   523,
     264   223,   223,   408,   623,    53,   165,   165,   165,   392,   471,
     265   165,   165,   165,   574,   421,    53,   265,   221,   221,    68,
     266   165,   165,   394,   394,    53,    53,   394,   165,   423,    53,
     267    53,    53,   225,   225,    53,    53,    53,   223,   266,    85,
     268    85,   188,    85,    85,    53,    53,    85,   578,   578,    85,
     269    85,    53,   173,   173,   221,   173,   173,   319,   319,   173,
     270   226,   226,   173,   173,   156,   392,   392,   392,   173,   378,
     271   574,   574,   574,   319,   223,   223,    85,     0,   252,   186,
     272   193,    97,    14,   193,   249,   263,   193,   193,    83,   173,
     273   252,   221,   221,    83,   319,   249,     0,   226,   263,    97,
     274    14,   156,   156,   156,   157,   185,   156,   522,    85,   270,
     275   158,   174,   522,    85,    85,    86,   155,   378,   378,   378,
     276    86,   173,   154,   156,   344,   273,   173,   173,   193,   193,
     277   193,   319,   319,   193,   226,   226,    57,   193,   193,   193,
     278   193,   157,   157,   157,   274,   153,   157,   158,   158,   158,
     279   277,   152,   158,   155,   155,   155,   278,   218,   155,   154,
     280   154,   154,   280,   157,   154,   174,   174,   174,   174,   158,
     281   151,   131,   283,   344,   344,   155,   286,   344,    57,    57,
     282   167,   154,   153,   153,   153,   240,   240,   153,   152,   152,
     283   152,   290,    59,   152,   218,   218,   218,   293,   150,   218,
     284    59,   621,   621,   167,   153,   149,   429,   151,   151,   151,
     285   152,   296,   151,   131,   131,   298,   218,   167,   167,   167,
     286   300,    59,   167,   167,   167,   419,   489,   489,    81,   151,
     287   489,   301,   167,   167,   303,   150,   150,   150,   305,   167,
     288   150,   306,   149,   149,   149,   308,   101,   149,    26,    28,
     289    26,    81,   350,   350,   429,   429,   429,   150,   309,    28,
     290    81,    81,   349,   349,   149,    81,    81,    81,   311,   101,
     291    81,    81,    81,   168,   419,   419,   312,    11,   419,    11,
     292    81,    81,   314,   101,   101,   101,   315,    81,   101,   101,
     293   101,   169,    28,   239,   135,   239,   168,   318,   101,   101,
     294   184,    28,    28,   183,   135,   101,   320,   267,   267,   267,
     295   168,   168,   168,   326,   169,   168,   168,   168,   170,   253,
     296   253,   320,   320,   320,   327,   168,   168,   182,   169,   169,
     297   169,   190,   168,   169,   169,   169,   625,   135,   400,    34,
     298   400,   170,   191,   169,   169,   195,   135,   135,   198,    34,
     299   169,    95,    95,    95,    95,   170,   170,   170,   200,   625,
     300   170,   170,   170,   171,   236,   236,   236,   236,   625,   625,
     301   170,   170,   251,   625,   625,   625,   181,   170,   625,   625,
     302   625,   608,    34,   268,   268,   180,   171,   268,   625,   625,
     303   178,    34,    34,   348,   348,   625,   233,   233,   233,   233,
     304   171,   171,   171,   357,   608,   171,   171,   171,   358,   613,
     305   456,   456,   456,   608,   608,   171,   171,   359,   608,   608,
     306   608,   563,   171,   608,   608,   608,   360,   618,   485,   604,
     307   604,   604,   613,   608,   608,   148,   563,   563,   563,   361,
     308   608,   613,   613,   485,   485,   485,   613,   613,   613,   362,
     309   618,   613,   613,   613,   235,   235,   235,   235,   177,   618,
     310   618,   613,   613,   365,   618,   618,   618,   366,   613,   618,
     311   618,   618,   148,   148,   148,   255,   255,   148,   367,   618,
     312   618,   368,   241,   369,   241,   241,   618,   213,   241,   370,
     313   213,   213,   213,   213,   148,   213,   213,   213,   371,   213,
     314   213,   213,   213,   261,   261,   261,   256,   256,   261,   498,
     315   498,   498,   261,   261,   261,   261,   269,   269,   269,   269,
     316   213,   213,   213,   102,   257,   257,   213,   102,   347,   347,
     317   102,   102,   102,   102,   372,   102,   102,   102,   102,   102,
     318   102,   102,   102,   102,   102,    60,   259,   259,    60,    60,
     319    60,   346,   346,    60,    60,    60,    60,    60,    60,    60,
     320    60,   373,    60,   254,   254,   254,   345,   345,   254,   573,
     321   573,   573,   254,   254,   254,   254,   260,   260,   260,   262,
     322   262,   260,   216,   216,   374,   260,   260,   260,   260,   258,
     323   258,   258,   375,   376,   258,   175,   385,   386,   258,   258,
     324   258,   258,   616,   616,   616,   616,   234,   234,   234,   234,
     325   232,   232,   232,   232,   631,   631,   631,   631,   147,   144,
     326   140,   139,   138,   112,   399,   201,   401,   106,    91,   404,
     327   406,   407,    88,   411,   413,   416,    84,    78,    72,    69,
     328    67,    63,    52,   430,   431,   432,   433,   434,   435,   442,
     329   443,   248,   457,    47,   480,   481,    46,   483,    40,   487,
     330   488,    36,   490,   491,   492,   493,   494,   495,   496,   497,
     331   203,   499,   501,   503,   505,   507,   508,   510,   511,   512,
     332   513,   514,   187,   517,    35,   520,   246,    33,    27,   524,
     333   205,    24,   540,    20,   543,   547,   549,   551,   553,   555,
     334   556,   244,   564,   565,   567,    16,   570,   572,   206,    13,
     335   242,   580,   588,   589,   590,   594,   598,   603,   212,   214,
     336   609,   610,   611,   612,     8,   615,     6,   617,     5,   619,
     337   620,   230,     3,     2,   541 ]
    335338
    336339racc_action_pointer = [
    337    253,   nil,   884,   902,   124,   880,   869,   nil,   894,   nil,
    338    nil,   258,   nil,   851,   224,   nil,   867,   nil,     4,   nil,
    339    833,    16,   nil,   nil,   832,   nil,   291,   824,   417,   nil,
    340    nil,   nil,   nil,   821,   581,   799,   833,   nil,   nil,   nil,
    341    nil,   nil,   820,    -8,   nil,   nil,   nil,   776,   814,   nil,
    342    nil,   nil,    -2,   766,    93,   nil,   nil,   nil,   265,   nil,
    343    249,   805,   640,    -5,   nil,   nil,   nil,   768,   nil,   121,
    344    761,   160,   nil,   776,   nil,   nil,   nil,   nil,   nil,   765,
    345    nil,   nil,   419,   nil,   223,   774,   -32,   241,   210,   715,
    346    nil,     2,   750,   nil,   nil,    99,   590,   nil,   163,   nil,
    347    nil,   nil,   482,   622,   nil,   nil,   nil,   nil,   785,   nil,
    348    235,   nil,   nil,   nil,   nil,   nil,   743,   nil,   nil,   nil,
     340   246,   nil,   884,   902,   134,   880,   869,   nil,   894,   nil,
     341   nil,   423,   nil,   851,   251,   nil,   867,   nil,     4,   nil,
     342   833,     7,   nil,   nil,   836,   nil,   394,   827,   418,   nil,
     343   nil,   nil,   nil,   825,   508,   803,   830,   nil,   nil,   nil,
     344   820,   nil,     1,   nil,   nil,   nil,   775,   812,   nil,    -5,
     345   nil,   nil,   764,   141,   nil,   nil,   nil,   295,   nil,   347,
     346   660,    -5,   nil,   803,   nil,   nil,   nil,   766,   140,   759,
     347   -12,   nil,   774,   nil,   nil,   nil,   nil,   nil,   763,   nil,
     348   nil,   377,   -32,   200,   772,   203,   227,   nil,   715,   nil,
     349     2,   751,   nil,   nil,    99,   445,   nil,   222,   nil,   nil,
     350   nil,   395,   642,   nil,   nil,   nil,   786,   nil,   nil,   nil,
     351   nil,   nil,   741,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    349352   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    350    nil,   nil,   nil,   nil,   nil,   nil,   376,   nil,   nil,   759,
    351    764,   712,   nil,   nil,   nil,   nil,   779,    -4,   746,   nil,
    352    nil,   406,   220,   275,   455,   536,   528,   197,   387,   321,
    353    311,   285,   nil,   116,   nil,   nil,   117,   nil,   293,   464,
    354    351,   266,   559,   nil,   222,   482,   689,   nil,   673,   582,
    355    nil,   580,   494,   nil,   492,   456,   453,    93,    84,   796,
    356    nil,   523,   529,   578,   253,   541,   551,   nil,   nil,   744,
    357    nil,   nil,   776,   nil,   815,   824,   nil,   832,   nil,   nil,
    358    nil,   nil,   nil,   853,   306,   582,   865,   nil,   181,   518,
    359    nil,   nil,    18,   nil,   153,   nil,   187,   122,   nil,   128,
    360    nil,    11,   nil,   700,   680,   696,   688,   676,   nil,   nil,
    361     86,   597,   703,   263,   235,   812,   311,   789,    82,   738,
    362    -38,   562,    87,   nil,   504,   510,   655,   552,   559,   681,
    363    613,   668,   635,   595,   125,   -39,   -35,   -37,   128,   115,
    364    376,   161,   167,   nil,   237,   287,   nil,   nil,   297,   331,
    365    nil,   nil,   322,   326,   332,   nil,   nil,   334,   nil,   380,
    366    373,   nil,   nil,   382,   nil,   nil,   384,   nil,   nil,   nil,
    367    394,   nil,   nil,   403,   nil,   nil,   418,   nil,   nil,   395,
    368    380,   nil,   406,   nil,   412,   457,   nil,   438,   nil,   461,
    369     43,   304,   nil,   nil,   nil,   453,   462,   nil,   nil,   472,
    370    485,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    371    nil,   nil,   nil,   nil,   nil,   nil,   nil,   396,   nil,   326,
    372    640,   617,   567,   540,   413,   387,   nil,    41,   nil,   106,
    373    583,   587,   598,   600,   623,   650,   nil,    46,   669,   671,
    374    672,   673,   681,   682,   nil,     2,   685,   686,   723,   724,
    375    725,   726,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    376    nil,   nil,   nil,   705,   755,     4,   nil,   nil,    14,   nil,
    377    153,   177,    10,     8,     5,     3,   733,   738,   304,   737,
    378      0,   nil,   nil,   789,   nil,   742,   nil,   744,   461,   746,
    379    552,   nil,   447,   nil,   109,   nil,   117,   nil,   111,   nil,
    380     23,   nil,    34,   754,   749,   756,   750,   nil,   nil,   nil,
    381    nil,   nil,   nil,   758,   751,   nil,   nil,   nil,   nil,   nil,
    382    nil,   760,   752,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    383    789,   812,    42,   790,   nil,   nil,   nil,   nil,   nil,   nil,
     353   nil,   330,   nil,   nil,   nil,   463,   nil,   nil,   757,   762,
     354   710,   nil,   nil,     7,   745,   nil,   nil,   776,   584,   354,
     355   347,   319,   300,   294,   271,   265,   213,   253,   259,   nil,
     356   nil,   nil,    13,   nil,   nil,   117,   nil,   329,   422,   440,
     357   467,   512,   nil,   216,   259,   709,   nil,   572,   504,   nil,
     358   499,   490,   441,   417,   414,   219,   193,   796,   196,   nil,
     359   445,   456,   nil,   240,   nil,   459,   nil,   nil,   462,   nil,
     360   472,   739,   nil,   784,   nil,   804,   822,   nil,   nil,   nil,
     361   nil,   nil,   852,   602,   853,   nil,   709,    18,   306,   nil,
     362   nil,   181,   nil,   164,   nil,   122,   224,   nil,    43,   nil,
     363   889,   nil,   704,   490,   700,   548,   458,   nil,   nil,   408,
     364   291,   595,   814,   -35,   804,    82,   788,   -36,   752,   197,
     365   nil,   472,   191,   428,   675,   584,   615,   633,   701,   655,
     366   688,   615,   688,   198,   -37,   131,   137,   419,   494,   629,
     367   242,   nil,   nil,   239,   258,   nil,   nil,   297,   312,   nil,
     368   309,   nil,   nil,   319,   nil,   nil,   323,   nil,   nil,   nil,
     369   338,   nil,   nil,   344,   nil,   nil,   301,   nil,   329,   nil,
     370   334,   378,   nil,   348,   nil,   385,   355,   nil,   359,   372,
     371   nil,   401,   364,   nil,   418,   442,   nil,   nil,   423,   221,
     372   433,   nil,   nil,   nil,   nil,   nil,   420,   431,   nil,   nil,
    384373   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    385    235,   nil,   nil,   nil,   nil,   nil,   546,   nil,   768,   nil,
    386    769,   770,   661,   772,   567,   774,   769,   776,   770,   778,
    387    771,   780,   772,   nil,   782,   nil,   783,   nil,   784,   nil,
    388    785,   835,   790,   nil,   762,   556,   nil,   837,   663,   221,
    389    825,   nil,   186,   nil,   nil,   nil,   nil,   nil,   nil,    -9,
    390    nil,    -1,   nil,   nil,   nil,   nil,   nil,   765,   825,   nil,
    391    823,   791,   792,   834,   794,   nil,   nil,   nil,   nil,   804,
    392    nil,   805,   nil,   806,   nil,   807,   nil,   808,   nil,   809,
    393    nil,   nil,   nil,   nil,   493,   810,   859,   nil,   834,   nil,
    394      4,   nil,   847,   806,   429,   249,   nil,   nil,   nil,   166,
    395    nil,   869,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   868,
    396    860,   826,   nil,   nil,   nil,   805,   nil,   nil,   825,   nil,
    397    nil,   nil,   nil,   nil,   842,   nil,   448,   nil,   nil,   510,
    398    844,   868,   869,   870,   437,   nil,   848,   692,   883,   379,
    399    813,   814,   337,   nil,   141,   nil,   339,   nil,   nil,   nil,
    400    nil,   nil,   704 ]
     374   nil,   nil,   nil,   nil,   284,   675,   660,   637,   502,   371,
     375   361,   nil,    41,   nil,    -3,   nil,    46,   512,   517,   526,
     376   535,   548,   558,   nil,    34,   572,   576,   587,   590,   592,
     377   598,   607,   643,   670,   693,   701,   702,   nil,   229,   nil,
     378   nil,   nil,   nil,   nil,   nil,   708,   709,   nil,   nil,   nil,
     379   nil,   nil,   177,   nil,   133,    10,     8,     5,     3,   733,
     380   453,   731,     0,    14,   735,   nil,   717,   767,   137,   nil,
     381   nil,   789,   nil,   742,   nil,   nil,   744,    84,   nil,   385,
     382   nil,   117,   nil,   130,   nil,    23,   nil,     2,   nil,   366,
     383   752,   747,   754,   748,   756,   749,   nil,   nil,   nil,   nil,
     384   nil,   nil,   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,
     385   nil,   nil,   nil,   nil,   nil,   nil,   522,   761,   nil,   nil,
     386   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     387   nil,   109,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     388   790,   813,    42,   791,   nil,   555,   nil,   768,   769,   337,
     389   771,   766,   773,   767,   775,   768,   777,   769,   621,   780,
     390   nil,   781,   nil,   782,   nil,   783,   nil,   784,   785,   nil,
     391   777,   778,   779,   780,   839,   -35,   nil,   766,   106,   nil,
     392   841,    92,   221,   115,   830,   nil,   nil,   nil,   nil,   nil,
     393   nil,    98,   nil,   nil,   nil,    -1,   nil,   nil,   nil,   nil,
     394   769,   870,   nil,   827,   nil,   nil,   nil,   804,   nil,   805,
     395   nil,   806,   nil,   807,   nil,   808,   809,   nil,   nil,   nil,
     396   nil,   nil,   nil,   548,   810,   859,   nil,   834,   nil,     4,
     397   805,   nil,   848,   681,   182,   nil,   nil,   nil,   125,   nil,
     398   869,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   859,   869,
     399   826,   nil,   nil,   nil,   805,   nil,   nil,   nil,   825,   nil,
     400   nil,   nil,   nil,   842,   515,   nil,   nil,   nil,   530,   844,
     401   868,   869,   870,   558,   nil,   848,   696,   883,   576,   813,
     402   814,   287,   nil,    93,   nil,   485,   nil,   nil,   nil,   nil,
     403   nil,   708 ]
    401404
    402405racc_action_default = [
    403   -376,    -2,  -376,  -376,    -6,  -376,   -13,    -4,  -376,    -5,
    404     -7,  -376,    -1,  -376,  -376,   633,  -376,   -12,  -376,    -9,
    405    -18,  -376,   -15,   -14,  -376,    -8,  -376,   -21,  -376,   -17,
    406    -16,   -11,   -10,  -376,  -376,  -112,   -94,   -89,   -19,   -90,
    407    -20,  -108,  -376,  -376,   -98,   -99,  -100,  -376,  -376,  -146,
    408    -87,  -147,   -88,   -82,  -376,   -22,   -23,   -95,  -376,  -110,
    409   -376,  -376,  -376,  -376,  -104,  -109,  -101,  -376,   -91,  -376,
    410   -376,  -289,  -281,  -376,  -282,   -25,   -24,  -248,   -26,  -284,
    411   -253,  -152,   -27,  -254,  -376,  -376,  -376,  -376,  -376,  -305,
    412   -273,  -376,  -376,  -283,  -274,  -376,  -251,  -167,   -31,  -286,
    413   -271,  -272,  -376,  -112,   -96,   -93,  -113,   -97,  -376,  -111,
    414   -376,  -187,  -148,  -122,  -191,  -123,  -376,  -204,  -124,  -217,
    415   -125,  -230,  -126,  -127,  -247,  -128,  -129,  -130,  -182,  -183,
    416   -121,  -102,  -105,   -92,   -84,   -83,  -376,    -3,  -288,  -376,
    417   -289,  -285,  -249,  -373,  -153,  -168,  -376,  -376,  -376,  -154,
    418   -169,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    419   -376,  -376,   -30,  -376,  -256,  -255,  -376,  -259,  -376,  -376,
    420   -376,  -376,  -376,   -32,  -376,  -376,  -148,  -144,  -133,  -122,
    421   -145,  -134,  -123,  -116,  -135,  -124,  -136,  -125,  -137,  -126,
    422   -243,  -138,  -127,  -376,  -376,  -139,  -128,  -117,  -140,  -129,
    423   -118,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -114,  -106,
    424   -107,   -85,   -86,  -376,  -376,  -376,  -376,  -287,  -263,  -376,
    425   -278,  -279,  -264,  -275,  -265,  -276,  -261,  -260,  -277,  -262,
    426   -307,  -376,  -252,  -250,  -267,  -268,  -269,  -266,  -280,  -270,
    427   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    428   -376,  -376,  -376,  -115,  -376,  -376,  -376,  -376,  -376,  -376,
    429   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    430   -376,  -376,  -290,   -63,  -376,  -376,   -33,   -62,   -34,  -357,
    431   -336,  -322,  -317,  -310,  -347,  -343,  -328,  -316,  -334,  -376,
    432   -313,   -54,  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,
    433   -331,   -57,  -342,  -337,  -312,   -58,  -344,  -318,   -59,  -353,
    434   -340,  -324,  -348,   -60,  -354,  -350,  -330,  -311,   -61,  -376,
    435   -376,  -376,  -149,  -151,  -171,  -376,  -376,  -155,  -157,  -376,
    436   -376,  -185,  -170,  -172,  -189,  -186,  -184,  -193,  -190,  -188,
    437   -206,  -194,  -192,  -219,  -207,  -205,  -166,  -376,  -181,  -376,
    438   -376,  -376,  -376,  -376,  -376,  -376,  -203,  -376,  -216,  -376,
    439   -376,  -376,  -376,  -376,  -376,  -376,  -229,  -376,  -376,  -376,
    440   -376,  -376,  -376,  -376,  -242,  -376,  -376,  -376,  -376,  -376,
    441   -376,  -376,  -232,  -220,  -218,  -233,  -231,  -246,  -244,  -150,
    442   -245,  -156,   -28,   -68,  -376,  -376,   -29,   -64,  -376,  -257,
    443   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    444   -376,  -258,  -303,  -376,  -308,  -152,  -304,  -376,  -376,  -376,
    445   -376,  -164,  -376,  -179,  -376,  -201,  -376,  -214,  -376,  -227,
    446   -376,  -240,  -376,  -376,  -376,  -376,  -376,  -163,  -178,  -200,
    447   -213,  -226,  -239,  -376,  -376,  -165,  -180,  -202,  -215,  -228,
    448   -241,  -376,  -376,  -162,  -177,  -199,  -212,  -225,  -238,   -69,
    449   -376,  -376,  -376,  -376,  -359,  -358,  -314,  -315,  -321,  -320,
    450   -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,  -355,  -341,
    451   -376,  -349,  -356,  -352,  -351,  -306,  -376,  -158,  -376,  -173,
    452   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    453   -376,  -376,  -376,  -195,  -376,  -208,  -376,  -221,  -376,  -234,
    454   -376,  -376,  -376,   -43,  -305,  -376,   -53,   -44,  -376,  -376,
    455    -31,   -72,  -310,   -70,   -36,   -37,  -372,   -38,   -39,  -360,
    456    -40,  -376,  -363,   -41,  -367,  -366,   -42,  -369,  -376,   -35,
    457   -376,  -376,  -376,  -376,  -376,  -309,  -160,  -175,  -159,  -376,
    458   -174,  -376,  -196,  -376,  -209,  -376,  -222,  -376,  -235,  -376,
    459   -197,  -210,  -223,  -236,  -376,  -292,  -376,   -49,  -376,   -67,
    460   -305,   -52,   -50,  -376,  -376,  -376,   -44,   -71,   -65,  -376,
    461   -370,  -376,   -66,  -161,  -176,  -198,  -211,  -224,  -237,  -376,
    462   -295,  -376,  -291,   -45,   -47,  -376,   -51,  -365,  -376,  -364,
    463   -361,  -362,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,
    464    -75,  -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,
    465   -376,  -376,  -376,   -78,  -376,   -48,   -76,  -299,  -300,  -301,
    466   -302,  -81,   -79 ]
     406  -375,    -2,  -375,  -375,    -6,  -375,   -13,    -4,  -375,    -5,
     407    -7,  -375,    -1,  -375,  -375,   632,  -375,   -12,  -375,    -9,
     408   -18,  -375,   -15,   -14,  -375,    -8,  -375,   -21,  -375,   -17,
     409   -16,   -11,   -10,  -375,  -375,  -111,   -93,   -89,   -19,  -107,
     410  -375,   -20,  -375,   -97,   -98,   -99,  -375,  -375,  -145,   -87,
     411  -146,   -88,   -82,  -375,   -22,   -23,   -94,  -375,  -109,  -375,
     412  -375,  -375,  -103,  -375,  -108,  -100,   -90,  -375,  -375,  -375,
     413  -288,  -281,  -375,  -247,   -25,   -24,  -252,   -26,  -283,  -253,
     414  -151,   -27,  -375,  -375,  -375,  -375,  -375,  -272,  -304,  -273,
     415  -375,  -375,  -285,  -282,  -375,  -250,  -166,   -31,  -270,  -280,
     416  -271,  -375,  -111,   -92,  -112,   -96,  -375,   -95,  -110,  -186,
     417  -147,  -122,  -375,  -190,  -123,  -203,  -124,  -216,  -125,  -229,
     418  -126,  -127,  -246,  -128,  -129,  -181,  -120,  -182,  -121,  -101,
     419  -104,  -375,   -91,   -84,   -83,  -375,    -3,  -287,  -375,  -288,
     420  -284,  -248,  -372,  -375,  -375,  -152,  -167,  -375,  -375,  -375,
     421  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -153,
     422  -168,   -30,  -375,  -255,  -254,  -375,  -258,  -375,  -375,  -375,
     423  -375,  -375,   -32,  -375,  -375,  -147,  -144,  -133,  -122,  -115,
     424  -134,  -123,  -135,  -124,  -136,  -125,  -137,  -126,  -375,  -242,
     425  -138,  -127,  -116,  -375,  -139,  -128,  -117,  -140,  -118,  -141,
     426  -130,  -119,  -142,  -131,  -143,  -132,  -121,  -113,  -106,  -105,
     427   -85,   -86,  -375,  -375,  -375,  -286,  -375,  -262,  -375,  -277,
     428  -278,  -263,  -274,  -264,  -275,  -260,  -259,  -276,  -261,  -306,
     429  -375,  -251,  -249,  -266,  -267,  -268,  -265,  -279,  -269,  -375,
     430  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
     431  -114,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
     432  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
     433  -375,  -342,  -321,  -315,  -346,  -327,  -333,  -312,  -375,  -322,
     434  -318,   -54,  -328,  -324,   -55,  -334,  -330,   -56,  -374,  -341,
     435  -336,  -311,   -57,  -343,  -317,   -58,  -339,  -323,  -347,   -59,
     436  -352,  -349,  -329,  -310,   -60,  -356,  -353,  -335,  -316,  -309,
     437   -61,  -375,  -289,   -63,  -375,  -375,   -33,   -62,   -34,  -375,
     438  -375,  -148,  -150,  -184,  -169,  -171,  -375,  -375,  -188,  -183,
     439  -185,  -192,  -189,  -187,  -205,  -193,  -191,  -218,  -206,  -204,
     440  -231,  -219,  -217,  -180,  -375,  -375,  -375,  -375,  -375,  -375,
     441  -375,  -202,  -375,  -215,  -375,  -228,  -375,  -375,  -375,  -375,
     442  -375,  -375,  -375,  -241,  -375,  -375,  -375,  -375,  -375,  -375,
     443  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -165,  -375,  -232,
     444  -230,  -245,  -243,  -149,  -244,  -375,  -375,  -155,  -170,  -156,
     445  -154,   -28,  -375,  -256,  -375,  -375,  -375,  -375,  -375,  -375,
     446  -375,  -375,  -375,  -375,  -375,  -257,   -68,  -375,  -375,   -29,
     447   -64,  -375,  -307,  -151,  -303,  -302,  -375,  -375,  -178,  -375,
     448  -200,  -375,  -213,  -375,  -226,  -375,  -239,  -375,  -163,  -375,
     449  -375,  -375,  -375,  -375,  -375,  -375,  -177,  -199,  -212,  -225,
     450  -238,  -162,  -375,  -375,  -179,  -201,  -214,  -227,  -240,  -164,
     451  -176,  -198,  -211,  -224,  -237,  -161,  -375,  -375,  -314,  -313,
     452  -319,  -320,  -326,  -325,  -332,  -331,  -338,  -337,  -345,  -344,
     453  -340,  -375,  -348,  -354,  -351,  -350,  -358,  -357,  -355,   -69,
     454  -375,  -375,  -375,  -375,  -305,  -375,  -172,  -375,  -375,  -375,
     455  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
     456  -194,  -375,  -207,  -375,  -220,  -375,  -233,  -375,  -375,  -157,
     457  -375,  -375,  -375,  -375,  -375,  -375,   -43,  -304,  -375,   -53,
     458   -44,  -375,  -309,  -375,   -31,   -72,   -70,   -36,   -37,  -371,
     459   -38,  -359,   -39,  -362,   -40,  -375,  -365,   -41,  -366,   -42,
     460  -368,  -375,   -35,  -375,  -308,  -174,  -173,  -375,  -195,  -375,
     461  -208,  -375,  -221,  -375,  -234,  -375,  -375,  -158,  -196,  -209,
     462  -222,  -235,  -159,  -375,  -291,  -375,   -49,  -375,   -67,  -304,
     463  -375,   -52,   -50,  -375,  -375,   -44,   -71,   -65,  -375,  -369,
     464  -375,   -66,  -175,  -197,  -210,  -223,  -236,  -160,  -294,  -375,
     465  -375,  -290,   -45,   -47,  -375,  -364,   -51,  -363,  -375,  -361,
     466  -360,  -367,  -370,   -73,  -375,  -293,  -292,   -46,  -375,   -75,
     467  -295,  -296,  -297,   -74,   -77,  -375,   -80,  -375,  -375,  -375,
     468  -375,  -375,   -78,  -375,   -48,   -76,  -298,  -299,  -300,  -301,
     469  -81,   -79 ]
    467470
    468471racc_goto_table = [
    469     96,   113,   165,    38,   162,    48,   118,   180,   276,    55,
    470    413,    48,   202,   120,   523,   104,    65,   273,   105,   126,
    471    116,    92,    77,   174,    66,   125,    68,    64,    96,    19,
    472    614,    98,     3,   115,    68,   108,   393,   531,    60,   623,
    473    626,   133,   179,   132,    32,   289,   618,   185,   175,    92,
    474    142,   623,   610,   123,   187,   278,    63,   275,   459,    82,
    475    199,   183,   208,   193,   197,   200,   196,   104,    78,   205,
    476    209,   484,   218,    76,   182,   222,    65,   224,   122,   226,
    477    227,   397,   229,   577,    66,   220,   221,   108,   223,    18,
    478    225,    10,     2,   228,   192,   137,    70,    53,    33,   204,
    479    207,   178,   181,   184,   186,   188,   191,   195,   198,   201,
    480    203,   211,   233,    48,   175,   234,   235,   236,   237,   189,
    481    206,   177,    27,    20,   167,   141,    13,     6,   217,   566,
    482    589,     5,   545,   254,   599,   579,   nil,   nil,   nil,   nil,
    483    320,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    484    nil,   262,   nil,   nil,   283,   nil,   nil,   260,   nil,   nil,
    485    nil,   nil,   nil,   nil,   nil,   255,   nil,   nil,   nil,   nil,
    486    nil,   nil,   nil,   nil,   nil,   nil,   388,   nil,   390,   nil,
    487    nil,   327,   nil,   nil,   nil,   258,   287,   331,   nil,   nil,
    488    336,   nil,   nil,   nil,   nil,   350,   334,   nil,   360,   339,
    489    368,   nil,   376,   nil,   nil,   nil,   nil,   nil,   nil,   391,
    490    257,   nil,   324,   355,   343,   332,   365,   nil,   373,   354,
    491    381,   382,   364,   386,   372,   nil,   380,   351,   384,   nil,
    492    361,   nil,   369,   nil,   377,   nil,   nil,   nil,   nil,   nil,
    493    340,   nil,   nil,   345,   nil,   nil,   nil,   353,   nil,   nil,
    494    363,   nil,   371,   590,   379,   nil,   521,   nil,   nil,   nil,
    495    412,   nil,   nil,   337,   nil,   nil,   342,   nil,   nil,   nil,
    496    nil,   nil,   352,   nil,   nil,   362,   nil,   370,   nil,   378,
    497    nil,   nil,   nil,   nil,   nil,   nil,   417,   nil,   nil,   nil,
    498    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    499    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    500    nil,   479,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    501    419,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    502    443,   nil,   451,   nil,   nil,   nil,   nil,   nil,   nil,   466,
    503    nil,   nil,   465,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    504    435,   nil,   nil,   nil,   nil,   nil,   nil,   488,   nil,   nil,
    505    nil,   491,   477,   nil,   nil,   nil,   nil,   475,   nil,   nil,
    506    nil,   nil,   469,   433,   nil,   nil,   nil,   nil,   nil,   nil,
    507    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   501,
    508    nil,   490,   nil,   499,   473,   493,   nil,   nil,   nil,   nil,
    509    nil,   522,   nil,   nil,   nil,   nil,   nil,   508,   nil,   510,
    510    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   471,   497,
    511    nil,   nil,   nil,   nil,   nil,   412,   nil,   506,   nil,   567,
    512    nil,   549,   nil,   287,   nil,   nil,   nil,   262,   nil,   520,
    513    nil,   nil,   495,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    514    504,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   559,
    515    nil,   nil,   nil,   557,   nil,   551,   nil,   nil,   nil,   nil,
    516    522,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    517    nil,   nil,   nil,   nil,   nil,   595,   nil,   nil,   nil,   555,
    518    568,   nil,    48,   nil,   nil,   570,   572,   nil,   355,   365,
    519    373,   381,   287,   412,   nil,   nil,   608,   nil,   520,   nil,
    520    nil,   nil,   553,   598,   600,   nil,   nil,   nil,   nil,   nil,
     472    95,   128,    47,   164,    38,   161,   176,   114,    47,   316,
     473    54,   411,   116,   173,   198,   111,   107,   313,    64,   103,
     474   526,    65,   112,    91,    73,    19,    66,    97,    95,   622,
     475   121,   106,    62,     3,   406,   613,    66,   535,    59,   278,
     476    32,   622,   118,   206,   132,   625,   617,   130,   174,   181,
     477   123,    91,   141,   609,   183,   318,    61,   178,   315,   479,
     478   217,    81,   207,   221,   179,   223,   188,   225,   226,   192,
     479   228,   196,   191,   576,    77,   201,   475,    64,    75,   120,
     480    65,    18,    10,     2,   185,   136,   219,   220,    69,   222,
     481   107,   224,   195,   209,   227,    52,    33,   200,   203,   205,
     482   177,   180,   182,   184,   186,   106,   190,   194,   197,    47,
     483   199,   210,   232,   202,   174,   233,   234,   235,   236,   410,
     484   204,   187,    27,    20,   166,   140,    13,     6,   215,   565,
     485   319,   589,     5,   544,   262,   597,   578,   nil,   nil,   nil,
     486   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   253,   nil,
     487   nil,   nil,   nil,   nil,   309,   nil,   nil,   nil,   nil,   nil,
     488   nil,   nil,   nil,   257,   nil,   nil,   nil,   nil,   273,   nil,
     489   nil,   nil,   nil,   nil,   nil,   255,   382,   nil,   384,   nil,
     490   nil,   nil,   nil,   259,   nil,   nil,   nil,   323,   nil,   nil,
     491   329,   nil,   nil,   nil,   328,   350,   324,   333,   nil,   362,
     492   nil,   370,   376,   nil,   nil,   nil,   nil,   nil,   387,   345,
     493   390,   nil,   256,   357,   nil,   365,   371,   nil,   337,   nil,
     494   nil,   nil,   342,   388,   348,   nil,   331,   nil,   360,   336,
     495   368,   374,   nil,   nil,   nil,   nil,   346,   nil,   nil,   nil,
     496   358,   340,   366,   372,   349,   nil,   nil,   nil,   361,   nil,
     497   369,   375,   nil,   380,   588,   nil,   nil,   nil,   nil,   nil,
     498   nil,   415,   nil,   nil,   nil,   334,   nil,   nil,   339,   nil,
     499   nil,   nil,   nil,   347,   nil,   525,   nil,   359,   nil,   367,
     500   373,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     501   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   416,
     502   nil,   nil,   nil,   470,   nil,   nil,   nil,   nil,   nil,   nil,
     503   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   457,
     504   nil,   nil,   nil,   nil,   nil,   nil,   434,   nil,   nil,   nil,
     505   nil,   nil,   nil,   459,   430,   nil,   nil,   nil,   nil,   nil,
     506   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   460,
     507   477,   nil,   nil,   nil,   442,   nil,   nil,   nil,   nil,   nil,
     508   nil,   nil,   nil,   nil,   nil,   nil,   nil,   467,   nil,   nil,
     509   499,   nil,   487,   432,   488,   nil,   nil,   463,   nil,   nil,
     510   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   469,   nil,
     511   nil,   nil,   nil,   nil,   nil,   494,   nil,   508,   nil,   nil,
     512   nil,   nil,   nil,   490,   nil,   505,   nil,   nil,   nil,   nil,
     513   nil,   nil,   nil,   501,   nil,   465,   nil,   496,   nil,   nil,
     514   nil,   nil,   nil,   522,   nil,   nil,   415,   nil,   nil,   nil,
     515   nil,   nil,   nil,   507,   566,   nil,   nil,   273,   nil,   556,
     516   nil,   nil,   492,   nil,   547,   nil,   nil,   nil,   nil,   nil,
     517   nil,   nil,   503,   nil,   nil,   nil,   524,   nil,   nil,   nil,
     518   nil,   259,   nil,   nil,   nil,   553,   nil,   nil,   nil,   nil,
     519   nil,   nil,   nil,   549,   nil,   nil,   522,   nil,   nil,   nil,
     520   nil,   nil,   nil,   nil,   nil,   nil,   594,   555,   nil,   nil,
     521   273,   nil,    47,   nil,   567,   569,   nil,   572,   nil,   nil,
     522   349,   361,   369,   375,   415,   nil,   nil,   607,   nil,   524,
     523   nil,   nil,   551,   nil,   598,   600,   nil,   nil,   nil,   nil,
    521524   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    522525   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     
    524527   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    525528   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    526    632 ]
     529   631 ]
    527530
    528531racc_goto_check = [
    529     56,    81,    34,    15,    22,    23,    83,   104,    24,    15,
    530    115,    23,    78,    84,    26,    59,    72,    48,    62,    88,
    531     71,    55,   105,   109,    66,    87,    60,    69,    56,    14,
    532     53,    23,     1,    82,    60,    23,    51,    50,    58,    54,
    533     53,    60,    81,    69,    14,    39,    37,    83,    56,    55,
    534    105,    54,    36,    86,    84,    25,    68,    20,    52,    18,
    535     88,    71,    74,    75,    76,    77,    87,    59,    17,    79,
    536     62,    80,   109,    16,    82,   109,    72,   109,    85,   109,
    537    109,    48,   109,    26,    66,   110,   110,    23,   110,    13,
    538    110,    12,    11,   110,    86,    10,     9,     8,     7,    90,
    539     91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
    540    101,    15,    56,    23,    56,    56,    56,    56,    56,    85,
    541    102,   103,     6,     5,   106,   108,     4,     3,   112,   113,
    542    114,     2,   116,    81,   127,   129,   nil,   nil,   nil,   nil,
    543    109,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    544    nil,    88,   nil,   nil,    81,   nil,   nil,    87,   nil,   nil,
    545    nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,   nil,
    546    nil,   nil,   nil,   nil,   nil,   nil,    78,   nil,    78,   nil,
    547    nil,    81,   nil,   nil,   nil,    86,    82,    83,   nil,   nil,
    548     83,   nil,   nil,   nil,   nil,    81,    84,   nil,    81,    84,
    549     81,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    550     85,   nil,    82,    88,    87,    82,    88,   nil,    88,    87,
    551     88,    88,    87,    88,    87,   nil,    87,    82,    87,   nil,
    552     82,   nil,    82,   nil,    82,   nil,   nil,   nil,   nil,   nil,
    553     86,   nil,   nil,    86,   nil,   nil,   nil,    86,   nil,   nil,
    554     86,   nil,    86,   115,    86,   nil,    24,   nil,   nil,   nil,
    555     81,   nil,   nil,    85,   nil,   nil,    85,   nil,   nil,   nil,
    556    nil,   nil,    85,   nil,   nil,    85,   nil,    85,   nil,    85,
    557    nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,
    558    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    559    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    560    nil,   104,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    561     82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    562     87,   nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    563    nil,   nil,    83,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    564     86,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
    565    nil,    81,    88,   nil,   nil,   nil,   nil,    87,   nil,   nil,
    566    nil,   nil,    82,    85,   nil,   nil,   nil,   nil,   nil,   nil,
    567    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,
    568    nil,    82,   nil,    87,    86,    82,   nil,   nil,   nil,   nil,
    569    nil,    81,   nil,   nil,   nil,   nil,   nil,    87,   nil,    88,
    570    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,    86,
    571    nil,   nil,   nil,   nil,   nil,    81,   nil,    86,   nil,    22,
    572    nil,    81,   nil,    82,   nil,   nil,   nil,    88,   nil,    23,
    573    nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    574     85,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,
    575    nil,   nil,   nil,    87,   nil,    82,   nil,   nil,   nil,   nil,
    576     81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    577    nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,    86,
    578     15,   nil,    23,   nil,   nil,    23,    23,   nil,    88,    88,
    579     88,    88,    82,    81,   nil,   nil,    34,   nil,    23,   nil,
    580    nil,   nil,    85,    81,    81,   nil,   nil,   nil,   nil,   nil,
     532    56,    80,    23,    34,    15,    22,   103,    82,    23,    24,
     533    15,   114,    83,   108,    77,    81,    58,    48,    71,    61,
     534    26,    65,    70,    55,   104,    14,    59,    23,    56,    54,
     535    86,    23,    68,     1,    51,    53,    59,    50,    57,    39,
     536    14,    54,    84,    80,    59,    53,    37,    68,    56,    82,
     537    87,    55,   104,    36,    83,    25,    67,    81,    20,    52,
     538   108,    18,    73,   108,    70,   108,    74,   108,   108,    75,
     539   108,    76,    86,    26,    17,    78,    79,    71,    16,    85,
     540    65,    13,    12,    11,    84,    10,   109,   109,     9,   109,
     541    58,   109,    87,    61,   109,     8,     7,    89,    90,    91,
     542    92,    93,    94,    95,    96,    23,    97,    98,    99,    23,
     543   100,    15,    56,   101,    56,    56,    56,    56,    56,    48,
     544   102,    85,     6,     5,   105,   107,     4,     3,   111,   112,
     545   108,   113,     2,   115,    80,   126,   128,   nil,   nil,   nil,
     546   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,
     547   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,
     548   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,    81,   nil,
     549   nil,   nil,   nil,   nil,   nil,    84,    77,   nil,    77,   nil,
     550   nil,   nil,   nil,    87,   nil,   nil,   nil,    82,   nil,   nil,
     551    82,   nil,   nil,   nil,    83,    80,    81,    83,   nil,    80,
     552   nil,    80,    80,   nil,   nil,   nil,   nil,   nil,    80,    81,
     553    80,   nil,    85,    81,   nil,    81,    81,   nil,    86,   nil,
     554   nil,   nil,    86,    81,    86,   nil,    84,   nil,    86,    84,
     555    86,    86,   nil,   nil,   nil,   nil,    84,   nil,   nil,   nil,
     556    84,    87,    84,    84,    87,   nil,   nil,   nil,    87,   nil,
     557    87,    87,   nil,    87,   114,   nil,   nil,   nil,   nil,   nil,
     558   nil,    80,   nil,   nil,   nil,    85,   nil,   nil,    85,   nil,
     559   nil,   nil,   nil,    85,   nil,    24,   nil,    85,   nil,    85,
     560    85,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     561   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
     562   nil,   nil,   nil,   103,   nil,   nil,   nil,   nil,   nil,   nil,
     563   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    80,
     564   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,
     565   nil,   nil,   nil,    80,    84,   nil,   nil,   nil,   nil,   nil,
     566   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
     567    82,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,
     568   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,
     569    80,   nil,    81,    85,    81,   nil,   nil,    84,   nil,   nil,
     570   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,   nil,
     571   nil,   nil,   nil,   nil,   nil,    86,   nil,    80,   nil,   nil,
     572   nil,   nil,   nil,    84,   nil,    86,   nil,   nil,   nil,   nil,
     573   nil,   nil,   nil,    84,   nil,    85,   nil,    87,   nil,   nil,
     574   nil,   nil,   nil,    80,   nil,   nil,    80,   nil,   nil,   nil,
     575   nil,   nil,   nil,    87,    22,   nil,   nil,    81,   nil,    80,
     576   nil,   nil,    85,   nil,    81,   nil,   nil,   nil,   nil,   nil,
     577   nil,   nil,    85,   nil,   nil,   nil,    23,   nil,   nil,   nil,
     578   nil,    87,   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,
     579   nil,   nil,   nil,    84,   nil,   nil,    80,   nil,   nil,   nil,
     580   nil,   nil,   nil,   nil,   nil,   nil,    22,    87,   nil,   nil,
     581    81,   nil,    23,   nil,    15,    23,   nil,    23,   nil,   nil,
     582    87,    87,    87,    87,    80,   nil,   nil,    34,   nil,    23,
     583   nil,   nil,    85,   nil,    80,    80,   nil,   nil,   nil,   nil,
    581584   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    582585   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     
    587590
    588591racc_goto_pointer = [
    589    nil,    32,   131,   127,   120,   110,   102,    71,    64,    43,
    590     25,    92,    87,    78,    18,   -25,    19,    14,     5,   nil,
    591   -157,   nil,   -85,   -23,  -206,  -159,  -448,   nil,   nil,   nil,
    592    nil,   nil,   nil,   nil,   -89,   nil,  -552,  -564,   nil,  -170,
    593    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -197,   nil,
    594   -425,  -236,  -335,  -579,  -575,   -33,   -54,   nil,    -5,   -43,
    595    -26,   nil,   -40,   nil,   nil,   nil,   -24,   nil,     9,   -20,
    596    nil,   -42,   -32,   nil,   -46,   -40,   -39,   -38,   -91,   -34,
    597   -339,   -61,   -29,   -56,   -49,    16,    -9,   -37,   -43,   nil,
    598     -4,    -3,    -2,    -1,     0,     1,     2,     3,     4,     5,
    599      6,     7,    17,    18,   -96,   -32,    29,   nil,    46,   -79,
    600    -67,   nil,   -20,  -383,  -434,  -311,  -354,   nil,   nil,   nil,
    601    nil,   nil,   nil,   nil,   nil,   nil,   nil,  -440,   nil,  -402 ]
     592   nil,    33,   132,   127,   120,   110,   102,    69,    62,    36,
     593    16,    83,    78,    70,    14,   -24,    25,    21,     8,   nil,
     594  -158,   nil,   -83,   -26,  -207,  -161,  -462,   nil,   nil,   nil,
     595   nil,   nil,   nil,   nil,   -87,   nil,  -550,  -563,   nil,  -174,
     596   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -199,   nil,
     597  -445,  -278,  -347,  -573,  -584,   -30,   -53,    -4,   -41,   -23,
     598   nil,   -38,   nil,   nil,   nil,   -26,   nil,    10,   -14,   nil,
     599   -38,   -29,   nil,   -44,   -36,   -33,   -31,   -88,   -27,  -326,
     600   -59,   -45,   -53,   -48,   -18,    19,   -30,   -10,   nil,    -5,
     601    -4,    -3,    -2,    -1,     0,     1,     2,     4,     5,     6,
     602     8,    11,    18,   -96,   -29,    30,   nil,    47,   -88,   -63,
     603   nil,   -16,  -386,  -432,  -309,  -352,   nil,   nil,   nil,   nil,
     604   nil,   nil,   nil,   nil,   nil,   nil,  -438,   nil,  -404 ]
    602605
    603606racc_goto_default = [
    604607   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    605    nil,   nil,   nil,   nil,   nil,   nil,   nil,   539,   nil,    85,
    606    nil,    89,   nil,   143,   nil,   nil,   nil,   524,   525,   527,
    607    528,   530,   533,   536,    93,   538,   nil,   nil,   514,   516,
    608    291,   294,   297,   301,   305,   308,   313,   318,   nil,   274,
    609    nil,   nil,   nil,   nil,   615,   616,   617,    50,    52,    37,
    610     39,    42,   nil,   107,    44,    45,    46,    47,   nil,   nil,
    611     61,   nil,    41,    43,   106,   nil,   nil,   nil,   nil,   nil,
    612    130,    72,    74,   nil,   nil,   292,   295,   299,   302,   127,
    613    312,   317,   282,   nil,   nil,   nil,   nil,   nil,   nil,   304,
    614    307,   311,   316,   280,   285,   nil,    80,    83,    86,    88,
    615     90,    94,    99,   nil,   nil,   nil,   414,   290,   293,   296,
    616    300,   303,   306,   310,   315,   279,   529,   532,   535,   nil ]
     608   nil,   nil,   nil,   nil,   nil,   nil,   nil,   542,   nil,    84,
     609   nil,    88,   nil,   142,   nil,   nil,   nil,   527,   528,   530,
     610   532,   534,   537,   539,    93,   541,   nil,   nil,   517,   519,
     611   281,   284,   287,   292,   295,   299,   304,   310,   nil,   314,
     612   nil,   nil,   nil,   nil,   614,   615,   616,    49,    51,    37,
     613    40,   nil,   105,    43,    44,    45,    46,   nil,   nil,    63,
     614   nil,    39,    42,   104,   nil,   nil,   nil,   nil,   nil,   126,
     615    99,    71,   nil,   nil,   279,   282,   285,   289,   124,   298,
     616   303,   308,   nil,   nil,   nil,   nil,   nil,   nil,   291,   294,
     617   297,   302,   307,   271,   nil,    76,    79,    82,    85,    87,
     618    89,    92,   nil,   nil,   nil,   412,   277,   280,   283,   286,
     619   290,   293,   296,   301,   305,   531,   533,   536,   nil ]
    617620
    618621racc_reduce_table = [
     
    704707  2, 105, :_reduce_85,
    705708  2, 105, :_reduce_none,
    706   1, 110, :_reduce_none,
    707   1, 152, :_reduce_none,
    708   1, 152, :_reduce_none,
    709   1, 153, :_reduce_90,
    710   2, 153, :_reduce_91,
    711   3, 153, :_reduce_92,
    712   3, 155, :_reduce_93,
    713   1, 156, :_reduce_94,
    714   2, 156, :_reduce_none,
    715   1, 157, :_reduce_96,
    716   1, 157, :_reduce_97,
    717   1, 154, :_reduce_98,
    718   1, 154, :_reduce_99,
    719   1, 160, :_reduce_100,
    720   2, 160, :_reduce_101,
    721   3, 161, :_reduce_102,
     709  1, 110, :_reduce_87,
     710  1, 110, :_reduce_88,
     711  1, 152, :_reduce_89,
     712  2, 152, :_reduce_90,
     713  3, 152, :_reduce_91,
     714  3, 154, :_reduce_92,
     715  1, 155, :_reduce_93,
     716  2, 155, :_reduce_none,
     717  1, 156, :_reduce_95,
     718  1, 156, :_reduce_96,
     719  1, 153, :_reduce_97,
     720  1, 153, :_reduce_98,
     721  1, 159, :_reduce_99,
     722  2, 159, :_reduce_100,
     723  3, 160, :_reduce_101,
     724  1, 161, :_reduce_102,
    722725  1, 162, :_reduce_103,
    723   1, 163, :_reduce_104,
    724   2, 163, :_reduce_105,
     726  2, 162, :_reduce_104,
     727  3, 163, :_reduce_105,
    725728  3, 164, :_reduce_106,
    726   3, 165, :_reduce_107,
    727   1, 159, :_reduce_108,
    728   2, 159, :_reduce_109,
    729   2, 167, :_reduce_110,
    730   3, 167, :_reduce_111,
    731   1, 168, :_reduce_none,
    732   1, 158, :_reduce_113,
    733   2, 158, :_reduce_114,
    734   3, 169, :_reduce_115,
    735   1, 170, :_reduce_116,
    736   1, 170, :_reduce_117,
    737   1, 170, :_reduce_118,
    738   1, 170, :_reduce_119,
    739   1, 170, :_reduce_120,
    740   1, 166, :_reduce_121,
    741   1, 166, :_reduce_122,
    742   1, 166, :_reduce_123,
    743   1, 166, :_reduce_124,
    744   1, 166, :_reduce_125,
    745   1, 166, :_reduce_126,
    746   1, 166, :_reduce_127,
    747   1, 166, :_reduce_128,
    748   1, 166, :_reduce_129,
    749   1, 166, :_reduce_130,
     729  1, 158, :_reduce_107,
     730  2, 158, :_reduce_108,
     731  2, 166, :_reduce_109,
     732  3, 166, :_reduce_110,
     733  1, 167, :_reduce_none,
     734  1, 157, :_reduce_112,
     735  2, 157, :_reduce_113,
     736  3, 168, :_reduce_114,
     737  1, 169, :_reduce_115,
     738  1, 169, :_reduce_116,
     739  1, 169, :_reduce_117,
     740  1, 169, :_reduce_118,
     741  1, 169, :_reduce_119,
     742  1, 165, :_reduce_120,
     743  1, 165, :_reduce_121,
     744  1, 165, :_reduce_122,
     745  1, 165, :_reduce_123,
     746  1, 165, :_reduce_124,
     747  1, 165, :_reduce_125,
     748  1, 165, :_reduce_126,
     749  1, 165, :_reduce_127,
     750  1, 165, :_reduce_128,
     751  1, 165, :_reduce_129,
     752  1, 170, :_reduce_none,
     753  1, 170, :_reduce_none,
     754  1, 170, :_reduce_none,
     755  1, 170, :_reduce_none,
     756  1, 170, :_reduce_none,
     757  1, 170, :_reduce_none,
     758  1, 170, :_reduce_none,
     759  1, 170, :_reduce_none,
     760  1, 170, :_reduce_none,
    750761  1, 171, :_reduce_none,
    751762  1, 171, :_reduce_none,
     
    754765  1, 171, :_reduce_none,
    755766  1, 171, :_reduce_none,
    756   1, 171, :_reduce_none,
    757   1, 171, :_reduce_none,
    758   1, 171, :_reduce_none,
    759   1, 172, :_reduce_none,
    760   1, 172, :_reduce_none,
    761   1, 172, :_reduce_none,
    762   1, 172, :_reduce_none,
    763   1, 172, :_reduce_none,
    764   1, 172, :_reduce_none,
     767  1, 118, :_reduce_145,
    765768  1, 118, :_reduce_146,
    766   1, 118, :_reduce_147,
    767   1, 175, :_reduce_148,
     769  1, 174, :_reduce_147,
     770  3, 184, :_reduce_none,
     771  3, 184, :_reduce_none,
     772  3, 184, :_reduce_none,
     773  1, 175, :_reduce_151,
     774  2, 175, :_reduce_152,
     775  2, 175, :_reduce_153,
    768776  3, 185, :_reduce_none,
    769777  3, 185, :_reduce_none,
    770778  3, 185, :_reduce_none,
    771   1, 176, :_reduce_152,
    772   2, 176, :_reduce_153,
    773   2, 176, :_reduce_154,
     779  5, 193, :_reduce_none,
     780  6, 193, :_reduce_none,
     781  6, 193, :_reduce_none,
     782  7, 193, :_reduce_none,
     783  4, 193, :_reduce_none,
     784  4, 193, :_reduce_none,
     785  4, 193, :_reduce_none,
     786  4, 193, :_reduce_none,
     787  3, 193, :_reduce_none,
     788  1, 176, :_reduce_166,
     789  2, 176, :_reduce_167,
     790  2, 176, :_reduce_168,
    774791  3, 186, :_reduce_none,
    775792  3, 186, :_reduce_none,
     
    784801  4, 194, :_reduce_none,
    785802  3, 194, :_reduce_none,
    786   1, 177, :_reduce_167,
    787   2, 177, :_reduce_168,
    788   2, 177, :_reduce_169,
     803  1, 177, :_reduce_181,
     804  1, 177, :_reduce_182,
    789805  3, 187, :_reduce_none,
    790806  3, 187, :_reduce_none,
    791807  3, 187, :_reduce_none,
     808  1, 178, :_reduce_none,
     809  3, 188, :_reduce_none,
     810  3, 188, :_reduce_none,
     811  3, 188, :_reduce_none,
     812  1, 179, :_reduce_190,
     813  3, 189, :_reduce_none,
     814  3, 189, :_reduce_none,
     815  3, 189, :_reduce_none,
    792816  5, 195, :_reduce_none,
    793817  6, 195, :_reduce_none,
     
    799823  4, 195, :_reduce_none,
    800824  3, 195, :_reduce_none,
    801   1, 178, :_reduce_182,
    802   1, 178, :_reduce_183,
    803   3, 188, :_reduce_none,
    804   3, 188, :_reduce_none,
    805   3, 188, :_reduce_none,
    806   1, 179, :_reduce_none,
    807   3, 189, :_reduce_none,
    808   3, 189, :_reduce_none,
    809   3, 189, :_reduce_none,
    810   1, 180, :_reduce_191,
     825  1, 180, :_reduce_none,
    811826  3, 190, :_reduce_none,
    812827  3, 190, :_reduce_none,
     
    834849  4, 197, :_reduce_none,
    835850  3, 197, :_reduce_none,
    836   1, 182, :_reduce_none,
     851  1, 182, :_reduce_229,
    837852  3, 192, :_reduce_none,
    838853  3, 192, :_reduce_none,
     
    847862  4, 198, :_reduce_none,
    848863  3, 198, :_reduce_none,
    849   1, 183, :_reduce_230,
    850   3, 193, :_reduce_none,
    851   3, 193, :_reduce_none,
    852   3, 193, :_reduce_none,
    853   5, 199, :_reduce_none,
    854   6, 199, :_reduce_none,
    855   6, 199, :_reduce_none,
    856   7, 199, :_reduce_none,
    857   4, 199, :_reduce_none,
    858   4, 199, :_reduce_none,
    859   4, 199, :_reduce_none,
    860   4, 199, :_reduce_none,
    861   3, 199, :_reduce_none,
    862   1, 173, :_reduce_243,
    863   3, 174, :_reduce_none,
    864   3, 174, :_reduce_none,
    865   3, 174, :_reduce_none,
    866   1, 184, :_reduce_247,
     864  1, 172, :_reduce_242,
     865  3, 173, :_reduce_none,
     866  3, 173, :_reduce_none,
     867  3, 173, :_reduce_none,
     868  1, 183, :_reduce_246,
    867869  1, 113, :_reduce_none,
    868870  2, 113, :_reduce_none,
     871  3, 199, :_reduce_none,
     872  1, 199, :_reduce_none,
     873  3, 199, :_reduce_none,
     874  1, 151, :_reduce_none,
     875  1, 151, :_reduce_none,
     876  2, 201, :_reduce_none,
     877  2, 201, :_reduce_none,
     878  5, 201, :_reduce_none,
     879  5, 201, :_reduce_none,
     880  2, 201, :_reduce_none,
     881  3, 201, :_reduce_none,
     882  3, 201, :_reduce_none,
     883  3, 201, :_reduce_none,
     884  3, 201, :_reduce_none,
     885  3, 201, :_reduce_none,
     886  3, 201, :_reduce_none,
     887  3, 201, :_reduce_none,
     888  3, 201, :_reduce_none,
     889  3, 201, :_reduce_none,
     890  3, 201, :_reduce_none,
    869891  3, 200, :_reduce_none,
    870892  1, 200, :_reduce_none,
    871   3, 200, :_reduce_none,
    872   1, 151, :_reduce_none,
    873   1, 151, :_reduce_none,
    874   2, 202, :_reduce_none,
    875   2, 202, :_reduce_none,
    876   5, 202, :_reduce_none,
    877   5, 202, :_reduce_none,
    878   2, 202, :_reduce_none,
    879   3, 202, :_reduce_none,
    880   3, 202, :_reduce_none,
    881   3, 202, :_reduce_none,
    882   3, 202, :_reduce_none,
    883   3, 202, :_reduce_none,
    884   3, 202, :_reduce_none,
    885   3, 202, :_reduce_none,
    886   3, 202, :_reduce_none,
    887   3, 202, :_reduce_none,
    888   3, 202, :_reduce_none,
    889   3, 201, :_reduce_none,
    890   1, 201, :_reduce_none,
    891   1, 201, :_reduce_none,
     893  1, 200, :_reduce_none,
     894  1, 203, :_reduce_none,
     895  1, 203, :_reduce_none,
     896  3, 205, :_reduce_none,
     897  3, 205, :_reduce_none,
     898  3, 205, :_reduce_none,
     899  3, 205, :_reduce_none,
     900  3, 205, :_reduce_none,
     901  3, 204, :_reduce_none,
    892902  1, 204, :_reduce_none,
    893903  1, 204, :_reduce_none,
    894   3, 206, :_reduce_none,
    895   3, 206, :_reduce_none,
    896   3, 206, :_reduce_none,
    897   3, 206, :_reduce_none,
    898   3, 206, :_reduce_none,
    899   3, 205, :_reduce_none,
    900   1, 205, :_reduce_none,
    901   1, 205, :_reduce_none,
    902   1, 205, :_reduce_none,
     904  1, 204, :_reduce_none,
    903905  1, 129, :_reduce_none,
    904906  2, 129, :_reduce_none,
    905   1, 203, :_reduce_none,
    906   3, 203, :_reduce_none,
    907   2, 207, :_reduce_288,
    908   1, 207, :_reduce_289,
    909   0, 146, :_reduce_290,
    910   5, 146, :_reduce_291,
    911   1, 208, :_reduce_292,
    912   3, 208, :_reduce_293,
    913   5, 147, :_reduce_294,
    914   1, 209, :_reduce_none,
    915   3, 209, :_reduce_none,
    916   3, 209, :_reduce_none,
    917   3, 209, :_reduce_none,
    918   5, 209, :_reduce_none,
    919   5, 209, :_reduce_none,
    920   5, 209, :_reduce_none,
    921   5, 209, :_reduce_none,
    922   1, 211, :_reduce_303,
    923   1, 211, :_reduce_304,
     907  1, 202, :_reduce_none,
     908  3, 202, :_reduce_none,
     909  2, 206, :_reduce_287,
     910  1, 206, :_reduce_288,
     911  0, 146, :_reduce_289,
     912  5, 146, :_reduce_290,
     913  1, 207, :_reduce_291,
     914  3, 207, :_reduce_292,
     915  5, 147, :_reduce_293,
     916  1, 208, :_reduce_none,
     917  3, 208, :_reduce_none,
     918  3, 208, :_reduce_none,
     919  3, 208, :_reduce_none,
     920  5, 208, :_reduce_none,
     921  5, 208, :_reduce_none,
     922  5, 208, :_reduce_none,
     923  5, 208, :_reduce_none,
     924  1, 210, :_reduce_302,
     925  1, 210, :_reduce_303,
    924926  0, 117, :_reduce_none,
    925   5, 117, :_reduce_306,
     927  5, 117, :_reduce_305,
    926928  2, 117, :_reduce_none,
    927   1, 210, :_reduce_none,
    928   3, 210, :_reduce_none,
     929  1, 209, :_reduce_307,
     930  3, 209, :_reduce_308,
     931  1, 211, :_reduce_none,
     932  1, 211, :_reduce_none,
     933  1, 211, :_reduce_none,
     934  1, 135, :_reduce_none,
     935  3, 135, :_reduce_none,
     936  3, 135, :_reduce_none,
    929937  1, 212, :_reduce_none,
    930938  1, 212, :_reduce_none,
    931939  1, 212, :_reduce_none,
    932   1, 135, :_reduce_none,
    933   3, 135, :_reduce_none,
    934   3, 135, :_reduce_none,
     940  1, 136, :_reduce_none,
     941  3, 136, :_reduce_none,
     942  3, 136, :_reduce_none,
    935943  1, 213, :_reduce_none,
    936944  1, 213, :_reduce_none,
    937945  1, 213, :_reduce_none,
    938   1, 136, :_reduce_none,
    939   3, 136, :_reduce_none,
    940   3, 136, :_reduce_none,
     946  1, 137, :_reduce_none,
     947  3, 137, :_reduce_none,
     948  3, 137, :_reduce_none,
    941949  1, 214, :_reduce_none,
    942950  1, 214, :_reduce_none,
    943951  1, 214, :_reduce_none,
    944   1, 137, :_reduce_none,
    945   3, 137, :_reduce_none,
    946   3, 137, :_reduce_none,
     952  1, 138, :_reduce_none,
     953  3, 138, :_reduce_none,
     954  3, 138, :_reduce_none,
    947955  1, 215, :_reduce_none,
    948956  1, 215, :_reduce_none,
    949957  1, 215, :_reduce_none,
    950   1, 138, :_reduce_none,
    951   3, 138, :_reduce_none,
    952   3, 138, :_reduce_none,
    953   1, 216, :_reduce_none,
    954   1, 216, :_reduce_none,
    955   1, 216, :_reduce_none,
    956958  1, 139, :_reduce_none,
    957959  3, 139, :_reduce_none,
    958960  3, 139, :_reduce_none,
    959   1, 217, :_reduce_none,
    960   3, 217, :_reduce_none,
    961   1, 217, :_reduce_none,
    962   1, 217, :_reduce_none,
     961  1, 216, :_reduce_none,
     962  3, 216, :_reduce_none,
     963  1, 216, :_reduce_none,
     964  1, 216, :_reduce_none,
    963965  1, 140, :_reduce_none,
    964966  3, 140, :_reduce_none,
    965967  3, 140, :_reduce_none,
    966   1, 219, :_reduce_none,
    967   1, 219, :_reduce_none,
    968   3, 219, :_reduce_none,
     968  1, 218, :_reduce_none,
     969  1, 218, :_reduce_none,
     970  3, 218, :_reduce_none,
    969971  1, 141, :_reduce_none,
    970972  3, 141, :_reduce_none,
    971973  3, 141, :_reduce_none,
    972   1, 220, :_reduce_353,
    973   1, 220, :_reduce_354,
    974   3, 220, :_reduce_355,
    975   3, 220, :_reduce_356,
    976   1, 142, :_reduce_357,
     974  1, 219, :_reduce_352,
     975  1, 219, :_reduce_353,
     976  3, 219, :_reduce_354,
     977  3, 219, :_reduce_355,
     978  1, 142, :_reduce_356,
     979  3, 142, :_reduce_357,
    977980  3, 142, :_reduce_358,
    978   3, 142, :_reduce_359,
    979981  1, 126, :_reduce_none,
    980982  3, 126, :_reduce_none,
    981983  3, 126, :_reduce_none,
    982   1, 221, :_reduce_none,
    983   3, 221, :_reduce_none,
    984   3, 222, :_reduce_365,
     984  1, 220, :_reduce_none,
     985  3, 220, :_reduce_none,
     986  3, 221, :_reduce_364,
     987  1, 125, :_reduce_365,
    985988  1, 125, :_reduce_366,
    986   1, 125, :_reduce_367,
    987   3, 223, :_reduce_368,
    988   0, 224, :_reduce_none,
    989   1, 224, :_reduce_none,
    990   2, 224, :_reduce_none,
    991   1, 124, :_reduce_372,
     989  3, 222, :_reduce_367,
     990  0, 223, :_reduce_none,
     991  1, 223, :_reduce_none,
     992  2, 223, :_reduce_none,
     993  1, 124, :_reduce_371,
     994  1, 150, :_reduce_372,
    992995  1, 150, :_reduce_373,
    993   1, 150, :_reduce_374,
    994   1, 218, :_reduce_375 ]
    995 
    996 racc_reduce_n = 376
    997 
    998 racc_shift_n = 633
     996  1, 217, :_reduce_374 ]
     997
     998racc_reduce_n = 375
     999
     1000racc_shift_n = 632
    9991001
    10001002racc_token_table = {
     
    12681270  "any_identifier",
    12691271  "boolean_expression",
    1270   "dadl_input",
    12711272  "attr_vals",
    12721273  "complex_object_block",
     
    13611362  def _reduce_3(val, _values, result)
    13621363        assert_at(__FILE__,__LINE__) do
    1363       val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY)
     1364      val[4].instance_of?(OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY)
    13641365    end
    13651366   
     
    13671368    parent_archtype_id = val[1][:parent_archtype_id] if val[1]
    13681369    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
    1369     concept = val[2]
     1370    concept = val[2][:arch_concept]
    13701371    language = val[3][:arch_language]
    1371     archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
     1372    archetype = OpenEhr::AM::Archetype::ARCHETYPE.create(
    13721373                                                         :archetype_id => archetype_id,
    13731374                                                         :parent_archtype_id => parent_archtype_id,
     
    15031504module_eval(<<'.,.,', 'parser.y', 139)
    15041505  def _reduce_22(val, _values, result)
    1505         result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
     1506        result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
    15061507 
    15071508    result
     
    15231524module_eval(<<'.,.,', 'parser.y', 155)
    15241525  def _reduce_26(val, _values, result)
    1525         assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
     1526        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
    15261527    @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
    15271528    result = val[0]
     
    15411542module_eval(<<'.,.,', 'parser.y', 168)
    15421543  def _reduce_28(val, _values, result)
    1543         result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     1544        result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    15441545      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
    15451546      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     
    15531554module_eval(<<'.,.,', 'parser.y', 176)
    15541555  def _reduce_29(val, _values, result)
    1555         result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     1556        result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    15561557      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
    15571558      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     
    15911592module_eval(<<'.,.,', 'parser.y', 202)
    15921593  def _reduce_34(val, _values, result)
    1593         result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
     1594        result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
    15941595 
    15951596    result
     
    16081609module_eval(<<'.,.,', 'parser.y', 225)
    16091610  def _reduce_36(val, _values, result)
    1610         result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
     1611        result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
    16111612      archetype_internal_ref.target_path = val[0][:absolute_path]
    16121613      archetype_internal_ref.rm_type_name = val[0][:type_identifier]
     
    16281629module_eval(<<'.,.,', 'parser.y', 237)
    16291630  def _reduce_38(val, _values, result)
    1630         result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|
     1631        result = OpenEhr::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|
    16311632      constraint_ref.reference = val[0]
    16321633    end
     
    16721673# reduce 44 omitted
    16731674
    1674 module_eval(<<'.,.,', 'parser.y', 271)
     1675module_eval(<<'.,.,', 'parser.y', 288)
    16751676  def _reduce_45(val, _values, result)
    16761677        result = val[1]
     
    16801681.,.,
    16811682
    1682 module_eval(<<'.,.,', 'parser.y', 277)
     1683module_eval(<<'.,.,', 'parser.y', 294)
    16831684  def _reduce_46(val, _values, result)
    16841685        result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
     
    16901691# reduce 47 omitted
    16911692
    1692 module_eval(<<'.,.,', 'parser.y', 284)
     1693module_eval(<<'.,.,', 'parser.y', 301)
    16931694  def _reduce_48(val, _values, result)
    1694         result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|
     1695        result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|
    16951696      archetype_slot.includes = val[3]
    16961697      archetype_slot.excludes = val[4]
     
    17031704.,.,
    17041705
    1705 module_eval(<<'.,.,', 'parser.y', 293)
     1706module_eval(<<'.,.,', 'parser.y', 310)
    17061707  def _reduce_49(val, _values, result)
    17071708        result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
     
    17111712.,.,
    17121713
    1713 module_eval(<<'.,.,', 'parser.y', 298)
     1714module_eval(<<'.,.,', 'parser.y', 315)
    17141715  def _reduce_50(val, _values, result)
    17151716        result = val[1]
     
    17231724# reduce 52 omitted
    17241725
    1725 module_eval(<<'.,.,', 'parser.y', 306)
     1726module_eval(<<'.,.,', 'parser.y', 323)
    17261727  def _reduce_53(val, _values, result)
    1727         assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
    1728     result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|
     1728        assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
     1729    result = OpenEhr::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|
    17291730      c_primitive_object.item = val[0]
    17301731    end
     
    17341735.,.,
    17351736
    1736 module_eval(<<'.,.,', 'parser.y', 314)
     1737module_eval(<<'.,.,', 'parser.y', 331)
    17371738  def _reduce_54(val, _values, result)
    17381739        @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
    1739     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|
     1740    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|
    17401741      c_integer.list
    17411742      c_integer.range
     
    17471748.,.,
    17481749
    1749 module_eval(<<'.,.,', 'parser.y', 323)
     1750module_eval(<<'.,.,', 'parser.y', 340)
    17501751  def _reduce_55(val, _values, result)
    17511752        @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
    1752     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
    1753  
    1754     result
    1755   end
    1756 .,.,
    1757 
    1758 module_eval(<<'.,.,', 'parser.y', 328)
     1753    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
     1754 
     1755    result
     1756  end
     1757.,.,
     1758
     1759module_eval(<<'.,.,', 'parser.y', 345)
    17591760  def _reduce_56(val, _values, result)
    17601761        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
    1761     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
    1762  
    1763     result
    1764   end
    1765 .,.,
    1766 
    1767 module_eval(<<'.,.,', 'parser.y', 333)
     1762    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
     1763 
     1764    result
     1765  end
     1766.,.,
     1767
     1768module_eval(<<'.,.,', 'parser.y', 350)
    17681769  def _reduce_57(val, _values, result)
    17691770        @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
    1770     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
    1771  
    1772     result
    1773   end
    1774 .,.,
    1775 
    1776 module_eval(<<'.,.,', 'parser.y', 338)
     1771    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
     1772 
     1773    result
     1774  end
     1775.,.,
     1776
     1777module_eval(<<'.,.,', 'parser.y', 355)
    17771778  def _reduce_58(val, _values, result)
    17781779        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
    1779     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
    1780  
    1781     result
    1782   end
    1783 .,.,
    1784 
    1785 module_eval(<<'.,.,', 'parser.y', 343)
     1780    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
     1781 
     1782    result
     1783  end
     1784.,.,
     1785
     1786module_eval(<<'.,.,', 'parser.y', 360)
    17861787  def _reduce_59(val, _values, result)
    17871788        @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
    1788     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
    1789  
    1790     result
    1791   end
    1792 .,.,
    1793 
    1794 module_eval(<<'.,.,', 'parser.y', 348)
     1789    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
     1790 
     1791    result
     1792  end
     1793.,.,
     1794
     1795module_eval(<<'.,.,', 'parser.y', 365)
    17951796  def _reduce_60(val, _values, result)
    17961797        @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
    1797     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
    1798  
    1799     result
    1800   end
    1801 .,.,
    1802 
    1803 module_eval(<<'.,.,', 'parser.y', 353)
     1798    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
     1799 
     1800    result
     1801  end
     1802.,.,
     1803
     1804module_eval(<<'.,.,', 'parser.y', 370)
    18041805  def _reduce_61(val, _values, result)
    1805         assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
     1806        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
    18061807    @@logger.debug("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
    18071808    result = val[0]
     
    18131814# reduce 62 omitted
    18141815
    1815 module_eval(<<'.,.,', 'parser.y', 365)
     1816module_eval(<<'.,.,', 'parser.y', 382)
    18161817  def _reduce_63(val, _values, result)
    18171818        result = [val[0]]
     
    18211822.,.,
    18221823
    1823 module_eval(<<'.,.,', 'parser.y', 369)
     1824module_eval(<<'.,.,', 'parser.y', 386)
    18241825  def _reduce_64(val, _values, result)
    18251826        result = (val[0] << val[1])
     
    18291830.,.,
    18301831
    1831 module_eval(<<'.,.,', 'parser.y', 375)
     1832module_eval(<<'.,.,', 'parser.y', 392)
    18321833  def _reduce_65(val, _values, result)
    1833         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     1834        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    18341835    c_attribute = val[0]
    18351836    c_attribute.children = val[3]
     
    18401841.,.,
    18411842
    1842 module_eval(<<'.,.,', 'parser.y', 382)
     1843module_eval(<<'.,.,', 'parser.y', 399)
    18431844  def _reduce_66(val, _values, result)
    1844         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     1845        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    18451846    result = val[0]
    18461847 
     
    18491850.,.,
    18501851
    1851 module_eval(<<'.,.,', 'parser.y', 387)
     1852module_eval(<<'.,.,', 'parser.y', 404)
    18521853  def _reduce_67(val, _values, result)
    1853         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     1854        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    18541855    result = val[0]
    18551856 
     
    18581859.,.,
    18591860
    1860 module_eval(<<'.,.,', 'parser.y', 394)
     1861module_eval(<<'.,.,', 'parser.y', 411)
    18611862  def _reduce_68(val, _values, result)
    18621863        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
    1863     result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
     1864    result = OpenEhr::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
    18641865                                                                              :rm_attribute_name => val[0],
    18651866                                                                              :existence => val[1]
     
    18711872.,.,
    18721873
    1873 module_eval(<<'.,.,', 'parser.y', 403)
     1874module_eval(<<'.,.,', 'parser.y', 420)
    18741875  def _reduce_69(val, _values, result)
    1875         assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
     1876        assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY) }
    18761877    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
    1877     result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
     1878    result = OpenEhr::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
    18781879                                                                                :rm_attribute_name => val[0],
    18791880                                                                                :existence => val[1],
     
    18851886.,.,
    18861887
    1887 module_eval(<<'.,.,', 'parser.y', 414)
     1888module_eval(<<'.,.,', 'parser.y', 431)
    18881889  def _reduce_70(val, _values, result)
    18891890        result = Array[val[0]]
     
    18931894.,.,
    18941895
    1895 module_eval(<<'.,.,', 'parser.y', 418)
     1896module_eval(<<'.,.,', 'parser.y', 435)
    18961897  def _reduce_71(val, _values, result)
    18971898        result = (val[0] << val[1])
     
    19011902.,.,
    19021903
    1903 module_eval(<<'.,.,', 'parser.y', 422)
     1904module_eval(<<'.,.,', 'parser.y', 439)
    19041905  def _reduce_72(val, _values, result)
    19051906        result = Array[val[0]]
     
    19111912# reduce 73 omitted
    19121913
    1913 module_eval(<<'.,.,', 'parser.y', 430)
     1914module_eval(<<'.,.,', 'parser.y', 447)
    19141915  def _reduce_74(val, _values, result)
    19151916        result = val[1]
     
    19211922# reduce 75 omitted
    19221923
    1923 module_eval(<<'.,.,', 'parser.y', 438)
     1924module_eval(<<'.,.,', 'parser.y', 455)
    19241925  def _reduce_76(val, _values, result)
    19251926        result = val[1]
     
    19451946# reduce 84 omitted
    19461947
    1947 module_eval(<<'.,.,', 'parser.y', 458)
     1948module_eval(<<'.,.,', 'parser.y', 475)
    19481949  def _reduce_85(val, _values, result)
    19491950        dadl_section = val[1]
    1950     result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     1951    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
    19511952 
    19521953    result
     
    19561957# reduce 86 omitted
    19571958
    1958 # reduce 87 omitted
    1959 
    1960 # reduce 88 omitted
    1961 
    1962 # reduce 89 omitted
    1963 
    1964 module_eval(<<'.,.,', 'parser.y', 473)
     1959module_eval(<<'.,.,', 'parser.y', 484)
     1960  def _reduce_87(val, _values, result)
     1961        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section\n attr_vals = #{val[0]}")
     1962    result = val[0]
     1963 
     1964    result
     1965  end
     1966.,.,
     1967
     1968module_eval(<<'.,.,', 'parser.y', 489)
     1969  def _reduce_88(val, _values, result)
     1970        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section\n complex_object_block = #{val[0]}")
     1971    result = val[0]
     1972 
     1973    result
     1974  end
     1975.,.,
     1976
     1977module_eval(<<'.,.,', 'parser.y', 496)
     1978  def _reduce_89(val, _values, result)
     1979        result = Array[val[0]]
     1980 
     1981    result
     1982  end
     1983.,.,
     1984
     1985module_eval(<<'.,.,', 'parser.y', 500)
    19651986  def _reduce_90(val, _values, result)
    1966         result = Array[val[0]]
    1967  
    1968     result
    1969   end
    1970 .,.,
    1971 
    1972 module_eval(<<'.,.,', 'parser.y', 477)
     1987        result = (val[0] << val[1])
     1988 
     1989    result
     1990  end
     1991.,.,
     1992
     1993module_eval(<<'.,.,', 'parser.y', 504)
    19731994  def _reduce_91(val, _values, result)
    1974         result = (val[0] << val[1])
    1975  
    1976     result
    1977   end
    1978 .,.,
    1979 
    1980 module_eval(<<'.,.,', 'parser.y', 481)
     1995        result = (val[0] << val[2])
     1996 
     1997    result
     1998  end
     1999.,.,
     2000
     2001module_eval(<<'.,.,', 'parser.y', 509)
    19812002  def _reduce_92(val, _values, result)
    1982         result = (val[0] << val[2])
    1983  
    1984     result
    1985   end
    1986 .,.,
    1987 
    1988 module_eval(<<'.,.,', 'parser.y', 486)
     2003        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
     2004    result = {:attr_id => val[0], :object_block => val[2]}
     2005 
     2006    result
     2007  end
     2008.,.,
     2009
     2010module_eval(<<'.,.,', 'parser.y', 515)
    19892011  def _reduce_93(val, _values, result)
    1990         @@logger.debug("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]} at #{@filename}:#{@lineno}")
    1991     result = {:attr_id => val[0], :object_block => val[2]}
    1992  
    1993     result
    1994   end
    1995 .,.,
    1996 
    1997 module_eval(<<'.,.,', 'parser.y', 492)
    1998   def _reduce_94(val, _values, result)
    1999         @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
     2012        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
    20002013    result = val[0]
    20012014 
     
    20042017.,.,
    20052018
    2006 # reduce 95 omitted
    2007 
    2008 module_eval(<<'.,.,', 'parser.y', 499)
     2019# reduce 94 omitted
     2020
     2021module_eval(<<'.,.,', 'parser.y', 522)
     2022  def _reduce_95(val, _values, result)
     2023        result = val[0]
     2024 
     2025    result
     2026  end
     2027.,.,
     2028
     2029module_eval(<<'.,.,', 'parser.y', 526)
    20092030  def _reduce_96(val, _values, result)
    20102031        result = val[0]
     
    20142035.,.,
    20152036
    2016 module_eval(<<'.,.,', 'parser.y', 503)
     2037module_eval(<<'.,.,', 'parser.y', 531)
    20172038  def _reduce_97(val, _values, result)
    20182039        result = val[0]
     
    20222043.,.,
    20232044
    2024 module_eval(<<'.,.,', 'parser.y', 508)
     2045module_eval(<<'.,.,', 'parser.y', 535)
    20252046  def _reduce_98(val, _values, result)
    20262047        result = val[0]
     
    20302051.,.,
    20312052
    2032 module_eval(<<'.,.,', 'parser.y', 512)
     2053module_eval(<<'.,.,', 'parser.y', 540)
    20332054  def _reduce_99(val, _values, result)
     2055        result = {:untyped_multiple_attr_object_block => val[0]}
     2056 
     2057    result
     2058  end
     2059.,.,
     2060
     2061module_eval(<<'.,.,', 'parser.y', 544)
     2062  def _reduce_100(val, _values, result)
     2063        result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
     2064 
     2065    result
     2066  end
     2067.,.,
     2068
     2069module_eval(<<'.,.,', 'parser.y', 549)
     2070  def _reduce_101(val, _values, result)
     2071        result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
     2072 
     2073    result
     2074  end
     2075.,.,
     2076
     2077module_eval(<<'.,.,', 'parser.y', 554)
     2078  def _reduce_102(val, _values, result)
    20342079        result = val[0]
    20352080 
     
    20382083.,.,
    20392084
    2040 module_eval(<<'.,.,', 'parser.y', 517)
    2041   def _reduce_100(val, _values, result)
    2042         result = {:untyped_multiple_attr_object_block => val[0]}
    2043  
    2044     result
    2045   end
    2046 .,.,
    2047 
    2048 module_eval(<<'.,.,', 'parser.y', 521)
    2049   def _reduce_101(val, _values, result)
    2050         result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
    2051  
    2052     result
    2053   end
    2054 .,.,
    2055 
    2056 module_eval(<<'.,.,', 'parser.y', 526)
    2057   def _reduce_102(val, _values, result)
    2058         result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
    2059  
    2060     result
    2061   end
    2062 .,.,
    2063 
    2064 module_eval(<<'.,.,', 'parser.y', 531)
     2085module_eval(<<'.,.,', 'parser.y', 559)
    20652086  def _reduce_103(val, _values, result)
    2066         result = val[0]
    2067  
    2068     result
    2069   end
    2070 .,.,
    2071 
    2072 module_eval(<<'.,.,', 'parser.y', 536)
     2087        result = Array[val[0]]
     2088 
     2089    result
     2090  end
     2091.,.,
     2092
     2093module_eval(<<'.,.,', 'parser.y', 563)
    20732094  def _reduce_104(val, _values, result)
    2074         result = Array[val[0]]
    2075  
    2076     result
    2077   end
    2078 .,.,
    2079 
    2080 module_eval(<<'.,.,', 'parser.y', 540)
     2095        result = (val[0] << val[1])
     2096 
     2097    result
     2098  end
     2099.,.,
     2100
     2101module_eval(<<'.,.,', 'parser.y', 568)
    20812102  def _reduce_105(val, _values, result)
    2082         result = (val[0] << val[1])
    2083  
    2084     result
    2085   end
    2086 .,.,
    2087 
    2088 module_eval(<<'.,.,', 'parser.y', 545)
    2089   def _reduce_106(val, _values, result)
    20902103        @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    20912104    result = {:object_key => val[0], :object_block => val[2]}
     
    20952108.,.,
    20962109
    2097 module_eval(<<'.,.,', 'parser.y', 551)
    2098   def _reduce_107(val, _values, result)
     2110module_eval(<<'.,.,', 'parser.y', 574)
     2111  def _reduce_106(val, _values, result)
    20992112        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
    21002113    result = val[1]
     
    21042117.,.,
    21052118
    2106 module_eval(<<'.,.,', 'parser.y', 557)
     2119module_eval(<<'.,.,', 'parser.y', 580)
     2120  def _reduce_107(val, _values, result)
     2121        result = {:untyped_single_attr_object_block => val[0]}
     2122 
     2123    result
     2124  end
     2125.,.,
     2126
     2127module_eval(<<'.,.,', 'parser.y', 584)
    21072128  def _reduce_108(val, _values, result)
    2108         result = {:untyped_single_attr_object_block => val[0]}
    2109  
    2110     result
    2111   end
    2112 .,.,
    2113 
    2114 module_eval(<<'.,.,', 'parser.y', 561)
     2129        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     2130 
     2131    result
     2132  end
     2133.,.,
     2134
     2135module_eval(<<'.,.,', 'parser.y', 589)
    21152136  def _reduce_109(val, _values, result)
    2116         result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
    2117  
    2118     result
    2119   end
    2120 .,.,
    2121 
    2122 module_eval(<<'.,.,', 'parser.y', 566)
    2123   def _reduce_110(val, _values, result)
    21242137        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
    21252138    result = {:single_attr_object_complex_head => val[0]}
     
    21292142.,.,
    21302143
    2131 module_eval(<<'.,.,', 'parser.y', 571)
    2132   def _reduce_111(val, _values, result)
     2144module_eval(<<'.,.,', 'parser.y', 594)
     2145  def _reduce_110(val, _values, result)
    21332146        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
    21342147    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     
    21382151.,.,
    21392152
    2140 # reduce 112 omitted
    2141 
    2142 module_eval(<<'.,.,', 'parser.y', 577)
    2143   def _reduce_113(val, _values, result)
     2153# reduce 111 omitted
     2154
     2155module_eval(<<'.,.,', 'parser.y', 600)
     2156  def _reduce_112(val, _values, result)
    21442157        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
    21452158    result = {:untyped_primitive_object_block => val[0]}
     
    21492162.,.,
    21502163
    2151 module_eval(<<'.,.,', 'parser.y', 582)
    2152   def _reduce_114(val, _values, result)
     2164module_eval(<<'.,.,', 'parser.y', 605)
     2165  def _reduce_113(val, _values, result)
    21532166        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
    21542167    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
     
    21582171.,.,
    21592172
    2160 module_eval(<<'.,.,', 'parser.y', 587)
    2161   def _reduce_115(val, _values, result)
     2173module_eval(<<'.,.,', 'parser.y', 610)
     2174  def _reduce_114(val, _values, result)
    21622175        @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
    21632176    result = val[1]
     
    21672180.,.,
    21682181
    2169 module_eval(<<'.,.,', 'parser.y', 592)
     2182module_eval(<<'.,.,', 'parser.y', 615)
     2183  def _reduce_115(val, _values, result)
     2184        result = val[0]
     2185 
     2186    result
     2187  end
     2188.,.,
     2189
     2190module_eval(<<'.,.,', 'parser.y', 619)
    21702191  def _reduce_116(val, _values, result)
    21712192        result = val[0]
     
    21752196.,.,
    21762197
    2177 module_eval(<<'.,.,', 'parser.y', 596)
     2198module_eval(<<'.,.,', 'parser.y', 623)
    21782199  def _reduce_117(val, _values, result)
    21792200        result = val[0]
     
    21832204.,.,
    21842205
    2185 module_eval(<<'.,.,', 'parser.y', 600)
     2206module_eval(<<'.,.,', 'parser.y', 627)
    21862207  def _reduce_118(val, _values, result)
    21872208        result = val[0]
     
    21912212.,.,
    21922213
    2193 module_eval(<<'.,.,', 'parser.y', 604)
     2214module_eval(<<'.,.,', 'parser.y', 631)
    21942215  def _reduce_119(val, _values, result)
    21952216        result = val[0]
     
    21992220.,.,
    22002221
    2201 module_eval(<<'.,.,', 'parser.y', 608)
     2222module_eval(<<'.,.,', 'parser.y', 635)
    22022223  def _reduce_120(val, _values, result)
    2203         result = val[0]
    2204  
    2205     result
    2206   end
    2207 .,.,
    2208 
    2209 module_eval(<<'.,.,', 'parser.y', 612)
    2210   def _reduce_121(val, _values, result)
    22112224        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
    22122225    result = val[0]
     
    22162229.,.,
    22172230
    2218 module_eval(<<'.,.,', 'parser.y', 617)
    2219   def _reduce_122(val, _values, result)
     2231module_eval(<<'.,.,', 'parser.y', 640)
     2232  def _reduce_121(val, _values, result)
    22202233        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
    22212234    result = val[0]
     
    22252238.,.,
    22262239
    2227 module_eval(<<'.,.,', 'parser.y', 622)
    2228   def _reduce_123(val, _values, result)
     2240module_eval(<<'.,.,', 'parser.y', 645)
     2241  def _reduce_122(val, _values, result)
    22292242        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
    22302243    result = val[0]
     
    22342247.,.,
    22352248
    2236 module_eval(<<'.,.,', 'parser.y', 627)
    2237   def _reduce_124(val, _values, result)
     2249module_eval(<<'.,.,', 'parser.y', 650)
     2250  def _reduce_123(val, _values, result)
    22382251        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
    22392252    result = val[0]
     
    22432256.,.,
    22442257
    2245 module_eval(<<'.,.,', 'parser.y', 632)
    2246   def _reduce_125(val, _values, result)
     2258module_eval(<<'.,.,', 'parser.y', 655)
     2259  def _reduce_124(val, _values, result)
    22472260        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
    22482261    result = val[0]
     
    22522265.,.,
    22532266
    2254 module_eval(<<'.,.,', 'parser.y', 637)
    2255   def _reduce_126(val, _values, result)
     2267module_eval(<<'.,.,', 'parser.y', 660)
     2268  def _reduce_125(val, _values, result)
    22562269        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
    22572270    result = val[0]
     
    22612274.,.,
    22622275
    2263 module_eval(<<'.,.,', 'parser.y', 642)
    2264   def _reduce_127(val, _values, result)
     2276module_eval(<<'.,.,', 'parser.y', 665)
     2277  def _reduce_126(val, _values, result)
    22652278        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
    22662279    result = val[0]
     
    22702283.,.,
    22712284
    2272 module_eval(<<'.,.,', 'parser.y', 647)
    2273   def _reduce_128(val, _values, result)
     2285module_eval(<<'.,.,', 'parser.y', 670)
     2286  def _reduce_127(val, _values, result)
    22742287        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
    22752288    result = val[0]
     
    22792292.,.,
    22802293
    2281 module_eval(<<'.,.,', 'parser.y', 652)
    2282   def _reduce_129(val, _values, result)
     2294module_eval(<<'.,.,', 'parser.y', 675)
     2295  def _reduce_128(val, _values, result)
    22832296        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
    22842297    result = val[0]
     
    22882301.,.,
    22892302
    2290 module_eval(<<'.,.,', 'parser.y', 657)
    2291   def _reduce_130(val, _values, result)
     2303module_eval(<<'.,.,', 'parser.y', 680)
     2304  def _reduce_129(val, _values, result)
    22922305        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
    22932306    result = val[0]
     
    22972310.,.,
    22982311
     2312# reduce 130 omitted
     2313
    22992314# reduce 131 omitted
    23002315
     
    23252340# reduce 144 omitted
    23262341
    2327 # reduce 145 omitted
    2328 
    2329 module_eval(<<'.,.,', 'parser.y', 680)
    2330   def _reduce_146(val, _values, result)
     2342module_eval(<<'.,.,', 'parser.y', 703)
     2343  def _reduce_145(val, _values, result)
    23312344        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    23322345    result = val[0]
     
    23362349.,.,
    23372350
    2338 module_eval(<<'.,.,', 'parser.y', 685)
    2339   def _reduce_147(val, _values, result)
     2351module_eval(<<'.,.,', 'parser.y', 708)
     2352  def _reduce_146(val, _values, result)
    23402353        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    23412354    result = val[0]
     
    23452358.,.,
    23462359
    2347 module_eval(<<'.,.,', 'parser.y', 691)
    2348   def _reduce_148(val, _values, result)
     2360module_eval(<<'.,.,', 'parser.y', 714)
     2361  def _reduce_147(val, _values, result)
    23492362        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    23502363    result = val[0]
     
    23542367.,.,
    23552368
     2369# reduce 148 omitted
     2370
    23562371# reduce 149 omitted
    23572372
    23582373# reduce 150 omitted
    23592374
    2360 # reduce 151 omitted
    2361 
    2362 module_eval(<<'.,.,', 'parser.y', 701)
     2375module_eval(<<'.,.,', 'parser.y', 724)
     2376  def _reduce_151(val, _values, result)
     2377        begin
     2378      integer = Integer(val[0])
     2379    rescue
     2380      raise
     2381    end
     2382    result = integer
     2383 
     2384    result
     2385  end
     2386.,.,
     2387
     2388module_eval(<<'.,.,', 'parser.y', 733)
    23632389  def _reduce_152(val, _values, result)
    23642390        begin
     
    23732399.,.,
    23742400
    2375 module_eval(<<'.,.,', 'parser.y', 710)
     2401module_eval(<<'.,.,', 'parser.y', 742)
    23762402  def _reduce_153(val, _values, result)
    23772403        begin
     
    23802406      raise
    23812407    end
    2382     result = integer
    2383  
    2384     result
    2385   end
    2386 .,.,
    2387 
    2388 module_eval(<<'.,.,', 'parser.y', 719)
    2389   def _reduce_154(val, _values, result)
    2390         begin
    2391       integer = Integer(val[0])
    2392     rescue
    2393       raise
    2394     end
    23952408    result = - integer
    23962409 
     
    23992412.,.,
    24002413
     2414# reduce 154 omitted
     2415
    24012416# reduce 155 omitted
    24022417
     
    24212436# reduce 165 omitted
    24222437
    2423 # reduce 166 omitted
    2424 
    2425 module_eval(<<'.,.,', 'parser.y', 745)
    2426   def _reduce_167(val, _values, result)
     2438module_eval(<<'.,.,', 'parser.y', 768)
     2439  def _reduce_166(val, _values, result)
    24272440        begin
    24282441      real = Float(val[0])
     
    24362449.,.,
    24372450
    2438 module_eval(<<'.,.,', 'parser.y', 754)
     2451module_eval(<<'.,.,', 'parser.y', 777)
     2452  def _reduce_167(val, _values, result)
     2453        begin
     2454      real = Float(val[1])
     2455    rescue
     2456      raise
     2457    end
     2458    result = real
     2459 
     2460    result
     2461  end
     2462.,.,
     2463
     2464module_eval(<<'.,.,', 'parser.y', 786)
    24392465  def _reduce_168(val, _values, result)
    24402466        begin
     
    24432469      raise
    24442470    end
    2445     result = real
    2446  
    2447     result
    2448   end
    2449 .,.,
    2450 
    2451 module_eval(<<'.,.,', 'parser.y', 763)
    2452   def _reduce_169(val, _values, result)
    2453         begin
    2454       real = Float(val[1])
    2455     rescue
    2456       raise
    2457     end
    24582471    result = - real
    24592472 
     
    24622475.,.,
    24632476
     2477# reduce 169 omitted
     2478
    24642479# reduce 170 omitted
    24652480
     
    24842499# reduce 180 omitted
    24852500
    2486 # reduce 181 omitted
    2487 
    2488 module_eval(<<'.,.,', 'parser.y', 788)
     2501module_eval(<<'.,.,', 'parser.y', 811)
     2502  def _reduce_181(val, _values, result)
     2503        result = true
     2504 
     2505    result
     2506  end
     2507.,.,
     2508
     2509module_eval(<<'.,.,', 'parser.y', 815)
    24892510  def _reduce_182(val, _values, result)
    2490         result = true
    2491  
    2492     result
    2493   end
    2494 .,.,
    2495 
    2496 module_eval(<<'.,.,', 'parser.y', 792)
    2497   def _reduce_183(val, _values, result)
    24982511        result = false
    24992512 
     
    25022515.,.,
    25032516
     2517# reduce 183 omitted
     2518
    25042519# reduce 184 omitted
    25052520
     
    25142529# reduce 189 omitted
    25152530
    2516 # reduce 190 omitted
    2517 
    2518 module_eval(<<'.,.,', 'parser.y', 807)
    2519   def _reduce_191(val, _values, result)
     2531module_eval(<<'.,.,', 'parser.y', 830)
     2532  def _reduce_190(val, _values, result)
    25202533        result = val[0]
    25212534 
     
    25242537.,.,
    25252538
     2539# reduce 191 omitted
     2540
    25262541# reduce 192 omitted
    25272542
     
    25982613# reduce 228 omitted
    25992614
    2600 # reduce 229 omitted
    2601 
    2602 module_eval(<<'.,.,', 'parser.y', 858)
    2603   def _reduce_230(val, _values, result)
     2615module_eval(<<'.,.,', 'parser.y', 881)
     2616  def _reduce_229(val, _values, result)
    26042617        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
    26052618    result = val[0]
     
    26092622.,.,
    26102623
     2624# reduce 230 omitted
     2625
    26112626# reduce 231 omitted
    26122627
     
    26312646# reduce 241 omitted
    26322647
    2633 # reduce 242 omitted
    2634 
    2635 module_eval(<<'.,.,', 'parser.y', 878)
    2636   def _reduce_243(val, _values, result)
     2648module_eval(<<'.,.,', 'parser.y', 901)
     2649  def _reduce_242(val, _values, result)
    26372650        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
    26382651    result = val[0]
     
    26422655.,.,
    26432656
     2657# reduce 243 omitted
     2658
    26442659# reduce 244 omitted
    26452660
    26462661# reduce 245 omitted
    26472662
    2648 # reduce 246 omitted
    2649 
    2650 module_eval(<<'.,.,', 'parser.y', 888)
    2651   def _reduce_247(val, _values, result)
     2663module_eval(<<'.,.,', 'parser.y', 911)
     2664  def _reduce_246(val, _values, result)
    26522665        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
    26532666    result = val[0]
     
    26572670.,.,
    26582671
     2672# reduce 247 omitted
     2673
    26592674# reduce 248 omitted
    26602675
     
    27352750# reduce 286 omitted
    27362751
    2737 # reduce 287 omitted
    2738 
    2739 module_eval(<<'.,.,', 'parser.y', 958)
     2752module_eval(<<'.,.,', 'parser.y', 981)
     2753  def _reduce_287(val, _values, result)
     2754        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     2755 
     2756    result
     2757  end
     2758.,.,
     2759
     2760module_eval(<<'.,.,', 'parser.y', 985)
    27402761  def _reduce_288(val, _values, result)
    27412762        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    27452766.,.,
    27462767
    2747 module_eval(<<'.,.,', 'parser.y', 962)
     2768module_eval(<<'.,.,', 'parser.y', 996)
    27482769  def _reduce_289(val, _values, result)
    2749         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
    2750  
    2751     result
    2752   end
    2753 .,.,
    2754 
    2755 module_eval(<<'.,.,', 'parser.y', 973)
     2770        result = Range.new(1,1)
     2771 
     2772    result
     2773  end
     2774.,.,
     2775
     2776module_eval(<<'.,.,', 'parser.y', 1000)
    27562777  def _reduce_290(val, _values, result)
    2757         result = Range.new(1,1)
    2758  
    2759     result
    2760   end
    2761 .,.,
    2762 
    2763 module_eval(<<'.,.,', 'parser.y', 977)
     2778        result = val[3]
     2779 
     2780    result
     2781  end
     2782.,.,
     2783
     2784module_eval(<<'.,.,', 'parser.y', 1005)
    27642785  def _reduce_291(val, _values, result)
    2765         result = val[3]
    2766  
    2767     result
    2768   end
    2769 .,.,
    2770 
    2771 module_eval(<<'.,.,', 'parser.y', 982)
    2772   def _reduce_292(val, _values, result)
    27732786        begin
    27742787      integer = Integer(val[0])
     
    27822795.,.,
    27832796
    2784 module_eval(<<'.,.,', 'parser.y', 991)
    2785   def _reduce_293(val, _values, result)
     2797module_eval(<<'.,.,', 'parser.y', 1014)
     2798  def _reduce_292(val, _values, result)
    27862799        begin
    27872800      from_integer = Integer(val[0])
     
    27962809.,.,
    27972810
    2798 module_eval(<<'.,.,', 'parser.y', 1002)
    2799   def _reduce_294(val, _values, result)
    2800         result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
    2801  
    2802     result
    2803   end
    2804 .,.,
     2811module_eval(<<'.,.,', 'parser.y', 1025)
     2812  def _reduce_293(val, _values, result)
     2813        result = OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY.new
     2814 
     2815    result
     2816  end
     2817.,.,
     2818
     2819# reduce 294 omitted
    28052820
    28062821# reduce 295 omitted
     
    28182833# reduce 301 omitted
    28192834
    2820 # reduce 302 omitted
    2821 
    2822 module_eval(<<'.,.,', 'parser.y', 1016)
     2835module_eval(<<'.,.,', 'parser.y', 1039)
     2836  def _reduce_302(val, _values, result)
     2837        result = val[0]
     2838 
     2839    result
     2840  end
     2841.,.,
     2842
     2843module_eval(<<'.,.,', 'parser.y', 1043)
    28232844  def _reduce_303(val, _values, result)
    28242845        result = val[0]
     
    28282849.,.,
    28292850
    2830 module_eval(<<'.,.,', 'parser.y', 1020)
    2831   def _reduce_304(val, _values, result)
     2851# reduce 304 omitted
     2852
     2853module_eval(<<'.,.,', 'parser.y', 1050)
     2854  def _reduce_305(val, _values, result)
     2855        case val[3]
     2856    when OpenEhr::RM::Support::AssumedTypes::Interval
     2857      result = val[3]
     2858    else
     2859      result = val[3]
     2860    end
     2861 
     2862    result
     2863  end
     2864.,.,
     2865
     2866# reduce 306 omitted
     2867
     2868module_eval(<<'.,.,', 'parser.y', 1061)
     2869  def _reduce_307(val, _values, result)
    28322870        result = val[0]
    28332871 
     
    28362874.,.,
    28372875
    2838 # reduce 305 omitted
    2839 
    2840 module_eval(<<'.,.,', 'parser.y', 1027)
    2841   def _reduce_306(val, _values, result)
    2842         result = val[3]
    2843  
    2844     result
    2845   end
    2846 .,.,
    2847 
    2848 # reduce 307 omitted
    2849 
    2850 # reduce 308 omitted
     2876module_eval(<<'.,.,', 'parser.y', 1065)
     2877  def _reduce_308(val, _values, result)
     2878        result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
     2879 
     2880    result
     2881  end
     2882.,.,
    28512883
    28522884# reduce 309 omitted
     
    29362968# reduce 351 omitted
    29372969
    2938 # reduce 352 omitted
    2939 
    2940 module_eval(<<'.,.,', 'parser.y', 1097)
     2970module_eval(<<'.,.,', 'parser.y', 1131)
     2971  def _reduce_352(val, _values, result)
     2972        result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
     2973 
     2974    result
     2975  end
     2976.,.,
     2977
     2978module_eval(<<'.,.,', 'parser.y', 1135)
    29412979  def _reduce_353(val, _values, result)
    2942         result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
    2943  
    2944     result
    2945   end
    2946 .,.,
    2947 
    2948 module_eval(<<'.,.,', 'parser.y', 1101)
     2980        result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
     2981 
     2982    result
     2983  end
     2984.,.,
     2985
     2986module_eval(<<'.,.,', 'parser.y', 1139)
    29492987  def _reduce_354(val, _values, result)
    2950         result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
    2951  
    2952     result
    2953   end
    2954 .,.,
    2955 
    2956 module_eval(<<'.,.,', 'parser.y', 1105)
     2988        result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     2989 
     2990    result
     2991  end
     2992.,.,
     2993
     2994module_eval(<<'.,.,', 'parser.y', 1143)
    29572995  def _reduce_355(val, _values, result)
    2958         result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
    2959  
    2960     result
    2961   end
    2962 .,.,
    2963 
    2964 module_eval(<<'.,.,', 'parser.y', 1109)
     2996        result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     2997 
     2998    result
     2999  end
     3000.,.,
     3001
     3002module_eval(<<'.,.,', 'parser.y', 1148)
    29653003  def _reduce_356(val, _values, result)
    2966         result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
    2967  
    2968     result
    2969   end
    2970 .,.,
    2971 
    2972 module_eval(<<'.,.,', 'parser.y', 1114)
     3004        result = val[0]
     3005 
     3006    result
     3007  end
     3008.,.,
     3009
     3010module_eval(<<'.,.,', 'parser.y', 1152)
    29733011  def _reduce_357(val, _values, result)
    2974         result = val[0]
    2975  
    2976     result
    2977   end
    2978 .,.,
    2979 
    2980 module_eval(<<'.,.,', 'parser.y', 1118)
     3012        raise 'Not implemented yet'
     3013 
     3014    result
     3015  end
     3016.,.,
     3017
     3018module_eval(<<'.,.,', 'parser.y', 1156)
    29813019  def _reduce_358(val, _values, result)
    29823020        raise 'Not implemented yet'
     
    29863024.,.,
    29873025
    2988 module_eval(<<'.,.,', 'parser.y', 1122)
    2989   def _reduce_359(val, _values, result)
    2990         raise 'Not implemented yet'
    2991  
    2992     result
    2993   end
    2994 .,.,
     3026# reduce 359 omitted
    29953027
    29963028# reduce 360 omitted
     
    30023034# reduce 363 omitted
    30033035
    3004 # reduce 364 omitted
    3005 
    3006 module_eval(<<'.,.,', 'parser.y', 1134)
    3007   def _reduce_365(val, _values, result)
     3036module_eval(<<'.,.,', 'parser.y', 1168)
     3037  def _reduce_364(val, _values, result)
    30083038        @in_interval = false
    30093039    @@logger.debug("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}")
     
    30133043.,.,
    30143044
    3015 module_eval(<<'.,.,', 'parser.y', 1141)
     3045module_eval(<<'.,.,', 'parser.y', 1175)
     3046  def _reduce_365(val, _values, result)
     3047          result = val[0]
     3048 
     3049    result
     3050  end
     3051.,.,
     3052
     3053module_eval(<<'.,.,', 'parser.y', 1179)
    30163054  def _reduce_366(val, _values, result)
    30173055          result = val[0]
     
    30213059.,.,
    30223060
    3023 module_eval(<<'.,.,', 'parser.y', 1145)
     3061module_eval(<<'.,.,', 'parser.y', 1185)
    30243062  def _reduce_367(val, _values, result)
    3025           result = val[0]
    3026  
    3027     result
    3028   end
    3029 .,.,
    3030 
    3031 module_eval(<<'.,.,', 'parser.y', 1151)
    3032   def _reduce_368(val, _values, result)
    30333063        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
    30343064    @@logger.debug("#{__FILE__}:#{__LINE__}, term_code_body = #{val[1]}")
     
    30403070.,.,
    30413071
     3072# reduce 368 omitted
     3073
    30423074# reduce 369 omitted
    30433075
    30443076# reduce 370 omitted
    30453077
    3046 # reduce 371 omitted
    3047 
    3048 module_eval(<<'.,.,', 'parser.y', 1167)
     3078module_eval(<<'.,.,', 'parser.y', 1201)
     3079  def _reduce_371(val, _values, result)
     3080          result = val[0]
     3081 
     3082    result
     3083  end
     3084.,.,
     3085
     3086module_eval(<<'.,.,', 'parser.y', 1206)
    30493087  def _reduce_372(val, _values, result)
    30503088          result = val[0]
     
    30543092.,.,
    30553093
    3056 module_eval(<<'.,.,', 'parser.y', 1172)
     3094module_eval(<<'.,.,', 'parser.y', 1210)
    30573095  def _reduce_373(val, _values, result)
    3058           result = val[0]
    3059  
    3060     result
    3061   end
    3062 .,.,
    3063 
    3064 module_eval(<<'.,.,', 'parser.y', 1176)
    3065   def _reduce_374(val, _values, result)
    30663096        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
    30673097      result = val[0]
     
    30713101.,.,
    30723102
    3073 module_eval(<<'.,.,', 'parser.y', 1187)
    3074   def _reduce_375(val, _values, result)
     3103module_eval(<<'.,.,', 'parser.y', 1221)
     3104  def _reduce_374(val, _values, result)
    30753105        result = val[0]
    30763106 
     
    30853115    end   # class Parser
    30863116    end   # module ADL
    3087   end   # module OpenEHR
     3117  end   # module OpenEhr
  • ruby/trunk/lib/adl_parser/lib/parser.y

    r283 r307  
    11
    2 class OpenEHR::ADL::Parser
     2class OpenEhr::ADL::Parser
    33
    44#options omit_action_call
     
    3636  {
    3737    assert_at(__FILE__,__LINE__) do
    38       val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY)
     38      val[4].instance_of?(OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY)
    3939    end
    4040   
     
    4242    parent_archtype_id = val[1][:parent_archtype_id] if val[1]
    4343    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
    44     concept = val[2]
     44    concept = val[2][:arch_concept]
    4545    language = val[3][:arch_language]
    46     archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
     46    archetype = OpenEhr::AM::Archetype::ARCHETYPE.create(
    4747                                                         :archetype_id => archetype_id,
    4848                                                         :parent_archtype_id => parent_archtype_id,
     
    138138    | SYM_DESCRIPTION dadl_section
    139139  {
    140     result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
     140    result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
    141141  }
    142142  | SYM_DESCRIPTION error
     
    154154cadl_section: c_complex_object
    155155  {
    156     assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
     156    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
    157157    @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
    158158    result = val[0]
     
    167167c_complex_object: c_complx_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
    168168  {
    169     result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     169    result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    170170      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
    171171      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     
    175175    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    176176  {
    177     result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     177    result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    178178      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
    179179      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     
    201201  | c_attributes
    202202  {
    203     result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
     203    result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
    204204  }
    205205
     
    224224  | archetype_internal_ref
    225225  {
    226     result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
     226    result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
    227227      archetype_internal_ref.target_path = val[0][:absolute_path]
    228228      archetype_internal_ref.rm_type_name = val[0][:type_identifier]
     
    236236  | constraint_ref
    237237  {
    238     result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|
     238    result = OpenEhr::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|
    239239      constraint_ref.reference = val[0]
    240240    end
     
    256256    result = val[0]
    257257  }
    258 
    259258#  | v_c_domain_type
    260259#  | V_C_DOMAIN_TYPE
     
    265264  #   the buffer from the current point on and be able to fast-forward the
    266265  #   cursor to the last character matched by the dADL scanner
     266### ----------/* V_C_DOMAIN_TYPE - sections of dADL syntax */ -------------------------------------------------     ----------/* V_C_DOMAIN_TYPE - sections of dADL syntax */ -------------------------------------------------
     267   
     268   
     269### [A-Z][a-zA-Z0-9_]*[ \n]*< { -- match a pattern like 'Type_Identifier whitespace <'  [A-Z][a-zA-Z0-9_]*[ \n]*< { -- match a pattern like 'Type_Identifier whitespace <'
     270###                 set_start_condition (IN_C_DOMAIN_TYPE)                  set_start_condition (IN_C_DOMAIN_TYPE)
     271###             }               }
     272   
     273### <IN_C_DOMAIN_TYPE>[^}>]*>[ \n]*[^>}A-Z] { -- match up to next > not followed by a '}' or '>'    <IN_C_DOMAIN_TYPE>[^}>]*>[ \n]*[^>}A-Z] { -- match up to next > not followed by a '}' or '>'
     274###                  in_buffer.append_string (text)                      in_buffer.append_string (text)
     275###              }               }
     276   
     277### <IN_C_DOMAIN_TYPE>[^}>]*>+[ \n]*[}A-Z] { -- final section - '...> whitespace } or beginning of a type identifier'   <IN_C_DOMAIN_TYPE>[^}>]*>+[ \n]*[}A-Z] { -- final section - '...> whitespace } or beginning of a type identifier'
     278
     279### <IN_C_DOMAIN_TYPE>[^}>]*[ \n]*} { -- match up to next '}' not preceded by a '>'     <IN_C_DOMAIN_TYPE>[^}>]*[ \n]*} { -- match up to next '}' not preceded by a '>'
     280###                  in_buffer.append_string (text)                      in_buffer.append_string (text)
     281###               }                   }
     282   
     283
    267284  | ERR_C_DOMAIN_TYPE
    268285  | error
     
    283300archetype_slot: c_archetype_slot_head SYM_MATCHES SYM_START_CBLOCK c_includes c_excludes SYM_END_CBLOCK
    284301  {
    285     result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|
     302    result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|
    286303      archetype_slot.includes = val[3]
    287304      archetype_slot.excludes = val[4]
     
    305322c_primitive_object: c_primitive
    306323  {
    307     assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
    308     result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|
     324    assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
     325    result = OpenEhr::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|
    309326      c_primitive_object.item = val[0]
    310327    end
     
    314331  {
    315332    @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
    316     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|
     333    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|
    317334      c_integer.list
    318335      c_integer.range
     
    323340  {
    324341    @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
    325     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
     342    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
    326343  }
    327344  | c_date
    328345  {
    329346    @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
    330     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
     347    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
    331348  }
    332349  | c_time
    333350  {
    334351    @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
    335     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
     352    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
    336353  }
    337354  | c_date_time
    338355  {
    339356    @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
    340     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
     357    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
    341358  }
    342359  | c_duration
    343360  {
    344361    @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
    345     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
     362    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
    346363  }
    347364  | c_string
    348365  {
    349366    @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
    350     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
     367    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
    351368  }
    352369  | c_boolean
    353370  {
    354     assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
     371    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
    355372    @@logger.debug("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
    356373    result = val[0]
     
    374391c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
    375392  {
    376     assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     393    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    377394    c_attribute = val[0]
    378395    c_attribute.children = val[3]
     
    381398  | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
    382399  {
    383     assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     400    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    384401    result = val[0]
    385402  }
    386403  | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK
    387404  {
    388     assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     405    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
    389406    result = val[0]
    390407  }
     
    394411  {
    395412    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
    396     result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
     413    result = OpenEhr::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
    397414                                                                              :rm_attribute_name => val[0],
    398415                                                                              :existence => val[1]
     
    402419  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
    403420  {
    404     assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
     421    assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY) }
    405422    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
    406     result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
     423    result = OpenEhr::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
    407424                                                                                :rm_attribute_name => val[0],
    408425                                                                                :existence => val[1],
     
    458475  {
    459476    dadl_section = val[1]
    460     result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     477    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
    461478  }
    462479  | SYM_ONTOLOGY error
     
    464481
    465482### dADL section
    466 dadl_section: dadl_input
    467 
    468 dadl_input: attr_vals
     483dadl_section: attr_vals
     484  {
     485    @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
     486    result = val[0]
     487  }
    469488  | complex_object_block
     489  {
     490    @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
     491    result = val[0]
     492  }
    470493#  | error
    471494
     
    485508attr_val: attr_id SYM_EQ object_block
    486509  {
    487     @@logger.debug("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]} at #{@filename}:#{@lineno}")
     510    @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
    488511    result = {:attr_id => val[0], :object_block => val[2]}
    489512  }
     
    491514attr_id: V_ATTRIBUTE_IDENTIFIER
    492515  {
    493     @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
     516    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
    494517    result = val[0]
    495518  }
     
    10011024c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK
    10021025  {
    1003     result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
     1026    result = OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY.new
    10041027  }
    10051028
     
    10261049  | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK
    10271050  {
    1028     result = val[3]
     1051    case val[3]
     1052    when OpenEhr::RM::Support::AssumedTypes::Interval
     1053      result = val[3]
     1054    else
     1055      result = val[3]
     1056    end
    10291057  }
    10301058  | SYM_OCCURRENCES error
    10311059
    10321060occurrence_spec: cardinality_limit_value #-- single integer or '*'
     1061  {
     1062    result = val[0]
     1063  }
    10331064  | V_INTEGER SYM_ELLIPSIS cardinality_limit_value
     1065  {
     1066    result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
     1067  }
    10341068
    10351069#---------------------- leaf constraint types -----------------------
     
    10961130c_boolean_spec: SYM_TRUE
    10971131  {
    1098     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
     1132    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
    10991133  }
    11001134  | SYM_FALSE
    11011135  {
    1102     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
     1136    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
    11031137  }
    11041138  | SYM_TRUE Comma_code SYM_FALSE
    11051139  {
    1106     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     1140    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
    11071141  }
    11081142  | SYM_FALSE Comma_code SYM_TRUE
    11091143  {
    1110     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     1144    result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
    11111145  }
    11121146
     
    11981232require 'yaml'
    11991233require 'rubygems'
    1200 require 'adl_parser.rb'
    1201 require 'am.rb'
    1202 require 'rm.rb'
    1203 $DEBUG = false
     1234require 'open_ehr'
     1235#require 'adl_parser.rb'
     1236#require 'am.rb'
     1237#require 'rm.rb'
     1238#require 'rm/support/assumed_types.rb'
     1239#require 'assumed_library_types.rb'
     1240$DEBUG = true
    12041241
    12051242
     
    12831320def scan
    12841321  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
    1285   scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
     1322  scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
    12861323
    12871324  until @data.nil?  do
  • ruby/trunk/lib/adl_parser/test/parser_test.rb

    r291 r307  
    33class ADLParserTest < Test::Unit::TestCase
    44  def setup
    5     @parser = ::OpenEHR::ADL::Parser.new
     5    @parser = ::OpenEhr::ADL::Parser.new
    66  end
    77
    88  must "assert parser instance" do
    9     assert_instance_of ::OpenEHR::ADL::Parser,@parser
    10   end
    11 
    12   must "test_archetype_id.adl be properly parsed" do
    13     file =  File.read("#{TEST_ROOT_DIR}/adl/test_archetype_id.adl")
     9    assert_instance_of ::OpenEhr::ADL::Parser,@parser
     10  end
     11
     12  must "openEHR-EHR-SECTION.summary.v1.adl be properly parsed" do
     13    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.summary.v1.adl")
    1414    assert_nothing_raised do
    1515      ast = @parser.parse(file, 'openEHR-EHR-SECTION.summary.v1')
    16       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     16      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    1717    end
    1818  end
     
    2222    assert_nothing_raised do
    2323      ast = @parser.parse(file, 'openEHR-EHR-ACTION.imaging.v1')
    24       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     24      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    2525    end
    2626  end
     
    3030    assert_nothing_raised do
    3131      ast = @parser.parse(file, 'openEHR-EHR-ACTION.referral.v1')
    32       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     32      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    3333    end
    3434  end
     
    3838    assert_nothing_raised do
    3939      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation-chest.v1')
    40       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     40      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    4141    end
    4242  end
     
    4646    assert_nothing_raised do
    4747      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation.v1')
    48       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     48      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    4949    end
    5050  end
     
    5555    assert_nothing_raised do
    5656      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-abdomen.v1')
    57       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     57      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    5858    end
    5959  end
     
    6363    assert_nothing_raised do
    6464      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-chest.v1')
    65       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     65      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    6666    end
    6767  end
     
    7171    assert_nothing_raised do
    7272      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1')
    73       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     73      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    7474    end
    7575  end
     
    7979    assert_nothing_raised do
    8080      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1')
    81       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     81      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    8282    end
    8383  end
     
    8787    assert_nothing_raised do
    8888      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1')
    89       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     89      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    9090    end
    9191  end
     
    9595    assert_nothing_raised do
    9696      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic.v1')
    97       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     97      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    9898    end
    9999  end
     
    103103    assert_nothing_raised do
    104104      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1')
    105       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     105      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    106106    end
    107107  end
     
    111111    assert_nothing_raised do
    112112      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.discharge.v1draft')
    113       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     113      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    114114    end
    115115  end
     
    119119    assert_nothing_raised do
    120120      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.encounter.v1draft')
    121       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     121      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    122122    end
    123123  end
     
    127127    assert_nothing_raised do
    128128      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.medication.v1')
    129       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     129      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    130130    end
    131131  end
     
    135135    assert_nothing_raised do
    136136      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.referral.v1')
    137       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     137      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    138138    end
    139139  end
     
    143143    assert_nothing_raised do
    144144      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1')
    145       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     145      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    146146    end
    147147  end
     
    152152    assert_nothing_raised do
    153153      ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.apgar.v1')
    154       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     154      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    155155    end
    156156  end
     
    160160    assert_nothing_raised do
    161161      ast = @parser.parse(file, 'openEHR-EHR-SECTION.findings.v1')
    162       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     162      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    163163    end
    164164  end
     
    168168    assert_nothing_raised do
    169169      ast = @parser.parse(file, 'openEHR-EHR-SECTION.reason_for_encounter.v1')
    170       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     170      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    171171    end
    172172  end
     
    177177    assert_nothing_raised do
    178178      ast = @parser.parse(file, 'openEHR-EHR-SECTION.vital_signs.v1')
    179       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     179      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    180180    end
    181181  end
     
    187187#     assert_nothing_raised do
    188188#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions-circumference.v1')
    189 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     189#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    190190#     end
    191191#   end
     
    195195#     assert_nothing_raised do
    196196#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions.v1')
    197 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     197#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    198198#     end
    199199#   end
     
    203203#     assert_nothing_raised do
    204204#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-fetus.v1')
    205 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     205#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    206206#     end
    207207#   end
     
    211211#     assert_nothing_raised do
    212212#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1')
    213 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     213#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    214214#     end
    215215#   end
     
    219219#     assert_nothing_raised do
    220220#       ast = @parser.parse(file, 'openEHR-EHR-EVALUATION.adverse.v1')
    221 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     221#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    222222#     end
    223223#   end
     
    226226#     assert_nothing_raised do
    227227#       ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.body_mass_index.v1')
    228 #       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, ast.archetype_id
     228#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    229229#     end
    230230#   end
  • ruby/trunk/lib/adl_parser/test/scanner_test.rb

    r291 r307  
    33class ADLScannerTest < Test::Unit::TestCase
    44  def setup
    5     @scanner = OpenEHR::ADL::Scanner::ADLScanner.new([:adl], "filename")
     5    @scanner = OpenEhr::ADL::Scanner::ADLScanner.new([:adl], "filename")
    66  end
    77
    8   must "assert OpenEHR::ADL::Scanner::ADLScanner scanner instance" do
    9     assert_instance_of OpenEHR::ADL::Scanner::ADLScanner, @scanner
     8  must "assert OpenEhr::ADL::Scanner::ADLScanner scanner instance" do
     9    assert_instance_of OpenEhr::ADL::Scanner::ADLScanner, @scanner
    1010  end
    1111
     
    2020    @scanner.scan("openEHR-EHR-OBSERVATION.body_mass_index.v1") do |sym, val|
    2121      assert_equal :V_ARCHETYPE_ID,sym
    22       assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID,val
     22      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID,val
    2323    end
    2424  end
     
    4040class CADLScannerTest < Test::Unit::TestCase
    4141  def setup
    42     @scanner = OpenEHR::ADL::Scanner::CADLScanner.new([:cadl], "filename")
     42    @scanner = OpenEhr::ADL::Scanner::CADLScanner.new([:cadl], "filename")
    4343  end
    4444
    45   must "assert OpenEHR::ADL::Scanner::CADLScanner scanner instance" do
    46     assert_instance_of OpenEHR::ADL::Scanner::CADLScanner, @scanner
     45  must "assert OpenEhr::ADL::Scanner::CADLScanner scanner instance" do
     46    assert_instance_of OpenEhr::ADL::Scanner::CADLScanner, @scanner
    4747  end
    4848
     
    8080class DADLScannerTest < Test::Unit::TestCase
    8181  def setup
    82     @scanner = OpenEHR::ADL::Scanner::DADLScanner.new([:dadl], "filename")
     82    @scanner = OpenEhr::ADL::Scanner::DADLScanner.new([:dadl], "filename")
    8383  end
    8484
  • ruby/trunk/lib/adl_parser/test/shell_test.rb

    r291 r307  
    33class ShellADLValidatorTest < Test::Unit::TestCase
    44  def setup
    5     @adl_validator = ::OpenEHR::Application::ADLValidator.new(::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new))
     5    @adl_validator = ::OpenEhr::Application::ADLValidator.new(::OpenEhr::ADL::Validator.new(::OpenEhr::ADL::Parser.new))
    66  end
    77
    88  must "assert application validator instance" do
    9     assert_instance_of ::OpenEHR::Application::ADLValidator,@adl_validator
     9    assert_instance_of ::OpenEhr::Application::ADLValidator,@adl_validator
    1010  end
    1111
  • ruby/trunk/lib/adl_parser/test/test_helper.rb

    r261 r307  
    55require "rubygems"
    66require 'adl_parser.rb'
    7 require 'adl_scanner.rb'
    8 require 'rm.rb'
    9 require 'am.rb'
     7#require 'adl_scanner.rb'
     8#require 'open_ehr'
     9#require 'rm.rb'
     10#require 'am.rb'
    1011
    1112
  • ruby/trunk/lib/adl_parser/test/validator_test.rb

    r291 r307  
    44class ADLValidatorTest < Test::Unit::TestCase
    55  def setup
    6     @validator = ::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new)
     6    @validator = ::OpenEhr::ADL::Validator.new(::OpenEhr::ADL::Parser.new)
    77  end
    88
    99  must "assert adl validator instance" do
    10     assert_instance_of ::OpenEHR::ADL::Validator,@validator
     10    assert_instance_of ::OpenEhr::ADL::Validator,@validator
    1111  end
    1212
Note: See TracChangeset for help on using the changeset viewer.