This commit is contained in:
Valk Richard Li 2020-01-19 17:30:36 +08:00 committed by GitHub
parent 52aef836b8
commit 4606e3b90d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 2 deletions

View File

@ -17,7 +17,9 @@ int main()
#ifdef TARGET_OS_MAC #ifdef TARGET_OS_MAC
std::cout<<">>[system] MacOS system."<<std::endl; std::cout<<">>[system] MacOS system."<<std::endl;
#endif #endif
std::cout<<">> Nasal interpreter ver 2.0: https://github.com/ValKmjolnir/Nasal-Interpreter"<<std::endl; std::cout<<">> Nasal interpreter ver 2.0 ."<<std::endl;
std::cout<<">> Code: https://github.com/ValKmjolnir/Nasal-Interpreter"<<std::endl;
std::cout<<">> More info: http://wiki.flightgear.org/Nasal_scripting_language"<<std::endl;
std::cout<<">> Input \"help\" to get help ."<<std::endl; std::cout<<">> Input \"help\" to get help ."<<std::endl;
while(1) while(1)
{ {

View File

@ -232,6 +232,7 @@ abstract_syntax_tree nasal_parse::calculation()
this->get_token(); this->get_token();
while(this_token.type==__or_operator) while(this_token.type==__or_operator)
{ {
tmp_node.set_clear();
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(this_token.type); tmp_node.set_node_type(this_token.type);
tmp_node.add_children(calc_node); tmp_node.add_children(calc_node);
@ -241,6 +242,7 @@ abstract_syntax_tree nasal_parse::calculation()
} }
if(this_token.type==__ques_mark) if(this_token.type==__ques_mark)
{ {
tmp_node.set_clear();
// <expr> '?' <expr> ';' <expr> // <expr> '?' <expr> ';' <expr>
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(__ques_mark); tmp_node.set_node_type(__ques_mark);
@ -268,6 +270,7 @@ abstract_syntax_tree nasal_parse::and_calculation()
this->get_token(); this->get_token();
while(this_token.type==__and_operator) while(this_token.type==__and_operator)
{ {
tmp_node.set_clear();
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(this_token.type); tmp_node.set_node_type(this_token.type);
tmp_node.add_children(calc_node); tmp_node.add_children(calc_node);
@ -287,6 +290,7 @@ abstract_syntax_tree nasal_parse::or_calculation()
this->get_token(); this->get_token();
while(this_token.type==__or_operator) while(this_token.type==__or_operator)
{ {
tmp_node.set_clear();
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(this_token.type); tmp_node.set_node_type(this_token.type);
tmp_node.add_children(calc_node); tmp_node.add_children(calc_node);
@ -306,6 +310,7 @@ abstract_syntax_tree nasal_parse::additive_calculation()
this->get_token(); this->get_token();
while((this_token.type==__add_operator) || (this_token.type==__sub_operator)) while((this_token.type==__add_operator) || (this_token.type==__sub_operator))
{ {
tmp_node.set_clear();
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(this_token.type); tmp_node.set_node_type(this_token.type);
tmp_node.add_children(calc_node); tmp_node.add_children(calc_node);
@ -341,10 +346,29 @@ abstract_syntax_tree nasal_parse::multive_calculation()
this->get_token(); this->get_token();
while((this_token.type==__mul_operator) || (this_token.type==__div_operator)) while((this_token.type==__mul_operator) || (this_token.type==__div_operator))
{ {
tmp_node.set_clear();
tmp_node.set_node_line(this_token.line); tmp_node.set_node_line(this_token.line);
tmp_node.set_node_type(this_token.type); tmp_node.set_node_type(this_token.type);
tmp_node.add_children(calc_node); tmp_node.add_children(calc_node);
tmp_node.add_children(scalar_generate()); this->get_token();
if((this_token.type==__sub_operator) || (this_token.type==__nor_operator))
{
calc_node.set_clear();
calc_node.set_node_line(this_token.line);
calc_node.set_node_type(this_token.type);
abstract_syntax_tree null_node;
null_node.set_node_line(this_token.line);
null_node.set_node_type(__number);
null_node.set_var_number("0");
calc_node.add_children(null_node);
calc_node.add_children(scalar_generate());
}
else
{
this->push_token();
calc_node=scalar_generate();
}
tmp_node.add_children(calc_node);
calc_node=tmp_node; calc_node=tmp_node;
this->get_token(); this->get_token();
} }

View File

@ -98,6 +98,7 @@ var (r,g,b)=color;
1+1; 1+1;
1+1-2+3-4+5-6; 1+1-2+3-4+5-6;
1+1*8-9/3; 1+1*8-9/3;
1*-1;
1*(1+2*(3+4*(5+6*(7+8*(9+10/(1+1)))))); 1*(1+2*(3+4*(5+6*(7+8*(9+10/(1+1))))));
((-1*2+9))/7-1; ((-1*2+9))/7-1;
((({num:2})))["num"]*2*2*2; ((({num:2})))["num"]*2*2*2;