This commit is contained in:
Valk Richard Li 2019-08-31 11:36:01 -05:00 committed by GitHub
parent c0e5130dd3
commit 4d40cab3a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 2 deletions

View File

@ -39,7 +39,7 @@ enum token_type
__call_function, __call_function,
__definition, __definition,
__assignment, __assignment,
__calculation,__add_calc,__mul_calc,__curve_calc, __calculation,
__loop, __loop,
__choose, __choose,
__program __program
@ -55,6 +55,7 @@ struct cmp_seq
cmp_seq par[]= cmp_seq par[]=
{ {
{{__program,__statement}, __program}, {{__program,__statement}, __program},
{{__calculation,__add_operator,__calculation}, __calculation}, {{__calculation,__add_operator,__calculation}, __calculation},
{{__calculation,__add_operator,__id}, __calculation}, {{__calculation,__add_operator,__id}, __calculation},
{{__id,__add_operator,__calculation}, __calculation}, {{__id,__add_operator,__calculation}, __calculation},
@ -83,7 +84,14 @@ cmp_seq par[]=
{{__right_curve,__id,__left_curve}, __calculation}, {{__right_curve,__id,__left_curve}, __calculation},
{{__right_curve,__calculation,__left_curve}, __calculation}, {{__right_curve,__calculation,__left_curve}, __calculation},
{{__semi,__calculation,__equal,__id,__var}, __definition}, {{__semi,__calculation,__equal,__id,__var}, __definition},
{{__definition}, __statement} {{__semi,__number,__equal,__id,__var}, __definition},
{{__semi,__string,__equal,__id,__var}, __definition},
{{__semi,__id,__equal,__id,__var}, __definition},
{{__semi,__char,__equal,__id,__var}, __definition},
{{__semi,__right_brace,__left_brace,__equal,__id,__var}, __definition},
{{__semi,__right_bracket,__left_bracket,__equal,__id,__var}, __definition},
{{__definition}, __statement},
{{__statement,__statement}, __statement}
}; };
int num_of_par=sizeof(par)/sizeof(cmp_seq); int num_of_par=sizeof(par)/sizeof(cmp_seq);
@ -367,6 +375,20 @@ class PDA
} }
return false; return false;
} }
void print_error()
{
while(!comp_stack.empty())
{
if((comp_stack.top()!=__statement) && (comp_stack.top()!=__program) && (comp_stack.top()!=__stack_end))
{
print_token(comp_stack.top());
std::cout<<" ";
}
comp_stack.pop();
}
std::cout<<std::endl;
return;
}
void main_comp_progress(bool show) void main_comp_progress(bool show)
{ {
if(show) if(show)
@ -391,10 +413,16 @@ class PDA
if(comp_stack.top()==__stack_end) if(comp_stack.top()==__stack_end)
std::cout<<">>[Parse] 0 error(s)."<<std::endl; std::cout<<">>[Parse] 0 error(s)."<<std::endl;
else else
{
std::cout<<">>[Parse] Error:"<<std::endl; std::cout<<">>[Parse] Error:"<<std::endl;
print_error();
}
} }
else else
{
std::cout<<">>[Parse] Error:"<<std::endl; std::cout<<">>[Parse] Error:"<<std::endl;
print_error();
}
std::cout<<">>[Parse] Complete checking."<<std::endl; std::cout<<">>[Parse] Complete checking."<<std::endl;
//print_error(); //print_error();
return; return;