Fixed storage-class-specifier

This commit is contained in:
Pierre Pronchery 2008-03-06 18:43:42 +00:00
parent f6e80139c3
commit 9ae7bbd82e

View File

@ -217,13 +217,13 @@ static int _declaration_specifiers(C99 * c99)
/* storage-class-specifier */ /* storage-class-specifier */
static int _storage_class_specifier(C99 * c99) static int _storage_class_specifier(C99 * c99)
/* typedef | extern | static | auto | register */
{ {
/* FIXME implement */
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__, fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__,
token_get_string(c99->token)); token_get_string(c99->token));
#endif #endif
return 0; return c99_scan(c99);
} }
@ -522,7 +522,8 @@ static int _assignment_expr(C99 * c99)
int ret = 0; int ret = 0;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s()\n", __func__); fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__,
token_get_string(c99->token));
#endif #endif
while(token_in_set(c99->token, c99set_unary_expr)) while(token_in_set(c99->token, c99set_unary_expr))
{ {
@ -541,7 +542,7 @@ static int _unary_expr(C99 * c99)
* -- unary-expr * -- unary-expr
* unary-operator cast-expr * unary-operator cast-expr
* sizeof unary-expr * sizeof unary-expr
* sizeof ( type-name ) */ * sizeof "(" type-name ")" */
{ {
/* FIXME implement */ /* FIXME implement */
#ifdef DEBUG #ifdef DEBUG
@ -754,16 +755,38 @@ 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 /* while "(" expression ")" statement
* do statement while ( expression ) ; * do statement while "(" expression ")" ;
* for ( expr-opt ; expr-opt ; expr-opt ) statement * for ( expr-opt ; expr-opt ; expr-opt ) statement
* for ( declaration ; expr-opt ; expr-opt ) statement */ * for ( declaration ; expr-opt ; expr-opt ) statement */
{ {
/* FIXME implement */ int ret;
int code;
/* FIXME complete */
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s()\n", __func__); fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif #endif
return 0; if((code = token_get_code(c99->token)) == C99_CODE_KEYWORD_WHILE)
{
ret = c99_scan(c99);
ret |= _parse_check(c99, C99_CODE_OPERATOR_LPAREN);
ret |= _expression(c99);
ret |= _parse_check(c99, C99_CODE_OPERATOR_RPAREN);
ret |= _statement(c99);
}
else if(code == C99_CODE_KEYWORD_DO)
{
ret = c99_scan(c99);
ret |= _statement(c99);
ret |= _parse_check(c99, C99_CODE_KEYWORD_WHILE);
ret |= _parse_check(c99, C99_CODE_OPERATOR_LPAREN);
ret |= _expression(c99);
ret |= _parse_check(c99, C99_CODE_OPERATOR_RPAREN);
}
else /* FIXME implement for */
ret = c99_scan(c99);
return ret;
} }
@ -836,12 +859,18 @@ static int _init_declarator(C99 * c99)
/* initializer */ /* initializer */
static int _initializer(C99 * c99) static int _initializer(C99 * c99)
/* assignment-expr
* { initializer-list [ "," ] } */
{ {
/* FIXME implement */ int ret = 0;
/* FIXME complete */
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s()\n", __func__); fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif #endif
return 0; if(token_in_set(c99->token, c99set_assignment_expr))
ret = _assignment_expr(c99);
return ret;
} }