("(" number (',' number)* ")")? (* reference spec *)
let regexp qstring = '"' [^ '"']* '"'
-let regexp hreftag = "<" [ 'A' 'a' ]
+let regexp xmarkup = '\005'
+let regexp ymarkup = '\006'
+
+let regexp hreftag = xmarkup [ 'A' 'a' ]
let regexp href = "href=\"" uri "\""
let regexp hreftitle = "title=" qstring
-let regexp hrefclose = "</" [ 'A' 'a' ] ">"
+let regexp hrefclose = xmarkup "/" [ 'A' 'a' ] ymarkup
+
+let regexp tag_cont = ident_letter | xml_digit | "_" | "-"
+let regexp tagname = ident_letter tag_cont*
+let regexp opentag = xmarkup tagname
+let regexp closetag = xmarkup "/" tagname ymarkup
+let regexp attribute = tagname "=" qstring
+let regexp generictag =
+ opentag (utf8_blank+ attribute)* ymarkup
let regexp tex_token = '\\' ident
| utf8_blank+ -> level2_meta_token lexbuf
| hreftag -> return lexbuf ("ATAG","")
| hrefclose -> return lexbuf ("ATAGEND","")
+ | generictag
+ | closetag -> level2_meta_token lexbuf
| ident ->
handle_keywords lexbuf (fun x -> List.mem x level2_meta_keywords) "IDENT"
| variable_ident -> return lexbuf ("IDENT", Ulexing.utf8_lexeme lexbuf)
| placeholder -> return lexbuf ("PLACEHOLDER", "")
| hreftag -> aux_in_tag None None lexbuf
| hrefclose -> aux None None lexbuf
+ | generictag
+ | closetag -> ligatures_token (aux desc href) lexbuf
| ident -> loctable :=
update_table (loc_of_buf lexbuf) desc href !loctable;
handle_keywords lexbuf (fun x -> StringSet.mem x status) "IDENT"
| number -> return lexbuf ("NUMBER", Ulexing.utf8_lexeme lexbuf)
| hreftag -> return lexbuf ("ATAG", "")
| hrefclose -> return lexbuf ("ATAGEND","")
+ | generictag
+ | closetag -> ligatures_token level1_pattern_token lexbuf
| ident ->handle_keywords lexbuf (fun x -> List.mem x level1_keywords) "IDENT"
| variable_ident -> return lexbuf ("IDENT", Ulexing.utf8_lexeme lexbuf)
| pident->handle_keywords lexbuf (fun x->List.mem x level1_keywords) "PIDENT"