22 struct expression
*unop
;
23 struct statement
*statement
;
25 struct expression
*left
, *right
;
28 struct expression
*deref
;
32 struct symbol
*cast_type
;
33 struct expression
*cast_expression
;
35 struct conditional_expr
{
36 struct expression
*conditional
, *cond_true
, *cond_false
;
38 struct statement_struct
{
39 struct symbol_list
*syms
;
40 struct statement_list
*stmts
;
66 struct statement
*next
;
70 struct statement
*label_statement
;
72 struct expression
*expression
;
74 struct expression
*if_conditional
;
75 struct statement
*if_true
;
76 struct statement
*if_false
;
78 struct compound_struct
{
79 struct symbol_list
*syms
;
80 struct statement_list
*stmts
;
82 struct labeled_struct
{
83 struct token
*label_identifier
;
84 struct statement
*label_statement
;
87 struct expression
*case_expression
;
88 struct expression
*case_to
;
89 struct statement
*case_statement
;
91 struct switch_struct
{
92 struct expression
*switch_expression
;
93 struct statement
*switch_statement
;
95 struct iteration_struct
{
96 struct expression
*e1
, *e2
, *e3
;
97 struct statement
*iterate
;
100 struct token
*goto_label
;
101 struct expression
*goto_expression
;
106 extern struct token
*parse_expression(struct token
*, struct expression
**);
107 extern struct token
*statement_list(struct token
*, struct statement_list
**);
109 extern void show_statement(struct statement
*);
110 extern void show_statement_list(struct statement_list
*);
111 extern void show_expression(struct expression
*);
112 extern void translation_unit(struct token
*, struct symbol_list
**);