summaryrefslogtreecommitdiff
path: root/src/parser/parser.cpp
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2010-02-03 22:10:21 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2010-02-03 22:10:21 +0000
commit842fd54de1da122f4c7274796550c2fe21c11db2 (patch)
treefec6236bc8c3e3b92cd3759ed13f4acc7bc6c6d2 /src/parser/parser.cpp
parente0fc2cbe091097d95dbe6dd2eb9b6416b75be279 (diff)
ELSEIF support and parser debugging with '-d parser'
Diffstat (limited to 'src/parser/parser.cpp')
-rw-r--r--src/parser/parser.cpp19
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,
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback