#include "ctrump/ast/types.h"
#include "ctrump/ast/location.h"
#include "ctrump/ast/source-string.h"
#include "ctrump/analyzer/loop.h"
#include "ctrump/analyzer/cfg.h"
#include "ctrump/ast/expr-code.h"
#include "ctrump/ast/abi.h"
#include "ctrump/common/dll.h"
Go to the source code of this file.
以下の点が未実装
source_string : マクロ展開復元のために、もとのソーステキストを入れておくという意図があるが まだ詳細が詰まっていないので今は空文字列("") が入っている
数値、文字列リテラルのみ、もとのソーステキストが含まれている
oldstyle 関数宣言 :
動作確認していない
可変長配列 : sizeof(type) はコンパイル時定数にすべきではない
宣言指定子の位置 : unsigned, signed, 記憶域指定子, 型修飾子の順序が保存されない
関数のコンマの位置 : 関数のコンマの位置が保存されない
修飾子の位置: 型修飾子とGCC attributeの位置が保存されない
Definition in file ast.h.
#define CTRUMP_ENUM_LIST_HAVE_LAST_COMMA (1<<0) |
#define CTRUMP_INITIALIZER_HAVE_LAST_COMMA (1<<0) |
enum ctrump_extdef_code |
最上位宣言の種類
enum ctrump_stmt_code |
文の種類
enum ctrump_stor_class |
記憶域指定子
enum ctrump_typespec_code |
型指定子
CTRUMP_EXTDEF void ctrump_ast_fold_const_offset_sint | ( | int * | ret_offset, | |
struct ctrump_expr ** | ret_expr, | |||
struct ctrump_expr * | e | |||
) |
加算される値の定数畳み込み fold (expr + offset)
3 + expr + 3 => ret_expr=expr, ret_offset = 6 3 => ret_expr = NULL, ret_offset=3
加算される値の定数畳み込み fold (expr + offset)
ret_offset | [out] 定数値を返すポインタ | |
ret_expr | [out] 定数値以外を返すポインタ | |
e | 式 |
Definition at line 75 of file fold.c.
References ctrump_expr::binary, ctrump_expr::code, ctrump_ast_fold_const_sint(), CTRUMP_EXPR_BIN_ADD, CTRUMP_EXPR_BIN_SUB, CTRUMP_EXPR_PAREN, CTRUMP_EXPR_SINT_LITERAL, ctrump_paren_expr::expr, ctrump_binary_expr::lhs, ctrump_expr::paren, ctrump_binary_expr::rhs, rhs, ctrump_expr::sint_literal, ctrump_expr::u, and ctrump_integer_literal::value.
Referenced by single_expr_subscripts_to_loop_subscript().
CTRUMP_EXTDEF int ctrump_ast_fold_const_sint | ( | const struct ctrump_expr * | expr, | |
int * | is_const | |||
) |
定数畳み込み
expr | 式 | |
is_const | [out] 定数ならば1が入る。それ以外は0 |
Definition at line 46 of file fold.c.
References ctrump_expr::code, CTRUMP_EXPR_PAREN, CTRUMP_EXPR_SINT_LITERAL, ctrump_paren_expr::expr, ctrump_expr::paren, ctrump_expr::sint_literal, ctrump_expr::u, and ctrump_integer_literal::value.
Referenced by ctrump_ast_fold_const_offset_sint(), ctrump_env_handle_decl_node(), fold_const(), and recog_inductive().
CTRUMP_EXTDEF int ctrump_expr_occur_var | ( | const struct ctrump_expr * | expr, | |
const struct ctrump_var * | v | |||
) |
check occurrence of v in expr
Definition at line 197 of file ast.c.
References ctrump_call_expr::args, ctrump_expr::arr_ref, ctrump_arr_ref_expr::array, ctrump_expr::binary, ctrump_expr::call, ctrump_expr::cast, ctrump_expr::code, ctrump_cond_expr::cond, ctrump_expr::cond, CTRUMP_CASE_ALL_BIN_EXPR, CTRUMP_CASE_ALL_UNARY_EXPR, CTRUMP_CASE_CONSTANT_TERM, CTRUMP_EXPR_ARRREF, CTRUMP_EXPR_CALL, CTRUMP_EXPR_CAST, CTRUMP_EXPR_CONDITIONAL, CTRUMP_EXPR_EMPTY, CTRUMP_EXPR_IMPLICIT_CAST, CTRUMP_EXPR_INITIALIZER, CTRUMP_EXPR_IVTMP, CTRUMP_EXPR_MACRO_EXPAND, CTRUMP_EXPR_MEMBER_REF, ctrump_expr_occur_var(), CTRUMP_EXPR_PAREN, CTRUMP_EXPR_PTR_MEMBER_REF, CTRUMP_EXPR_TEXT, CTRUMP_EXPR_VARREF, ctrump_fixme, ctrump_unreachable, ctrump_cond_expr::else_, ctrump_macro_expand_expr::expanded, ctrump_unary_expr::expr, ctrump_paren_expr::expr, ctrump_cast_expr::expr, ctrump_call_expr::func_expr, ctrump_expr::ivtmp, ctrump_binary_expr::lhs, ctrump_expr::macro_expand, ctrump_expr::member_ref, ctrump_call_expr::num_args, ctrump_member_ref::obj_expr, ctrump_ivtmp::original_expr, ctrump_expr::paren, ctrump_binary_expr::rhs, ctrump_arr_ref_expr::subscript, ctrump_cond_expr::then_, ctrump_expr::u, ctrump_expr::unary, ctrump_varref_expr::var, and ctrump_expr::varref.
Referenced by ctrump_expr_occur_var(), and recog_reductive().
CTRUMP_EXTDEF struct ctrump_location ctrump_get_stmt_loc | ( | const struct ctrump_stmt * | stmt | ) | [read] |
文の開始位置取得
Definition at line 133 of file ast.c.
References ctrump_fixme, CTRUMP_STMT_ASM, CTRUMP_STMT_BREAK, CTRUMP_STMT_CASE, CTRUMP_STMT_COMPOUND, CTRUMP_STMT_CONTINUE, CTRUMP_STMT_DECL, CTRUMP_STMT_DEFAULT, CTRUMP_STMT_DEFINE, CTRUMP_STMT_DO_WHILE, CTRUMP_STMT_EMPTY, CTRUMP_STMT_EXPR, CTRUMP_STMT_FOR, CTRUMP_STMT_FOR_DECL, CTRUMP_STMT_GOTO, CTRUMP_STMT_IF, CTRUMP_STMT_IF_ELSE, CTRUMP_STMT_IFDEF, CTRUMP_STMT_LABELED, CTRUMP_STMT_LIST, CTRUMP_STMT_NEWLINE, CTRUMP_STMT_PRAGMA, CTRUMP_STMT_RETURN, CTRUMP_STMT_RETURN_EXPR, CTRUMP_STMT_SLAAST_COMMENT, CTRUMP_STMT_SLASLA_COMMENT, CTRUMP_STMT_SWITCH, CTRUMP_STMT_UNDEF, CTRUMP_STMT_WHILE, and LOCATION_GENERATED.
Referenced by error_get_lineno(), error_get_path(), and get_stmt_loc().
CTRUMP_EXTDEF int ctrump_print_expr_stderr | ( | struct ctrump_expr * | e, | |
int | is_print_internal | |||
) |
print expr to stdout (for debug)
Definition at line 2260 of file pretty-printer.c.
References ctrump_print_expr().
CTRUMP_EXTDEF int ctrump_print_translation_unit_stderr | ( | struct ctrump_translation_unit * | u | ) |
print translation unit (for debug)
Definition at line 2277 of file pretty-printer.c.
References ctrump_print_translation_unit().
CTRUMP_EXTDEF int ctrump_expr_prec_table[] |
式の優先順位 expr_code -> int 絶対値に意味は無い。値が大きいほど優先順位が高い
Definition at line 60 of file ast.c.
Referenced by expr_prec().