Changeset 313 for ruby/trunk


Ignore:
Timestamp:
Oct 11, 2009, 4:54:15 PM (15 years ago)
Author:
Tatsukawa, Akimichi
Message:

edited README

Location:
ruby/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/README

    r164 r313  
    1111* Ruby 1.8.6 or higher
    1212* RubyGems
    13 * Yaparc Library 0.2.2 or higer
    14   To install the library,
    15   execute the following command.
    16   # gem install yaparc
    1713* Tested with Ruby 1.8.6 on Linux and FreeBSD.
    1814* If you use Ruby 1.6, you should prepare racc
  • ruby/trunk/lib/adl_parser/lib/adl_scanner.rb

    r307 r313  
    33require 'adl_parser.rb'
    44require 'open_ehr'
    5 #require 'am.rb'
    6 #require 'rm.rb'
    75require 'util.rb'
    86
     
    2725      end
    2826
     27      class RootScanner < Base
     28        def initialize(filename, lineno = 1)
     29          @current_scanner = ADLScanner.new
     30        end
     31
     32        def scan(data)
     33          until data.nil?  do
     34            case @current_scanner
     35            when ADLScanner
     36              @current_scanner.scan(data)
     37            end
     38          end
     39        end         
     40      end
     41
    2942      #
    3043      # ADLScanner
    3144      #
    3245      class ADLScanner < Base
    33         attr_accessor :adl_type, :lineno, :cadl_scanner, :dadl_scanner, :regex_scanner, :term_constraint_scanner
     46        attr_accessor :adl_type, :lineno
    3447
    3548        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
     
    5669          super(adl_type, filename, lineno)
    5770          @in_interval  = false
     71          @adl_type  = nil
    5872        end
    5973
     
    6478          @@logger.debug("#{__FILE__}:#{__LINE__}: Entering  ADLScanner#scan at #{@filename}:#{@lineno}: data = #{data.inspect}")
    6579          until data.nil?  do
    66             case @adl_type.last
    67             when :adl
     80            if @adl_type.nil?
    6881              case data
    6982              when /\A\n/ # carriage return
     
    8598              when /\A(\w+)-(\w+)-(\w+)\.(\w+)((?:-\w+)*)\.(v\w+)/   #V_ARCHETYPE_ID
    8699                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::ArchetypeID.new(object_id, concept_name, rm_name, rm_entity, rm_originator, specialisation, version_id)
    88100                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)
    89101                yield :V_ARCHETYPE_ID, archetype_id
     
    107119                  yield :SYM_LT, :SYM_LT
    108120                else
    109                   @adl_type.push(:dadl)
     121                  @adl_type = OpenEhr::ADL::Scanner::DADLScanner.new(@filename, @lineno)
    110122                  yield :SYM_START_DBLOCK,  $&
    111123                end
     
    114126                  yield :SYM_GT, :SYM_GT
    115127                else
     128                  raise
    116129                  adl_type = @adl_type.pop
    117130                  assert_at(__FILE__,__LINE__){adl_type == :dadl}
     
    119132                end
    120133              when /\A\{/   # {
    121                 @adl_type.push(:cadl)
    122                 @@logger.debug("ADLScanner#scan: SYM_START_CBLOCK")
     134                @adl_type = OpenEhr::ADL::Scanner::CADLScanner.new(@filename, @lineno)
    123135                yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    124136              when /\A\}/   # }
     137                raise
    125138                adl_type = @adl_type.pop
    126139                assert_at(__FILE__,__LINE__){adl_type == :cadl}
     
    208221              end
    209222              data = $' # variable $' receives the string after the match
    210             when :dadl
    211               dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)
    212               data = dadl_scanner.scan(data) do |sym, val|
    213                 yield sym, val
    214               end
    215             when :cadl
    216               cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)
    217               data = cadl_scanner.scan(data) do |sym, val|
    218                 yield sym, val
    219               end
    220             when :regexp
    221               regex_scanner = OpenEhr::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)
    222               data = regex_scanner.scan(data) do |sym, val|
    223                 yield sym, val
    224               end
    225             when :term_constraint
    226               term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    227               data = term_constraint_scanner.scan(data) do |sym, val|
    228                 yield sym, val
    229               end
    230223            else
    231               raise
     224              data = @adl_type.scan(data) do |sym, val|
     225                yield sym, val
     226              end
    232227            end
    233228          end
     
    247242        }
    248243
    249         def initialize(adl_type, filename, lineno = 1)
     244        def initialize(filename, lineno = 1)
    250245          super(adl_type, filename, lineno)
    251246          @in_interval = false
    252247          @in_c_domain_type = false
    253248          @in_dblock = true
     249          @adl_type = nil
    254250        end
    255251
     
    258254        #
    259255        def scan(data)
    260           @@logger.debug("Entering DADLScanner#scan at #{@filename}:#{@lineno}: @adl_type = #{@adl_type.inspect}, data = #{data.inspect}")
    261256          until data.nil?  do
    262             @@logger.debug("#{@filename}:#{@lineno}: DADLScanner#scan:loop data = #{data.inspect}")
    263             @@logger.debug("#{@filename}:#{@lineno}: DADLScanner#scan:loop self = \n#{self.to_yaml}")
    264             case @adl_type.last
    265             when :dadl
     257            if @adl_type.nil?
    266258              case data
    267259              when /\A\n/ # carriage return
     
    295287                  yield :SYM_LT, :SYM_LT
    296288                else
     289                  raise
    297290                  @adl_type.push(:dadl)
    298291                  yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     
    301294                if @in_interval
    302295                  yield :SYM_GT, :SYM_GT
    303 #                 elsif @in_dblock == true
    304 #                   @in_dblock = false
    305 #                   yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    306296                elsif @in_c_domain_type == true
    307297                  assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
     
    399389              end
    400390              data = $' # variable $' receives the string after the match
     391
     392
     393
     394          until data.nil?  do
     395            case @adl_type.last
     396            when :dadl
    401397            when :adl
    402398              adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
Note: See TracChangeset for help on using the changeset viewer.