Changeset 313
- Timestamp:
- Oct 11, 2009, 4:54:15 PM (14 years ago)
- Location:
- ruby/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/README
r164 r313 11 11 * Ruby 1.8.6 or higher 12 12 * RubyGems 13 * Yaparc Library 0.2.2 or higer14 To install the library,15 execute the following command.16 # gem install yaparc17 13 * Tested with Ruby 1.8.6 on Linux and FreeBSD. 18 14 * If you use Ruby 1.6, you should prepare racc -
ruby/trunk/lib/adl_parser/lib/adl_scanner.rb
r307 r313 3 3 require 'adl_parser.rb' 4 4 require 'open_ehr' 5 #require 'am.rb'6 #require 'rm.rb'7 5 require 'util.rb' 8 6 … … 27 25 end 28 26 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 29 42 # 30 43 # ADLScanner 31 44 # 32 45 class ADLScanner < Base 33 attr_accessor :adl_type, :lineno , :cadl_scanner, :dadl_scanner, :regex_scanner, :term_constraint_scanner46 attr_accessor :adl_type, :lineno 34 47 35 48 @@logger = OpenEhr::ADL::Scanner::LOGGER #Logger.new('log/scanner.log') … … 56 69 super(adl_type, filename, lineno) 57 70 @in_interval = false 71 @adl_type = nil 58 72 end 59 73 … … 64 78 @@logger.debug("#{__FILE__}:#{__LINE__}: Entering ADLScanner#scan at #{@filename}:#{@lineno}: data = #{data.inspect}") 65 79 until data.nil? do 66 case @adl_type.last 67 when :adl 80 if @adl_type.nil? 68 81 case data 69 82 when /\A\n/ # carriage return … … 85 98 when /\A(\w+)-(\w+)-(\w+)\.(\w+)((?:-\w+)*)\.(v\w+)/ #V_ARCHETYPE_ID 86 99 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)88 100 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) 89 101 yield :V_ARCHETYPE_ID, archetype_id … … 107 119 yield :SYM_LT, :SYM_LT 108 120 else 109 @adl_type .push(:dadl)121 @adl_type = OpenEhr::ADL::Scanner::DADLScanner.new(@filename, @lineno) 110 122 yield :SYM_START_DBLOCK, $& 111 123 end … … 114 126 yield :SYM_GT, :SYM_GT 115 127 else 128 raise 116 129 adl_type = @adl_type.pop 117 130 assert_at(__FILE__,__LINE__){adl_type == :dadl} … … 119 132 end 120 133 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) 123 135 yield :SYM_START_CBLOCK, :SYM_START_CBLOCK 124 136 when /\A\}/ # } 137 raise 125 138 adl_type = @adl_type.pop 126 139 assert_at(__FILE__,__LINE__){adl_type == :cadl} … … 208 221 end 209 222 data = $' # variable $' receives the string after the match 210 when :dadl211 dadl_scanner = OpenEhr::ADL::Scanner::DADLScanner.new(@adl_type, @filename, @lineno)212 data = dadl_scanner.scan(data) do |sym, val|213 yield sym, val214 end215 when :cadl216 cadl_scanner = OpenEhr::ADL::Scanner::CADLScanner.new(@adl_type, @filename, @lineno)217 data = cadl_scanner.scan(data) do |sym, val|218 yield sym, val219 end220 when :regexp221 regex_scanner = OpenEhr::ADL::Scanner::RegexScanner.new(@adl_type, @filename, @lineno)222 data = regex_scanner.scan(data) do |sym, val|223 yield sym, val224 end225 when :term_constraint226 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, val229 end230 223 else 231 raise 224 data = @adl_type.scan(data) do |sym, val| 225 yield sym, val 226 end 232 227 end 233 228 end … … 247 242 } 248 243 249 def initialize( adl_type,filename, lineno = 1)244 def initialize(filename, lineno = 1) 250 245 super(adl_type, filename, lineno) 251 246 @in_interval = false 252 247 @in_c_domain_type = false 253 248 @in_dblock = true 249 @adl_type = nil 254 250 end 255 251 … … 258 254 # 259 255 def scan(data) 260 @@logger.debug("Entering DADLScanner#scan at #{@filename}:#{@lineno}: @adl_type = #{@adl_type.inspect}, data = #{data.inspect}")261 256 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? 266 258 case data 267 259 when /\A\n/ # carriage return … … 295 287 yield :SYM_LT, :SYM_LT 296 288 else 289 raise 297 290 @adl_type.push(:dadl) 298 291 yield :SYM_START_DBLOCK, :SYM_START_DBLOCK … … 301 294 if @in_interval 302 295 yield :SYM_GT, :SYM_GT 303 # elsif @in_dblock == true304 # @in_dblock = false305 # yield :SYM_END_DBLOCK, :SYM_END_DBLOCK306 296 elsif @in_c_domain_type == true 307 297 assert_at(__FILE__,__LINE__){@adl_type.last == :dadl} … … 399 389 end 400 390 data = $' # variable $' receives the string after the match 391 392 393 394 until data.nil? do 395 case @adl_type.last 396 when :dadl 401 397 when :adl 402 398 adl_scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename, @lineno)
Note:
See TracChangeset
for help on using the changeset viewer.