%token ID, HILERA, DATA doc: data balanced_doc data | data unbalanced_doc data | /* £ */ ; balanced_doc: '<' ID args '>' doc "' doc ; unbalanced_doc: '<' ID args "/>" doc ; data: DATA | /* £ */ ; args: arg args | /* £ */ ; arg: ID '=' HILERA ; =========================================== A22774 ====== %token ID, HILERA, DATA etiqueta: inicio_etiqueta atributos cierres ; inicio_etiqueta: '<' ID ; atributos: atributo atributos | /* £ */ ; atributo: ID '=' HILERA ; cierres: "/>" | '>' mas_etiquetas fin_etiqueta ; mas_etiquetas: etiqueta | DATA mas_etiquetas | /* £ */ ; fin_etiqueta: "' ; =========================================== A30101-A33330 %token ID, HILERA, DATA bloque: '<' ID atributos cierre ; atributos: ID = HILERA atributos | /* £ */ ; cierre: "/>" | '>' elementos fin ; elementos: DATA bloque elementos | /* £ */ ; fin: "' ; =========================================== A40404 %token ID, HILERA, DATA /* ID = string HILERA = "string" DATA = Texto Libre(string) */ cblks: cblk blks ; blks: DATA cblks | cblks | /* £ */ ; cblk '<' ID args blk : blk: '>' blks "' | "/>" | /* £ */ ; args: arg args | /* £ */ ; arg: ID '=' HILERA | /* £ */ ; =========================================== blks: blk DATA blks | blk blks | /* £ */ ; blk: cblk '>' blk '<' ID "/>" | cblk "/>" | /* £ */ ; cblk: `<' ID args ; arg: ID '=' HILERA args: arg args | /* £ */ ; ===========================================