diff --git a/DOC/Heritage_Platform.pdf b/DOC/Heritage_Platform.pdf index 31ca7df3e57098f597ccb33377c0bbc37b7776f1..cfb0450afb37da61031d989f9a2bc08a5ddafe21 100644 Binary files a/DOC/Heritage_Platform.pdf and b/DOC/Heritage_Platform.pdf differ diff --git a/DOC/Heritage_Platform.tex b/DOC/Heritage_Platform.tex index 8273c617b83fd06b7bf4a0c199c1de8bcd02e9b6..1c71f4046a7db9610c7525c5b28dc27eeda58f29 100644 --- a/DOC/Heritage_Platform.tex +++ b/DOC/Heritage_Platform.tex @@ -6,15 +6,15 @@ \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% This file has been automatically generated with the command -%% ocamlweb --noweb --tex ../DOC/docintro.tex control.ml version.ml date.ml canon.ml transduction.ml encode.ml order.ml padapatha.ml sanskrit.mli sanskrit.ml skt_lexer.ml test_stamp.ml dir.mli dir.ml paths.ml index.ml phonetics.ml int_sandhi.ml skt_morph.mli morphology.mli naming.ml inflected.mli inflected.ml sandhi.ml sandhier.ml pada.ml nouns.mli nouns.ml verbs.mli verbs.ml parts.ml conj_infos.mli morpho_string.ml morpho.ml declension.ml conjugation.ml indexer.ml indexerd.ml phases.ml lemmatizer.ml auto.mli load_transducers.ml dispatcher.mli dispatcher.ml segmenter.ml load_morphs.ml lexer.mli lexer.ml rank.ml scl_parser.ml reader.ml parser.ml constraints.mli constraints.ml multilingual.ml paraphrase.mli paraphrase.ml bank_lexer.ml checkpoints.ml graph_segmenter.ml automaton.ml interface.mli interface.ml user_aid.ml reset_caches.ml params.mli params.ml html.ml web.ml css.ml cgi.ml morpho_html.ml chapters.ml morpho_scl.ml mk_index_page.ml mk_grammar_page.ml mk_reader_page.ml mk_sandhi_page.ml mk_corpus_page.ml corpus.mli corpus.ml web_corpus.mli web_corpus.ml corpus_manager.mli corpus_manager.ml corpus_manager_cgi.ml save_corpus_params.mli save_corpus_params.ml save_corpus_cgi.ml mkdir_corpus_params.mli mkdir_corpus_params.ml mkdir_corpus_cgi.ml mk_corpus.ml -o ../DOC/Heritage_Platform.tex +%% ocamlweb --noweb --tex ../DOC/docintro.tex control.ml version.ml date.ml canon.ml transduction.ml encode.ml order.ml padapatha.ml skt_lexer.ml sanskrit.mli sanskrit.ml test_stamp.ml dir.mli dir.ml paths.ml index.ml phonetics.ml int_sandhi.ml skt_morph.mli morphology.mli naming.ml inflected.mli inflected.ml sandhi.ml sandhier.ml pada.ml nouns.mli nouns.ml verbs.mli verbs.ml parts.ml conj_infos.mli morpho_string.ml morpho.ml declension.ml conjugation.ml indexer.ml indexerd.ml phases.ml lemmatizer.ml auto.mli load_transducers.ml dispatcher.mli dispatcher.ml segmenter.ml load_morphs.ml lexer.mli lexer.ml rank.ml scl_parser.ml reader.ml parser.ml constraints.mli constraints.ml multilingual.ml paraphrase.mli paraphrase.ml bank_lexer.ml checkpoints.ml graph_segmenter.ml automaton.ml interface.mli interface.ml user_aid.ml reset_caches.ml params.mli params.ml html.ml web.ml css.ml cgi.ml morpho_html.ml chapters.ml morpho_scl.ml mk_index_page.ml mk_grammar_page.ml mk_reader_page.ml mk_sandhi_page.ml mk_corpus_page.ml corpus.mli corpus.ml web_corpus.mli web_corpus.ml corpus_manager.mli corpus_manager.ml corpus_manager_cgi.ml save_corpus_params.mli save_corpus_params.ml save_corpus_cgi.ml mkdir_corpus_params.mli mkdir_corpus_params.ml mkdir_corpus_cgi.ml mk_corpus.ml -o ../DOC/Heritage_Platform.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % WARNING Do not edit manually docintro.tex, mechanically produced by configure from docintro \begin{center} \vspace*{24pt} {\Large The Sanskrit Platform Documentation}\\[10pt] -{\Large (Sanskrit Library V3.08; Zen toolkit V3.1)}\\[15pt] -{\large 2018-08-25}\\[15pt] +{\Large (Sanskrit Library V3.09; Zen toolkit V3.1)}\\[15pt] +{\large 2018-09-09}\\[15pt] {\large G\'erard Huet \& Pawan Goyal}\\[10pt] {\large Copyright \copyright ~2000-2018 Inria}\\[20pt] \end{center} @@ -99,7 +99,7 @@ Generated by make version - see main Makefile \label{version.ml:671}% \medskip \ocwbegincode{}\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{version}=$\ocwstring{"3.08"}~\ocwkw{and}~$\ocwlowerid{version\_date}=$\ocwstring{"2018\symbol{45}08\symbol{45}25"};\ocweol +$\ocwlowerid{value}~\ocwlowerid{version}=$\ocwstring{"3.09"}~\ocwkw{and}~$\ocwlowerid{version\_date}=$\ocwstring{"2018\symbol{45}09\symbol{45}09"};\ocweol \ocweol \ocwendcode{}\typeout{OcamlWeb file Date.ml} \ocwmodule{Date} @@ -4150,6 +4150,270 @@ $]~$\ocwkw{in}\ocweol \ocwkw{let}~$(\ocwlowerid{\_},\ocwlowerid{padas})~=~\ocwlowerid{pad\_rec}~\ocwlowerid{l}~$\ocwkw{in}~$\ocwlowerid{padas}$\ocweol \ocwindent{0.00em} ;\ocweol +\ocwendcode{}\typeout{OcamlWeb file Skt_lexer.ml} +\ocwmodule{Skt\_lexer} +\label{skt_lexer.ml:0}% +A simple lexer recognizing idents, integers, punctuation symbols, + and skipping spaces and comments between % and eol. + The transliteration scheme is Velthuis with aa for long a etc. +\ocweol +\label{skt_lexer.ml:813}% +\medskip +\ocwbegincode{}\ocwindent{0.00em} +\ocwkw{module}~$\ocwupperid{Skt\_lexer}~=~$\ocwkw{struct}\medskip + +\label{skt_lexer.ml:840}% +\ocwindent{0.00em} +\ocwkw{open}~$\ocwupperid{Camlp4.PreCast};$\ocweol +\ocwindent{0.00em} +\ocwkw{open}~$\ocwupperid{Format};$\medskip + +\label{skt_lexer.ml:875}% +\ocwindent{1.00em} +\ocwkw{module}~$\ocwupperid{Loc}~=~\ocwupperid{Loc};~$\ocwbc{} Using the PreCast Loc \ocwec{}\ocweol +\ocwindent{1.00em} +\ocwkw{module}~$\ocwupperid{Error}~=~$\ocwkw{struct}\ocweol +\ocwindent{2.00em} +\ocwkw{type}~$\ocwlowerid{t}~=~$\ocwbt{string};\ocweol +\ocwindent{2.00em} +\ocwkw{exception}~$\ocwupperid{E}~$\ocwkw{of}~$\ocwlowerid{t};$\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{to\_string}~\ocwlowerid{x}~=~\ocwlowerid{x};$\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{print}~=~\ocwupperid{Format.}\ocwlowerid{pp\_print\_string};$\ocweol +\ocwindent{1.00em} +\ocwkw{end};\ocweol +\ocwindent{1.00em} +\ocwkw{module}~$\ocwupperid{Token}~=~$\ocwkw{struct}\ocweol +\ocwindent{2.00em} +\ocwkw{module}~$\ocwupperid{Loc}~=~\ocwupperid{Loc};~$\ocweol +\ocwindent{2.00em} +\ocwkw{type}~$\ocwlowerid{t}~=$\ocweol +\ocwindent{3.00em} +$[~\ocwupperid{KEYWORD}~$\ocwkw{of}~\ocwbt{string}\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{IDENT}~$\ocwkw{of}~\ocwbt{string}~\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{INT}~$\ocwkw{of}~\ocwbt{int}\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{EOI}$\ocweol +\ocwindent{3.00em} +$]$\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{2.00em} +\ocwkw{module}~$\ocwupperid{Error}~=~\ocwupperid{Error};$\ocweol +\ocwindent{2.00em} +\ocwkw{module}~$\ocwupperid{Filter}~=~$\ocwkw{struct}\ocweol +\ocwindent{3.00em} +\ocwkw{type}~$\ocwlowerid{token\_filter}~=~\ocwupperid{Camlp4.Sig.}\ocwlowerid{stream\_filter}~\ocwlowerid{t}~\ocwupperid{Loc.}\ocwlowerid{t}$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +\ocwkw{type}~$\ocwlowerid{t}~=~$\ocwbt{string}~$\rightarrow{}~$\ocwbt{bool}\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +$\ocwlowerid{value}~\ocwlowerid{mk}~\ocwlowerid{is\_kwd}~=~\ocwlowerid{is\_kwd}$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~=~$\ocwkw{parser}\ocweol +\ocwindent{4.00em} +$[~[:~`((\ocwupperid{KEYWORD}~\ocwlowerid{s},~\ocwlowerid{loc})~$\ocwkw{as}~$\ocwlowerid{p});~\ocwlowerid{strm}~:]~\rightarrow{}$\ocweol +\ocwindent{6.50em} +\ocwkw{if}~$\ocwlowerid{is\_kwd}~\ocwlowerid{s}~\lor{}~\ocwlowerid{s}~=~$\ocwstring{"!"}~\ocwkw{then}~$[:~`\ocwlowerid{p};~\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~\ocwlowerid{strm}~:]$\ocweol +\ocwindent{6.50em} +\ocwkw{else}~$\ocwlowerid{raise}~(\ocwupperid{Encode.In\_error}~($\ocwstring{"Undefined\ocwvspace{}token\ocwvspace{}:\ocwvspace{}"}~\^{}~$\ocwlowerid{s}))$\ocweol +\ocwindent{4.00em} +$\mid{}~[:~`\ocwlowerid{x};~\ocwlowerid{s}~:]~\rightarrow{}~[:~`\ocwlowerid{x};~\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~\ocwlowerid{s}~:]$\ocweol +\ocwindent{4.00em} +$\mid{}~[:~:]~\rightarrow{}~[:~:]~$\ocweol +\ocwindent{4.00em} +$]~$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +$\ocwlowerid{value}~\ocwlowerid{define\_filter}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +$\ocwlowerid{value}~\ocwlowerid{keyword\_added}~\ocwlowerid{\_}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{3.00em} +$\ocwlowerid{value}~\ocwlowerid{keyword\_removed}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol +\ocwindent{3.00em} +;\ocweol +\ocwindent{2.00em} +\ocwkw{end}\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{to\_string}~=~$\ocwkw{fun}\ocweol +\ocwindent{3.00em} +$[~\ocwupperid{KEYWORD}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"KEYWORD\ocwvspace{}\%S"}~$\ocwlowerid{s}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{IDENT}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"IDENT\ocwvspace{}\%S"}~$\ocwlowerid{s}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{INT}~\ocwlowerid{i}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"INT\ocwvspace{}\%d"}~$\ocwlowerid{i}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{EOI}~\rightarrow{}~$\ocwstring{"EOI"}\ocweol +\ocwindent{3.00em} +$]$\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{print}~\ocwlowerid{ppf}~\ocwlowerid{x}~=~\ocwlowerid{pp\_print\_string}~\ocwlowerid{ppf}~(\ocwlowerid{to\_string}~\ocwlowerid{x})$\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{match\_keyword}~\ocwlowerid{kwd}~=~$\ocwkw{fun}\ocweol +\ocwindent{3.00em} +$[~\ocwupperid{KEYWORD}~\ocwlowerid{kwd'}~$\ocwkw{when}~$\ocwlowerid{kwd'}~=~\ocwlowerid{kwd}~\rightarrow{}~\ocwupperid{True}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwlowerid{\_}~\rightarrow{}~\ocwupperid{False}$\ocweol +\ocwindent{3.00em} +$]$\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{2.00em} +$\ocwlowerid{value}~\ocwlowerid{extract\_string}~=~$\ocwkw{fun}\ocweol +\ocwindent{3.00em} +$[~\ocwupperid{INT}~\ocwlowerid{i}~\rightarrow{}~\ocwlowerid{string\_of\_int}~\ocwlowerid{i}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{IDENT}~\ocwlowerid{s}~\mid{}~\ocwupperid{KEYWORD}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{s}$\ocweol +\ocwindent{3.00em} +$\mid{}~\ocwupperid{EOI}~\rightarrow{}~$\ocwstring{""}~\ocweol +\ocwindent{3.00em} +$]$\ocweol +\ocwindent{2.00em} +;\ocweol +\ocwindent{1.00em} +\ocwkw{end}\ocweol +\ocwindent{1.00em} +;\medskip + +\label{skt_lexer.ml:2388}% +\ocwindent{1.00em} +\ocwkw{open}~$\ocwupperid{Token}$\ocweol +\ocwindent{1.00em} +;\medskip + +\ocwendcode{}\ocwindent{0.00em} +The string buffering machinery - ddr + np +\ocweol +\label{skt_lexer.ml:2454}% +\medskip +\ocwbegincode{}\ocwindent{0.00em} +$\ocwlowerid{value}~\ocwlowerid{store}~\ocwlowerid{buf}~\ocwlowerid{c}~=~$\ocwkw{do}~\{~$\ocwupperid{Buffer.}\ocwlowerid{add\_char}~\ocwlowerid{buf}~\ocwlowerid{c};~\ocwlowerid{buf}~\}$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{number}~\ocwlowerid{buf}~=$\ocweol +\ocwindent{1.00em} +\ocwkw{parser}\ocweol +\ocwindent{1.00em} +$[~[:~`(\verb!'0'!..\verb!'9'!~$\ocwkw{as}~$\ocwlowerid{c});~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{number}~(\ocwlowerid{store}~\ocwlowerid{buf}~\ocwlowerid{c})~\ocwlowerid{s}$\ocweol +\ocwindent{1.00em} +$\mid{}~[:~:]~\rightarrow{}~\ocwupperid{Buffer.}\ocwlowerid{contents}~\ocwlowerid{buf}$\ocweol +\ocwindent{1.00em} +$]$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{skip\_to\_eol}~=$\ocweol +\ocwindent{1.00em} +\ocwkw{parser}\ocweol +\ocwindent{1.00em} +$[~[:~`\verb!'\n'!~\mid{}~\verb!'\026'!~\mid{}~\verb!'\012'!;~\ocwlowerid{s}~:]~\rightarrow{}~()$\ocweol +\ocwindent{1.00em} +$\mid{}~[:~`\ocwlowerid{c}~;~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{skip\_to\_eol}~\ocwlowerid{s}~$\ocweol +\ocwindent{1.00em} +$]$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~\ocwlowerid{ident\_char}~=$\ocweol +\ocwindent{1.00em} +\ocwkw{parser}~\ocweol +\ocwindent{1.00em} +$[~[:~`(\verb!'a'!..\verb!'z'!~\mid{}~\verb!'A'!..\verb!'Z'!~\mid{}~\verb!'.'!~\mid{}~\verb!':'!~\mid{}~\verb!'"'!~\mid{}~\verb!'~'!~\mid{}~\verb!'\''!~\mid{}~\verb!'+'!~\mid{}~\verb!'-'!~\mid{}~\verb!'$'!~$\ocwkw{as}~$\ocwlowerid{c})~:]~$\ocweol +\ocwindent{2.00em} +$\rightarrow{}~\ocwlowerid{c}~]$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{ident}~\ocwlowerid{buff}~=$\ocweol +\ocwindent{1.00em} +\ocwkw{parser}\ocweol +\ocwindent{1.00em} +$[~[:~\ocwlowerid{c}~=~\ocwlowerid{ident\_char};~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{ident}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~\ocwlowerid{s}$\ocweol +\ocwindent{1.00em} +$\mid{}~[:~:]~\rightarrow{}~\ocwupperid{Buffer.}\ocwlowerid{contents}~\ocwlowerid{buff}$\ocweol +\ocwindent{1.00em} +$]$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~\ocwlowerid{next\_token\_fun}~=$\ocweol +\ocwindent{1.00em} +\ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{next\_token}~\ocwlowerid{buff}~=$\ocweol +\ocwindent{3.00em} +\ocwkw{parser}~$\ocwlowerid{\_bp}$\ocweol +\ocwindent{3.00em} +$[~[:~\ocwlowerid{c}~=~\ocwlowerid{ident\_char};~\ocwlowerid{s}~=~\ocwlowerid{ident}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~:]~\rightarrow{}~\ocwupperid{IDENT}~\ocwlowerid{s}$\ocweol +\ocwindent{3.00em} +$\mid{}~[:~`(\verb!'0'!..\verb!'9'!~$\ocwkw{as}~$\ocwlowerid{c});~\ocwlowerid{s}~=~\ocwlowerid{number}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~:]~\rightarrow{}~\ocwupperid{INT}~(\ocwlowerid{int\_of\_string}~\ocwlowerid{s})$\ocweol +\ocwindent{3.00em} +$\mid{}~[:~`\ocwlowerid{c}~:]~\ocwlowerid{\_ep}~\rightarrow{}~\ocwupperid{KEYWORD}~(\ocwupperid{String.}\ocwlowerid{make}~1~\ocwlowerid{c})$\ocweol +\ocwindent{3.00em} +$]~$\ocwkw{in}\ocweol +\ocwindent{2.00em} +\ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{next\_token\_loc}~=$\ocweol +\ocwindent{3.00em} +\ocwkw{parser}~$\ocwlowerid{bp}$\ocweol +\ocwindent{3.00em} +$[~[:~`\verb!'%'!;~\ocwlowerid{\_}~=~\ocwlowerid{skip\_to\_eol};~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{next\_token\_loc}~\ocwlowerid{s}~$\ocwbc{} comments skipped \ocwec{}\ocweol +\ocwindent{3.00em} +$\mid{}~[:~`\verb!' '!~\mid{}~\verb!'\n'!~\mid{}~\verb!'\r'!~\mid{}~\verb!'\t'!~\mid{}~\verb!'\026'!~\mid{}~\verb!'\012'!;~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{next\_token\_loc}~\ocwlowerid{s}$\ocweol +\ocwindent{3.00em} +$\mid{}~[:~\ocwlowerid{tok}~=~\ocwlowerid{next\_token}~(\ocwupperid{Buffer.}\ocwlowerid{create}~80)~:]~\ocwlowerid{ep}~\rightarrow{}~(\ocwlowerid{tok},~(\ocwlowerid{bp},~\ocwlowerid{ep}))$\ocweol +\ocwindent{3.00em} +$\mid{}~[:~\ocwlowerid{\_}~=~\ocwupperid{Stream.}\ocwlowerid{empty}~:]~\rightarrow{}~(\ocwupperid{EOI},~(\ocwlowerid{bp},~\ocwlowerid{succ}~\ocwlowerid{bp}))$\ocweol +\ocwindent{3.00em} +$]~$\ocwkw{in}\ocweol +\ocwindent{0.50em} +$\ocwlowerid{next\_token\_loc}$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~\ocwlowerid{mk}~()~=$\ocweol +\ocwindent{0.50em} +\ocwkw{let}~$\ocwlowerid{err}~\ocwlowerid{loc}~\ocwlowerid{msg}~=~\ocwupperid{Loc.}\ocwlowerid{raise}~\ocwlowerid{loc}~(\ocwupperid{Token.Error.E}~\ocwlowerid{msg})~$\ocwkw{in}\ocweol +\ocwindent{0.50em} +\ocwkw{fun}~$\ocwlowerid{init\_loc}~\ocwlowerid{cstrm}~\rightarrow{}~\ocwupperid{Stream.}\ocwlowerid{from}~$\ocweol +\ocwindent{2.50em} +$($\ocwkw{fun}~$\ocwlowerid{\_}~\rightarrow{}~$\ocwkw{try}~\ocwkw{let}~$(\ocwlowerid{tok},~(\ocwlowerid{bp},~\ocwlowerid{ep}))~=~\ocwlowerid{next\_token\_fun}~\ocwlowerid{cstrm}~$\ocwkw{in}\ocweol +\ocwindent{9.50em} +\ocwkw{let}~$\ocwlowerid{loc}~=~\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{start}~\ocwlowerid{bp}~(\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{stop}~\ocwlowerid{ep}~\ocwlowerid{init\_loc})~$\ocwkw{in}\ocweol +\ocwindent{9.50em} +$\ocwupperid{Some}~(\ocwlowerid{tok},~\ocwlowerid{loc})$\ocweol +\ocwindent{7.50em} +\ocwkw{with}\ocweol +\ocwindent{7.50em} +$[~\ocwupperid{Stream.Error}~\ocwlowerid{str}~\rightarrow{}$\ocweol +\ocwindent{8.50em} +\ocwkw{let}~$\ocwlowerid{bp}~=~\ocwupperid{Stream.}\ocwlowerid{count}~\ocwlowerid{cstrm}~$\ocwkw{in}\ocweol +\ocwindent{8.50em} +\ocwkw{let}~$\ocwlowerid{loc}~=~\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{start}~\ocwlowerid{bp}~(\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{stop}~(\ocwlowerid{bp}+1)~\ocwlowerid{init\_loc})~$\ocwkw{in}\ocweol +\ocwindent{8.50em} +$\ocwlowerid{err}~\ocwlowerid{loc}~\ocwlowerid{str}~])$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +\ocwkw{end};~\ocweol +\ocweol \ocwendcode{}\typeout{OcamlWeb file Sanskrit.mli} \ocwinterface{Sanskrit} \label{sanskrit.mli:0}% @@ -4532,270 +4796,6 @@ $\ocwlowerid{read\_raw\_skt\_stream}~\ocwlowerid{encode}~(\ocwupperid{Stream.}\o \ocwindent{0.00em} \ocweol \ocweol -\ocwendcode{}\typeout{OcamlWeb file Skt_lexer.ml} -\ocwmodule{Skt\_lexer} -\label{skt_lexer.ml:0}% -A simple lexer recognizing idents, integers, punctuation symbols, - and skipping spaces and comments between % and eol. - The transliteration scheme is Velthuis with aa for long a etc. -\ocweol -\label{skt_lexer.ml:813}% -\medskip -\ocwbegincode{}\ocwindent{0.00em} -\ocwkw{module}~$\ocwupperid{Skt\_lexer}~=~$\ocwkw{struct}\medskip - -\label{skt_lexer.ml:840}% -\ocwindent{0.00em} -\ocwkw{open}~$\ocwupperid{Camlp4.PreCast};$\ocweol -\ocwindent{0.00em} -\ocwkw{open}~$\ocwupperid{Format};$\medskip - -\label{skt_lexer.ml:875}% -\ocwindent{1.00em} -\ocwkw{module}~$\ocwupperid{Loc}~=~\ocwupperid{Loc};~$\ocwbc{} Using the PreCast Loc \ocwec{}\ocweol -\ocwindent{1.00em} -\ocwkw{module}~$\ocwupperid{Error}~=~$\ocwkw{struct}\ocweol -\ocwindent{2.00em} -\ocwkw{type}~$\ocwlowerid{t}~=~$\ocwbt{string};\ocweol -\ocwindent{2.00em} -\ocwkw{exception}~$\ocwupperid{E}~$\ocwkw{of}~$\ocwlowerid{t};$\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{to\_string}~\ocwlowerid{x}~=~\ocwlowerid{x};$\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{print}~=~\ocwupperid{Format.}\ocwlowerid{pp\_print\_string};$\ocweol -\ocwindent{1.00em} -\ocwkw{end};\ocweol -\ocwindent{1.00em} -\ocwkw{module}~$\ocwupperid{Token}~=~$\ocwkw{struct}\ocweol -\ocwindent{2.00em} -\ocwkw{module}~$\ocwupperid{Loc}~=~\ocwupperid{Loc};~$\ocweol -\ocwindent{2.00em} -\ocwkw{type}~$\ocwlowerid{t}~=$\ocweol -\ocwindent{3.00em} -$[~\ocwupperid{KEYWORD}~$\ocwkw{of}~\ocwbt{string}\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{IDENT}~$\ocwkw{of}~\ocwbt{string}~\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{INT}~$\ocwkw{of}~\ocwbt{int}\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{EOI}$\ocweol -\ocwindent{3.00em} -$]$\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{2.00em} -\ocwkw{module}~$\ocwupperid{Error}~=~\ocwupperid{Error};$\ocweol -\ocwindent{2.00em} -\ocwkw{module}~$\ocwupperid{Filter}~=~$\ocwkw{struct}\ocweol -\ocwindent{3.00em} -\ocwkw{type}~$\ocwlowerid{token\_filter}~=~\ocwupperid{Camlp4.Sig.}\ocwlowerid{stream\_filter}~\ocwlowerid{t}~\ocwupperid{Loc.}\ocwlowerid{t}$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -\ocwkw{type}~$\ocwlowerid{t}~=~$\ocwbt{string}~$\rightarrow{}~$\ocwbt{bool}\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -$\ocwlowerid{value}~\ocwlowerid{mk}~\ocwlowerid{is\_kwd}~=~\ocwlowerid{is\_kwd}$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~=~$\ocwkw{parser}\ocweol -\ocwindent{4.00em} -$[~[:~`((\ocwupperid{KEYWORD}~\ocwlowerid{s},~\ocwlowerid{loc})~$\ocwkw{as}~$\ocwlowerid{p});~\ocwlowerid{strm}~:]~\rightarrow{}$\ocweol -\ocwindent{6.50em} -\ocwkw{if}~$\ocwlowerid{is\_kwd}~\ocwlowerid{s}~\lor{}~\ocwlowerid{s}~=~$\ocwstring{"!"}~\ocwkw{then}~$[:~`\ocwlowerid{p};~\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~\ocwlowerid{strm}~:]$\ocweol -\ocwindent{6.50em} -\ocwkw{else}~$\ocwlowerid{raise}~(\ocwupperid{Encode.In\_error}~($\ocwstring{"Undefined\ocwvspace{}token\ocwvspace{}:\ocwvspace{}"}~\^{}~$\ocwlowerid{s}))$\ocweol -\ocwindent{4.00em} -$\mid{}~[:~`\ocwlowerid{x};~\ocwlowerid{s}~:]~\rightarrow{}~[:~`\ocwlowerid{x};~\ocwlowerid{filter}~\ocwlowerid{is\_kwd}~\ocwlowerid{s}~:]$\ocweol -\ocwindent{4.00em} -$\mid{}~[:~:]~\rightarrow{}~[:~:]~$\ocweol -\ocwindent{4.00em} -$]~$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -$\ocwlowerid{value}~\ocwlowerid{define\_filter}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -$\ocwlowerid{value}~\ocwlowerid{keyword\_added}~\ocwlowerid{\_}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{3.00em} -$\ocwlowerid{value}~\ocwlowerid{keyword\_removed}~\ocwlowerid{\_}~\ocwlowerid{\_}~=~()$\ocweol -\ocwindent{3.00em} -;\ocweol -\ocwindent{2.00em} -\ocwkw{end}\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{to\_string}~=~$\ocwkw{fun}\ocweol -\ocwindent{3.00em} -$[~\ocwupperid{KEYWORD}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"KEYWORD\ocwvspace{}\%S"}~$\ocwlowerid{s}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{IDENT}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"IDENT\ocwvspace{}\%S"}~$\ocwlowerid{s}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{INT}~\ocwlowerid{i}~\rightarrow{}~\ocwlowerid{sprintf}~$\ocwstring{"INT\ocwvspace{}\%d"}~$\ocwlowerid{i}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{EOI}~\rightarrow{}~$\ocwstring{"EOI"}\ocweol -\ocwindent{3.00em} -$]$\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{print}~\ocwlowerid{ppf}~\ocwlowerid{x}~=~\ocwlowerid{pp\_print\_string}~\ocwlowerid{ppf}~(\ocwlowerid{to\_string}~\ocwlowerid{x})$\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{match\_keyword}~\ocwlowerid{kwd}~=~$\ocwkw{fun}\ocweol -\ocwindent{3.00em} -$[~\ocwupperid{KEYWORD}~\ocwlowerid{kwd'}~$\ocwkw{when}~$\ocwlowerid{kwd'}~=~\ocwlowerid{kwd}~\rightarrow{}~\ocwupperid{True}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwlowerid{\_}~\rightarrow{}~\ocwupperid{False}$\ocweol -\ocwindent{3.00em} -$]$\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{2.00em} -$\ocwlowerid{value}~\ocwlowerid{extract\_string}~=~$\ocwkw{fun}\ocweol -\ocwindent{3.00em} -$[~\ocwupperid{INT}~\ocwlowerid{i}~\rightarrow{}~\ocwlowerid{string\_of\_int}~\ocwlowerid{i}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{IDENT}~\ocwlowerid{s}~\mid{}~\ocwupperid{KEYWORD}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{s}$\ocweol -\ocwindent{3.00em} -$\mid{}~\ocwupperid{EOI}~\rightarrow{}~$\ocwstring{""}~\ocweol -\ocwindent{3.00em} -$]$\ocweol -\ocwindent{2.00em} -;\ocweol -\ocwindent{1.00em} -\ocwkw{end}\ocweol -\ocwindent{1.00em} -;\medskip - -\label{skt_lexer.ml:2388}% -\ocwindent{1.00em} -\ocwkw{open}~$\ocwupperid{Token}$\ocweol -\ocwindent{1.00em} -;\medskip - -\ocwendcode{}\ocwindent{0.00em} -The string buffering machinery - ddr + np -\ocweol -\label{skt_lexer.ml:2454}% -\medskip -\ocwbegincode{}\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{store}~\ocwlowerid{buf}~\ocwlowerid{c}~=~$\ocwkw{do}~\{~$\ocwupperid{Buffer.}\ocwlowerid{add\_char}~\ocwlowerid{buf}~\ocwlowerid{c};~\ocwlowerid{buf}~\}$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{number}~\ocwlowerid{buf}~=$\ocweol -\ocwindent{1.00em} -\ocwkw{parser}\ocweol -\ocwindent{1.00em} -$[~[:~`(\verb!'0'!..\verb!'9'!~$\ocwkw{as}~$\ocwlowerid{c});~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{number}~(\ocwlowerid{store}~\ocwlowerid{buf}~\ocwlowerid{c})~\ocwlowerid{s}$\ocweol -\ocwindent{1.00em} -$\mid{}~[:~:]~\rightarrow{}~\ocwupperid{Buffer.}\ocwlowerid{contents}~\ocwlowerid{buf}$\ocweol -\ocwindent{1.00em} -$]$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{skip\_to\_eol}~=$\ocweol -\ocwindent{1.00em} -\ocwkw{parser}\ocweol -\ocwindent{1.00em} -$[~[:~`\verb!'\n'!~\mid{}~\verb!'\026'!~\mid{}~\verb!'\012'!;~\ocwlowerid{s}~:]~\rightarrow{}~()$\ocweol -\ocwindent{1.00em} -$\mid{}~[:~`\ocwlowerid{c}~;~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{skip\_to\_eol}~\ocwlowerid{s}~$\ocweol -\ocwindent{1.00em} -$]$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{ident\_char}~=$\ocweol -\ocwindent{1.00em} -\ocwkw{parser}~\ocweol -\ocwindent{1.00em} -$[~[:~`(\verb!'a'!..\verb!'z'!~\mid{}~\verb!'A'!..\verb!'Z'!~\mid{}~\verb!'.'!~\mid{}~\verb!':'!~\mid{}~\verb!'"'!~\mid{}~\verb!'~'!~\mid{}~\verb!'\''!~\mid{}~\verb!'+'!~\mid{}~\verb!'-'!~\mid{}~\verb!'$'!~$\ocwkw{as}~$\ocwlowerid{c})~:]~$\ocweol -\ocwindent{2.00em} -$\rightarrow{}~\ocwlowerid{c}~]$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~$\ocwkw{rec}~$\ocwlowerid{ident}~\ocwlowerid{buff}~=$\ocweol -\ocwindent{1.00em} -\ocwkw{parser}\ocweol -\ocwindent{1.00em} -$[~[:~\ocwlowerid{c}~=~\ocwlowerid{ident\_char};~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{ident}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~\ocwlowerid{s}$\ocweol -\ocwindent{1.00em} -$\mid{}~[:~:]~\rightarrow{}~\ocwupperid{Buffer.}\ocwlowerid{contents}~\ocwlowerid{buff}$\ocweol -\ocwindent{1.00em} -$]$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{next\_token\_fun}~=$\ocweol -\ocwindent{1.00em} -\ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{next\_token}~\ocwlowerid{buff}~=$\ocweol -\ocwindent{3.00em} -\ocwkw{parser}~$\ocwlowerid{\_bp}$\ocweol -\ocwindent{3.00em} -$[~[:~\ocwlowerid{c}~=~\ocwlowerid{ident\_char};~\ocwlowerid{s}~=~\ocwlowerid{ident}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~:]~\rightarrow{}~\ocwupperid{IDENT}~\ocwlowerid{s}$\ocweol -\ocwindent{3.00em} -$\mid{}~[:~`(\verb!'0'!..\verb!'9'!~$\ocwkw{as}~$\ocwlowerid{c});~\ocwlowerid{s}~=~\ocwlowerid{number}~(\ocwlowerid{store}~\ocwlowerid{buff}~\ocwlowerid{c})~:]~\rightarrow{}~\ocwupperid{INT}~(\ocwlowerid{int\_of\_string}~\ocwlowerid{s})$\ocweol -\ocwindent{3.00em} -$\mid{}~[:~`\ocwlowerid{c}~:]~\ocwlowerid{\_ep}~\rightarrow{}~\ocwupperid{KEYWORD}~(\ocwupperid{String.}\ocwlowerid{make}~1~\ocwlowerid{c})$\ocweol -\ocwindent{3.00em} -$]~$\ocwkw{in}\ocweol -\ocwindent{2.00em} -\ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{next\_token\_loc}~=$\ocweol -\ocwindent{3.00em} -\ocwkw{parser}~$\ocwlowerid{bp}$\ocweol -\ocwindent{3.00em} -$[~[:~`\verb!'%'!;~\ocwlowerid{\_}~=~\ocwlowerid{skip\_to\_eol};~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{next\_token\_loc}~\ocwlowerid{s}~$\ocwbc{} comments skipped \ocwec{}\ocweol -\ocwindent{3.00em} -$\mid{}~[:~`\verb!' '!~\mid{}~\verb!'\n'!~\mid{}~\verb!'\r'!~\mid{}~\verb!'\t'!~\mid{}~\verb!'\026'!~\mid{}~\verb!'\012'!;~\ocwlowerid{s}~:]~\rightarrow{}~\ocwlowerid{next\_token\_loc}~\ocwlowerid{s}$\ocweol -\ocwindent{3.00em} -$\mid{}~[:~\ocwlowerid{tok}~=~\ocwlowerid{next\_token}~(\ocwupperid{Buffer.}\ocwlowerid{create}~80)~:]~\ocwlowerid{ep}~\rightarrow{}~(\ocwlowerid{tok},~(\ocwlowerid{bp},~\ocwlowerid{ep}))$\ocweol -\ocwindent{3.00em} -$\mid{}~[:~\ocwlowerid{\_}~=~\ocwupperid{Stream.}\ocwlowerid{empty}~:]~\rightarrow{}~(\ocwupperid{EOI},~(\ocwlowerid{bp},~\ocwlowerid{succ}~\ocwlowerid{bp}))$\ocweol -\ocwindent{3.00em} -$]~$\ocwkw{in}\ocweol -\ocwindent{0.50em} -$\ocwlowerid{next\_token\_loc}$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{mk}~()~=$\ocweol -\ocwindent{0.50em} -\ocwkw{let}~$\ocwlowerid{err}~\ocwlowerid{loc}~\ocwlowerid{msg}~=~\ocwupperid{Loc.}\ocwlowerid{raise}~\ocwlowerid{loc}~(\ocwupperid{Token.Error.E}~\ocwlowerid{msg})~$\ocwkw{in}\ocweol -\ocwindent{0.50em} -\ocwkw{fun}~$\ocwlowerid{init\_loc}~\ocwlowerid{cstrm}~\rightarrow{}~\ocwupperid{Stream.}\ocwlowerid{from}~$\ocweol -\ocwindent{2.50em} -$($\ocwkw{fun}~$\ocwlowerid{\_}~\rightarrow{}~$\ocwkw{try}~\ocwkw{let}~$(\ocwlowerid{tok},~(\ocwlowerid{bp},~\ocwlowerid{ep}))~=~\ocwlowerid{next\_token\_fun}~\ocwlowerid{cstrm}~$\ocwkw{in}\ocweol -\ocwindent{9.50em} -\ocwkw{let}~$\ocwlowerid{loc}~=~\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{start}~\ocwlowerid{bp}~(\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{stop}~\ocwlowerid{ep}~\ocwlowerid{init\_loc})~$\ocwkw{in}\ocweol -\ocwindent{9.50em} -$\ocwupperid{Some}~(\ocwlowerid{tok},~\ocwlowerid{loc})$\ocweol -\ocwindent{7.50em} -\ocwkw{with}\ocweol -\ocwindent{7.50em} -$[~\ocwupperid{Stream.Error}~\ocwlowerid{str}~\rightarrow{}$\ocweol -\ocwindent{8.50em} -\ocwkw{let}~$\ocwlowerid{bp}~=~\ocwupperid{Stream.}\ocwlowerid{count}~\ocwlowerid{cstrm}~$\ocwkw{in}\ocweol -\ocwindent{8.50em} -\ocwkw{let}~$\ocwlowerid{loc}~=~\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{start}~\ocwlowerid{bp}~(\ocwupperid{Loc.}\ocwlowerid{move}~`\ocwlowerid{stop}~(\ocwlowerid{bp}+1)~\ocwlowerid{init\_loc})~$\ocwkw{in}\ocweol -\ocwindent{8.50em} -$\ocwlowerid{err}~\ocwlowerid{loc}~\ocwlowerid{str}~])$\ocweol -\ocwindent{0.00em} -;\ocweol -\ocwindent{0.00em} -\ocwkw{end};~\ocweol -\ocweol \ocwendcode{}\typeout{OcamlWeb file Test_stamp.ml} \ocwmodule{Test\_stamp} \label{test_stamp.ml:0}% @@ -30370,7 +30370,8 @@ $\ocwlowerid{value}~\ocwlowerid{build\_infinitive}~\ocwlowerid{c}~\ocwlowerid{in ;~$\ocwlowerid{enter1}~\ocwlowerid{root}~(\ocwupperid{Inftu}~\ocwlowerid{c}~(\ocwlowerid{fix}~\ocwlowerid{inf\_stem}~$\ocwstring{"tu"}$))~$\ocwbc{} Xtu-kaama compounds \ocwec{}\ocweol \ocwindent{0.00em} \ocwbc{} NB. bahuv cpds in -kaama and -manas constructed with infinitives in -tu - See Renou HLS p72 from Patanjali; also Assimil p194 eg tyaktukaama + See Renou HLS p72 from Patanjali; Renou grammaire §107 dagdhukaama + also Assimil p194 eg tyaktukaama anu.s.thaatukaama \ocwstring{"desirious\ocwvspace{}to\ocwvspace{}proceed"} vaktukaama \ocwstring{"who\ocwvspace{}wants\ocwvspace{}to\ocwvspace{}speak"} dra.s.tumanas \ocwstring{"inclined\ocwvspace{}to\ocwvspace{}see"} \ocwec{}\ocweol \ocwindent{1.00em} @@ -30437,7 +30438,7 @@ $\ocwlowerid{iter}~($\ocwkw{fun}~$\ocwlowerid{st}~\rightarrow{}~\ocwlowerid{peri \ocwendcode{}\ocwindent{0.00em} Passive future participle in -ya and -aniiya in all conjugations \ocweol -\label{verbs.ml:164732}% +\label{verbs.ml:164769}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{palatal\_exception}~\ocwlowerid{root}~=~\ocwupperid{List.}\ocwlowerid{mem}~\ocwlowerid{root}$\ocweol @@ -30700,7 +30701,7 @@ $\ocwlowerid{value}~\ocwlowerid{record\_pfp\_10}~\ocwlowerid{entry}~\ocwlowerid{ \ocwendcode{}\ocwindent{0.00em} Absolutive and Past Participle \ocweol -\label{verbs.ml:170463}% +\label{verbs.ml:170500}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{record\_part\_ppp}~\ocwlowerid{ppstem}~\ocwlowerid{entry}~=~$\ocwkw{do}~\ocweol @@ -31167,7 +31168,7 @@ $\ocwlowerid{record\_absolutive}~\ocwupperid{Desiderative}~\ocwlowerid{abs\_stem \ocwendcode{}\ocwindent{0.00em} Intensive or frequentative \ocweol -\label{verbs.ml:180598}% +\label{verbs.ml:180635}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_intensive\_presenta}~\ocwlowerid{strong}~\ocwlowerid{weak}~\ocwlowerid{iiflag}~\ocwlowerid{entry}~=$\ocweol @@ -31350,7 +31351,7 @@ rather than a table. \ocwec{}\medskip \ocwendcode{}\ocwindent{0.00em} Similar to \ocwbegindcode{}$\ocwlowerid{compute\_active\_present3}$\ocwenddcode{} with Intensive, plus optional ii forms \ocweol -\label{verbs.ml:183798}% +\label{verbs.ml:183835}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_intensivea}~\ocwlowerid{wstem}~\ocwlowerid{sstem}~\ocwlowerid{entry}~\ocwlowerid{third}~=~$\ocweol @@ -31389,7 +31390,7 @@ $\ocwlowerid{compute\_athematic\_present3m}~\ocwupperid{Intensive}~\ocwlowerid{i \ocwendcode{}\ocwindent{0.00em} Present system \ocweol -\label{verbs.ml:184675}% +\label{verbs.ml:184712}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_present\_system}~\ocwlowerid{entry}~\ocwlowerid{rstem}~\ocwlowerid{gana}~\ocwlowerid{pada}~\ocwlowerid{third}~=~$\ocweol @@ -31982,7 +31983,7 @@ Passive system NB. For gana 4 verbs passive differs from middle mostly by accent but distinction necessary since different regime \ocweol -\label{verbs.ml:199482}% +\label{verbs.ml:199519}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_passive\_primary}~\ocwlowerid{entry}~\ocwlowerid{ps\_stem}~=~$\ocweol @@ -32158,7 +32159,7 @@ BEWARE. the entry forms given in the next two functions must be in normalized form - no non-genuine anusvaara This should be replaced by the recording of the 3rd sg form, like others. \ocweol -\label{verbs.ml:204333}% +\label{verbs.ml:204370}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{den\_stem\_a}~\ocwlowerid{entry}~=~$\ocwbc{} in general transitive Whitney§1059c \ocwec{}\ocweol @@ -32906,7 +32907,7 @@ Various Vedic subjunctives needed for citations Whitney§562 \ocwindent{0.00em} No attempt for full paradigms, only specific attested forms \ocweol -\label{verbs.ml:222475}% +\label{verbs.ml:222512}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_subjunctives}~()~=$\ocweol @@ -32975,37 +32976,7 @@ $\ocwlowerid{enter\_subjunctivea}~\ocwupperid{Intensive}~\ocwlowerid{root}~\ocwl \ocwindent{0.00em} ;\medskip -\ocwendcode{}\ocwindent{0.00em} -Extra participial forms - intensive, desiderative, no present, etc -\ocweol -\label{verbs.ml:224047}% -\medskip -\ocwbegincode{}\ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{compute\_extra\_participles}~()~=~$\ocwkw{do}\ocweol -\ocwindent{1.00em} -\{~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"gupta"}$)~$\ocwstring{"gup"}~\ocwbc{} gup gana 10 \ocwec{}\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"zaata"}$)~$\ocwstring{"zaa"}~\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"kaanta"}$)~$\ocwstring{"kam"}~\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"k.sita"}$)~$\ocwstring{"k.sii"}~\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"spa.s.ta"}$)~$\ocwstring{"spaz\#1"}\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part}~(\ocwupperid{Ppra\_}~1~\ocwupperid{Intensive}~(\ocwlowerid{revstem}~$\ocwstring{"jaajam"}$)~(\ocwlowerid{revstem}~$\ocwstring{"jaajamat"}$)~$\ocwstring{"jam"}$)$\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_pfp}~$\ocwstring{"d.r\#1"}~$(\ocwlowerid{revcode}~$\ocwstring{"d.r"}$)$\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_pfp}~$\ocwstring{"vadh"}~$(\ocwlowerid{revcode}~$\ocwstring{"vadh"}$)$\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part}~(\ocwupperid{Pprm\_}~1~\ocwupperid{Primary}~(\ocwlowerid{revcode}~$\ocwstring{"gacchamaana"}$)~$\ocwstring{"gam"}$)$\ocweol -\ocwindent{1.00em} -;~$\ocwlowerid{record\_part}~(\ocwupperid{Pprm\_}~4~\ocwupperid{Primary}~(\ocwlowerid{revcode}~$\ocwstring{"kaayamaana"}$)~$\ocwstring{"kan"}$)$\ocweol -\ocwindent{1.00em} -\}\ocweol -\ocwindent{0.00em} -;\ocweol +\label{verbs.ml:224011}% \ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{compute\_auxi\_kridantas}~()~=~$\ocweol \ocwindent{1.00em} @@ -33209,6 +33180,36 @@ $\ocwlowerid{compute\_passive}~\ocwlowerid{conj}~\ocwlowerid{root}~\ocwlowerid{p \ocwindent{0.00em} ;\ocweol \ocwindent{0.00em} +\ocwbc{} Extra participial forms - intensive, desiderative, no present, etc \ocwec{}\ocweol +\ocwindent{0.00em} +$\ocwlowerid{value}~\ocwlowerid{record\_extra\_participles}~()~=~$\ocwkw{do}\ocweol +\ocwindent{1.00em} +\{~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"gupta"}$)~$\ocwstring{"gup"}~\ocwbc{} gup gana 10 \ocwec{}\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"zaata"}$)~$\ocwstring{"zaa"}~\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"kaanta"}$)~$\ocwstring{"kam"}~\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"k.sita"}$)~$\ocwstring{"k.sii"}~\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part\_ppp}~(\ocwlowerid{revstem}~$\ocwstring{"spa.s.ta"}$)~$\ocwstring{"spaz\#1"}\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part}~(\ocwupperid{Ppra\_}~1~\ocwupperid{Intensive}~(\ocwlowerid{revstem}~$\ocwstring{"jaajam"}$)~(\ocwlowerid{revstem}~$\ocwstring{"jaajamat"}$)~$\ocwstring{"jam"}$)$\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_pfp}~$\ocwstring{"d.r\#1"}~$(\ocwlowerid{revcode}~$\ocwstring{"d.r"}$)$\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_pfp}~$\ocwstring{"vadh"}~$(\ocwlowerid{revcode}~$\ocwstring{"vadh"}$)$\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part}~(\ocwupperid{Pprm\_}~1~\ocwupperid{Primary}~(\ocwlowerid{revcode}~$\ocwstring{"gacchamaana"}$)~$\ocwstring{"gam"}$)$\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part}~(\ocwupperid{Pprm\_}~4~\ocwupperid{Primary}~(\ocwlowerid{revcode}~$\ocwstring{"kaayamaana"}$)~$\ocwstring{"kan"}$)$\ocweol +\ocwindent{1.00em} +;~$\ocwlowerid{record\_part}~(\ocwupperid{Ppra\_}~1~\ocwupperid{Primary}~(\ocwlowerid{revstem}~$\ocwstring{".dam"}$)~(\ocwlowerid{revstem}~$\ocwstring{".damat"}$)~$\ocwstring{".dam"}$)$\ocweol +\ocwindent{1.00em} +\}\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} \ocwbc{} For verbs without present forms and variants, \ocwec{}\ocweol \ocwindent{0.00em} \ocwbc{} called by \ocwbegindcode{}$\ocwupperid{Make\_roots}.\ocwlowerid{roots\_to\_conjugs}$\ocwenddcode{} at generation time \ocwec{}\ocweol @@ -33301,9 +33302,9 @@ $\ocwlowerid{value}~\ocwlowerid{compute\_extra}~()~=~$\ocwkw{do}\ocweol \ocwindent{2.00em} $\ocwlowerid{compute\_desiderativea}~\ocwlowerid{st}~$\ocwstring{"saadh"}~$[\,]$\ocweol \ocwindent{1.00em} -;~$\ocwlowerid{compute\_participles}~()$\ocweol +;~$\ocwlowerid{record\_extra\_participles}~()~$\ocweol \ocwindent{1.00em} -;~$\ocwlowerid{compute\_extra\_participles}~()~$\ocweol +;~$\ocwlowerid{compute\_participles}~()$\ocweol \ocwindent{1.00em} ;~$\ocwlowerid{compute\_auxi\_kridantas}~()~$\ocweol \ocwindent{1.00em} @@ -42896,9 +42897,9 @@ $\ocwlowerid{value}~\ocwlowerid{insert}~((\ocwlowerid{pen},\ocwlowerid{min}),\oc \ocwindent{0.00em} ;\ocweol \ocwindent{0.00em} -\ocwbc{} Forget absolute penalties of solutions with minimal length penalty \ocwec{}\ocweol +\ocwbc{} Forget absolute penalties of solutions with minimal length penalty. \ocwec{}\ocweol \ocwindent{0.00em} -\ocwbc{} also used to erase constraints - thus do not eta-reduce !!! \ocwec{}\ocweol +\ocwbc{} Also used to erase constraints - thus do not eta-reduce !!! \ocwec{}\ocweol \ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{trim}~\ocwlowerid{x}~=~\ocwupperid{List.}\ocwlowerid{map}~\ocwlowerid{snd}~\ocwlowerid{x}~$\ocweol \ocwindent{0.00em} @@ -43018,7 +43019,7 @@ $\ocwlowerid{dove\_tail}~\ocwlowerid{filter\_mode}~\ocwlowerid{constrained\_segs \ocwindent{0.00em} ;\medskip -\label{rank.ml:7573}% +\label{rank.ml:7574}% \ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{segment\_all}~\ocwlowerid{filter\_mode}~\ocwlowerid{chunks}~\ocwlowerid{cpts}~=~$\ocweol \ocwindent{1.00em} @@ -48930,7 +48931,7 @@ $\ocwlowerid{value}~\ocwlowerid{segment\_chunk}~(\ocwlowerid{full},\ocwlowerid{c \ocwindent{5.50em} \{~$\ocwlowerid{reset\_counter}~()$\ocweol \ocwindent{5.50em} -;~$(\ocwlowerid{full},\ocwupperid{Num.}\ocwlowerid{mult\_num}~\ocwlowerid{count}~(\ocwupperid{Num.Int}~\ocwlowerid{local\_count}))$\ocweol +;~$(\ocwlowerid{full},\ocwlowerid{count}\times{}\ocwlowerid{local\_count})~$\ocwbc{} overflow may compute modulo \ocwec{}\ocweol \ocwindent{6.50em} \ocwbc{} we have \ocwbegindcode{}$\ocwlowerid{local\_count}$\ocwenddcode{} segmentations of the local \ocwbegindcode{}$\ocwlowerid{chunk}$\ocwenddcode{}, and, chunks being independent, the total number of solutions multiply \ocwec{}\ocweol @@ -48945,9 +48946,9 @@ $\ocwlowerid{value}~\ocwlowerid{segment\_chunk}~(\ocwlowerid{full},\ocwlowerid{c \ocwindent{0.00em} ;\ocweol \ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{segment\_iter}~\ocwlowerid{chunks}~=~\ocwlowerid{segment\_chunks}~(\ocwupperid{True},\ocwupperid{Num.Int}~1)~\ocwlowerid{chunks}$\ocweol +$\ocwlowerid{value}~\ocwlowerid{segment\_iter}~\ocwlowerid{chunks}~=~\ocwlowerid{segment\_chunks}~(\ocwupperid{True},1)~\ocwlowerid{chunks}$\ocweol \ocwindent{1.00em} -$\ocwlowerid{where}~$\ocwkw{rec}~$\ocwlowerid{segment\_chunks}~\ocwlowerid{acc}~=~$\ocwkw{fun}~\ocwbc{} terminal recursion \ocwec{}\ocweol +$\ocwlowerid{where}~$\ocwkw{rec}~$\ocwlowerid{segment\_chunks}~\ocwlowerid{acc}~=~$\ocwkw{fun}~\ocwbc{} terminal recursion \ocwec{}~\ocweol \ocwindent{2.00em} $[~[~$\ocwbc{} last \ocwec{}~$\ocwlowerid{chunk}~]~\rightarrow{}~\ocwlowerid{segment\_chunk}~\ocwlowerid{acc}~\ocwlowerid{chunk}~\ocwupperid{True}$\ocweol \ocwindent{2.00em} @@ -48959,7 +48960,7 @@ $]$\ocweol \ocwindent{0.00em} ;\medskip -\label{graph_segmenter.ml:23397}% +\label{graph_segmenter.ml:23401}% \ocwindent{0.00em} \ocwkw{end};~\ocwbc{} Segment \ocwec{}\ocweol \ocwendcode{}\typeout{OcamlWeb file Automaton.ml} @@ -50045,13 +50046,7 @@ $\ocwlowerid{ps}~(\ocwlowerid{td\_wrap}~(\ocwlowerid{call\_SL}~\ocwlowerid{text} \ocwindent{0.00em} ;\ocweol \ocwindent{0.00em} -$\ocwlowerid{value}~\ocwlowerid{update\_text\_with\_sol}~\ocwlowerid{text}~\ocwlowerid{count}~=~\ocwlowerid{text}~$\^{}~\ocwstring{";allSol="}~\^{}~\ocwkw{match}~$\ocwlowerid{count}~$\ocwkw{with}\ocweol -\ocwindent{1.00em} -$[~\ocwupperid{Num.Int}~\ocwlowerid{n}~\rightarrow{}~\ocwlowerid{string\_of\_int}~\ocwlowerid{n}$\ocweol -\ocwindent{1.00em} -$\mid{}~\ocwlowerid{\_}~\rightarrow{}~$\ocwstring{"2147483648"}~\ocwbc{} \ocwbegindcode{}2\^{}31\ocwenddcode{} \ocwec{}\ocweol -\ocwindent{1.00em} -$]$\ocweol +$\ocwlowerid{value}~\ocwlowerid{update\_text\_with\_sol}~\ocwlowerid{text}~\ocwlowerid{count}~=~\ocwlowerid{text}~$\^{}~\ocwstring{";allSol="}~\^{}~$\ocwlowerid{string\_of\_int}~\ocwlowerid{count}$\ocweol \ocwindent{0.00em} ;\ocweol \ocwindent{0.00em} @@ -50131,37 +50126,31 @@ $\ocwlowerid{td\_wrap}~(\ocwlowerid{call\_reader}~\ocwlowerid{text}~\ocwlowerid{ \ocwindent{4.00em} \ocwkw{else}~$()~$\ocwbc{} \ocwbegindcode{}$\ocwlowerid{scl\_parser}$\ocwenddcode{} is not visible unless toggle is set \ocwec{}~\ocwkw{in}\ocweol \ocwindent{2.00em} -\ocwkw{match}~$\ocwlowerid{count}~$\ocwkw{with}~\ocweol -\ocwindent{2.00em} -$[~\ocwupperid{Num.Int}~\ocwlowerid{n}~\rightarrow{}~$\ocwkw{if}~$\ocwlowerid{n}~>~\ocwlowerid{max\_count}~$\ocwkw{then}~\ocweol -\ocwindent{11.00em} +\ocwkw{if}~$\ocwlowerid{count}~>~\ocwlowerid{max\_count}~$\ocwkw{then}~\ocweol +\ocwindent{3.50em} \ocwbc{} too many solutions would choke the parsers \ocwec{}~\ocweol -\ocwindent{11.00em} -$\ocwlowerid{td\_wrap}~($\ocwstring{"("}~\^{}~$\ocwlowerid{string\_of\_int}~\ocwlowerid{n}~$\^{}~\ocwstring{"\ocwvspace{}Solutions)"}$)~|\ensuremath{>}~\ocwlowerid{ps}$\ocweol -\ocwindent{9.50em} -\ocwkw{else}~\ocwkw{if}~$\ocwlowerid{n}=1~$\ocwbc{} Unique remaining solution \ocwec{}~\ocwkw{then}~\ocwkw{do}\ocweol -\ocwindent{11.00em} +\ocwindent{3.50em} +$\ocwlowerid{td\_wrap}~($\ocwstring{"("}~\^{}~$\ocwlowerid{string\_of\_int}~\ocwlowerid{count}~$\^{}~\ocwstring{"\ocwvspace{}Solutions)"}$)~|\ensuremath{>}~\ocwlowerid{ps}$\ocweol +\ocwindent{2.00em} +\ocwkw{else}~\ocwkw{if}~$\ocwlowerid{count}=1~$\ocwbc{} Unique remaining solution \ocwec{}~\ocwkw{then}~\ocwkw{do}\ocweol +\ocwindent{6.00em} \{~$\ocwlowerid{td\_wrap}~(\ocwlowerid{call\_parser}~\ocwlowerid{text}~\ocwlowerid{cpts}~$\^{}~\ocwstring{"Unique\ocwvspace{}Solution"}$)~|\ensuremath{>}~\ocwlowerid{ps}$\ocweol -\ocwindent{11.00em} +\ocwindent{6.00em} ;~$\ocwlowerid{call\_scl\_parser}~1$\ocweol -\ocwindent{11.00em} +\ocwindent{6.00em} \}\ocweol -\ocwindent{9.50em} +\ocwindent{4.50em} \ocwkw{else}~\ocwkw{do}\ocweol \ocwindent{3.50em} \{~$\ocwlowerid{td\_wrap}~(\ocwlowerid{call\_reader}~\ocwlowerid{text}~\ocwlowerid{cpts}~$\ocwstring{"p"}~\^{}~\ocwstring{"Filtered\ocwvspace{}Solutions"}$)~|\ensuremath{>}~\ocwlowerid{ps}$\ocweol \ocwindent{3.50em} -;~\ocwkw{let}~$\ocwlowerid{info}~=~\ocwlowerid{string\_of\_int}~\ocwlowerid{n}~$\^{}~\ocwkw{if}~$\ocwlowerid{full}~$\ocwkw{then}~\ocwstring{""}~\ocwkw{else}~\ocwstring{"\ocwvspace{}Partial"}~\ocwkw{in}~\ocweol +;~\ocwkw{let}~$\ocwlowerid{info}~=~\ocwlowerid{string\_of\_int}~\ocwlowerid{count}~$\^{}~\ocwkw{if}~$\ocwlowerid{full}~$\ocwkw{then}~\ocwstring{""}~\ocwkw{else}~\ocwstring{"\ocwvspace{}Partial"}~\ocwkw{in}~\ocweol \ocwindent{4.50em} $\ocwlowerid{td\_wrap}~(\ocwlowerid{call\_reader}~\ocwlowerid{text}~\ocwlowerid{cpts}~$\ocwstring{"t"}~\^{}~\ocwstring{"All\ocwvspace{}"}~\^{}~$\ocwlowerid{info}~$\^{}~\ocwstring{"\ocwvspace{}Solutions"}$)~|\ensuremath{>}~\ocwlowerid{ps}$\ocweol \ocwindent{3.50em} -;~$\ocwlowerid{call\_scl\_parser}~\ocwlowerid{n}$\ocweol +;~$\ocwlowerid{call\_scl\_parser}~\ocwlowerid{count}$\ocweol \ocwindent{3.50em} \}~\ocweol -\ocwindent{2.00em} -$\mid{}~\ocwlowerid{\_}~\rightarrow{}~\ocwlowerid{td\_wrap}~$\ocwstring{"(More\ocwvspace{}than\ocwvspace{}2\^{}32\ocwvspace{}Solutions!)"}~|\ensuremath{>}~$\ocwlowerid{ps}$\ocweol -\ocwindent{2.00em} -$]$\ocweol \ocwindent{1.00em} ;~$\ocwlowerid{tr\_end}~|\ensuremath{>}~\ocwlowerid{pl}~$\ocwbc{} tr end \ocwec{}\ocweol \ocwindent{1.00em} @@ -50242,7 +50231,7 @@ $]~$\^{}\ocweol \ocwendcode{}\ocwindent{0.00em} Cache management \ocweol -\label{interface.ml:19210}% +\label{interface.ml:18978}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{make\_cache\_transducer}~(\ocwlowerid{cache}~:~\ocwupperid{Morphology.}\ocwlowerid{inflected\_map})~=~$\ocweol @@ -50283,9 +50272,9 @@ $\ocwlowerid{cgi\_begin}~\ocwlowerid{save\_corpus\_cgi}~$\ocwstring{""}~\^{}\ocw \ocwindent{1.00em} $\ocwlowerid{hidden\_input}~\ocwupperid{Save\_corpus\_params.}\ocwlowerid{state}~(\ocwlowerid{escape}~\ocwlowerid{query})~$\^{}\ocweol \ocwindent{1.00em} -$\ocwlowerid{hidden\_input}~\ocwupperid{Save\_corpus\_params.}\ocwlowerid{nb\_sols}~(\ocwlowerid{nb\_sols}~|\ensuremath{>}~\ocwupperid{Num.}\ocwlowerid{string\_of\_num}~|\ensuremath{>}~\ocwlowerid{escape})~$\^{}\ocweol +$\ocwlowerid{hidden\_input}~\ocwupperid{Save\_corpus\_params.}\ocwlowerid{nb\_sols}~(\ocwlowerid{nb\_sols}~|\ensuremath{>}~\ocwlowerid{string\_of\_int}~|\ensuremath{>}~\ocwlowerid{escape})~$\^{}\ocweol \ocwindent{1.00em} -$\ocwlowerid{submit\_input}~$\ocwstring{"Save"}~\^{}\ocweol +$\ocwlowerid{submit\_input}~$\ocwstring{"Save"}~\^{}~\ocweol \ocwindent{1.00em} $\ocwlowerid{cgi\_end}~$\^{}\ocweol \ocwindent{1.00em} @@ -50531,9 +50520,9 @@ $\ocwlowerid{graph\_cgi}~$\^{}~\ocwstring{"?"}~\^{}~$\ocwlowerid{text}~$\^{}~\oc \ocwbc{} TODO: use \ocwbegindcode{}$\ocwlowerid{segment\_iter}$\ocwenddcode{} to compute the nb of sols instead of passing 0 to \ocwbegindcode{}$\ocwlowerid{nb\_sols}$\ocwenddcode{}. \ocwec{}\ocweol \ocwindent{4.00em} -$\ocwlowerid{save\_button}~\ocwlowerid{query}~(\ocwupperid{Num.}\ocwlowerid{num\_of\_int}~0)~|\ensuremath{>}~\ocwlowerid{pl}$\ocweol +$\ocwlowerid{save\_button}~\ocwlowerid{query}~0~|\ensuremath{>}~\ocwlowerid{pl}$\ocweol \ocwindent{2.50em} -\ocwkw{else}~$()$\ocweol +\ocwkw{else}~$()~$\ocweol \ocwindent{1.50em} ;~$\ocwlowerid{html\_break}~|\ensuremath{>}~\ocwlowerid{pl}$\ocweol \ocwindent{2.50em} @@ -54562,7 +54551,7 @@ $\ocwlowerid{value}~\ocwlowerid{decode\_url}~\ocwlowerid{s}~=$\ocweol \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{need\_decode}~\ocwlowerid{i}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol +\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol \ocwindent{3.00em} \ocwkw{match}~$\ocwlowerid{s}.[\ocwlowerid{i}]~$\ocwkw{with}\ocweol \ocwindent{3.00em} @@ -54576,13 +54565,13 @@ $]$\ocweol \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{compute\_len}~\ocwlowerid{i}~\ocwlowerid{i1}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol +\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol \ocwindent{3.00em} \ocwkw{let}~$\ocwlowerid{i}~=$\ocweol \ocwindent{4.00em} \ocwkw{match}~$\ocwlowerid{s}.[\ocwlowerid{i}]~$\ocwkw{with}\ocweol \ocwindent{4.00em} -$[~\verb!'%'!~$\ocwkw{when}~$\ocwlowerid{i}~+~2~<~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{i}~+~3$\ocweol +$[~\verb!'%'!~$\ocwkw{when}~$\ocwlowerid{i}~+~2~<~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~\rightarrow{}~\ocwlowerid{i}~+~3$\ocweol \ocwindent{4.00em} $\mid{}~\ocwlowerid{\_}~\rightarrow{}~\ocwlowerid{succ}~\ocwlowerid{i}$\ocweol \ocwindent{4.00em} @@ -54596,17 +54585,17 @@ $\ocwlowerid{compute\_len}~\ocwlowerid{i}~(\ocwlowerid{succ}~\ocwlowerid{i1})$\o \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{copy\_decode\_in}~\ocwlowerid{s1}~\ocwlowerid{i}~\ocwlowerid{i1}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol +\ocwkw{if}~$\ocwlowerid{i}~<~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol \ocwindent{3.00em} \ocwkw{let}~$\ocwlowerid{i}~=$\ocweol \ocwindent{4.00em} \ocwkw{match}~$\ocwlowerid{s}.[\ocwlowerid{i}]~$\ocwkw{with}\ocweol \ocwindent{4.00em} -$[~\verb!'%'!~$\ocwkw{when}~$\ocwlowerid{i}~+~2~<~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~\rightarrow{}$\ocweol +$[~\verb!'%'!~$\ocwkw{when}~$\ocwlowerid{i}~+~2~<~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~\rightarrow{}$\ocweol \ocwindent{6.00em} -\ocwkw{let}~$\ocwlowerid{v}~=~\ocwlowerid{hexa\_val}~\ocwlowerid{s}.[\ocwlowerid{i}~+~1]~\times{}~16~+~\ocwlowerid{hexa\_val}~\ocwlowerid{s}.[\ocwlowerid{i}~+~2]~$\ocweol +\ocwkw{let}~$\ocwlowerid{v}~=~\ocwlowerid{hexa\_val}~\ocwlowerid{s}.[\ocwlowerid{i}+1]~\times{}~16~+~\ocwlowerid{hexa\_val}~\ocwlowerid{s}.[\ocwlowerid{i}+2]~$\ocwkw{in}\ocweol \ocwindent{6.00em} -\ocwkw{in}~\ocwkw{do}~\{$\ocwupperid{Bytes.}\ocwlowerid{set}~\ocwlowerid{s1}~\ocwlowerid{i1}~(\ocwupperid{Char.}\ocwlowerid{chr}~\ocwlowerid{v});~\ocwlowerid{i}~+~3\}$\ocweol +\ocwkw{do}~\{$\ocwupperid{Bytes.}\ocwlowerid{set}~\ocwlowerid{s1}~\ocwlowerid{i1}~(\ocwupperid{Char.}\ocwlowerid{chr}~\ocwlowerid{v});~\ocwlowerid{i}~+~3\}$\ocweol \ocwindent{4.00em} $\mid{}~\verb!'+'!~\rightarrow{}~$\ocwkw{do}~\{$\ocwupperid{Bytes.}\ocwlowerid{set}~\ocwlowerid{s1}~\ocwlowerid{i1}~\verb!' '!;~\ocwlowerid{succ}~\ocwlowerid{i}\}$\ocweol \ocwindent{4.00em} @@ -54620,15 +54609,15 @@ $\ocwlowerid{copy\_decode\_in}~\ocwlowerid{s1}~\ocwlowerid{i}~(\ocwlowerid{succ} \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~\ocwlowerid{s}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~>~0~$\ocwkw{then}\ocweol +\ocwkw{if}~$\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~>~0~$\ocwkw{then}\ocweol \ocwindent{3.00em} \ocwkw{if}~$\ocwlowerid{s}.[0]~\equiv~\verb!' '!~$\ocwkw{then}\ocweol \ocwindent{4.00em} -$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~1~(\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~-~1))$\ocweol +$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~1~(\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~-~1))$\ocweol \ocwindent{3.00em} -\ocwkw{else}~\ocwkw{if}~$\ocwlowerid{s}.[\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~-~1]~\equiv~\verb!' '!~$\ocwkw{then}\ocweol +\ocwkw{else}~\ocwkw{if}~$\ocwlowerid{s}.[\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~-~1]~\equiv~\verb!' '!~$\ocwkw{then}\ocweol \ocwindent{4.00em} -$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~0~(\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~-~1))$\ocweol +$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~0~(\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~-~1))$\ocweol \ocwindent{3.00em} \ocwkw{else}~$\ocwlowerid{s}$\ocweol \ocwindent{2.00em} @@ -54640,40 +54629,40 @@ $\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{Bytes.}\ocwlowe \ocwindent{2.00em} \ocwkw{let}~$\ocwlowerid{s1}~=~\ocwupperid{Bytes.}\ocwlowerid{create}~\ocwlowerid{len}~$\ocwkw{in}\ocweol \ocwindent{2.00em} -$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwlowerid{copy\_decode\_in}~\ocwlowerid{s1}~0~0)$\ocweol +$\ocwlowerid{strip\_heading\_and\_trailing\_spaces}~(\ocwupperid{Bytes.}\ocwlowerid{to\_string}~(\ocwlowerid{copy\_decode\_in}~\ocwlowerid{s1}~0~0))$\ocweol \ocwindent{1.00em} -\ocwkw{else}~$\ocwlowerid{s};$\medskip +\ocwkw{else}~$\ocwlowerid{s}$\ocweol +\ocwindent{0.00em} +;\ocweol +\ocwindent{0.00em} +\ocwbc{} converts a string coming from the URL into an a-list; the string is + a sequence of pairs key=value separated by ; or \& \ocwec{}\medskip -\ocwendcode{}\ocwindent{0.00em} -converts a string coming from the URL into an a-list; the string is - a sequence of pairs key=vallue separated by ; or \& -\ocweol -\label{cgi.ml:2439}% -\medskip -\ocwbegincode{}\ocwindent{0.00em} +\label{cgi.ml:2462}% +\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{create\_env}~\ocwlowerid{s}~=$\ocweol \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{get\_assoc}~\ocwlowerid{beg}~\ocwlowerid{i}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwlowerid{i}~\equiv~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol +\ocwkw{if}~$\ocwlowerid{i}~\equiv~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}\ocweol \ocwindent{3.00em} -\ocwkw{if}~$\ocwlowerid{i}~\equiv~\ocwlowerid{beg}~$\ocwkw{then}~$[\,]~$\ocwkw{else}~$[~\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~\ocwlowerid{beg}~(\ocwlowerid{i}~-~\ocwlowerid{beg})~]$\ocweol +\ocwkw{if}~$\ocwlowerid{i}~\equiv~\ocwlowerid{beg}~$\ocwkw{then}~$[\,]~$\ocwkw{else}~$[\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~\ocwlowerid{beg}~(\ocwlowerid{i}~-~\ocwlowerid{beg})]$\ocweol \ocwindent{2.00em} \ocwkw{else}~\ocwkw{if}~$\ocwlowerid{s}.[\ocwlowerid{i}]~\equiv~\verb!';'!~\lor{}~\ocwlowerid{s}.[\ocwlowerid{i}]~\equiv~\verb!'&'!~$\ocwkw{then}\ocweol \ocwindent{3.00em} -\ocwkw{let}~$\ocwlowerid{next\_i}~=~\ocwlowerid{succ}~\ocwlowerid{i}~$\ocwkw{in}~\ocweol +\ocwkw{let}~$\ocwlowerid{next\_i}~=~\ocwlowerid{succ}~\ocwlowerid{i}~$\ocwkw{in}\ocweol \ocwindent{3.00em} -$[~\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~\ocwlowerid{beg}~(\ocwlowerid{i}~-~\ocwlowerid{beg})~::~\ocwlowerid{get\_assoc}~\ocwlowerid{next\_i}~\ocwlowerid{next\_i}~]$\ocweol +$[\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~\ocwlowerid{beg}~(\ocwlowerid{i}~-~\ocwlowerid{beg})~::~\ocwlowerid{get\_assoc}~\ocwlowerid{next\_i}~\ocwlowerid{next\_i}]$\ocweol \ocwindent{2.00em} \ocwkw{else}~$\ocwlowerid{get\_assoc}~\ocwlowerid{beg}~(\ocwlowerid{succ}~\ocwlowerid{i})~$\ocwkw{in}\ocweol \ocwindent{1.00em} \ocwkw{let}~\ocwkw{rec}~$\ocwlowerid{separate}~\ocwlowerid{i}~\ocwlowerid{s}~=$\ocweol \ocwindent{2.00em} -\ocwkw{if}~$\ocwlowerid{i}~=~\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}~$(\ocwlowerid{s},~$\ocwstring{""}$)$\ocweol +\ocwkw{if}~$\ocwlowerid{i}~=~\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~$\ocwkw{then}~$(\ocwlowerid{s},~$\ocwstring{""}$)$\ocweol \ocwindent{2.00em} \ocwkw{else}~\ocwkw{if}~$\ocwlowerid{s}.[\ocwlowerid{i}]~\equiv~\verb!'='!~$\ocwkw{then}\ocweol \ocwindent{3.00em} -$(\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~0~\ocwlowerid{i},~\ocwupperid{Bytes.}\ocwlowerid{sub}~\ocwlowerid{s}~(\ocwlowerid{succ}~\ocwlowerid{i})~(\ocwupperid{Bytes.}\ocwlowerid{length}~\ocwlowerid{s}~-~\ocwlowerid{succ}~\ocwlowerid{i}))$\ocweol +$(\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~0~\ocwlowerid{i},~\ocwupperid{String.}\ocwlowerid{sub}~\ocwlowerid{s}~(\ocwlowerid{succ}~\ocwlowerid{i})~(\ocwupperid{String.}\ocwlowerid{length}~\ocwlowerid{s}~-~\ocwlowerid{succ}~\ocwlowerid{i}))$\ocweol \ocwindent{2.00em} \ocwkw{else}~$\ocwlowerid{separate}~(\ocwlowerid{succ}~\ocwlowerid{i})~\ocwlowerid{s}~$\ocwkw{in}\ocweol \ocwindent{1.00em} @@ -54684,7 +54673,7 @@ $\ocwupperid{List.}\ocwlowerid{map}~(\ocwlowerid{separate}~0)~(\ocwlowerid{get\_ \ocwendcode{}\ocwindent{0.00em} ddr end \ocweol -\label{cgi.ml:3011}% +\label{cgi.ml:3036}% \medskip \ocwbegincode{}\ocwindent{0.00em} $\ocwlowerid{value}~\ocwlowerid{get}~\ocwlowerid{key}~\ocwlowerid{alist}~\ocwlowerid{default}~=~$\ocweol @@ -54714,7 +54703,7 @@ $\ocwlowerid{value}~\ocwlowerid{url\_encode}~\ocwlowerid{s}~=$\ocweol \ocwendcode{}\ocwindent{1.00em} Reference: RFC 3986 appendix A \ocweol -\label{cgi.ml:3431}% +\label{cgi.ml:3456}% \medskip \ocwbegincode{}\ocwindent{1.00em} \ocwkw{let}~$\ocwlowerid{url\_encode}~=~$\ocwkw{fun}\ocweol @@ -57248,7 +57237,7 @@ $\ocwlowerid{value}~\ocwlowerid{relocatable\_path}~:~\ocwlowerid{t}~\rightarrow{ \ocwindent{1.00em} ;\ocweol \ocwindent{1.00em} -$\ocwlowerid{value}~\ocwlowerid{make}~:~\ocwupperid{Analyzer.}\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Html.}\ocwlowerid{language}~\rightarrow{}~$\ocwbt{string}~$\rightarrow{}~\ocwupperid{Num.}\ocwlowerid{num}~\rightarrow{}~\ocwlowerid{t}$\ocweol +$\ocwlowerid{value}~\ocwlowerid{make}~:~\ocwupperid{Analyzer.}\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Html.}\ocwlowerid{language}~\rightarrow{}~$\ocwbt{string}~$\rightarrow{}~$\ocwbt{int}~\ocwbc{} Num.num \ocwec{}~$\rightarrow{}~\ocwlowerid{t}$\ocweol \ocwindent{1.00em} ;\ocweol \ocwindent{1.00em} @@ -57264,7 +57253,7 @@ $\ocwlowerid{value}~\ocwlowerid{checkpoints}~:~\ocwlowerid{t}~\rightarrow{}~$\oc \ocwindent{1.00em} ;\ocweol \ocwindent{1.00em} -$\ocwlowerid{value}~\ocwlowerid{nb\_sols}~:~\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Num.}\ocwlowerid{num}$\ocweol +$\ocwlowerid{value}~\ocwlowerid{nb\_sols}~:~\ocwlowerid{t}~\rightarrow{}~$\ocwbt{int}~\ocwbc{} Num.num \ocwec{}\ocweol \ocwindent{1.00em} ;\ocweol \ocwindent{0.00em} @@ -57525,7 +57514,7 @@ $\ocwlowerid{value}~\ocwlowerid{path}~=~$\ocwkw{fun}~$[~\ocwupperid{Graph}~\righ \ocwindent{1.00em} $\ocwlowerid{value}~\ocwlowerid{make}~:$\ocweol \ocwindent{2.00em} -$\ocwupperid{Analyzer.}\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Html.}\ocwlowerid{language}~\rightarrow{}~$\ocwbt{string}~$\rightarrow{}~\ocwupperid{Num.}\ocwlowerid{num}~\rightarrow{}~\ocwlowerid{t}$\ocweol +$\ocwupperid{Analyzer.}\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Html.}\ocwlowerid{language}~\rightarrow{}~$\ocwbt{string}~$\rightarrow{}~$\ocwbt{int}~\ocwbc{} Num.num \ocwec{}~$\rightarrow{}~\ocwlowerid{t}$\ocweol \ocwindent{1.00em} ;\ocweol \ocwindent{1.00em} @@ -57541,7 +57530,7 @@ $\ocwlowerid{value}~\ocwlowerid{checkpoints}~:~\ocwlowerid{t}~\rightarrow{}~$\oc \ocwindent{1.00em} ;\ocweol \ocwindent{1.00em} -$\ocwlowerid{value}~\ocwlowerid{nb\_sols}~:~\ocwlowerid{t}~\rightarrow{}~\ocwupperid{Num.}\ocwlowerid{num}$\ocweol +$\ocwlowerid{value}~\ocwlowerid{nb\_sols}~:~\ocwlowerid{t}~\rightarrow{}~$\ocwbt{int}~\ocwbc{} Num.num \ocwec{}\ocweol \ocwindent{1.00em} ;\ocweol \ocwindent{0.00em} @@ -57555,7 +57544,7 @@ $\ocwlowerid{value}~\ocwlowerid{nb\_sols}~:~\ocwlowerid{t}~\rightarrow{}~\ocwupp \ocwindent{2.00em} ;~$\ocwlowerid{checkpoints}~:~$\ocwbt{string}\ocweol \ocwindent{2.00em} -;~$\ocwlowerid{nb\_sols}~:~\ocwupperid{Num.}\ocwlowerid{num}$\ocweol +;~$\ocwlowerid{nb\_sols}~:~$\ocwbt{int}~\ocwbc{} Num.num \ocwec{}\ocweol \ocwindent{2.00em} \}\ocweol \ocwindent{1.00em} @@ -58847,7 +58836,7 @@ $\ocwlowerid{env}$\ocweol \ocwindent{2.00em} |\ensuremath{>}~$\ocwupperid{Cgi.}\ocwlowerid{decoded\_get}~\ocwupperid{Save\_corpus\_params.}\ocwlowerid{nb\_sols}~$\ocwstring{"0"}\ocweol \ocwindent{2.00em} -|\ensuremath{>}~$\ocwupperid{Num.}\ocwlowerid{num\_of\_string}$\ocweol +|\ensuremath{>}~$\ocwlowerid{int\_of\_string}$\ocweol \ocwindent{1.00em} \ocwkw{in}\ocweol \ocwindent{1.00em} diff --git a/INSTALLATION b/INSTALLATION index 615af2bf360bbfb6d0b786628f5d1caf0528f507..611f18fffa0068b67e7cf62e937aea9533414598 100644 --- a/INSTALLATION +++ b/INSTALLATION @@ -11,7 +11,7 @@ This is just a reminder for quick installation. A more complete installation procedure is described in file SETUP/INSTALL. -0) Install OCaml (>= 4.02). See http://ocaml.org for installation +0) Install OCaml (>= 4.07). See http://ocaml.org for installation instructions. Then install the Camplp4 processor in the corresponding distribution. @@ -20,7 +20,8 @@ If OCaml has been installed through the OPAM package manager, then: opam install camlp4 should do the job. Alternatively, see https://github.com/ocaml/camlp4 -for download and installation instructions. +for download and installation instructions. You may have to install +the auxiliary package ocamlbuild. Beware: camlp4 is not updated at every Ocaml distribution, so you may have to settle for a somewhat ancient version of Ocaml, such as 4.02.2, which is diff --git a/ML/.depend b/ML/.depend index 2875207eccccbba89897095c041b8af2d2d5bd96..d7a73ef3d7c22eeeed0d55c5fdae08b26460fb80 100644 --- a/ML/.depend +++ b/ML/.depend @@ -40,13 +40,13 @@ order.cmo : order.cmx : padapatha.cmo : ../ZEN/word.cmo phonetics.cmo encode.cmo padapatha.cmx : ../ZEN/word.cmx phonetics.cmx encode.cmx +skt_lexer.cmo : encode.cmo +skt_lexer.cmx : encode.cmx sanskrit.cmi : ../ZEN/word.cmo sanskrit.cmo : transduction.cmo skt_lexer.cmo padapatha.cmo encode.cmo \ canon.cmo sanskrit.cmi sanskrit.cmx : transduction.cmx skt_lexer.cmx padapatha.cmx encode.cmx \ canon.cmx sanskrit.cmi -skt_lexer.cmo : encode.cmo -skt_lexer.cmx : encode.cmx test_stamp.cmo : version.cmo paths.cmo ../ZEN/gen.cmo control.cmo test_stamp.cmx : version.cmx paths.cmx ../ZEN/gen.cmx control.cmx dir.cmi : @@ -152,12 +152,12 @@ dispatcher.cmi : ../ZEN/word.cmo phases.cmo morphology.cmi \ load_transducers.cmo html.cmo ../ZEN/deco.cmo auto.cmi dispatcher.cmo : ../ZEN/word.cmo web.cmo skt_morph.cmi phonetics.cmo \ phases.cmo pada.cmo naming.cmo morphology.cmi load_transducers.cmo \ - ../ZEN/list2.cmo html.cmo ../ZEN/gen.cmo encode.cmo ../ZEN/deco.cmo \ - control.cmo canon.cmo auto.cmi dispatcher.cmi + ../ZEN/list2.cmo html.cmo encode.cmo ../ZEN/deco.cmo control.cmo \ + canon.cmo auto.cmi dispatcher.cmi dispatcher.cmx : ../ZEN/word.cmx web.cmx skt_morph.cmi phonetics.cmx \ phases.cmx pada.cmx naming.cmx morphology.cmi load_transducers.cmx \ - ../ZEN/list2.cmx html.cmx ../ZEN/gen.cmx encode.cmx ../ZEN/deco.cmx \ - control.cmx canon.cmx auto.cmi dispatcher.cmi + ../ZEN/list2.cmx html.cmx encode.cmx ../ZEN/deco.cmx control.cmx \ + canon.cmx auto.cmi dispatcher.cmi segmenter.cmo : ../ZEN/word.cmo web.cmo phonetics.cmo ../ZEN/list2.cmo \ ../ZEN/gen.cmo encode.cmo ../ZEN/deco.cmo auto.cmi segmenter.cmx : ../ZEN/word.cmx web.cmx phonetics.cmx ../ZEN/list2.cmx \ @@ -167,7 +167,7 @@ load_morphs.cmo : ../ZEN/word.cmo web.cmo morphology.cmi html.cmo \ load_morphs.cmx : ../ZEN/word.cmx web.cmx morphology.cmi html.cmx \ ../ZEN/gen.cmx ../ZEN/deco.cmx control.cmx lexer.cmi : ../ZEN/word.cmo phases.cmo morphology.cmi load_transducers.cmo \ - html.cmo dispatcher.cmi + load_morphs.cmo html.cmo dispatcher.cmi lexer.cmo : ../ZEN/word.cmo web.cmo transduction.cmo skt_morph.cmi \ segmenter.cmo phases.cmo naming.cmo morphology.cmi morpho_string.cmo \ morpho_scl.cmo morpho_html.cmo morpho.cmo load_transducers.cmo \ @@ -193,13 +193,15 @@ reader.cmx : web.cmx scl_parser.cmx sanskrit.cmx rank.cmx phases.cmx \ paths.cmx html.cmx encode.cmx control.cmx checkpoints.cmx cgi.cmx \ canon.cmx parser.cmo : ../ZEN/word.cmo web.cmo skt_morph.cmi scl_parser.cmo \ - sanskrit.cmi SCLpaths.cmo paths.cmo paraphrase.cmi ../ZEN/list2.cmo \ - lexer.cmi inflected.cmi html.cmo ../ZEN/gen.cmo encode.cmo date.cmo \ - control.cmo constraints.cmi checkpoints.cmo cgi.cmo canon.cmo + sanskrit.cmi SCLpaths.cmo phases.cmo paths.cmo paraphrase.cmi \ + morpho_html.cmo ../ZEN/list2.cmo lexer.cmi inflected.cmi html.cmo \ + ../ZEN/gen.cmo encode.cmo date.cmo control.cmo constraints.cmi \ + checkpoints.cmo cgi.cmo canon.cmo parser.cmx : ../ZEN/word.cmx web.cmx skt_morph.cmi scl_parser.cmx \ - sanskrit.cmx SCLpaths.cmx paths.cmx paraphrase.cmx ../ZEN/list2.cmx \ - lexer.cmx inflected.cmx html.cmx ../ZEN/gen.cmx encode.cmx date.cmx \ - control.cmx constraints.cmx checkpoints.cmx cgi.cmx canon.cmx + sanskrit.cmx SCLpaths.cmx phases.cmx paths.cmx paraphrase.cmx \ + morpho_html.cmx ../ZEN/list2.cmx lexer.cmx inflected.cmx html.cmx \ + ../ZEN/gen.cmx encode.cmx date.cmx control.cmx constraints.cmx \ + checkpoints.cmx cgi.cmx canon.cmx constraints.cmi : skt_morph.cmi morphology.cmi constraints.cmo : ../ZEN/word.cmo skt_morph.cmi morphology.cmi \ ../ZEN/list2.cmo html.cmo canon.cmo constraints.cmi @@ -214,10 +216,6 @@ paraphrase.cmx : web.cmx skt_morph.cmi morphology.cmi html.cmx \ constraints.cmx paraphrase.cmi bank_lexer.cmo : bank_lexer.cmx : -regression.cmo : web.cmo version.cmo sanskrit.cmi rank.cmo encode.cmo \ - date.cmo constraints.cmi bank_lexer.cmo -regression.cmx : web.cmx version.cmx sanskrit.cmx rank.cmx encode.cmx \ - date.cmx constraints.cmx bank_lexer.cmx checkpoints.cmo : phases.cmo encode.cmo control.cmo canon.cmo bank_lexer.cmo checkpoints.cmx : phases.cmx encode.cmx control.cmx canon.cmx bank_lexer.cmx graph_segmenter.cmo : ../ZEN/word.cmo web.cmo phonetics.cmo ../ZEN/list2.cmo \ diff --git a/ML/.ocamlinit b/ML/.ocamlinit index 3cac7fd2589b9c9f41cbe2beef1c0865944b6140..23b8f210b7d6744bea883154738ca8e142fa855b 100644 --- a/ML/.ocamlinit +++ b/ML/.ocamlinit @@ -1,2 +1,2 @@ #load "dynlink.cma";; -#load "camlp4r.cma";; +#load "camlp4/camlp4r.cma";; diff --git a/ML/Makefile b/ML/Makefile index a7db67c3e8677806da2c5c0a3f0152f17f93ae02..2496f0bba099f318380af6187fc5e0e2f724d2c4 100644 --- a/ML/Makefile +++ b/ML/Makefile @@ -5,9 +5,9 @@ # Gérard Huet & Pawan Goyal # # # ############################################################################ -# Makefile of Sanskrit Heritage Software 21-01-2018 Copyright INRIA 2018 # +# Makefile of Sanskrit Heritage Software 09-09-2018 Copyright INRIA 2018 # ############################################################################ -# Prerequisites: Ocaml and Camlp4 preprocessor +# Prerequisites: Ocaml 4.07 and Camlp4 preprocessor # For change of make in all recursive Makefiles MAKE=make @@ -33,9 +33,9 @@ VPATH=$(ZEN) # CORE package - utilities, transducers, sanskrit and french lexers, dico spec CORE=$(DISTR_CORE) paths.ml -DISTR_CORE = control.ml version.ml date.ml canon.ml transduction.ml \ - encode.ml order.ml padapatha.ml sanskrit.mli \ - sanskrit.ml skt_lexer.ml test_stamp.ml dir.mli dir.ml +DISTR_CORE = control.ml version.ml date.ml canon.ml transduction.ml encode.ml \ + order.ml padapatha.ml skt_lexer.ml sanskrit.mli sanskrit.ml \ + test_stamp.ml dir.mli dir.ml # GRAM package - phonetics, morphology, segmentation and tagging engines GRAM = index.ml phonetics.ml int_sandhi.ml skt_morph.mli morphology.mli \ @@ -86,7 +86,7 @@ COMPILE=ocamlopt -pp "camlp4r pa_extend.cmo" -I $(ZEN) -I +camlp4 -c \ COMPILEI=ocamlc -pp "camlp4r pa_extend.cmo" -I $(ZEN) -I +camlp4 -c \ $(ANNOTFLAGS) -LINK=ocamlopt -I $(ZEN) -I +camlp4 dynlink.cmxa camlp4lib.cmxa +LINK=ocamlopt -I $(ZEN) -I +camlp4 dynlink.cmxa camlp4lib.cmxa # standard installation of Sanskrit Heritage platform - assumes ZEN library @@ -172,7 +172,7 @@ word.cmx deco.cmx zen_lexer.cmx canon.cmx phonetics.cmx transduction.cmx \ encode.cmx html.cmx SCLpaths.cmx web.cmx cgi.cmx naming.cmx morpho_string.cmx \ morpho.cmx order.cmx chapters.cmx morpho_html.cmx lemmatizer.cmx -o lemmatizer -declension: declension.cmx +declension: declension.cmx share.cmx $(LINK) str.cmxa list2.cmx gen.cmx paths.cmx version.cmx date.cmx control.cmx \ word.cmx canon.cmx zen_lexer.cmx phonetics.cmx transduction.cmx encode.cmx \ deco.cmx int_sandhi.cmx lexmap.cmx inflected.cmx bank_lexer.cmx html.cmx \ @@ -204,14 +204,17 @@ chapters.cmx morpho_html.cmx cgi.cmx segmenter.cmx morpho_scl.cmx \ load_morphs.cmx lexer.cmx constraints.cmx rank.cmx bank_lexer.cmx \ scl_parser.cmx checkpoints.cmx reader.cmx -o reader -interface: interface.cmx +LEGACY= +# LEGACY= nums.cmxa + +interface: interface.cmx minimap.cmx $(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx version.cmx date.cmx \ control.cmx word.cmx canon.cmx zen_lexer.cmx phonetics.cmx transduction.cmx \ encode.cmx skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx lexmap.cmx \ inflected.cmx html.cmx SCLpaths.cmx web.cmx naming.cmx morpho_string.cmx morpho.cmx \ load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx order.cmx \ chapters.cmx morpho_html.cmx bank_lexer.cmx cgi.cmx load_morphs.cmx \ -int_sandhi.cmx nouns.cmx share.cmx minimap.cmx mini.cmx nums.cmxa \ +int_sandhi.cmx nouns.cmx share.cmx minimap.cmx mini.cmx $(LEGACY) \ graph_segmenter.cmx checkpoints.cmx automaton.cmx params.cmx \ save_corpus_params.cmx dir.cmx corpus.cmx web_corpus.cmx interface.cmx -o interface @@ -244,7 +247,7 @@ corpus_manager: corpus_manager_cgi.cmx load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \ order.cmx chapters.cmx morpho_html.cmx bank_lexer.cmx \ cgi.cmx load_morphs.cmx int_sandhi.cmx nouns.cmx \ - share.cmx minimap.cmx mini.cmx nums.cmxa \ + share.cmx minimap.cmx mini.cmx $(LEGACY) \ graph_segmenter.cmx checkpoints.cmx automaton.cmx \ params.cmx save_corpus_params.cmx dir.cmx corpus.cmx \ web_corpus.cmx multilingual.cmx \ @@ -260,7 +263,7 @@ save_corpus: save_corpus_cgi.cmx load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \ order.cmx chapters.cmx morpho_html.cmx bank_lexer.cmx \ cgi.cmx load_morphs.cmx int_sandhi.cmx nouns.cmx \ - share.cmx minimap.cmx mini.cmx nums.cmxa \ + share.cmx minimap.cmx mini.cmx $(LEGACY) \ graph_segmenter.cmx checkpoints.cmx automaton.cmx \ params.cmx save_corpus_params.cmx dir.cmx corpus.cmx \ web_corpus.cmx multilingual.cmx \ @@ -276,7 +279,7 @@ mkdir_corpus: mkdir_corpus_cgi.cmx load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \ order.cmx chapters.cmx morpho_html.cmx bank_lexer.cmx \ cgi.cmx load_morphs.cmx int_sandhi.cmx nouns.cmx \ - share.cmx minimap.cmx mini.cmx nums.cmxa \ + share.cmx minimap.cmx mini.cmx $(LEGACY) \ graph_segmenter.cmx checkpoints.cmx automaton.cmx \ params.cmx save_corpus_params.cmx dir.cmx corpus.cmx \ web_corpus.cmx multilingual.cmx \ @@ -292,7 +295,7 @@ mk_corpus: mk_corpus.cmx load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \ order.cmx chapters.cmx morpho_html.cmx bank_lexer.cmx \ cgi.cmx load_morphs.cmx int_sandhi.cmx nouns.cmx \ - share.cmx minimap.cmx mini.cmx nums.cmxa \ + share.cmx minimap.cmx mini.cmx $(LEGACY) \ graph_segmenter.cmx checkpoints.cmx automaton.cmx \ params.cmx save_corpus_params.cmx dir.cmx corpus.cmx \ web_corpus.cmx multilingual.cmx \ diff --git a/ML/cgi.ml b/ML/cgi.ml index ee939bb53a94286752f53e61075c72ab7ef49ec4..5518d22e19039978bb0e462d0bcc3da1d5651316 100644 --- a/ML/cgi.ml +++ b/ML/cgi.ml @@ -24,63 +24,63 @@ value hexa_val conf = ; value decode_url s = let rec need_decode i = - if i < Bytes.length s then + if i < String.length s then match s.[i] with [ '%' | '+' -> True | _ -> need_decode (succ i) ] else False in let rec compute_len i i1 = - if i < Bytes.length s then + if i < String.length s then let i = match s.[i] with - [ '%' when i + 2 < Bytes.length s -> i + 3 + [ '%' when i + 2 < String.length s -> i + 3 | _ -> succ i ] in compute_len i (succ i1) else i1 in let rec copy_decode_in s1 i i1 = - if i < Bytes.length s then + if i < String.length s then let i = match s.[i] with - [ '%' when i + 2 < Bytes.length s -> - let v = hexa_val s.[i + 1] * 16 + hexa_val s.[i + 2] - in do {Bytes.set s1 i1 (Char.chr v); i + 3} + [ '%' when i + 2 < String.length s -> + let v = hexa_val s.[i+1] * 16 + hexa_val s.[i+2] in + do {Bytes.set s1 i1 (Char.chr v); i + 3} | '+' -> do {Bytes.set s1 i1 ' '; succ i} | x -> do {Bytes.set s1 i1 x; succ i} ] in copy_decode_in s1 i (succ i1) else s1 in let rec strip_heading_and_trailing_spaces s = - if Bytes.length s > 0 then + if String.length s > 0 then if s.[0] == ' ' then - strip_heading_and_trailing_spaces (Bytes.sub s 1 (Bytes.length s - 1)) - else if s.[Bytes.length s - 1] == ' ' then - strip_heading_and_trailing_spaces (Bytes.sub s 0 (Bytes.length s - 1)) + strip_heading_and_trailing_spaces (String.sub s 1 (String.length s - 1)) + else if s.[String.length s - 1] == ' ' then + strip_heading_and_trailing_spaces (String.sub s 0 (String.length s - 1)) else s else s in if need_decode 0 then let len = compute_len 0 0 in let s1 = Bytes.create len in - strip_heading_and_trailing_spaces (copy_decode_in s1 0 0) - else s; - + strip_heading_and_trailing_spaces (Bytes.to_string (copy_decode_in s1 0 0)) + else s +; (* converts a string coming from the URL into an a-list; the string is - a sequence of pairs key=vallue separated by ; or \& *) + a sequence of pairs key=value separated by ; or \& *) value create_env s = let rec get_assoc beg i = - if i == Bytes.length s then - if i == beg then [] else [ Bytes.sub s beg (i - beg) ] + if i == String.length s then + if i == beg then [] else [String.sub s beg (i - beg)] else if s.[i] == ';' || s.[i] == '&' then - let next_i = succ i in - [ Bytes.sub s beg (i - beg) :: get_assoc next_i next_i ] + let next_i = succ i in + [String.sub s beg (i - beg) :: get_assoc next_i next_i] else get_assoc beg (succ i) in let rec separate i s = - if i = Bytes.length s then (s, "") + if i = String.length s then (s, "") else if s.[i] == '=' then - (Bytes.sub s 0 i, Bytes.sub s (succ i) (Bytes.length s - succ i)) + (String.sub s 0 i, String.sub s (succ i) (String.length s - succ i)) else separate (succ i) s in List.map (separate 0) (get_assoc 0 0) ; diff --git a/ML/corpus.ml b/ML/corpus.ml index fea1cdc768f4af00a7750d71abd0f91e0a4d78c5..1149865fe64af020f88b54b801d7d42eeddb10b0 100644 --- a/ML/corpus.ml +++ b/ML/corpus.ml @@ -46,7 +46,7 @@ module Analysis : sig type t ; value make : - Analyzer.t -> Html.language -> string -> Num.num -> t + Analyzer.t -> Html.language -> string -> int (* Num.num *) -> t ; value analyzer : t -> Analyzer.t ; @@ -54,14 +54,14 @@ module Analysis : sig ; value checkpoints : t -> string ; - value nb_sols : t -> Num.num + value nb_sols : t -> int (* Num.num *) ; end = struct type t = { analyzer : Analyzer.t ; lang : Html.language ; checkpoints : string - ; nb_sols : Num.num + ; nb_sols : int (* Num.num *) } ; value make analyzer lang checkpoints nb_sols = diff --git a/ML/corpus.mli b/ML/corpus.mli index 31824f4fab7dd63a6d090bb0eb65f4882266c664..4068d6d5526ae495c8ad591cee99fdce579dd9a6 100644 --- a/ML/corpus.mli +++ b/ML/corpus.mli @@ -28,7 +28,7 @@ end module Analysis : sig type t ; - value make : Analyzer.t -> Html.language -> string -> Num.num -> t + value make : Analyzer.t -> Html.language -> string -> int (* Num.num *) -> t ; value analyzer : t -> Analyzer.t ; @@ -36,7 +36,7 @@ module Analysis : sig ; value checkpoints : t -> string ; - value nb_sols : t -> Num.num + value nb_sols : t -> int (* Num.num *) ; end ; diff --git a/ML/graph_segmenter.ml b/ML/graph_segmenter.ml index 33ee0e83d839265351582431b33a0b4912f8308a..e89359a0262fa085d780dee95521d7f3588b235b 100644 --- a/ML/graph_segmenter.ml +++ b/ML/graph_segmenter.ml @@ -528,7 +528,7 @@ value segment_chunk (full,count) chunk last = ; set_offset (succ extremity,future) ; if segmentable then do { reset_counter () - ; (full,Num.mult_num count (Num.Int local_count)) + ; (full,count*local_count) (* overflow may compute modulo *) (* we have [local_count] segmentations of the local [chunk], and, chunks being independent, the total number of solutions multiply *) } @@ -536,8 +536,8 @@ value segment_chunk (full,count) chunk last = } } ; -value segment_iter chunks = segment_chunks (True,Num.Int 1) chunks - where rec segment_chunks acc = fun (* terminal recursion *) +value segment_iter chunks = segment_chunks (True,1) chunks + where rec segment_chunks acc = fun (* terminal recursion *) [ [ (* last *) chunk ] -> segment_chunk acc chunk True | [ chunk :: rest ] -> segment_chunks (segment_chunk acc chunk False) rest | [] -> acc diff --git a/ML/interface.ml b/ML/interface.ml index 190ad9be92c254c92cf4eec36ee2ed2447969af0..70e1f12562aa4d878900721d17f9cc97d7eebae4 100644 --- a/ML/interface.ml +++ b/ML/interface.ml @@ -392,10 +392,7 @@ value invoke_SL text cpts corpus_id count sent_id link_num = ps (td_wrap (call_SL text cpts "t" corpus_id count sent_id link_num ^ "Sanskrit Library Interface")) ; -value update_text_with_sol text count = text ^ ";allSol=" ^ match count with - [ Num.Int n -> string_of_int n - | _ -> "2147483648" (* [2^31] *) - ] +value update_text_with_sol text count = text ^ ";allSol=" ^ string_of_int count ; value call_undo text cpts = let string_pts = match cpts with @@ -435,22 +432,19 @@ value check_sentence translit us text_orig checkpoints sentence if scl_toggle then td_wrap (call_reader text cpts "o" ^ "UoH Analysis Mode") |> ps else () (* [scl_parser] is not visible unless toggle is set *) in - match count with - [ Num.Int n -> if n > max_count then - (* too many solutions would choke the parsers *) - td_wrap ("(" ^ string_of_int n ^ " Solutions)") |> ps - else if n=1 (* Unique remaining solution *) then do - { td_wrap (call_parser text cpts ^ "Unique Solution") |> ps - ; call_scl_parser 1 - } - else do + if count > max_count then + (* too many solutions would choke the parsers *) + td_wrap ("(" ^ string_of_int count ^ " Solutions)") |> ps + else if count=1 (* Unique remaining solution *) then do + { td_wrap (call_parser text cpts ^ "Unique Solution") |> ps + ; call_scl_parser 1 + } + else do { td_wrap (call_reader text cpts "p" ^ "Filtered Solutions") |> ps - ; let info = string_of_int n ^ if full then "" else " Partial" in + ; let info = string_of_int count ^ if full then "" else " Partial" in td_wrap (call_reader text cpts "t" ^ "All " ^ info ^ " Solutions") |> ps - ; call_scl_parser n + ; call_scl_parser count } - | _ -> td_wrap "(More than 2^32 Solutions!)" |> ps - ] ; tr_end |> pl (* tr end *) ; table_end |> pl ; div_end |> ps (* Latin16 *) @@ -510,8 +504,8 @@ value save_button query nb_sols = center_begin ^ cgi_begin save_corpus_cgi "" ^ hidden_input Save_corpus_params.state (escape query) ^ - hidden_input Save_corpus_params.nb_sols (nb_sols |> Num.string_of_num |> escape) ^ - submit_input "Save" ^ + hidden_input Save_corpus_params.nb_sols (nb_sols |> string_of_int |> escape) ^ + submit_input "Save" ^ cgi_end ^ center_end ; @@ -637,8 +631,8 @@ value graph_engine () = do ; if corpus_permission = Web_corpus.Annotator then (* TODO: use [segment_iter] to compute the nb of sols instead of passing 0 to [nb_sols]. *) - save_button query (Num.num_of_int 0) |> pl - else () + save_button query 0 |> pl + else () ; html_break |> pl (* Quit button: continue reading (reader mode) or quit without saving (annotator mode) *) diff --git a/ML/rank.ml b/ML/rank.ml index 1b497cd489459aae8e1e093de0108adf9ae7eb2c..ccb98aa7ecb401bdfad4c6f6750ed3202b630262 100644 --- a/ML/rank.ml +++ b/ML/rank.ml @@ -103,8 +103,8 @@ value insert ((pen,min),sol) ((min_pen,sols,saved) as current) = let rescue = List.fold_right save sols [] in if rescue=[] then saved else [ (min_pen,rescue) :: saved ] ; -(* Forget absolute penalties of solutions with minimal length penalty *) -(* also used to erase constraints - thus do not eta-reduce !!! *) +(* Forget absolute penalties of solutions with minimal length penalty. *) +(* Also used to erase constraints - thus do not eta-reduce !!! *) value trim x = List.map snd x ; (* overflow is None or (Some n) when n solutions with n Cgi.decoded_get Save_corpus_params.nb_sols "0" - |> Num.num_of_string + |> int_of_string in Corpus.Analysis.make Corpus.Analyzer.Graph lang cpts nb_sols ; diff --git a/ML/version.ml b/ML/version.ml index 964b7de3603c927f213079d35b88445b66a15401..71a89f943f25de0815bf291bb2df7d5a33038ab0 100644 --- a/ML/version.ml +++ b/ML/version.ml @@ -8,4 +8,4 @@ (**************************************************************************) (* Generated by make version - see main Makefile *) -value version="3.08" and version_date="2018-08-29"; +value version="3.09" and version_date="2018-09-09"; diff --git a/SETUP/INSTALL b/SETUP/INSTALL index 9b6cf8eec53b74fe5b0da1a4dfb5e6dcbe594ea4..42dfce2dad7bbf89931c37f2d3cfad3828242621 100644 --- a/SETUP/INSTALL +++ b/SETUP/INSTALL @@ -16,16 +16,21 @@ install the site. Installation assumes prior installation of Objective Caml available from site http://ocaml.org. The distribution version -4.02 ought to be used, available at"http://ocaml.org/releases/4.02.html". -More recent distributions may work too, but this has not been tested. +4.07 ought to be used, available at "http://ocaml.org/releases/". The proper sequence of commands is: ./configure make world.opt sudo make install -Then install Camlp4 from GitHub, in the 4.02 branch, available from -https://github.com/ocaml/camlp4/releases; take for instance 4.02+6. +Then install package Ocamlbuild from https://github.com/ocaml/ocamlbuild/releases +for instance OCamlbuild 0.12.0: +make configure +make +make install + +Then install Camlp4 from GitHub, in the 4.07 branch, available from +https://github.com/ocaml/camlp4/releases; take for instance 4.07+1. This should be installed by: ./configure make all diff --git a/SETUP/version.txt b/SETUP/version.txt index 245e1be85e0782cfed9ad8e920030c38d855e4e3..9e14cbacf9433ed4c0cfc7d8531abda23775e010 100644 --- a/SETUP/version.txt +++ b/SETUP/version.txt @@ -1,2 +1,2 @@ -VERSION='3.08' -DATE='2018-08-29' +VERSION='3.09' +DATE='2018-09-09' diff --git a/SITE/manual.html b/SITE/manual.html index feebdb3dbeead77766d8720d6cff987b4bc54e26..1a9fd6f9101cf1408f430e9207c3c809a667caff 100644 --- a/SITE/manual.html +++ b/SITE/manual.html @@ -50,7 +50,7 @@ published recently as Design and analysis of a lean interface for Sanskrit corpus annotation.

-Written on July 22nd 2018, for Sanskrit Engine Version 3.08. +Written on September 9th 2018, for Sanskrit Engine Version 3.09.

First approach to using the Sanskrit Heritage engine

@@ -264,7 +264,7 @@ The Sanskrit Heritage Dictionary is the latest edition of a Sanskrit to French Dictionary "Dictionnaire Français de l'Héritage Sanskrit" compiled by Gérard Huet since 1994. This dictionary is freely available -as a 936 pages book under the pdf format, +as a 945 pages book under the pdf format, easily readable with Acrobat Reader, a free Adobe product. This dictionary is still under development, and is automatically updated along with the site, @@ -489,7 +489,7 @@ Thus at best this representation is some approximation of syntax. Below the three columns you find a button labeled Submit. You may press it to validate the morphological choices, and the resulting page gives you a unique parse as a hypertext padapāṭha which you may save in user space. - @@ -867,7 +867,7 @@ first verse should not be glued by sandhi to the second one. preserving the current mode, you can click on the title of any page of the corpus browser. - Department of Sanskrit and Prakrit Languages, Pune University
-Department of Sanskrit Studies, University of Hyderabad
+ +Department of Sanskrit Studies, University of Hyderabad
Department of Sanskrit, Faculty of Arts, Banaras Hindu University, Varanasi
Kalakosa, Indira Gandhi National Center for the Arts
@@ -240,9 +242,11 @@ Arts, Banaras Hindu University, Varanasi
Special Center for Sanskrit Studies, Jawaharal Nehru University, New Delhi
Center for Indian Language -Technology, Indian Institute of Technology, Bombay
-Lal Bahadur Shastri Rashtriya Sanskrit Vidyapeetha, Delhi
-Kavikulguru Kalidas Sanskrit University, Ramtek, Maharashtra
+Technology, Indian Institute of Technology, Bombay
--> + +Lal Bahadur Shastri Rashtriya Sanskrit Vidyapeetha, Delhi
--> + +Kavikulguru Kalidas Sanskrit University, Ramtek, Maharashtra Panini Sanskrit University, Ujjain
Shadvala Center for Sanskrit Studies, Goa
@@ -585,7 +589,8 @@ at Maharishi University of Management
Albrecht Wezler's citation for Max Planck Research Award for Humanities
Harunaga Isaacson's home page at Universität Hamburg
Jambudvipa site of Paolo Magnone
-Gerd Unruh's home page
+ Sylvain Brocquet's home page
diff --git a/ZEN/Makefile b/ZEN/Makefile index 85be63dda9fb3b9b02c627cc7565c2c7f2d788c9..c76d80e7389ace361d8a1c4dec9e6778c3c1f1c5 100644 --- a/ZEN/Makefile +++ b/ZEN/Makefile @@ -84,17 +84,19 @@ COMPILE=ocamlopt -pp "camlp4rf" -I +camlp4 -c $(ANNOTFLAGS) COMPILEI=ocamlc -pp "camlp4rf" -I +camlp4 -c $(ANNOTFLAGS) -LINK=ocamlopt -I +camlp4 +LINK=ocamlopt -I +camlp4 dynlink.cmxa camlp4lib.cmxa LINKG=ocamlopt -I +camlp4 dynlink.cmxa camlp4lib.cmxa LINK_BYTE=ocamlc -I +camlp4 LINK_BYTEG=ocamlc -I +camlp4 dynlink.cma camlp4lib.cma # NB regular.ml compiled as regular.cmo for meta-programming - regular.cmx unused -all: timeshare unshare make_english_lexicon make_french_lexicon dagify \ -terdagify list_iso test unglue_test.cmx minimap.cmx lexmap.cmx bintree.cmx \ -deco.cmx zen_lexer.cmx transducer.cmx sharemod.cmx react0.cmx reactt.cmx reacte.cmx \ -regular.cmo #specific_cmx +all: timeshare unshare make_english_lexicon dagify \ +terdagify test minimap.cmx lexmap.cmx bintree.cmx \ +deco.cmx zen_lexer.cmx transducer.cmx sharemod.cmx react0.cmx reactt.cmx \ +reacte.cmx regular.cmo #specific_cmx + +problematic: make_french_lexicon list_iso unglue_test.cmx # specific dispatch and engine modules specific_cmx: example_dispatch.cmx sanskrit_dispatch.cmx example_engine.cmx \ diff --git a/ZEN/list2.ml b/ZEN/list2.ml index ef566fad8e1b1abe38841ae29ea2b1e334f560cb..f48d811300022a7a73ec05060470438dde466a8d 100644 --- a/ZEN/list2.ml +++ b/ZEN/list2.ml @@ -58,7 +58,7 @@ value union2 e l = if List.mem e l then (raise Twice_the_same_value) else [ e :: l ] ; -(* Terminal recursive union of finite sets represented as as lists - does not +(* Terminal recursive union of finite sets represented as lists - does not respect the order of elements in [l1]: [union_f [ 1; 2 ] [] = [ 2; 1 ]] *) value rec union_f l1 l2 = match l1 with @@ -67,10 +67,10 @@ value rec union_f l1 l2 = ] ; -(* Same, respecting the order: *) +(* Same, respecting the order, but not tail-recursive: *) value union l1 l2 = List.fold_right union1 l1 l2 ; -value set_of l = (*i eta expansion for polymorphism i*) +value set_of l = (*i Caution: eta expansion needed for polymorphism i*) let add acc x = if List.mem x acc then acc else [ x :: acc ] in List.fold_left add [] l ; @@ -84,8 +84,8 @@ value rec last = fun ; (* [split n l] returns a pair of lists [(prefix, suffix)] such that - [prefix @ suffix = l] and [List.length prefix = n]. Raise [Failure - "split"] if [n < 0] or [n > List.length l]. *) + [prefix @ suffix = l] and [List.length prefix = n]. + Raises [Failure "split"] if [n < 0] or [n > List.length l]. *) value split n l = aux n l [] where rec aux n l acc = if n = 0 then (List.rev acc, l) else @@ -95,15 +95,14 @@ value split n l = aux n l [] ] ; (* [truncate n l] removes from [l] its initial sublist of length [n]. *) -(* *) (* [truncate : int -> list 'a -> list 'a] *) value truncate n l = try snd (split n l) with [ Failure _ -> failwith "truncate" ] ; (* [take_prefix n l] returns the first [n] elements of [l] (in the same - order of appearance in [l]). If [n > List.length l], then it returns - the whole list [l]. Raise [Failure "take_prefix"] if [n < 0] or [n > - List.length l]. *) + order of occurrence as in [l]). If [n > List.length l], then it returns + the whole list [l]. + Raises [Failure "take_prefix"] if [n < 0] or [n > List.length l]. *) value take_prefix n l = try fst (split n l) with [ Failure _ -> failwith "take_prefix" ] ; @@ -135,13 +134,11 @@ value explode s = ; (* [implode: list char -> string] *) -value implode l = - let result = Bytes.create (List.length l) in - let rec loop i = fun - [ [] -> result - | [ c :: cs ] -> do { Bytes.set result i c; loop (i + 1) cs } - ] in - loop 0 l +value implode chars = + let buf = Buffer.create 16 in do + { List.iter (Buffer.add_char buf) chars + ; Buffer.contents buf + } ; (* Process a list with using [pr] for elements and [sep] for separator *)