diff options
author | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2010-02-03 22:10:21 +0000 |
---|---|---|
committer | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2010-02-03 22:10:21 +0000 |
commit | 842fd54de1da122f4c7274796550c2fe21c11db2 (patch) | |
tree | fec6236bc8c3e3b92cd3759ed13f4acc7bc6c6d2 /src/parser/parser.cpp | |
parent | e0fc2cbe091097d95dbe6dd2eb9b6416b75be279 (diff) |
ELSEIF support and parser debugging with '-d parser'
Diffstat (limited to 'src/parser/parser.cpp')
-rw-r--r-- | src/parser/parser.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index a38868d3b..2f9ac6724 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -19,6 +19,7 @@ #include "parser.h" #include "util/command.h" +#include "util/output.h" #include "util/Assert.h" #include "parser_exception.h" #include "parser/antlr_parser.h" @@ -41,21 +42,26 @@ bool Parser::done() const { return d_done; } -Command* Parser::parseNextCommand() throw(ParserException, AssertionException) { +Command* Parser::parseNextCommand() throw (ParserException, AssertionException) { + Debug("parser") << "parseNextCommand()" << std::endl; Command* cmd = NULL; if(!done()) { try { cmd = d_antlrParser->parseCommand(); - if (cmd == NULL) setDone(); + if(cmd == NULL) { + setDone(); + } } catch(antlr::ANTLRException& e) { setDone(); throw ParserException(e.toString()); } } + Debug("parser") << "parseNextCommand() => " << cmd << std::endl; return cmd; } -Expr Parser::parseNextExpression() throw(ParserException, AssertionException) { +Expr Parser::parseNextExpression() throw (ParserException, AssertionException) { + Debug("parser") << "parseNextExpression()" << std::endl; Expr result; if(!done()) { try { @@ -67,6 +73,7 @@ Expr Parser::parseNextExpression() throw(ParserException, AssertionException) { throw ParserException(e.toString()); } } + Debug("parser") << "parseNextExpression() => " << result << std::endl; return result; } @@ -78,8 +85,10 @@ Parser::~Parser() { } } -Parser::Parser(istream* input, AntlrParser* antlrParser, CharScanner* antlrLexer, bool deleteInput) : - d_done(false), d_antlrParser(antlrParser), d_antlrLexer(antlrLexer), d_input(input), d_deleteInput(deleteInput) { +Parser::Parser(istream* input, AntlrParser* antlrParser, + CharScanner* antlrLexer, bool deleteInput) : + d_done(false), d_antlrParser(antlrParser), d_antlrLexer(antlrLexer), + d_input(input), d_deleteInput(deleteInput) { } Parser* Parser::getNewParser(ExprManager* em, InputLanguage lang, |