"An expected token has not been encountered before the end of the input\n",
"An expected token has not been encountered before the end of the input\n",
@ -180,7 +180,7 @@ namespace molasses {
//TODO:Bettererrormessage
//TODO:Bettererrormessage
};
};
structunknown_token_error:publicparser_error{
structunknown_token_error:publicparser_error{
explicitunknown_token_error(constsymbol&sym):parser_error(details::concatenate_builder("An unknown token has been encountered\n","\tAt ",sym.file_name,":",sym.line,":",sym.column,"\n")){}
explicitunknown_token_error(constsymbolsym):parser_error(details::concatenate_builder("An unknown token has been encountered\n","\tAt ",sym.file_name,":",sym.line,":",sym.column,"\n")){}
check_for_unexpected_stream_end(n">tokens.dictionary[PROC_KW],details::concatenate_builder("In top level, file ",it->file_name,":",it->line,":",it->column));
check_for_unexpected_stream_end(sa">"Procedure-Name",details::concatenate_builder("In top level, file ",last_valid->file_name,":",last_valid->line,":",last_valid->column));
std::stringname=tokens.dictionary.at(*it);
std::stringname=tokens.dictionary.at(*it);
auto&name_symbol=*it;
auto&name_symbol=*it;
last_valid=it;
++it;
++it;
check_for_unexpected_stream_end(sa">"Procedure-Name",details::concatenate_builder("In top level, file ",it->file_name,":",it->line,":",it->column));
check_for_unexpected_stream_end("Procedure-Argument-List to be followed by a return list or a __DO__",details::concatenate_builder("Parsing procedure ",tokens.dictionary.at(name_symbol),", file ",last_valid->file_name,":",last_valid->line,":",last_valid->column));