Fixed behaviour of character classes, so that the escaping works like Ruby single...
[treetop.git] / lib / treetop / compiler / node_classes / character_class.rb
blobfc81da24e323f1084d84081ad2146590eeffcb41
1 module Treetop
2   module Compiler    
3     class CharacterClass < AtomicExpression
4       def compile(address, builder, parent_expression = nil)
5         super
6         
7         builder.if__ "input.index(Regexp.new(#{single_quote(text_value)}), index) == index" do
8           assign_result "(#{node_class_name}).new(input, index...(index + 1))"
9           extend_result_with_inline_module
10           builder << "@index += 1"
11         end
12         builder.else_ do
13           "terminal_parse_failure(#{single_quote(characters)})"
14           assign_result 'nil'
15         end
16       end
17     end
18   end
19 end