class Racc::GrammarFileScanner

def yylex0

def yylex0
  begin
    until @line.empty?
      @line.sub!(/\A\s+/, '')
      if /\A\#/ =~ @line
        break
      elsif /\A\/\*/ =~ @line
        skip_comment
      elsif s = reads(/\A[a-zA-Z_]\w*/)
        yield [atom_symbol(s), s.intern]
      elsif s = reads(/\A\d+/)
        yield [:DIGIT, s.to_i]
      elsif ch = reads(/\A./)
        case ch
        when '"', "'"
          yield [:STRING, eval(scan_quoted(ch))]
        when '{'
          lineno = lineno()
          yield [:ACTION, SourceText.new(scan_action(), @filename, lineno)]
        else
          if ch == '|'
            @line_head = false
          end
          yield [ch, ch]
        end
      else
      end
    end
  end while next_line()
  yield nil
end