Commit Diff


commit - b7d8e86a72da7d644b7cf689545a66d15b608cd2
commit + aec641d24c0e41671097563d938a9ed21999c0ab
blob - c7de3531385d2618b2a080252c850c3f21633e4e
blob + 5123ce4a33aa43ed0af86569b4018237453866b5
--- src/cmd/rc/syn.y
+++ src/cmd/rc/syn.y
@@ -2,6 +2,7 @@
 %term WORD REDIR DUP PIPE SUB
 %term SIMPLE ARGLIST WORDS BRACE PAREN PCMD PIPEFD /* not used in syntax */
 /* operator priorities -- lowest first */
+%left LOW
 %left IF WHILE FOR SWITCH ')' NOT
 %left ANDAND OROR
 %left BANG SUBSHELL
@@ -9,6 +10,7 @@
 %left '^'
 %right '$' COUNT '"'
 %left SUB
+%left '='
 %{
 #include "rc.h"
 #include "fns.h"
@@ -78,6 +80,7 @@ first:	comword	
 word:	keyword			{lastword=1; $1->type=WORD;}
 |	comword
 |	word '^' word		{$$=tree2('^', $1, $3);}
+|	word '=' word %prec LOW		{$$=tree2('^', tree2('^', $1, token("=", WORD)), $3);}
 comword: '$' word		{$$=tree1('$', $2);}
 |	'$' word SUB words ')'	{$$=tree2(SUB, $2, $4);}
 |	'"' word		{$$=tree1('"', $2);}