Commit 61ccbcfd by Gabriel Dos Reis Committed by Gabriel Dos Reis

Makefile.in (C_OBJS): Include c-pretty-print.o

2002-07-29  Gabriel Dos Reis  <gdr@nerim.net>

	* Makefile.in (C_OBJS): Include c-pretty-print.o
	(c-pretty-print.o): Add depency rule.
	* pretty-print.h: Add more macros.
	* c-pretty-print.c: New file.
	* c-pretty-print.h: Likewise.

cp/

2002-07-29  Gabriel Dos Reis  <gdr@nerim.net>

	* Make-lang.in (CXX_C_OBJS): Include.

From-SVN: r55845
parent 09101f56
2002-07-29 Gabriel Dos Reis <gdr@nerim.net>
* Makefile.in (C_OBJS): Include c-pretty-print.o
(c-pretty-print.o): Add depency rule.
* pretty-print.h: Add more macros.
* c-pretty-print.c: New file.
* c-pretty-print.h: Likewise.
2002-07-29 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/spe.h (__internal_ev_mwhgumian): Cast vector
......
......@@ -718,7 +718,7 @@ C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \
c-objc-common.o c-dump.o libcpp.a $(C_TARGET_OBJS)
# Language-specific object files for C.
C_OBJS = c-parse.o c-lang.o $(C_AND_OBJC_OBJS)
C_OBJS = c-parse.o c-lang.o c-pretty-print.o $(C_AND_OBJC_OBJS)
# Language-independent object files.
......@@ -1230,6 +1230,8 @@ c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \
$(C_COMMON_H) flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
$(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def $(TARGET_H) \
diagnostic.h tree-inline.h except.h gt-c-common.h real.h langhooks.h
c-pretty-print.o : c-pretty-print.c c-pretty-print.h pretty-print.h \
$(C_COMMON_H) $(CONFIG_H) $(SYSTEM_H) real.h
# A file used by all variants of C and some other languages.
......
/* Various declarations for the C and C++ pretty-printers.
Copyright (C) 2002 Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "tree.h"
#include "c-common.h"
#include "pretty-print.h"
/* The data type used to bundle information necessary for pretty-printing
a C or C++ entity. */
typedef struct c_pretty_print_info c_pretty_print_info;
/* The type of a C pretty-printer 'member' function. */
typedef void (*c_pretty_print_fn) PARAMS ((c_pretty_print_info *, tree));
struct c_pretty_print_info
{
struct pretty_print_info base;
/* Points to the first element of an array of offset-list.
Not used yet. */
int *offset_list;
/* These must be overriden by each of the C and C++ front-end to
reflect their understanding of syntatic productions when they differ. */
c_pretty_print_fn declaration;
c_pretty_print_fn declaration_specifiers;
c_pretty_print_fn type_specifier;
c_pretty_print_fn declarator;
c_pretty_print_fn direct_declarator;
c_pretty_print_fn parameter_declaration;
c_pretty_print_fn type_id;
c_pretty_print_fn statement;
c_pretty_print_fn primary_expression;
c_pretty_print_fn postfix_expression;
c_pretty_print_fn unary_expression;
c_pretty_print_fn multiplicative_expression;
c_pretty_print_fn conditional_expression;
c_pretty_print_fn assignment_expression;
};
#define pp_buffer(PPI) (PPI)->base.buffer
#define pp_c_left_paren(PPI) \
do { \
pp_left_paren (PPI); \
(PPI)->base.padding = pp_none; \
} while (0)
#define pp_c_right_paren(PPI) \
do { \
pp_right_paren (PPI); \
(PPI)->base.padding = pp_none; \
} while (0)
#define pp_c_left_bracket(PPI) \
do { \
pp_left_bracket (PPI); \
(PPI)->base.padding = pp_none; \
} while (0)
#define pp_c_right_bracket(PPI) \
do { \
pp_right_bracket (PPI); \
(PPI)->base.padding = pp_none; \
} while (0)
#define pp_c_whitespace(PPI) \
do { \
pp_whitespace (PPI); \
(PPI)->base.padding = pp_none; \
} while (0)
#define pp_c_maybe_whitespace(PPI) \
do { \
if ((PPI)->base.padding != pp_none) \
pp_c_whitespace (PPI); \
} while (0)
#define pp_c_identifier(PPI, ID) \
do { \
pp_c_maybe_whitespace (PPI); \
pp_identifier (PPI, ID); \
(PPI)->base.padding = pp_before; \
} while (0)
#define pp_c_tree_identifier(PPI, ID) \
pp_c_identifier (PPI, IDENTIFIER_POINTER (ID))
#define pp_declaration(PPI, T) (*(PPI)->declaration) (PPI, T)
#define pp_declaration_specifiers(PPI, D) \
(*(PPI)->declaration_specifiers) (PPI, D)
#define pp_type_specifier(PPI, D) (*(PPI)->type_specifier) (PPI, D)
#define pp_declarator(PPI, D) (*(PPI)->declarator) (PPI, D)
#define pp_direct_declarator(PPI, D) (*(PPI)->direct_declarator) (PPI, D)
#define pp_parameter_declaration(PPI, T) \
(*(PPI)->parameter_declaration) (PPI, T)
#define pp_type_id(PPI, D) (*(PPI)->type_id) (PPI, D)
#define pp_statement(PPI, S) (*(PPI)->statement) (PPI, S)
#define pp_primary_expression(PPI, E) (*(PPI)->primary_expression) (PPI, E)
#define pp_postfix_expression(PPI, E) (*(PPI)->postfix_expression) (PPI, E)
#define pp_unary_expression(PPI, E) (*(PPI)->unary_expression) (PPI, E)
#define pp_multiplicative_expression(PPI, E)\
(*(PPI)->multiplicative_expression) (PPI, E)
#define pp_conditional_expession(PPI, E) \
(*(PPI)->conditional_expression (PPI, E))
#define pp_assignment_expression(PPI, E) \
(*(PPI)->assignment_expression) (PPI, E)
/* Declarations. */
void pp_c_cv_qualifier PARAMS ((c_pretty_print_info *, int));
void pp_c_parameter_declaration_clause PARAMS ((c_pretty_print_info *, tree));
void pp_c_declaration PARAMS ((c_pretty_print_info *, tree));
void pp_c_statement PARAMS ((c_pretty_print_info *, tree));
void pp_c_expression PARAMS ((c_pretty_print_info *, tree));
/* Expressions. */
void pp_c_expression PARAMS ((c_pretty_print_info *, tree));
void pp_c_logical_or_expression PARAMS ((c_pretty_print_info *, tree));
void pp_c_expression_list PARAMS ((c_pretty_print_info *, tree));
void pp_c_cast_expression PARAMS ((c_pretty_print_info *, tree));
void pp_c_postfix_expression PARAMS ((c_pretty_print_info *, tree));
void pp_c_literal PARAMS ((c_pretty_print_info *, tree));
......@@ -96,7 +96,7 @@ $(DEMANGLER_PROG): cxxmain.o underscore.o $(LIBDEPS)
# The compiler itself.
# Shared with C front end:
CXX_C_OBJS = attribs.o c-common.o c-format.o c-pragma.o c-semantics.o c-lex.o \
c-dump.o $(CXX_TARGET_OBJS)
c-dump.o $(CXX_TARGET_OBJS) c-pretty-print.o
# Language-specific object files.
CXX_OBJS = cp/call.o cp/decl.o cp/expr.o cp/pt.o cp/typeck2.o \
......
......@@ -53,7 +53,20 @@ struct pretty_print_info
#define pp_colon(PPI) output_add_character (pp_buffer (PPI), ':')
#define pp_colon_colon(PPI) output_add_string (pp_buffer (PPI), "::")
#define pp_arrow(PPI) output_add_string (pp_buffer (PPI), "->")
#define pp_equal(PPI) output_add_character (pp_buffer (PPI), '=')
#define pp_question(PPI) output_add_character (pp_buffer (PPI), '?')
#define pp_bar(PPI) output_add_character (pp_buffer (PPI), '|')
#define pp_carret(PPI) output_add_character (pp_buffer (PPI), '^')
#define pp_ampersand(PPI) output_add_character (pp_buffer (PPI), '&')
#define pp_less(PPI) output_add_character (pp_buffer (PPI), '<')
#define pp_greater(PPI) output_add_character (pp_buffer (PPI), '>')
#define pp_plus(PPI) output_add_character (pp_buffer (PPI), '+')
#define pp_minus(PPI) output_add_character (pp_buffer (PPI), '-')
#define pp_star(PPI) output_add_character (pp_buffer (PPI), '*')
#define pp_slash(PPI) output_add_character (pp_buffer (PPI), '/')
#define pp_modulo(PPI) output_add_character (pp_buffer (PPI), '%')
#define pp_exclamation(PPI) output_add_character (pp_buffer (PPI), '!')
#define pp_complement(PPI) output_add_character (pp_buffer (PPI), '~')
#define pp_quote(PPI) output_add_character (pp_buffer (PPI), '\'')
#define pp_backquote(PPI) output_add_character (pp_buffer (PPI), '`')
#define pp_doublequote(PPI) output_add_character (pp_buffer (PPI), '"')
......@@ -80,7 +93,7 @@ struct pretty_print_info
#define pp_tree_identifier(PPI, T) pp_identifier(PPI, IDENTIFIER_POINTER (T))
#define pp_unsupported_tree(PPI, T) \
output_verbatim (pp_buffer((PPI), "#`%s' not supported by %s#",\
output_verbatim (pp_buffer(PPI), "#`%s' not supported by %s#",\
tree_code_name[(int) TREE_CODE (T)], __FUNCTION__)
#endif /* GCC_PRETTY_PRINT_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment