Sha256: c566a9a2dcc4536ed9dd6f0f8a400f0fd15e0f771e93cc2bfba70e0d9eaf98cc
Contents?: true
Size: 1.17 KB
Versions: 4
Compression:
Stored size: 1.17 KB
Contents
module Treetop module Compiler class Predicate < ParsingExpression def compile(address, builder, parent_expression) super begin_comment(parent_expression) use_vars :result, :start_index obtain_new_subexpression_address parent_expression.prefixed_expression.compile(subexpression_address, builder) builder.if__(subexpression_success?) { when_success } builder.else_ { when_failure } end_comment(parent_expression) end def assign_failure reset_index super(start_index_var) end def assign_success reset_index assign_result epsilon_node end end class AndPredicate < Predicate def when_success assign_success end def when_failure assign_failure end end class NotPredicate < Predicate def when_success assign_failure if (e = parent.atomic.expected) builder << "terminal_parse_failure(#{e}, true)" end end def when_failure if (e = parent.atomic.expected) builder << "terminal_failures.pop" end assign_success end end end end
Version data entries
4 entries across 4 versions & 2 rubygems