Completing the parsing code
This commit is contained in:
parent
9f8f3fe02b
commit
f6e80139c3
41
src/parser.c
41
src/parser.c
@ -73,6 +73,8 @@ static int _selection_statement(C99 * c99);
|
|||||||
static int _iteration_statement(C99 * c99);
|
static int _iteration_statement(C99 * c99);
|
||||||
static int _jump_statement(C99 * c99);
|
static int _jump_statement(C99 * c99);
|
||||||
static int _init_declarator_list(C99 * c99);
|
static int _init_declarator_list(C99 * c99);
|
||||||
|
static int _init_declarator(C99 * c99);
|
||||||
|
static int _initializer(C99 * c99);
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
@ -752,6 +754,10 @@ static int _selection_statement(C99 * c99)
|
|||||||
|
|
||||||
/* iteration-statement */
|
/* iteration-statement */
|
||||||
static int _iteration_statement(C99 * c99)
|
static int _iteration_statement(C99 * c99)
|
||||||
|
/* while ( expression ) statement
|
||||||
|
* do statement while ( expression ) ;
|
||||||
|
* for ( expr-opt ; expr-opt ; expr-opt ) statement
|
||||||
|
* for ( declaration ; expr-opt ; expr-opt ) statement */
|
||||||
{
|
{
|
||||||
/* FIXME implement */
|
/* FIXME implement */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -795,6 +801,41 @@ static int _jump_statement(C99 * c99)
|
|||||||
|
|
||||||
/* init-declarator-list-opt */
|
/* init-declarator-list-opt */
|
||||||
static int _init_declarator_list(C99 * c99)
|
static int _init_declarator_list(C99 * c99)
|
||||||
|
/* init-declarator { init-declarator } */
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||||
|
#endif
|
||||||
|
ret = _init_declarator(c99);
|
||||||
|
while(token_in_set(c99->token, c99set_init_declarator))
|
||||||
|
ret |= _init_declarator(c99);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* init-declarator */
|
||||||
|
static int _init_declarator(C99 * c99)
|
||||||
|
/* declarator [ "=" initializer ] */
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||||
|
#endif
|
||||||
|
ret = _declarator(c99);
|
||||||
|
if(token_get_code(c99->token) == C99_CODE_OPERATOR_EQUALS)
|
||||||
|
{
|
||||||
|
ret |= c99_scan(c99);
|
||||||
|
ret |= _initializer(c99);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* initializer */
|
||||||
|
static int _initializer(C99 * c99)
|
||||||
{
|
{
|
||||||
/* FIXME implement */
|
/* FIXME implement */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
0
src/sets/init_declarator.set
Normal file
0
src/sets/init_declarator.set
Normal file
@ -162,6 +162,16 @@ static TokenCode _c99set_identifier_list[] =
|
|||||||
TokenSet c99set_identifier_list = _c99set_identifier_list;
|
TokenSet c99set_identifier_list = _c99set_identifier_list;
|
||||||
|
|
||||||
|
|
||||||
|
/* init-declarator */
|
||||||
|
static TokenCode _c99set_init_declarator[] =
|
||||||
|
{
|
||||||
|
#include "sets/init_declarator.set"
|
||||||
|
C99_CODE_NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
TokenSet c99set_init_declarator = _c99set_init_declarator;
|
||||||
|
|
||||||
|
|
||||||
/* iteration-statement */
|
/* iteration-statement */
|
||||||
static TokenCode _c99set_iteration_statement[] =
|
static TokenCode _c99set_iteration_statement[] =
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,7 @@ extern TokenSet c99set_enum_specifier;
|
|||||||
extern TokenSet c99set_expression;
|
extern TokenSet c99set_expression;
|
||||||
extern TokenSet c99set_expression_statement;
|
extern TokenSet c99set_expression_statement;
|
||||||
extern TokenSet c99set_function_specifier;
|
extern TokenSet c99set_function_specifier;
|
||||||
|
extern TokenSet c99set_init_declarator;
|
||||||
extern TokenSet c99set_iteration_statement;
|
extern TokenSet c99set_iteration_statement;
|
||||||
extern TokenSet c99set_jump_statement;
|
extern TokenSet c99set_jump_statement;
|
||||||
extern TokenSet c99set_keyword;
|
extern TokenSet c99set_keyword;
|
||||||
|
Loading…
Reference in New Issue
Block a user