Module Stdlib.Genlex
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))typetoken`` =
|Kwdofstring
|Identofstring
|Intofint
|Floatoffloat
|Stringofstring
|Charofchar
The type of tokens. The lexical classes are: Int and Float for
integer and floating-point numbers; String for string literals,
enclosed in double quotes; Char for character literals, enclosed in
single quotes; Ident for identifiers (either sequences of letters,
digits, underscores and quotes, or sequences of 'operator characters'
such as +, *, etc); and Kwd for keywords (either identifiers or
single 'special characters' such as (, }, etc).
Construct the lexer function. The first argument is the list of
keywords. An identifier s is returned as Kwd s if s belongs to
this list, and as Ident s otherwise. A special character s is
returned as Kwd s if s belongs to this list, and cause a lexical
error (exception Stream.Error
with the offending lexeme as its parameter) otherwise. Blanks and
newlines are skipped. Comments delimited by (* and *) are skipped as
well, and can be nested. A
Stream.Failure exception is
raised if end of stream is unexpectedly reached.
