X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fstatement.cpp;fp=source%2Fstatement.cpp;h=9dfb54421a47c6f041b344cc175a6c67e232f43c;hp=b1ff05826e314441fd3e93ced8c5117f295b5824;hb=cd3de49e76305a50ae61696210ce10804a59cef1;hpb=4edbe0eb078c4e480682862ccb68ebc8cb284045 diff --git a/source/statement.cpp b/source/statement.cpp index b1ff058..9dfb544 100644 --- a/source/statement.cpp +++ b/source/statement.cpp @@ -1,5 +1,6 @@ #include #include "statement.h" +#include "token.h" #include "type.h" using namespace std; @@ -36,6 +37,27 @@ string Statement::get_signature() const return result; } +Statement &Statement::append_from_token(const Token &token) +{ + if(token.type==Token::INTEGER) + return append(lexical_cast(token.str)); + else if(token.type==Token::FLOAT) + return append(lexical_cast(token.str)); + else if(token.type==Token::STRING) + return append(token.str); + else if(token.type==Token::IDENTIFIER) + { + if(token.str=="true") + return append(true); + else if(token.str=="false") + return append(false); + else + return append(Symbol(token.str)); + } + else + throw invalid_argument("Statement::append_from_token"); +} + StatementInfo::StatementInfo(): args_size(0)