Example #1
0
StatementsPtr Parser::parseStatementList_r()
{
    if (match(TokenType::Semicolon)) {
        return parseStatementList();
    }

    return StatementsPtr();
}
Example #2
0
void TreeWalker::parseStatement(StatementAST *node)
{
    switch (node->nodeType()) {
    case NodeType_ExpressionStatement:
        parseExpressionStatement(static_cast<ExpressionStatementAST*>(node));
        break;

    case NodeType_IfStatement:
        parseIfStatement(static_cast<IfStatementAST*>(node));
        break;

    case NodeType_WhileStatement:
        parseWhileStatement(static_cast<WhileStatementAST*>(node));
        return;

    case NodeType_DoStatement:
        parseDoStatement(static_cast<DoStatementAST*>(node));
        break;

    case NodeType_ForStatement:
        parseForStatement(static_cast<ForStatementAST*>(node));
        break;

    case NodeType_SwitchStatement:
        parseSwitchStatement(static_cast<SwitchStatementAST*>(node));
        break;

    case NodeType_LabeledStatement:
        parseLabeledStatement(static_cast<LabeledStatementAST*>(node));
        break;

    case NodeType_StatementList:
        parseStatementList(static_cast<StatementListAST*>(node));
        break;

    case NodeType_DeclarationStatement:
        parseDeclarationStatement(static_cast<DeclarationStatementAST*>(node));
        break;

    case NodeType_ReturnStatement:
        parseReturnStatement(static_cast<ReturnStatementAST*>(node));
        break;

    default:
        break;
    }
}
Example #3
0
StatementsPtr Parser::parseOptionalStatements()
{
    if (m_curToken.tokenType() != TokenType::Identifier &&
        m_curToken.tokenType() != TokenType::Begin &&
        m_curToken.tokenType() != TokenType::If &&
        m_curToken.tokenType() != TokenType::While) {
        return StatementsPtr();
    }

    StatementsPtr statements = parseStatementList();
    if (m_errorCode > ErrorCodes::NoError) {
        panic(optionalStatementsFollow, optionalStatementsFollowSize);
        return StatementsPtr();
    }

    return statements;
}
Example #4
0
void Parser::parseOptionalStatements(){
	if(isNext(tc_ID) || isNext(tc_BEGIN) || isNext(tc_IF) || isNext(tc_WHILE)){
		parseStatementList();
	}
}