module BioVcf::VcfHeaderParser::RagelKeyValues
Attributes
_simple_lexer_actions[RW]
_simple_lexer_eof_actions[RW]
_simple_lexer_index_offsets[RW]
_simple_lexer_key_offsets[RW]
_simple_lexer_range_lengths[RW]
_simple_lexer_single_lengths[RW]
_simple_lexer_trans_actions[RW]
_simple_lexer_trans_keys[RW]
_simple_lexer_trans_targs[RW]
simple_lexer_en_main[RW]
simple_lexer_error[RW]
simple_lexer_first_final[RW]
simple_lexer_start[RW]
Public Class Methods
debug(msg)
click to toggle source
# File lib/bio-vcf/vcfheader_line.rb, line 25 def self.debug msg # nothing # $stderr.print "DEBUG: ",msg,"\n" end
run_lexer(buf, options = {})
click to toggle source
line 79 “gen_vcfheaderline_parser.rl” %% this just fixes syntax highlighting…
# File lib/bio-vcf/vcfheader_line.rb, line 467 def self.run_lexer(buf, options = {}) do_debug = (options[:debug] == true) $stderr.print "---> ",buf,"\n" if do_debug data = buf.unpack("c*") if(buf.is_a?(String)) eof = data.length values = [] stack = [] emit = lambda { |type, data, ts, p| # Print the type and text of the last read token # p ts,p $stderr.print "EMITTED: #{type}: #{data[ts...p].pack('c*')}\n" if do_debug values << [type,data[ts...p].pack('c*')] } error_code = nil # line 486 "gen_vcfheaderline_parser.rb" begin p ||= 0 pe ||= data.length cs = simple_lexer_start end # line 99 "gen_vcfheaderline_parser.rl" # line 495 "gen_vcfheaderline_parser.rb" begin _klen, _trans, _keys, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true _trigger_goto = false if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = _simple_lexer_key_offsets[cs] _trans = _simple_lexer_index_offsets[cs] _klen = _simple_lexer_single_lengths[cs] _break_match = false begin if _klen > 0 _lower = _keys _upper = _keys + _klen - 1 loop do break if _upper < _lower _mid = _lower + ( (_upper - _lower) >> 1 ) if data[p].ord < _simple_lexer_trans_keys[_mid] _upper = _mid - 1 elsif data[p].ord > _simple_lexer_trans_keys[_mid] _lower = _mid + 1 else _trans += (_mid - _keys) _break_match = true break end end # loop break if _break_match _keys += _klen _trans += _klen end _klen = _simple_lexer_range_lengths[cs] if _klen > 0 _lower = _keys _upper = _keys + (_klen << 1) - 2 loop do break if _upper < _lower _mid = _lower + (((_upper-_lower) >> 1) & ~1) if data[p].ord < _simple_lexer_trans_keys[_mid] _upper = _mid - 2 elsif data[p].ord > _simple_lexer_trans_keys[_mid+1] _lower = _mid + 2 else _trans += ((_mid - _keys) >> 1) _break_match = true break end end # loop break if _break_match _trans += _klen end end while false cs = _simple_lexer_trans_targs[_trans] if _simple_lexer_trans_actions[_trans] != 0 _acts = _simple_lexer_trans_actions[_trans] _nacts = _simple_lexer_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _simple_lexer_actions[_acts - 1] when 0 then # line 33 "gen_vcfheaderline_parser.rl" begin ts=p end when 1 then # line 34 "gen_vcfheaderline_parser.rl" begin emit.call(:value,data,ts,p) end when 2 then # line 38 "gen_vcfheaderline_parser.rl" begin emit.call(:kw,data,ts,p) end when 3 then # line 58 "gen_vcfheaderline_parser.rl" begin emit.call(:key_word,data,ts,p) end when 4 then # line 59 "gen_vcfheaderline_parser.rl" begin emit.call(:value,data,ts,p) end when 5 then # line 60 "gen_vcfheaderline_parser.rl" begin emit.call(:value,data,ts,p) end when 6 then # line 62 "gen_vcfheaderline_parser.rl" begin emit.call(:value,data,ts,p) end when 7 then # line 65 "gen_vcfheaderline_parser.rl" begin emit.call(:value,data,ts,p) end when 8 then # line 67 "gen_vcfheaderline_parser.rl" begin debug("ID FOUND") end when 9 then # line 67 "gen_vcfheaderline_parser.rl" begin error_code="Malformed ID" end when 10 then # line 68 "gen_vcfheaderline_parser.rl" begin error_code="Version" end when 11 then # line 69 "gen_vcfheaderline_parser.rl" begin error_code="Number" end when 12 then # line 70 "gen_vcfheaderline_parser.rl" begin debug("DATE FOUND") end when 13 then # line 70 "gen_vcfheaderline_parser.rl" begin error_code="Date" end when 14 then # line 71 "gen_vcfheaderline_parser.rl" begin error_code="GATK" end when 15 then # line 72 "gen_vcfheaderline_parser.rl" begin debug("KEY_VALUE found") end when 16 then # line 72 "gen_vcfheaderline_parser.rl" begin error_code="unknown key-value " end # line 647 "gen_vcfheaderline_parser.rb" end # action switch end end if _trigger_goto next end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof __acts = _simple_lexer_eof_actions[cs] __nacts = _simple_lexer_actions[__acts] __acts += 1 while __nacts > 0 __nacts -= 1 __acts += 1 case _simple_lexer_actions[__acts - 1] when 9 then # line 67 "gen_vcfheaderline_parser.rl" begin error_code="Malformed ID" end when 10 then # line 68 "gen_vcfheaderline_parser.rl" begin error_code="Version" end when 11 then # line 69 "gen_vcfheaderline_parser.rl" begin error_code="Number" end when 13 then # line 70 "gen_vcfheaderline_parser.rl" begin error_code="Date" end when 14 then # line 71 "gen_vcfheaderline_parser.rl" begin error_code="GATK" end when 16 then # line 72 "gen_vcfheaderline_parser.rl" begin error_code="unknown key-value " end # line 699 "gen_vcfheaderline_parser.rb" end # eof action switch end if _trigger_goto next end end end if _goto_level <= _out break end end end # line 100 "gen_vcfheaderline_parser.rl" raise "ERROR: "+error_code+" in "+buf if error_code begin res = {} # p values values.each_slice(2) do | a,b | $stderr.print '*',a,b if do_debug keyword = a[1] value = b[1] value = value.to_i if ['length','Epoch'].index(keyword) res[keyword] = value # p h[:value] if h[:name]==:identifier or h[:name]==:value or h[:name]==:string end rescue print "ERROR: " p values raise end $stderr.print(res,"\n") if do_debug res end