Add 'continue' command for loops. Also enhance for() unit tests which are now breaking and need to be fixed

This commit is contained in:
Jason Turner
2013-02-23 14:49:20 -07:00
parent e298333ac6
commit c9995480e6
7 changed files with 160 additions and 4 deletions

View File

@@ -1760,6 +1760,23 @@ namespace chaiscript
return retval;
}
/**
* Reads a continue statement from input
*/
bool Continue() {
bool retval = false;
size_t prev_stack_top = m_match_stack.size();
if (Keyword("continue")) {
retval = true;
build_match(AST_NodePtr(new eval::Continue_AST_Node()), prev_stack_top);
}
return retval;
}
/**
* Reads a dot expression(member access), then proceeds to check if it's a function or array call
*/
@@ -2257,6 +2274,14 @@ namespace chaiscript
retval = true;
saw_eol = false;
}
else if (Continue()) {
if (!saw_eol) {
throw exception::eval_error("Two expressions missing line separator", File_Position(prev_line, prev_col), *m_filename);
}
has_more = true;
retval = true;
saw_eol = false;
}
else if (Equation()) {
if (!saw_eol) {
throw exception::eval_error("Two expressions missing line separator", File_Position(prev_line, prev_col), *m_filename);