Changeset 324


Ignore:
Timestamp:
Oct 20, 2009, 1:30:21 AM (15 years ago)
Author:
Tatsukawa, Akimichi
Message:

commit from Minneapolis

File:
1 edited

Legend:

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

    r323 r324  
    33require 'adl_parser.rb'
    44require 'open_ehr'
    5 #require 'am.rb'
    6 #require 'rm.rb'
    75require 'util.rb'
    86
     
    5351          'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY
    5452        }
    55         REGEX_PATTERN = {
    56           :V_ISO8601_DURATION => /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
    57         }
    58 
     53        REGEX_PATTERN = Hash[:CarriageReturn => /\A\n/,
     54                             :WhiteSpace => /\A[ \t\r\f]+/,
     55                             :SingleCommentLine => /\A--.*/,
     56                             :V_ISO8601_DURATION => /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
     57                            ]
     58       
    5959        def initialize(adl_type, filename, lineno = 1)
    6060          super(adl_type, filename, lineno)
     
    7171            when :adl
    7272              case data
    73               when /\A\n/ # carriage return
     73#              when /\A\n/ # carriage return
     74              when REGEX_PATTERN[:CarriageReturn] # carriage return
    7475                @lineno += 1
    7576                ;
    76               when /\A[ \t\r\f]+/ #just drop it
    77                 ;
    78               when /\A--.*/ # single line comment
     77#              when /\A[ \t\r\f]+/ #just drop it
     78              when REGEX_PATTERN[:WhiteSpace] # carriage return
     79                ;
     80#              when /\A--.*/ # single line comment
     81              when REGEX_PATTERN[:SingleCommentLine] # carriage return
    7982                @lineno += 1
    8083                @@logger.debug("ADLScanner#scan: COMMENT = #{$&} at #{@filename}:#{@lineno}")
     
    243246      # DADLScanner
    244247      #
    245       class DADLScanner < Base
     248      class DADLScanner < ADLScanner
    246249        attr_accessor :in_interval, :in_c_domain_type, :dblock_depth
    247250        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')
     
    270273            when :dadl
    271274              case data
    272               when /\A\n/ # carriage return
    273                 #@@logger.debug("DADLScanner#scan:  carriage return, data = #{data.inspect}")
     275#              when /\A\n/ # carriage return
     276              when REGEX_PATTERN[:CarriageReturn] # carriage return
    274277                @lineno += 1
    275278                ;
    276               when /\A[ \t\r\f]+/ #just drop it
     279#              when /\A[ \t\r\f]+/ #just drop it
     280              when REGEX_PATTERN[:WhiteSpace]
    277281                ##@@logger.debug("DADLScanner#scan:  white space, data = #{data.inspect}")
    278282                ;
    279               when /\A--.*/ # single line comment
     283#              when /\A--.*/ # single line comment
     284              when REGEX_PATTERN[:SingleCommentLine]
    280285                @@logger.debug("DADLScanner#scan: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    281286                ;
     
    434439      end # of DADLScanner
    435440
    436 
    437 
    438       class CADLScanner < Base
     441      class CADLScanner < ADLScanner
    439442
    440443        @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log')        #Logger.new('log/scanner.log')
     
    483486            when :cadl
    484487              case data
    485               when /\A\n/ # carriage return
     488#              when /\A\n/ # carriage return
     489              when REGEX_PATTERN[:CarriageReturn] # carriage return
    486490                @lineno += 1
    487491                ;
    488492                #yield :CR, :CR
    489               when /\A[ \t\r\f]+/ #just drop it
    490                 ;
    491               when /\A--.*\n/ # single line comment
     493#              when /\A[ \t\r\f]+/ #just drop it
     494              when REGEX_PATTERN[:WhiteSpace]
     495                ;
     496#              when /\A--.*\n/ # single line comment
     497              when REGEX_PATTERN[:SingleCommentLine]
    492498                @lineno += 1
    493499                ;
     
    545551                @@logger.debug("CADLScanner#scan: Slash_code #{@filename}:#{@lineno}")
    546552                yield :Slash_code, :Slash_code
    547 # #                yield :Slash_code, :Slash_code
    548 # #              when /\A\// #V_REGEXP /
    549 #                 assert_at(__FILE__,__LINE__){@adl_type.last != :regexp}
    550 #                 #@in_regexp = true
    551 #                 @adl_type.push(:regexp)
    552 # #                yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
    553 
    554553              when /\A\{\// # REGEXP_HEAD {/
    555554                assert_at(__FILE__,__LINE__){ @adl_type.last != :regexp}
     
    729728            when :regexp
    730729              case data
    731 # #              when /\A\// #V_REGEXP /
    732 #               when /\A([^\/]+)\// #V_REGEXP
    733 #                 assert_at(__FILE__,__LINE__){@adl_type.last == :regexp}
    734 #                 #@in_regexp = false
    735 #                 @adl_type.pop
    736 #                 @@logger.debug("#{__FILE__}:#{__LINE__}: RegexScanner::scan  $1 = #{$1.inspect}")
    737 # #                yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
    738 #                 yield :V_REGEXP,  $1
    739 #               when /\A\/\}/ #V_REGEXP /
    740 #                 if @adl_type.last == :regexp
    741 #                   @in_regexp = false
    742 #                   @adl_type.pop
    743 #                   yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
    744 #                 else
    745 #                   raise
    746 #                 end
    747 #              when /\A(.*)(\/\})/ #V_REGEXP /}
    748 #              when /\A(.*)\/\}/ # REGEXP_BODY
    749730              when /\A(.*)\// # REGEXP_BODY
    750731                @adl_type.pop
     
    813794                assert_at(__FILE__,__LINE__){adl_type == :term_constraint}
    814795                yield :END_TERM_CODE_CONSTRAINT, $1
    815               else
    816                 raise "data = #{data}"
     796#               else
     797#                 raise "data = #{data}"
    817798              end
    818799              data = $' # variable $' receives the string after the match
Note: See TracChangeset for help on using the changeset viewer.