%{
# header code goes here
%}

%start elements
%token OBRACE
%token EBRACE
%token PIPE

%%

text: TEXT { $_[0]->YYData->{tree}->add_child("text",$_[0]->YYData->{DATA}[1],$_[0]->YYData->{DATA}[2]); } ;

element: text | parser_spin { };

elementpipe: elements pipe { } ;

ebrace: EBRACE { $_[0]->YYData->{tree}->ebrace; } ;

obrace: OBRACE { $_[0]->YYData->{tree}->obrace; } ;

pipe: PIPE { $_[0]->YYData->{tree}->add_child("pipe") } ;

elementpipes:
   |
   elementpipes elementpipe { } 
   ;

parser_spin: obrace elementpipes elements ebrace { $_[0]->YYData->{tree}->last_child->{type} = "spin"; } ;

elements: /* empty */
   |
   elements element
   ;

%%