logic stuff:3
This commit is contained in:
parent
7c151136eb
commit
65f0a57f28
|
@ -98,6 +98,37 @@ namespace builtin {
|
|||
//if(std::get<int>(l->args[1].value)>ob.size()) p_ferr("out of range",1);
|
||||
//return ob[std::get<int>(l->args[1].value)];
|
||||
}
|
||||
|
||||
std::any _equ(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)==std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _great(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)>std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _less(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)<std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _great_o_equ(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)>=std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _less_o_equ(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)<=std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _nequ(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)!=std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _and(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)&&std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _not(lexi*l,state*s){
|
||||
return (int)!std::get<int>(l->args[0].value);
|
||||
}
|
||||
std::any _or(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)||std::get<int>(l->args[1].value));
|
||||
}
|
||||
std::any _xor(lexi*l,state*s){
|
||||
return (int)(std::get<int>(l->args[0].value)^std::get<int>(l->args[1].value));
|
||||
}
|
||||
}
|
||||
|
||||
void ttest(lexi l){
|
||||
|
|
|
@ -53,7 +53,18 @@ namespace builtin {
|
|||
std::any _mod(lexi*, state*);
|
||||
std::any _get(lexi*, state*);
|
||||
std::any _set(lexi*, state*);
|
||||
|
||||
|
||||
std::any _equ(lexi*, state*);
|
||||
std::any _great(lexi*, state*);
|
||||
std::any _less(lexi*, state*);
|
||||
std::any _great_o_equ(lexi*, state*);
|
||||
std::any _less_o_equ(lexi*, state*);
|
||||
std::any _nequ(lexi*, state*);
|
||||
std::any _and(lexi*, state*);
|
||||
std::any _not(lexi*, state*);
|
||||
std::any _or(lexi*, state*);
|
||||
std::any _xor(lexi*, state*);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -70,9 +81,24 @@ static builtin::builtin _mod("%",{INT,INT},INT,builtin::_mod);
|
|||
static builtin::builtin _get("get",{ARRAY,INT},ANY,builtin::_get);
|
||||
static builtin::builtin _set("set",{NONE,INT,ANY},NONE,builtin::_set);
|
||||
|
||||
static builtin::builtin _equ("==",{INT,INT},INT,builtin::_equ);
|
||||
static builtin::builtin _great(">",{INT,INT},INT,builtin::_great);
|
||||
static builtin::builtin _less("<",{INT,INT},INT,builtin::_less);
|
||||
static builtin::builtin _great_o_equ(">=",{INT,INT},INT,builtin::_great_o_equ);
|
||||
static builtin::builtin _less_o_equ("<=",{INT,INT},INT,builtin::_less_o_equ);
|
||||
static builtin::builtin _nequ("!=",{INT,INT},INT,builtin::_nequ);
|
||||
static builtin::builtin _and("&&",{INT,INT},INT,builtin::_and);
|
||||
static builtin::builtin _not("!",{INT},INT,builtin::_not);
|
||||
static builtin::builtin _or("||",{INT,INT},INT,builtin::_or);
|
||||
static builtin::builtin _xor("^",{INT,INT},INT,builtin::_xor);
|
||||
|
||||
|
||||
|
||||
static std::map<std::string, builtin::builtin*> builtins = {
|
||||
{"write",&_write},{"exit",&_exit},{"if",&_if},{"__anon",&__anon},{"def",&_def},{"+",&_add}
|
||||
,{"-",&_sub},{"*",&_mul},{"/",&_div},{"%",&_mod},{"get",&_get},{"set",&_set}
|
||||
,{"-",&_sub},{"*",&_mul},{"/",&_div},{"%",&_mod},{"get",&_get},{"set",&_set},{"==",&_equ},
|
||||
{">",&_great},{"<",&_less},{">=",&_great_o_equ},{"<=",&_less_o_equ},{"!=",&_nequ},{"&&",&_and},
|
||||
{"!",&_not},{"||",&_or},{"^",&_xor},
|
||||
};
|
||||
|
||||
void ttest(lexi);
|
||||
|
|
Loading…
Reference in New Issue