- try
- (parser
- | [< '("URI", u) >] ->
- parse (UriDep (UriManager.uri_of_string u) :: acc)
- | [< '("IDENT", "include"); '("QSTRING", fname) >] ->
- parse (IncludeDep fname :: acc)
- | [< '("IDENT", "set"); '("QSTRING", "baseuri"); '("QSTRING", baseuri) >] ->
- parse (BaseuriDep baseuri :: acc)
- | [< '("EOI", _) >] -> acc
- | [< 'tok >] -> parse acc
- | [< >] -> acc) tok_stream
- with
- Stream.Error _ -> parse acc
+ let continue, acc =
+ try
+ (parser
+ | [< '("QSTRING", s) >] ->
+ (* because of alias id qstring = qstring :-( *)
+ (try
+ true, (UriDep (UriManager.uri_of_string s) :: acc)
+ with
+ UriManager.IllFormedUri _ -> true, acc)
+ | [< '("URI", u) >] ->
+ true, (UriDep (UriManager.uri_of_string u) :: acc)
+ | [< '("IDENT", "include"); '("QSTRING", fname) >] ->
+ true, (IncludeDep fname :: acc)
+ | [< '("IDENT", "include'"); '("QSTRING", fname) >] ->
+ true, (IncludeDep fname :: acc)
+ | [< '("EOI", _) >] -> false, acc
+ | [< 'tok >] -> true, acc
+ | [< >] -> false, acc) tok_stream
+ with
+ Stream.Error _ -> false, acc
+ | CicNotationLexer.Error _ -> true, acc
+ in
+ if continue then parse acc else acc