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