4 * Basic parsing data structures. Statements and symbols.
6 * Copyright (C) 2003 Transmeta Corp.
8 * Licensed under the Open Software License version 1.1
28 enum statement_type type
;
30 struct statement
*next
;
34 struct statement
*label_statement
;
36 struct expression
*expression
;
38 struct expression
*if_conditional
;
39 struct statement
*if_true
;
40 struct statement
*if_false
;
42 struct compound_struct
{
43 struct symbol_list
*syms
;
44 struct statement_list
*stmts
;
46 struct labeled_struct
{
47 struct symbol
*label_identifier
;
48 struct statement
*label_statement
;
51 struct expression
*case_expression
;
52 struct expression
*case_to
;
53 struct statement
*case_statement
;
54 struct symbol
*case_label
;
56 struct switch_struct
{
57 struct expression
*switch_expression
;
58 struct statement
*switch_statement
;
59 struct symbol
*switch_break
, *switch_case
;
61 struct iterator_struct
{
62 struct symbol
*iterator_break
;
63 struct symbol
*iterator_continue
;
64 struct symbol_list
*iterator_syms
;
65 struct statement
*iterator_pre_statement
;
66 struct expression
*iterator_pre_condition
;
68 struct statement
*iterator_statement
;
70 struct statement
*iterator_post_statement
;
71 struct expression
*iterator_post_condition
;
74 struct symbol
*goto_label
;
75 struct expression
*goto_expression
;
80 extern struct token
*parse_expression(struct token
*, struct expression
**);
81 extern struct token
*statement_list(struct token
*, struct statement_list
**);
83 extern int show_statement(struct statement
*);
84 extern void show_statement_list(struct statement_list
*, const char *);
85 extern int show_expression(struct expression
*);
86 extern void translation_unit(struct token
*, struct symbol_list
**);
88 extern struct symbol
*ctype_integer(unsigned int spec
);
89 extern struct symbol
*ctype_fp(unsigned int spec
);
91 extern int match_string_ident(struct ident
*, const char *);