package odoc-parser

  1. Overview
  2. Docs
Parser for ocaml documentation comments

Install

Dune Dependency

Authors

Maintainers

Sources

odoc-parser-1.0.1.tbz
sha256=a2bbe8e4201b60e980bab01e96e41f2ba0b05ba3f50b44f75837e8a2fb907d2c
sha512=c3339aae880ce72df866746d9ed9e7d38a752bf994ba24e948c086349604007e39602a1c31cf2ddb61ac8f8dc9dceccca43fe185850b83e3a02d75121f9ddfe2

Description

Odoc_parser is a library for parsing the contents of OCaml documentation comments, formatted using 'odoc' syntax, an extension of the language understood by ocamldoc.

Published: 05 Jul 2022

README

odoc-parser

Odoc-parser is a parser for odoc markup, which is an extension of the original markup language parsed by ocamldoc.

OCaml code can contain specially formatted comments that are used to document the interfaces of modules. These comments are delimited by (** and *). This parser is intended to be used to parse the contents of these comments.

The parser is part of the odoc project.

Please see CONTRIBUTING.md for details of the development process.

Example usage:

# #require "odoc-parser";;
# let location = {Lexing.pos_fname = ""; pos_lnum = 1; pos_bol = 0; pos_cnum = 0};;
val location : Lexing.position =
  {Lexing.pos_fname = ""; pos_lnum = 1; pos_bol = 0; pos_cnum = 0}
# let p = Odoc_parser.parse_comment ~location ~text:"{b Bold!}[unfinished";;
val p : Odoc_parser.t = <abstr>
# let w = Odoc_parser.warnings p;;
val w : Odoc_parser.Warning.t list =
  [{Odoc_parser.Warning.location =
     {Odoc_parser.Loc.file = "";
      start = {Odoc_parser.Loc.line = 1; column = 20};
      end_ = {Odoc_parser.Loc.line = 1; column = 20}};
    message = "End of text is not allowed in '[...]' (code)."}]
# Odoc_parser.ast p;;
- : Odoc_parser.Ast.t =
[{Odoc_parser__.Loc.location =
   {Odoc_parser__.Loc.file = "";
    start = {Odoc_parser__.Loc.line = 1; column = 0};
    end_ = {Odoc_parser__.Loc.line = 1; column = 20}};
  value =
   `Paragraph
     [{Odoc_parser__.Loc.location =
        {Odoc_parser__.Loc.file = "";
         start = {Odoc_parser__.Loc.line = 1; column = 0};
         end_ = {Odoc_parser__.Loc.line = 1; column = 9}};
       value =
        `Styled
          (`Bold,
           [{Odoc_parser__.Loc.location =
              {Odoc_parser__.Loc.file = "";
               start = {Odoc_parser__.Loc.line = 1; column = 3};
               end_ = {Odoc_parser__.Loc.line = 1; column = 8}};
             value = `Word "Bold!"}])};
      {Odoc_parser__.Loc.location =
        {Odoc_parser__.Loc.file = "";
         start = {Odoc_parser__.Loc.line = 1; column = 9};
         end_ = {Odoc_parser__.Loc.line = 1; column = 20}};
       value = `Code_span "unfinished"}]}]

Dependencies (5)

  1. camlp-streams
  2. result
  3. astring
  4. ocaml >= "4.02.0"
  5. dune >= "2.8"

Dev Dependencies (3)

  1. sexplib0 with-test
  2. ocaml < "4.04.1" & with-test
  3. ppx_expect with-test

Used by (4)

  1. mdx >= "1.11.0" & < "2.3.1"
  2. ocamlformat >= "0.20.1" & < "0.24.1"
  3. ocamlformat-rpc = "0.20.1"
  4. odoc >= "2.0.0" & < "2.2.0"

Conflicts

None

OCaml

Innovation. Community. Security.