Parse(3o) OCaml library Parse(3o) NAME Parse - Entry points in the parser Module Module Parse Documentation Module Parse : sig end Entry points in the parser Warning: this module is unstable and part of Compiler_libs . val implementation : Lexing.lexbuf -> Parsetree.structure val interface : Lexing.lexbuf -> Parsetree.signature val toplevel_phrase : Lexing.lexbuf -> Parsetree.toplevel_phrase val use_file : Lexing.lexbuf -> Parsetree.toplevel_phrase list val core_type : Lexing.lexbuf -> Parsetree.core_type val expression : Lexing.lexbuf -> Parsetree.expression val pattern : Lexing.lexbuf -> Parsetree.pattern The functions below can be used to parse Longident safely. val longident : Lexing.lexbuf -> Longident.t The function longident is guaranteed to parse all subclasses of Longi- dent.t used in OCaml: values, constructors, simple or extended module paths, and types or module types. However, this function accepts inputs which are not accepted by the compiler, because they combine functor applications and infix opera- tors. In valid OCaml syntax, only value-level identifiers may end with infix operators Foo.( + ) . Moreover, in value-level identifiers the module path Foo must be simple ( M.N rather than F(X) ): functor appli- cations may only appear in type-level identifiers. As a consequence, a path such as F(X).( + ) is not a valid OCaml identifier; but it is ac- cepted by this function. The next functions are specialized to a subclass of Longident.t val val_ident : Lexing.lexbuf -> Longident.t This function parses a syntactically valid path for a value. For in- stance, x , M.x , and (+.) are valid. Contrarily, M.A , F(X).x , and true are rejected. Longident for OCaml's value cannot contain functor application. The last component of the Longident.t is not capitalized, but can be an op- erator A.Path.To.(.%.%.(;..)<-) val constr_ident : Lexing.lexbuf -> Longident.t This function parses a syntactically valid path for a variant construc- tor. For instance, A , M.A and M.(::) are valid, but both M.a and F(X).A are rejected. Longident for OCaml's variant constructors cannot contain functor ap- plication. The last component of the Longident.t is capitalized, or it may be one the special constructors: true , false , () , [] , (::) . Among those special constructors, only (::) can be prefixed by a module path ( A.B.C.(::) ). val simple_module_path : Lexing.lexbuf -> Longident.t This function parses a syntactically valid path for a module. For in- stance, A , and M.A are valid, but both M.a and F(X).A are rejected. Longident for OCaml's module cannot contain functor application. The last component of the Longident.t is capitalized. val extended_module_path : Lexing.lexbuf -> Longident.t This function parse syntactically valid path for an extended module. For instance, A.B and F(A).B are valid. Contrarily, (.%()) or [] are both rejected. The last component of the Longident.t is capitalized. val type_ident : Lexing.lexbuf -> Longident.t This function parse syntactically valid path for a type or a module type. For instance, A , t , M.t and F(X).t are valid. Contrarily, (.%()) or [] are both rejected. In path for type and module types, only operators and special construc- tors are rejected. OCamldoc 2023-02-12 Parse(3o)
Generated by dwww version 1.15 on Fri Jun 21 21:33:31 CEST 2024.