class SheepAst::ScopedMatchBase
TBD
Attributes
end_expr[RW]
start_expr[RW]
Public Instance Methods
match_end(expr, key)
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 63 def match_end(expr, key); end
match_start(expr, key)
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 65 def match_start(expr, key); end
new(start_expr, end_expr, sym = nil, **options)
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 54 def new(start_expr, end_expr, sym = nil, **options) ins = T.unsafe(self).class.new(start_expr, sym, **options) ins.start_expr = start_expr ins.end_expr = end_expr ins.sem = 0 ins.matched_expr = [] return ins end
sem_dec()
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 102 def sem_dec @sem -= 1 end
sem_get()
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 94 def sem_get return @sem end
sem_inc()
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 98 def sem_inc @sem += 1 end
sem_set(sem)
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 90 def sem_set(sem) @sem = sem end
test_finish?(data)
click to toggle source
# File lib/sheep_ast/match/scoped_match_base.rb, line 68 def test_finish?(data) key = data.expr ret = false application_error('called when sem == 0') if @sem.zero? if match_end(@end_expr, key) && additional_end_cond(data) if sem_get == 1 ret = true sem_set 0 else sem_dec end elsif match_start(@start_expr, key) sem_inc end ldebug? and ldebug "test_finish ? key = #{key.inspect},"\ " end_expr = #{@end_expr.inspect}, sem = #{@sem}, ret = #{ret}" return ret end