diff options
author | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-18 20:40:02 +0000 |
---|---|---|
committer | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-18 20:40:02 +0000 |
commit | 9d57ed6b7e78373bec9db88adfb9878e377abb97 (patch) | |
tree | 9671948a7fb6023b3e33826548bcf604395ae696 /src | |
parent | deaeed0271fcaa39c071ced30fb21946ca2e6d0f (diff) |
Changing some deatils on the parser. Now we know we are done if command is null, or expression is null.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/main.cpp | 14 | ||||
-rw-r--r-- | src/parser/parser.cpp | 6 |
2 files changed, 7 insertions, 13 deletions
diff --git a/src/main/main.cpp b/src/main/main.cpp index 595915100..4731c536e 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -108,15 +108,13 @@ int main(int argc, char *argv[]) { } // Parse and execute commands until we are done - while(!parser->done()) { - // Parse the next command - Command *cmd = parser->parseNextCommand(); - if(cmd) { - if(options.verbosity > 0) - cout << "Invoking: " << *cmd << endl; - cmd->invoke(&smt); - delete cmd; + Command* cmd; + while((cmd = parser->parseNextCommand())) { + if(options.verbosity > 0) { + cout << "Invoking: " << *cmd << endl; } + cmd->invoke(&smt); + delete cmd; } // Remove the parser diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index 0a4b180ec..7b4810abb 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -42,14 +42,10 @@ bool Parser::done() const { } Command* Parser::parseNextCommand() throw(ParserException, AssertionException) { - Command* cmd = 0; + Command* cmd = NULL; if(!done()) { try { cmd = d_antlrParser->parseCommand(); - if(cmd == 0) { - setDone(); - cmd = new EmptyCommand("EOF"); - } } catch(antlr::ANTLRException& e) { setDone(); throw ParserException(e.toString()); |