Update
This commit is contained in:
parent
f78a28546b
commit
225b079fc7
|
@ -95,8 +95,10 @@ call_list
|
||||||
call_hash
|
call_hash
|
||||||
:id.id
|
:id.id
|
||||||
|id.call
|
|id.call
|
||||||
|
|id.scalar
|
||||||
|call.id
|
|call.id
|
||||||
|call.call
|
|call.call
|
||||||
|
|call.scalar
|
||||||
;
|
;
|
||||||
call_function
|
call_function
|
||||||
:id()
|
:id()
|
||||||
|
@ -107,30 +109,142 @@ call_function
|
||||||
|id(hash)
|
|id(hash)
|
||||||
|id(function)
|
|id(function)
|
||||||
|id(datas)
|
|id(datas)
|
||||||
|
|
||||||
calculation
|
calculation
|
||||||
:id operator id
|
:id two_operator id
|
||||||
|id operator scalar
|
|id two_operator scalar
|
||||||
|id operator call
|
|id two_operator call
|
||||||
|scalar operator id
|
|scalar two_operator id
|
||||||
|scalar operator scalar
|
|scalar two_operator scalar
|
||||||
|scalar operator call
|
|scalar two_operator call
|
||||||
|call operator id
|
|call two_operator id
|
||||||
|call operator scalar
|
|call two_operator scalar
|
||||||
|call operator call
|
|call two_operator call
|
||||||
|(id)
|
|(id)
|
||||||
|(scalar)
|
|(scalar)
|
||||||
|(call)
|
|(call)
|
||||||
|! id
|
|! id
|
||||||
|! scalar
|
|! scalar
|
||||||
|! call
|
|! call
|
||||||
|+-id
|
|__add0 -id
|
||||||
|+-scalar
|
|__add0 -scalar
|
||||||
|+-call
|
|__add0 -call
|
||||||
|
|__add0 +id
|
||||||
|
|__add0 +scalar
|
||||||
|
|__add0 +call
|
||||||
|
;
|
||||||
|
two_operator
|
||||||
|
:+
|
||||||
|
|-
|
||||||
|
|*
|
||||||
|
|/
|
||||||
|
|~
|
||||||
|
|==
|
||||||
|
|>
|
||||||
|
|>=
|
||||||
|
|<
|
||||||
|
|<=
|
||||||
|
|!=
|
||||||
|
|and
|
||||||
|
|or
|
||||||
|
;
|
||||||
|
assignment_operator
|
||||||
|
:+=
|
||||||
|
|-=
|
||||||
|
|*=
|
||||||
|
|/=
|
||||||
|
|~=
|
||||||
;
|
;
|
||||||
|
|
||||||
|
function
|
||||||
|
:func{}
|
||||||
|
|func{statement}
|
||||||
|
|func{statements}
|
||||||
|
|func(){}
|
||||||
|
|func(){statement}
|
||||||
|
|func(){statements}
|
||||||
|
|func(id){}
|
||||||
|
|func(id){statement}
|
||||||
|
|func(id){statements}
|
||||||
|
|func(scalar){}
|
||||||
|
|func(scalar){statement}
|
||||||
|
|func(scalar){statements}
|
||||||
|
|func(call){}
|
||||||
|
|func(call){statement}
|
||||||
|
|func(call){statements}
|
||||||
|
|func(list){}
|
||||||
|
|func(list){statement}
|
||||||
|
|func(list){statements}
|
||||||
|
|func(hash){}
|
||||||
|
|func(hash){statement}
|
||||||
|
|func(hash){statements}
|
||||||
|
|func(function){}
|
||||||
|
|func(function){statement}
|
||||||
|
|func(function){statements}
|
||||||
|
|func(dynamic_id){}
|
||||||
|
|func(dynamic_id){statement}
|
||||||
|
|func(dynamic_id){statements}
|
||||||
|
|func(datas){}
|
||||||
|
|func(datas){statement}
|
||||||
|
|func(datas){statements}
|
||||||
|
|
||||||
|
choose
|
||||||
|
:if(id){}
|
||||||
|
|if(scalar){}
|
||||||
|
|if(call){statement}
|
||||||
|
|if(id){statement}
|
||||||
|
|if(scalar){statement}
|
||||||
|
|if(call){statement}
|
||||||
|
|if(id){statements}
|
||||||
|
|if(scalar){statements}
|
||||||
|
|if(call){statements}
|
||||||
|
|else if(id){}
|
||||||
|
|else if(scalar){}
|
||||||
|
|else if(call){statement}
|
||||||
|
|else if(id){statement}
|
||||||
|
|else if(scalar){statement}
|
||||||
|
|else if(call){statement}
|
||||||
|
|else if(id){statements}
|
||||||
|
|else if(scalar){statements}
|
||||||
|
|else if(call){statements}
|
||||||
|
|elsif(id){}
|
||||||
|
|elsif(scalar){}
|
||||||
|
|elsif(call){statement}
|
||||||
|
|elsif(id){statement}
|
||||||
|
|elsif(scalar){statement}
|
||||||
|
|elsif(call){statement}
|
||||||
|
|elsif(id){statements}
|
||||||
|
|elsif(scalar){statements}
|
||||||
|
|elsif(call){statements}
|
||||||
|
|else{}
|
||||||
|
|else{statement}
|
||||||
|
|else{statements}
|
||||||
|
|
||||||
|
loop
|
||||||
|
:while(id){}
|
||||||
|
|while(scalar){}
|
||||||
|
|while(call){}
|
||||||
|
|while(id){statement}
|
||||||
|
|while(scalar){statement}
|
||||||
|
|while(call){statement}
|
||||||
|
|while(id){statements}
|
||||||
|
|while(scalar){statements}
|
||||||
|
|while(call){statements}
|
||||||
|
|forindex|foreach(statement id){}
|
||||||
|
|forindex|foreach(statement scalar){}
|
||||||
|
|forindex|foreach(statement call){}
|
||||||
|
|forindex|foreach(statement list){}
|
||||||
|
|forindex|foreach(statement id){statement}
|
||||||
|
|forindex|foreach(statement scalar){statement}
|
||||||
|
|forindex|foreach(statement call){statement}
|
||||||
|
|forindex|foreach(statement list){statement}
|
||||||
|
|forindex|foreach(statement id){statements}
|
||||||
|
|forindex|foreach(statement scalar){statements}
|
||||||
|
|forindex|foreach(statement call){statements}
|
||||||
|
|forindex|foreach(statement list){statements}
|
||||||
|
|for(statement pre_assignment){}
|
||||||
|
|for(statement pre_assignment){statement}
|
||||||
|
|for(statement pre_assignment){statements}
|
||||||
|
|
||||||
definition
|
definition
|
||||||
:var id = id;
|
:var id = id;
|
||||||
|
@ -138,31 +252,44 @@ definition
|
||||||
|var id = call;
|
|var id = call;
|
||||||
|var id = list;
|
|var id = list;
|
||||||
|var id = hash;
|
|var id = hash;
|
||||||
|var id = function
|
|var id = function;
|
||||||
|var id;
|
|var id;
|
||||||
assignment
|
pre_assignment
|
||||||
:id = id;
|
:id = id
|
||||||
|id = scalar;
|
|id = scalar
|
||||||
|id = call;
|
|id = call
|
||||||
|id = function
|
|id = function
|
||||||
|id = list;
|
|id = list
|
||||||
|id = hash;
|
|id = hash
|
||||||
|call = id;
|
|call = id
|
||||||
|call = scalar;
|
|call = scalar
|
||||||
|call = call;
|
|call = call
|
||||||
|call = function
|
|call = function
|
||||||
|call = list;
|
|call = list
|
||||||
|call = hash;
|
|call = hash
|
||||||
|
|id assignment_operator id
|
||||||
|
|id assignment_operator scalar
|
||||||
|
|id assignment_operator call
|
||||||
|
|call assignment_operator id
|
||||||
|
|call assignment_operator scalar
|
||||||
|
|call assignment_operator call
|
||||||
;
|
;
|
||||||
statement
|
assignment
|
||||||
|
:pre_assignment ;
|
||||||
|
;
|
||||||
|
return_scalar
|
||||||
:return id;
|
:return id;
|
||||||
|return scalar;
|
|return scalar;
|
||||||
|return call;
|
|return call;
|
||||||
|return function;
|
|return function;
|
||||||
|return list;
|
|return list;
|
||||||
|return hash;
|
|return hash;
|
||||||
|continue;
|
|return;
|
||||||
|
;
|
||||||
|
statement
|
||||||
|
:continue;
|
||||||
|break;
|
|break;
|
||||||
|
|return_scalar
|
||||||
|definition
|
|definition
|
||||||
|assignment
|
|assignment
|
||||||
|loop
|
|loop
|
||||||
|
|
|
@ -42,8 +42,8 @@ enum token_type
|
||||||
__call_list,
|
__call_list,
|
||||||
__call_hash,
|
__call_hash,
|
||||||
__call,
|
__call,
|
||||||
__definition,
|
__definition,__return_scalar,
|
||||||
__assignment,__pre_assignment,
|
__assignment,__pre_assignment,__assignment_operator,
|
||||||
__calculation,
|
__calculation,
|
||||||
__loop,
|
__loop,
|
||||||
__choose,__if_choose,__elsif_choose,__else_choose,
|
__choose,__if_choose,__elsif_choose,__else_choose,
|
||||||
|
@ -60,6 +60,24 @@ struct cmp_seq
|
||||||
cmp_seq par[]=
|
cmp_seq par[]=
|
||||||
{
|
{
|
||||||
{{__program,__statement}, __program},
|
{{__program,__statement}, __program},
|
||||||
|
{{__add_operator},__two_operator},
|
||||||
|
{{__sub_operator},__two_operator},
|
||||||
|
{{__mul_operator},__two_operator},
|
||||||
|
{{__div_operator},__two_operator},
|
||||||
|
{{__link_operator},__two_operator},
|
||||||
|
{{__and_operator},__two_operator},
|
||||||
|
{{__or_operator},__two_operator},
|
||||||
|
{{__cmp_equal},__two_operator},
|
||||||
|
{{__cmp_not_equal},__two_operator},
|
||||||
|
{{__cmp_less},__two_operator},
|
||||||
|
{{__cmp_less_or_equal},__two_operator},
|
||||||
|
{{__cmp_more},__two_operator},
|
||||||
|
{{__cmp_more_or_equal},__two_operator},
|
||||||
|
{{__add_equal},__assignment_operator},
|
||||||
|
{{__sub_equal},__assignment_operator},
|
||||||
|
{{__mul_equal},__assignment_operator},
|
||||||
|
{{__div_equal},__assignment_operator},
|
||||||
|
{{__link_equal},__assignment_operator},
|
||||||
|
|
||||||
{{__number},__scalar},
|
{{__number},__scalar},
|
||||||
{{__string},__scalar},
|
{{__string},__scalar},
|
||||||
|
@ -121,14 +139,12 @@ cmp_seq par[]=
|
||||||
{{__hash_member,__comma,__hash_member},__hash_member_list},
|
{{__hash_member,__comma,__hash_member},__hash_member_list},
|
||||||
{{__hash_member_list,__comma,__hash_member},__hash_member_list},
|
{{__hash_member_list,__comma,__hash_member},__hash_member_list},
|
||||||
|
|
||||||
{{__right_bracket,__left_bracket},__list},
|
|
||||||
{{__right_bracket,__id,__left_bracket},__list},
|
{{__right_bracket,__id,__left_bracket},__list},
|
||||||
{{__right_bracket,__scalar,__left_bracket},__list},
|
{{__right_bracket,__scalar,__left_bracket},__list},
|
||||||
{{__right_bracket,__call,__left_bracket},__list},
|
{{__right_bracket,__call,__left_bracket},__list},
|
||||||
{{__right_bracket,__function,__left_bracket},__list},
|
{{__right_bracket,__function,__left_bracket},__list},
|
||||||
{{__right_bracket,__data_list,__left_bracket},__list},
|
{{__right_bracket,__data_list,__left_bracket},__list},
|
||||||
|
|
||||||
{{__right_brace,__left_brace},__hash},
|
|
||||||
{{__right_brace,__hash_member,__left_brace},__hash},
|
{{__right_brace,__hash_member,__left_brace},__hash},
|
||||||
{{__right_brace,__hash_member_list,__left_brace},__hash},
|
{{__right_brace,__hash_member_list,__left_brace},__hash},
|
||||||
|
|
||||||
|
@ -145,6 +161,8 @@ cmp_seq par[]=
|
||||||
|
|
||||||
{{__id,__dot,__id},__call_hash},
|
{{__id,__dot,__id},__call_hash},
|
||||||
{{__id,__dot,__call},__call_hash},
|
{{__id,__dot,__call},__call_hash},
|
||||||
|
{{__scalar,__dot,__id},__call_hash},
|
||||||
|
{{__scalar,__dot,__call},__call_hash},
|
||||||
{{__call,__dot,__id},__call_hash},
|
{{__call,__dot,__id},__call_hash},
|
||||||
{{__call,__dot,__call},__call_hash},
|
{{__call,__dot,__call},__call_hash},
|
||||||
|
|
||||||
|
@ -156,6 +174,155 @@ cmp_seq par[]=
|
||||||
{{__right_curve,__hash,__left_curve,__id},__call_function},
|
{{__right_curve,__hash,__left_curve,__id},__call_function},
|
||||||
{{__right_curve,__function,__left_curve,__id},__call_function},
|
{{__right_curve,__function,__left_curve,__id},__call_function},
|
||||||
{{__right_curve,__data_list,__left_curve,__id},__call_function},
|
{{__right_curve,__data_list,__left_curve,__id},__call_function},
|
||||||
|
|
||||||
|
{{__id,__two_operator,__id},__calculation},
|
||||||
|
{{__id,__two_operator,__scalar},__calculation},
|
||||||
|
{{__id,__two_operator,__call},__calculation},
|
||||||
|
{{__scalar,__two_operator,__id},__calculation},
|
||||||
|
{{__scalar,__two_operator,__scalar},__calculation},
|
||||||
|
{{__scalar,__two_operator,__call},__calculation},
|
||||||
|
{{__call,__two_operator,__id},__calculation},
|
||||||
|
{{__call,__two_operator,__scalar},__calculation},
|
||||||
|
{{__call,__two_operator,__call},__calculation},
|
||||||
|
{{__id,__nor_operator},__calculation},
|
||||||
|
{{__scalar,__nor_operator},__calculation},
|
||||||
|
{{__call,__nor_operator},__calculation},
|
||||||
|
{{__right_curve,__id,__left_curve},__calculation},
|
||||||
|
{{__right_curve,__scalar,__left_curve},__calculation},
|
||||||
|
{{__right_curve,__call,__left_curve},__calculation},
|
||||||
|
|
||||||
|
{{__semi,__id,__return},__return_scalar},
|
||||||
|
{{__semi,__scalar,__return},__return_scalar},
|
||||||
|
{{__semi,__call,__return},__return_scalar},
|
||||||
|
{{__semi,__function,__return},__return_scalar},
|
||||||
|
{{__semi,__list,__return},__return_scalar},
|
||||||
|
{{__semi,__hash,__return},__return_scalar},
|
||||||
|
{{__semi,__return},__return_scalar},
|
||||||
|
|
||||||
|
{{__right_brace,__left_brace,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__func},__function},
|
||||||
|
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__left_curve,__func},__function},
|
||||||
|
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__scalar,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__scalar,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__list,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__list,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__hash,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__hash,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__function,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__function,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__dynamic_id,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__dynamic_id,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__data_list,__left_curve,__func},__function},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__data_list,__left_curve,__func},__function},
|
||||||
|
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__scalar,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__scalar,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__left_curve,__if},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__scalar,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__scalar,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__left_curve,__if,__else},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__scalar,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__scalar,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__left_curve,__elsif},__choose},
|
||||||
|
{{__right_brace,__left_brace,__else},__choose},
|
||||||
|
{{__right_brace,__statement,__left_brace,__else},__choose},
|
||||||
|
|
||||||
|
{{__semi,__id,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__right_bracket,__left_bracket,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__right_brace,__left_brace,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__scalar,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__call,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__function,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__list,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__hash,__equal,__id,__var},__definition},
|
||||||
|
{{__semi,__id,__var},__definition},
|
||||||
|
|
||||||
|
{{__id,__equal,__id},__pre_assignment},
|
||||||
|
{{__scalar,__equal,__id},__pre_assignment},
|
||||||
|
{{__call,__equal,__id},__pre_assignment},
|
||||||
|
{{__function,__equal,__id},__pre_assignment},
|
||||||
|
{{__list,__equal,__id},__pre_assignment},
|
||||||
|
{{__hash,__equal,__id},__pre_assignment},
|
||||||
|
{{__id,__equal,__call},__pre_assignment},
|
||||||
|
{{__scalar,__equal,__call},__pre_assignment},
|
||||||
|
{{__call,__equal,__call},__pre_assignment},
|
||||||
|
{{__function,__equal,__call},__pre_assignment},
|
||||||
|
{{__list,__equal,__call},__pre_assignment},
|
||||||
|
{{__hash,__equal,__call},__pre_assignment},
|
||||||
|
{{__id,__assignment_operator,__id},__pre_assignment},
|
||||||
|
{{__scalar,__assignment_operator,__id},__pre_assignment},
|
||||||
|
{{__call,__assignment_operator,__id},__pre_assignment},
|
||||||
|
{{__id,__assignment_operator,__call},__pre_assignment},
|
||||||
|
{{__scalar,__assignment_operator,__call},__pre_assignment},
|
||||||
|
{{__call,__assignment_operator,__call},__pre_assignment},
|
||||||
|
{{__semi,__pre_assignment},__assignment},
|
||||||
|
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__scalar,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__scalar,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__left_curve,__while},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__list,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__list,__statement,__left_curve,__forindex},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__id,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__call,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__list,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__id,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__call,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__list,__statement,__left_curve,__foreach},__loop},
|
||||||
|
{{__right_brace,__left_brace,__right_curve,__pre_assignment,__statement,__left_curve,__for},__loop},
|
||||||
|
{{__right_brace,__statement,__left_brace,__right_curve,__pre_assignment,__statement,__left_curve,__for},__loop},
|
||||||
|
|
||||||
|
{{__return_scalar},__statement},
|
||||||
|
{{__semi,__continue},__statement},
|
||||||
|
{{__semi,__break},__statement},
|
||||||
|
|
||||||
|
{{__semi,__id,__semi},__semi},
|
||||||
|
{{__semi,__call,__semi},__semi},
|
||||||
|
{{__semi,__scalar,__semi},__semi},
|
||||||
|
{{__semi,__list,__semi},__semi},
|
||||||
|
{{__semi,__hash,__semi},__semi},
|
||||||
|
{{__semi,__id,__right_brace},__right_brace},
|
||||||
|
{{__semi,__call,__right_brace},__right_brace},
|
||||||
|
{{__semi,__scalar,__right_brace},__right_brace},
|
||||||
|
{{__semi,__list,__right_brace},__right_brace},
|
||||||
|
{{__semi,__hash,__right_brace},__right_brace},
|
||||||
|
{{__semi,__id,__left_brace},__left_brace},
|
||||||
|
{{__semi,__call,__left_brace},__left_brace},
|
||||||
|
{{__semi,__scalar,__left_brace},__left_brace},
|
||||||
|
{{__semi,__list,__left_brace},__left_brace},
|
||||||
|
{{__semi,__hash,__left_brace},__left_brace},
|
||||||
|
{{__semi,__id,__left_curve},__left_curve},
|
||||||
|
{{__semi,__call,__left_curve},__left_curve},
|
||||||
|
{{__semi,__scalar,__left_curve},__left_curve},
|
||||||
|
{{__semi,__list,__left_curve},__left_curve},
|
||||||
|
{{__semi,__hash,__left_curve},__left_curve},
|
||||||
|
|
||||||
|
{{__loop},__statement},
|
||||||
|
{{__choose},__statement},
|
||||||
|
{{__definition},__statement},
|
||||||
|
{{__assignment},__statement},
|
||||||
};
|
};
|
||||||
int num_of_par=sizeof(par)/sizeof(cmp_seq);
|
int num_of_par=sizeof(par)/sizeof(cmp_seq);
|
||||||
|
|
||||||
|
@ -342,10 +509,10 @@ void print_token(int type)
|
||||||
context="call_hash";
|
context="call_hash";
|
||||||
break;
|
break;
|
||||||
case __definition:
|
case __definition:
|
||||||
context="definition";
|
context="definition;";
|
||||||
break;
|
break;
|
||||||
case __assignment:
|
case __assignment:
|
||||||
context="assignment";
|
context="assignment;";
|
||||||
break;
|
break;
|
||||||
case __calculation:
|
case __calculation:
|
||||||
context="calc";
|
context="calc";
|
||||||
|
@ -384,6 +551,12 @@ void print_token(int type)
|
||||||
case __two_operator:
|
case __two_operator:
|
||||||
context="operator";
|
context="operator";
|
||||||
break;
|
break;
|
||||||
|
case __assignment_operator:
|
||||||
|
context="operator";
|
||||||
|
break;
|
||||||
|
case __return_scalar:
|
||||||
|
context="return_scl;";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
context="unknown_type";
|
context="unknown_type";
|
||||||
break;
|
break;
|
||||||
|
@ -410,6 +583,9 @@ class PDA
|
||||||
while(!comp_stack.empty())
|
while(!comp_stack.empty())
|
||||||
comp_stack.pop();
|
comp_stack.pop();
|
||||||
main_stack.push(__stack_end);
|
main_stack.push(__stack_end);
|
||||||
|
main_stack.push(__var);
|
||||||
|
main_stack.push(__id);
|
||||||
|
main_stack.push(__semi);
|
||||||
comp_stack.push(__stack_end);
|
comp_stack.push(__stack_end);
|
||||||
comp_stack.push(__program);
|
comp_stack.push(__program);
|
||||||
}
|
}
|
||||||
|
@ -504,17 +680,21 @@ class PDA
|
||||||
{
|
{
|
||||||
comp_stack.push(main_stack.top());
|
comp_stack.push(main_stack.top());
|
||||||
main_stack.pop();
|
main_stack.pop();
|
||||||
// if((comp_stack.top()==__left_bracket) && (!main_stack.empty()) && (main_stack.top()==__id))
|
if((comp_stack.top()==__left_curve) && ((main_stack.top()==__id) || (main_stack.top()==__if) || (main_stack.top()==__elsif) || (main_stack.top()==__while) || (main_stack.top()==__func)))
|
||||||
// {
|
|
||||||
// comp_stack.push(main_stack.top());
|
|
||||||
// main_stack.pop();
|
|
||||||
// }
|
|
||||||
if((comp_stack.top()==__left_curve) && (!main_stack.empty()) && ((main_stack.top()==__id) || (main_stack.top()==__if) || (main_stack.top()==__elsif) || (main_stack.top()==__while) || (main_stack.top()==__func)))
|
|
||||||
{
|
{
|
||||||
comp_stack.push(main_stack.top());
|
comp_stack.push(main_stack.top());
|
||||||
main_stack.pop();
|
main_stack.pop();
|
||||||
}
|
}
|
||||||
else if((comp_stack.top()==__id) && (!main_stack.top()) && (main_stack.top()==__var))
|
else if((comp_stack.top()==__id) && (main_stack.top()==__var))
|
||||||
|
{
|
||||||
|
comp_stack.push(main_stack.top());
|
||||||
|
main_stack.pop();
|
||||||
|
}
|
||||||
|
else if(((comp_stack.top()==__sub_operator) || (comp_stack.top()==__add_operator)) && (main_stack.top()!=__id) && (main_stack.top()!=__right_curve) && (main_stack.top()!=__right_bracket))
|
||||||
|
{
|
||||||
|
main_stack.push(__number);
|
||||||
|
}
|
||||||
|
if((comp_stack.top()==__if) && (main_stack.top()==__else))
|
||||||
{
|
{
|
||||||
comp_stack.push(main_stack.top());
|
comp_stack.push(main_stack.top());
|
||||||
main_stack.pop();
|
main_stack.pop();
|
||||||
|
|
Loading…
Reference in New Issue