def read_from_string(buf)
      @lexer.stream_stash([FileIO.new(StringIO.new(buf), "-")])
      parse.each do |toplevel_ast|
        @gen.emit_toplevel(toplevel_ast)
      end
      @lexer.stream_unstash
    end
def read_from_string(buf)
      @lexer.stream_stash([FileIO.new(StringIO.new(buf), "-")])
      parse.each do |toplevel_ast|
        @gen.emit_toplevel(toplevel_ast)
      end
      @lexer.stream_unstash
    end
Reads from a string as if the string is a content of input file.
 Convenient for evaluating small string snippet contaiing preprocessor macros.

 @param [String] buf