| '"' { read_string (Ast.Substs.create ()) lexbuf }
| "{" { read_code (Ast.Substs.create ()) (ref 1) lexbuf }
| "goal" { GOAL }
+ | "tactic" { TACTIC_KEYWORD }
| "let" { LET }
+ | "include" { INCLUDE }
+ | "*" id { (* NB: The initial '*' is part of the name. *)
+ TACTIC (Lexing.lexeme lexbuf) }
| id { ID (Lexing.lexeme lexbuf) }
| _ { raise (SyntaxError ("unexpected character: " ^
Lexing.lexeme lexbuf)) }