From e929d209ad44e878c6545fb065e37394a0a38824 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Tue, 2 Dec 2008 14:17:12 +0000 Subject: [PATCH] Add billions and billions of anchors to parse_compound_statement(). [r24220] --- parser.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/parser.c b/parser.c index fef5897..0bc1b06 100644 --- a/parser.c +++ b/parser.c @@ -10726,6 +10726,75 @@ static statement_t *parse_compound_statement(bool inside_expression_statement) eat('{'); add_anchor_token('}'); + /* tokens, which can start a statement */ + /* TODO C++, MS, __builtin_FOO */ + add_anchor_token('!'); + add_anchor_token('&'); + add_anchor_token('('); + add_anchor_token('*'); + add_anchor_token('+'); + add_anchor_token('-'); + add_anchor_token('{'); + add_anchor_token('~'); + add_anchor_token(T_CHARACTER_CONSTANT); + add_anchor_token(T_COLONCOLON); + add_anchor_token(T_FLOATINGPOINT); + add_anchor_token(T_IDENTIFIER); + add_anchor_token(T_INTEGER); + add_anchor_token(T_MINUSMINUS); + add_anchor_token(T_PLUSPLUS); + add_anchor_token(T_STRING_LITERAL); + add_anchor_token(T_WIDE_CHARACTER_CONSTANT); + add_anchor_token(T_WIDE_STRING_LITERAL); + add_anchor_token(T__Bool); + add_anchor_token(T__Complex); + add_anchor_token(T__Imaginary); + add_anchor_token(T___FUNCTION__); + add_anchor_token(T___PRETTY_FUNCTION__); + add_anchor_token(T___alignof__); + add_anchor_token(T___attribute__); + add_anchor_token(T___builtin_va_start); + add_anchor_token(T___extension__); + add_anchor_token(T___func__); + add_anchor_token(T___imag__); + add_anchor_token(T___label__); + add_anchor_token(T___real__); + add_anchor_token(T___thread); + add_anchor_token(T_asm); + add_anchor_token(T_auto); + add_anchor_token(T_break); + add_anchor_token(T_case); + add_anchor_token(T_char); + add_anchor_token(T_const); + add_anchor_token(T_continue); + add_anchor_token(T_default); + add_anchor_token(T_double); + add_anchor_token(T_do); + add_anchor_token(T_enum); + add_anchor_token(T_extern); + add_anchor_token(T_float); + add_anchor_token(T_for); + add_anchor_token(T_goto); + add_anchor_token(T_if); + add_anchor_token(T_inline); + add_anchor_token(T_int); + add_anchor_token(T_long); + add_anchor_token(T_register); + add_anchor_token(T_restrict); + add_anchor_token(T_return); + add_anchor_token(T_short); + add_anchor_token(T_signed); + add_anchor_token(T_sizeof); + add_anchor_token(T_static); + add_anchor_token(T_struct); + add_anchor_token(T_switch); + add_anchor_token(T_typedef); + add_anchor_token(T_typeof); + add_anchor_token(T_union); + add_anchor_token(T_unsigned); + add_anchor_token(T_void); + add_anchor_token(T_volatile); + add_anchor_token(T_while); size_t const top = environment_top(); scope_t *old_scope = scope_push(&statement->compound.scope); @@ -10784,6 +10853,73 @@ static statement_t *parse_compound_statement(bool inside_expression_statement) } end_error: + rem_anchor_token(T_while); + rem_anchor_token(T_volatile); + rem_anchor_token(T_void); + rem_anchor_token(T_unsigned); + rem_anchor_token(T_union); + rem_anchor_token(T_typeof); + rem_anchor_token(T_typedef); + rem_anchor_token(T_switch); + rem_anchor_token(T_struct); + rem_anchor_token(T_static); + rem_anchor_token(T_sizeof); + rem_anchor_token(T_signed); + rem_anchor_token(T_short); + rem_anchor_token(T_return); + rem_anchor_token(T_restrict); + rem_anchor_token(T_register); + rem_anchor_token(T_long); + rem_anchor_token(T_int); + rem_anchor_token(T_inline); + rem_anchor_token(T_if); + rem_anchor_token(T_goto); + rem_anchor_token(T_for); + rem_anchor_token(T_float); + rem_anchor_token(T_extern); + rem_anchor_token(T_enum); + rem_anchor_token(T_do); + rem_anchor_token(T_double); + rem_anchor_token(T_default); + rem_anchor_token(T_continue); + rem_anchor_token(T_const); + rem_anchor_token(T_char); + rem_anchor_token(T_case); + rem_anchor_token(T_break); + rem_anchor_token(T_auto); + rem_anchor_token(T_asm); + rem_anchor_token(T___thread); + rem_anchor_token(T___real__); + rem_anchor_token(T___label__); + rem_anchor_token(T___imag__); + rem_anchor_token(T___func__); + rem_anchor_token(T___extension__); + rem_anchor_token(T___builtin_va_start); + rem_anchor_token(T___attribute__); + rem_anchor_token(T___alignof__); + rem_anchor_token(T___PRETTY_FUNCTION__); + rem_anchor_token(T___FUNCTION__); + rem_anchor_token(T__Imaginary); + rem_anchor_token(T__Complex); + rem_anchor_token(T__Bool); + rem_anchor_token(T_WIDE_STRING_LITERAL); + rem_anchor_token(T_WIDE_CHARACTER_CONSTANT); + rem_anchor_token(T_STRING_LITERAL); + rem_anchor_token(T_PLUSPLUS); + rem_anchor_token(T_MINUSMINUS); + rem_anchor_token(T_INTEGER); + rem_anchor_token(T_IDENTIFIER); + rem_anchor_token(T_FLOATINGPOINT); + rem_anchor_token(T_COLONCOLON); + rem_anchor_token(T_CHARACTER_CONSTANT); + rem_anchor_token('~'); + rem_anchor_token('{'); + rem_anchor_token('-'); + rem_anchor_token('+'); + rem_anchor_token('*'); + rem_anchor_token('('); + rem_anchor_token('&'); + rem_anchor_token('!'); rem_anchor_token('}'); assert(current_scope == &statement->compound.scope); scope_pop(old_scope); -- 2.20.1