3 module ET = RecommTypes
5 let lc = String.lowercase_ascii
9 %token <string> SP NL OP CP PP SR KW CW HW SW OT
13 %type <RecommTypes.srcs> srcs
35 | inn_r inns { $1 ^ $2 }
39 | inn inns { $1 ^ $2 }
52 | out outs { $1 ^ $2 }
65 | SP cw cws { $2 :: $3 }
79 | SP sw sws { $2 :: $3 }
83 | OP sp PP inns CP { ET.Mark $4 }
84 | OP sp KW inns CP { ET.Key ($3, $4) }
85 | OP sp CW cws CP { ET.Title ($3 :: $4) }
86 | OP sp HW sws CP { ET.Slice (lc $3 :: $4) }
87 | OP sp CP { ET.Other ($1, $2, $3) }
88 | OP sp inns_r CP { ET.Other ($1, $2 ^ $3, $4) }
89 | OP SR inns CP { ET.Other ($1, $2 ^ $3, $4) }
90 | OP SR SR inns CP { ET.Other ($1, $2 ^ $3 ^ $4, $5) }
91 | OP SP SR inns CP { ET.Mark $4 }
98 | src_l srcs { $1 :: $2 }
102 | src srcs_l { $1 :: $2 }