OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [go/] [gofrontend/] [ast-dump.h] - Rev 806

Go to most recent revision | Compare with Previous | Blame | View Log

// ast-dump.h -- AST debug dump.    -*- C++ -*-
 
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
 
#ifndef GO_AST_DUMP_H
#define GO_AST_DUMP_H
 
#include "string-dump.h"
 
class Expression;
class Expression_list;
class Named_object;
class Statement;
class Gogo;
 
// This class implements fgo-dump-ast. the
// Abstract syntax tree dump of the Go program.
 
class Ast_dump_context : public String_dump
{
 public:
  Ast_dump_context(std::ostream* out = NULL, bool dump_subblocks = true);
 
  // Initialize the dump context.
  void
  dump(Gogo*, const char* basename);
 
  // Dump spaces to dumpfile as indentation.
  void
  print_indent();
 
  // Increase current indentation for print_indent().
  void
  indent()
  { ++this->indent_;}
 
  // Decrease current indentation for print_indent().
  void
  unindent()
  { --this->indent_;}
 
  // Whether subblocks should be dumped or not.
  bool
  dump_subblocks()
  { return this->dump_subblocks_; }
 
  // Get dump output stream.
  std::ostream&
  ostream()
  { return *this->ostream_;}
 
  // Dump a Block to dump file.
  void
  dump_block(Block*);
 
  // Dump a type to dump file.
  void
  dump_type(const Type*);
 
  // Dump an expression to dump file.
  void
  dump_expression(const Expression*);
 
  // Dump an expression list to dump file.
  void
  dump_expression_list(const Expression_list*, bool as_pairs = false);
 
  // Dump a typed identifier to dump file.
  void
  dump_typed_identifier(const  Typed_identifier*);
 
  // Dump a typed identifier list to dump file.
  void
  dump_typed_identifier_list(const Typed_identifier_list*);
 
  // Dump temporary variable name to dump file.
  void
  dump_temp_variable_name(const Statement*);
 
  // Dump unamed lable name to dump file.
  void
  dump_label_name(const Unnamed_label*);
 
  // Dump operator symbol to dump file.
  void
  dump_operator(Operator);
 
  // Implementation of String_dump interface.
  void
  write_c_string(const char*);
 
  // Implements the String_dump interface.
  void
  write_string(const std::string& s);
 
  // Dump statement to stream.
  static void
  dump_to_stream(const Statement*, std::ostream*);
 
  // Dump expression to stream.
  static void
  dump_to_stream(const Expression* expr, std::ostream* out);
 
 private:
   // Current indent level.
  int indent_;
 
  // Indentation offset.
  static const int offset_;
 
  // Whether subblocks of composite statements should be dumped or not.
  bool dump_subblocks_;
 
  // Stream on output dump file.
  std::ostream* ostream_;
 
  Gogo* gogo_;
};
 
#endif  // GO_AST_DUMP_H
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.