Assignment : @ { Ident _ '=' _ Expect ast("assign" + ext) Expression ast("value") } # HoldAssignment : Assignment # fails with endless recursion! HoldAssignment : Assignment Empty # workaround! # ast_print(Assignment) ast_print(HoldAssignment) #--- #a=b=c=42 #--- #assign [start 1:1, end 1:9] # assign [start 1:3, end 1:9] # assign [start 1:5, end 1:9] # value [start 1:7, end 1:9] => 42