module Rucc::Parser::Label

Private Instance Methods

read_label(tok) click to toggle source

@param [Token] tok @return [Node]

# File lib/rucc/parser/label.rb, line 9
def read_label(tok)
  label = tok.sval
  if @labels[label]
    Util.errort!(tok, "duplicate label: #{tok}")
  end
  r = Node.ast_label(label)
  @labels[label] = r
  read_label_tail(r)
end
read_label_tail(label) click to toggle source

@param [Node] label @return [Node]

# File lib/rucc/parser/label.rb, line 21
def read_label_tail(label)
  stmt = read_stmt
  v = [label]
  if stmt
    v.push(stmt)
  end
  Node.ast_compound_stmt(v)
end