aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/go/gofrontend/ast-dump.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/go/gofrontend/ast-dump.h')
-rw-r--r--gcc-4.9/gcc/go/gofrontend/ast-dump.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/go/gofrontend/ast-dump.h b/gcc-4.9/gcc/go/gofrontend/ast-dump.h
new file mode 100644
index 000000000..55c93693f
--- /dev/null
+++ b/gcc-4.9/gcc/go/gofrontend/ast-dump.h
@@ -0,0 +1,122 @@
+// 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