Corrected indentation.

This commit is contained in:
Christian 2014-10-09 12:28:37 +02:00
parent 0a1ebe4f51
commit c3faa433ef
9 changed files with 1186 additions and 1167 deletions

4
AST.h
View File

@ -200,8 +200,8 @@ public:
class Block : public Statement
{
public:
explicit Block(Location const& _location)
: Statement(_location)
explicit Block(Location const& _location, vecptr<Statement> const& _statements)
: Statement(_location), m_statements(_statements)
{}
private:
vecptr<Statement> m_statements;

View File

@ -231,15 +231,33 @@ ptr<ParameterList> Parser::parseParameterList()
ptr<Block> Parser::parseBlock()
{
ASTNodeFactory nodeFactory(*this);
expectToken(Token::LBRACE);
vecptr<Statement> statements;
while (m_scanner->getCurrentToken() != Token::RBRACE) {
m_scanner->next();
// @todo
statements.push_back(parseStatement());
}
nodeFactory.markEndPosition();
expectToken(Token::RBRACE);
return nodeFactory.createNode<Block>();
return nodeFactory.createNode<Block>(statements);
}
ptr<Statement> Parser::parseStatement()
{
switch (m_scanner->getCurrentToken()) {
case Token::IF:
return parseIfStatement();
case Token::WHILE:
return parseWhileStatement();
case Token::LBRACE:
return parseBlock();
// starting from here, all statements must be terminated by a semicolon
case Token::CONTINUE: // all following
return
}
}
void Parser::expectToken(Token::Value _value)

View File

@ -52,6 +52,7 @@ private:
ptr<Mapping> parseMapping();
ptr<ParameterList> parseParameterList();
ptr<Block> parseBlock();
ptr<Statement> parseStatement();
/// @}
/// Helper functions