示例#1
0
/** parse_statement          parse a statement.
 *
 * @param p_function_id : function in which this statement is executed.
 */
void cx_parser::parse_statement(cx_symtab_node *p_function_id) {
    insert_line_marker();

    switch (token) {
        case tc_identifier: parse_declarations_or_assignment(p_function_id);

            break;
            // not a type but a cv-qualifier
        case tc_CONST:
            get_token_append();
            parse_constant_declaration(p_function_id);
            break;
            //case tcEnum:
            //get_token_append();
            //            parse_enum_header(p_function_id);
            //break;
        case tc_DO: parse_DO(p_function_id);
            break;
        case tc_WHILE: parse_WHILE(p_function_id);
            break;
        case tc_IF: parse_IF(p_function_id);
            break;
        case tc_FOR: parse_FOR(p_function_id);
            break;
        case tc_SWITCH: parse_SWITCH(p_function_id);
            break;
            //case tc_CASE:
            //case tc_DEFAULT:parse_case_label(p_function_id);
            //  break;
        case tc_BREAK: get_token_append();
            break;
        case tc_left_bracket: parse_compound(p_function_id);
            break;
        case tc_RETURN: parse_RETURN(p_function_id);
            break;
        case tc_pound:
            get_token();
            parse_execute_directive(p_function_id);
            break;
        default:
            break;
    }

    if (token != tc_end_of_file) {
        resync(tokenlist_statement_follow, tokenlist_statement_start);
    }
}
示例#2
0
void RecIrParser::parse_IF_WITH_RET( BinStreamReader bin ) {
    parse_IF( bin );
}