| [],[] -> 0
| [],_ -> ~-1
| _,[] -> 1
- | ((s1::tl1) as x),((s2::tl2) as y) ->
+ | ((s1::tl1) ),((s2::tl2) ) ->
if Gramext.eq_symbol s1 s2 then aux (tl1,tl2)
- else Pervasives.compare x y
+ else
+ let res =
+ try Pervasives.compare s1 s2
+ with Invalid_argument _ -> 0
+ in
+ if res = 0 then aux (tl1, tl2) else res
in
aux (x,y)
sort: [
[ "Prop" -> `Prop
| "Set" -> `Set
- | "Type"; SYMBOL "["; n = NUMBER; SYMBOL "]" -> `NType n
+ | "Type"; SYMBOL "["; n = [ NUMBER| IDENT ]; SYMBOL "]" -> `NType n
| "Type" -> `Type (CicUniv.fresh ())
- | "CProp"; SYMBOL "["; n = NUMBER; SYMBOL "]" -> `NCProp n
+ | "CProp"; SYMBOL "["; n = [ NUMBER| IDENT ]; SYMBOL "]" -> `NCProp n
| "CProp" -> `CProp (CicUniv.fresh ())
]
];