Пример #1
0
static int expect(ApexParser *parser, ApexToken exp) {
    ApexToken tk = GET_TOKEN(parser);

    if (tk == exp) {
        parser->value = apex_lexer_get_value(parser->lexer);
        NEXT_TOKEN(parser);
        return 1;
    }
    unexp(parser, 1, exp);
    return 0;
}
Пример #2
0
/* pri_expr 
 * : ID
 * | INT
 * | FLT
 * | STR
 * | '(' expr ')'
 */
static void pri_expr(ApexParser *parser) {
    if (accept(parser, APEX_TOKEN_ID)) {
        char *id = GET_STR(parser);
        apex_ast_id(parser->ast, id);

    } else if (accept(parser, APEX_TOKEN_INT)) {
        int value = GET_INT(parser);
        apex_ast_int(parser->ast, value);

    } else if (accept(parser, APEX_TOKEN_FLT)) {
        float value = GET_FLT(parser);

    } else if (accept(parser, APEX_TOKEN_STR)) {
        char *str = GET_STR(parser);
        apex_ast_str(parser->ast, str);

    } else if (accept(parser, '(')) {
        expr(parser);
        expect(parser, ')');
    } else {
        unexp(parser, 0);
    }
}
Пример #3
0
/* <op> . <!op>
 */
void 
o_not (void)
{
	unexp (OP_NOT);
}