Skip to content

Commit

Permalink
add assign with concat embedded
Browse files Browse the repository at this point in the history
  • Loading branch information
manuel-rubio authored and Marga Ortiz committed May 2, 2016
1 parent e95a2a7 commit 1d011e3
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions src/ephp_parser.peg
Original file line number Diff line number Diff line change
Expand Up @@ -490,12 +490,17 @@ st_const <- const space key space? '=' space? expression space? ';' `
%% Assign

composed_assign <- var space? assign_op space? expression `
[Var,_,Type,_,Expr] = Node,
#assign{variable=Var, expression = #operation{
type=Type,
expression_left=Var,
expression_right=Expr,
line=Index}, line=Index}
case Node of
[Var,_,<<".">>,_,Expr] ->
#assign{variable=Var, expression = #concat{
texts=[Var,Expr], line=Index}, line=Index};
[Var,_,Type,_,Expr] ->
#assign{variable=Var, expression = #operation{
type=Type,
expression_left=Var,
expression_right=Expr,
line=Index}, line=Index}
end
`;

base_assign <- arith_mono / composed_assign / (var space? '=' space?
Expand Down Expand Up @@ -717,13 +722,19 @@ mono_logic <- '~' ~;
mono_aritmetic <- '++' / '--' ~;
comparator <- xeq / leq / eq / ne / xne / geq / gt / lt / instanceof ~;

assign_op <- assign_plus / assign_minus / assign_mul / assign_div / assign_mod ~;
assign_op <- assign_plus /
assign_minus /
assign_mul /
assign_div /
assign_mod /
assign_concat ~;

assign_plus <- '+=' `<<"+">>`;
assign_minus <- '-=' `<<"-">>`;
assign_mul <- '*=' `<<"*">>`;
assign_div <- '/=' `<<"/">>`;
assign_mod <- '%=' `<<"%">>`;
assign_concat <- '.=' `<<".">>`;

eq <- '==' ~;
xeq <- '===' ~;
Expand Down

0 comments on commit 1d011e3

Please sign in to comment.