Sha256: 16c311247e0b8cc7e0adc0fae96cccb9200960a01f29c6bb82f0938adefc0f7c
Contents?: true
Size: 957 Bytes
Versions: 1
Compression:
Stored size: 957 Bytes
Contents
module Treetop module Compiler class CharacterClass < AtomicExpression def compile(address, builder, parent_expression = nil) super builder.if__ "has_terminal?(@regexps[gr = #{grounded_regexp(text_value)}] ||= Regexp.new(gr), :regexp, index)" do if address == 0 || decorated? assign_result "instantiate_node(#{node_class_name},input, index...(index + 1))" extend_result_with_inline_module else assign_lazily_instantiated_node end builder << "@index += 1" # Always one character end builder.else_ do builder << "terminal_parse_failure(#{single_quote('['+characters+']')})" assign_result 'nil' end end def grounded_regexp(string) # Double any backslashes, then backslash any single-quotes: "'\\A#{string.gsub(/\\/) { '\\\\' }.gsub(/'/) { "\\'"}}'" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
treetop-1.5.3 | lib/treetop/compiler/node_classes/character_class.rb |