package higlo

  1. Overview
  2. Docs

Module Higlo.LangSource

Syntax highligthing

Sourcetype token =
  1. | Bcomment of string
    (*

    block comment

    *)
  2. | Constant of string
  3. | Directive of string
  4. | Escape of string
    (*

    Escape sequence like \123

    *)
  5. | Id of string
  6. | Keyword of int * string
  7. | Lcomment of string
    (*

    one line comment

    *)
  8. | Numeric of string
  9. | String of string
  10. | Symbol of int * string
  11. | Text of string
    (*

    Used for everything else

    *)

Tokens read in the given code. These names are inspired from the highlight tool. Keyword and Symbol are parametrized by an integer to be able to distinguish different families of keywords and symbols, as kwa, kwb, ..., in highlight.

Sourceval string_of_token : token -> string

For debug printing.

Sourcetype error =
  1. | Unknown_lang of string
    (*

    when the required language is not found.

    *)
  2. | Lex_error of Location.t * string
Sourceexception Error of error
Sourceval string_of_error : error -> string
Sourceval pp : Format.formatter -> error -> unit
Sourcetype lexer = Sedlexing.lexbuf -> token list

Lexers are based on Sedlex. A lexer returns a list of tokens, in the same order they appear in the read string. Text tokens are merged by the parse function.

Sourceval get_lexer : string -> lexer

get_lexer lang returns the lexer registered for the given language lang or raises Unknown_lang if no such language was registered.

Sourceval register_lang : string -> lexer -> unit

If a lexer was registered for the same language, it is not available any more.

Sourceval parse : ?raise_exn:bool -> lang:string -> string -> token list

parse ?raise_exn ~lang code gets the lexer associated to lang and uses it to build a list of tokens. Consecutive Text tokens are merged. If no lexer is associated to the given language, then the function returns [Text code].

  • parameter raise

    defaults to false. If true, raise exceptions rather than returning [Text code].

OCaml

Innovation. Community. Security.