Commit 227b4cd9 authored by Gérard Huet's avatar Gérard Huet

New version 3.23 [2020-05-20]

parent af3a5d70
This diff is collapsed.
......@@ -5,7 +5,7 @@
# Gérard Huet & Pawan Goyal #
# #
############################################################################
# Makefile of Sanskrit Heritage Software 15-02-2020 Copyright INRIA 2020 #
# Makefile of Sanskrit Heritage Software 20-05-2020 Copyright INRIA 2020 #
############################################################################
# Prerequisites: Ocaml 4.07 and Camlp4 preprocessor
......@@ -31,7 +31,7 @@ VPATH=$(ZEN)
# CORE package - utilities, transducers, sanskrit and french lexers, dico spec
CORE=$(DISTR_CORE) paths.ml data.ml
DISTR_CORE = control.ml version.ml date.ml canon.ml min_lexer.ml \
transduction.ml encode.ml order.ml padapatha.ml skt_lexer.ml \
transduction.ml encode.ml order.ml chunker.ml skt_lexer.ml \
sanskrit.mli sanskrit.ml test_stamp.ml dir.mli dir.ml
# GRAM package - phonetics, morphology, segmentation and tagging engines
......@@ -77,7 +77,7 @@ SOURCES=$(ENGINE) $(DEBUG) $(INACTIVE)
CORENATIVES=list2.cmx gen.cmx paths.cmx version.cmx word.cmx canon.cmx \
min_lexer.cmx phonetics.cmx transduction.cmx encode.cmx skt_lexer.cmx \
padapatha.cmx sanskrit.cmx order.cmx data.cmx
chunker.cmx sanskrit.cmx order.cmx data.cmx
ANNOTFLAGS = -annot -bin-annot
......@@ -215,7 +215,7 @@ cgi.cmx sandhier.cmx -o sandhier
reader: reader.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx version.cmx \
date.cmx control.cmx word.cmx canon.cmx min_lexer.cmx phonetics.cmx \
transduction.cmx encode.cmx skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
transduction.cmx encode.cmx skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.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 cgi.cmx segmenter.cmx \
......@@ -228,7 +228,7 @@ LEGACY=
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 min_lexer.cmx phonetics.cmx \
transduction.cmx encode.cmx skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
transduction.cmx encode.cmx skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.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 \
......@@ -240,7 +240,7 @@ save_corpus_params.cmx dir.cmx corpus.cmx web_corpus.cmx interface.cmx \
user_aid: user_aid.cmx
$(LINK) str.cmxa list2.cmx gen.cmx paths.cmx version.cmx date.cmx \
control.cmx word.cmx canon.cmx deco.cmx min_lexer.cmx phonetics.cmx \
transduction.cmx encode.cmx skt_lexer.cmx padapatha.cmx sanskrit.cmx html.cmx \
transduction.cmx encode.cmx skt_lexer.cmx chunker.cmx sanskrit.cmx html.cmx \
SCLpaths.cmx data.cmx web.cmx naming.cmx morpho_string.cmx morpho.cmx order.cmx \
chapters.cmx morpho_html.cmx bank_lexer.cmx cgi.cmx phases.cmx checkpoints.cmx \
user_aid.cmx -o user_aid
......@@ -248,7 +248,7 @@ user_aid.cmx -o user_aid
parser: parser.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx version.cmx \
date.cmx control.cmx word.cmx canon.cmx min_lexer.cmx phonetics.cmx \
transduction.cmx encode.cmx skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
transduction.cmx encode.cmx skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.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 \
......@@ -260,7 +260,7 @@ corpus_manager: corpus_manager_cgi.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx \
version.cmx date.cmx control.cmx word.cmx canon.cmx \
min_lexer.cmx phonetics.cmx transduction.cmx encode.cmx \
skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.cmx \
web.cmx naming.cmx morpho_string.cmx morpho.cmx \
load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \
......@@ -276,7 +276,7 @@ save_corpus: save_corpus_cgi.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx \
version.cmx date.cmx control.cmx word.cmx canon.cmx \
min_lexer.cmx phonetics.cmx transduction.cmx encode.cmx \
skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.cmx \
web.cmx naming.cmx morpho_string.cmx morpho.cmx \
load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \
......@@ -292,7 +292,7 @@ mkdir_corpus: mkdir_corpus_cgi.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx \
version.cmx date.cmx control.cmx word.cmx canon.cmx \
min_lexer.cmx phonetics.cmx transduction.cmx encode.cmx \
skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.cmx \
web.cmx naming.cmx morpho_string.cmx morpho.cmx \
load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \
......@@ -308,7 +308,7 @@ mk_corpus: mk_corpus.cmx
$(LINK) str.cmxa unix.cmxa list2.cmx gen.cmx paths.cmx \
version.cmx date.cmx control.cmx word.cmx canon.cmx \
min_lexer.cmx phonetics.cmx transduction.cmx encode.cmx \
skt_lexer.cmx padapatha.cmx sanskrit.cmx deco.cmx \
skt_lexer.cmx chunker.cmx sanskrit.cmx deco.cmx \
lexmap.cmx inflected.cmx html.cmx SCLpaths.cmx data.cmx \
web.cmx naming.cmx morpho_string.cmx morpho.cmx \
load_transducers.cmx pada.cmx phases.cmx dispatcher.cmx \
......@@ -380,14 +380,14 @@ tagger1: tagger1.cmx
# cd $(DATA) && $(MAKE) transn.rem
$(LINK) list2.cmx gen.cmx paths.cmx version.cmx \
word.cmx canon.cmx min_lexer.cmx phonetics.cmx transduction.cmx \
skt_lexer.cmx deco.cmx sandhi.cmx padapatha.cmx sanskrit.cmx naming.cmx \
skt_lexer.cmx deco.cmx sandhi.cmx chunker.cmx sanskrit.cmx naming.cmx \
morpho.cmx segmenter1.cmx tagger1.cmx -o tagger1
# enter in ocaml toplevel '#use "debug.ml";' in order to debug
# adapt to your need in modules
# NB best used by first hiding all .mli, make clean, make depend
debug: gen.cmo version.cmo date.cmo word.cmo min_lexer.cmo order.cmo \
canon.cmo phonetics.cmo min_lexer.cmo transduction.cmo padapatha.cmo \
canon.cmo phonetics.cmo min_lexer.cmo transduction.cmo chunker.cmo \
sanskrit.cmo sandhi.cmo int_sandhi.cmo share.cmo trie.cmo deco.cmo \
skt_lexer.cmo encode.cmo order.cmo lexmap.cmo inflected.cmo parts.cmo \
verbs.cmo morpho_html.cmo cgi.cmo html.cmo web.cmo indexer.cmo declension.cmo
......
......@@ -1060,8 +1060,7 @@ value build_mas_zvan stem entry = (* \Pan{6,4,133} *)
]
;
value build_athin stem entry = (* pathin, supathin, mathin *)
let decline case suff = (case,fix stem suff)
and bare = fix stem "thi" in
let decline case suff = (case,fix stem suff) in (* stem = pa for pathin *)
enter entry
[ Declined Noun Mas
[ (Singular,
......@@ -1095,8 +1094,8 @@ value build_athin stem entry = (* pathin, supathin, mathin *)
; decline Loc "thisu"
])
]
; Bare Noun bare
; Avyayaf bare
; Bare Noun (fix stem "thi") (* pathi- *)
; Avyayaf (fix stem "tham") (* upapatham *)
]
;
value build_ribhuksin stem entry =
......@@ -5140,7 +5139,7 @@ value compute_nouns_stem_form e stem d p =
| _ -> build_an Mas r2 e (* raajan *)
]
| [ 3 :: r2 ] (* -in *) -> match r2 with
[ [ 33 :: r3 ] (* -thin *)-> match r3 with
[ [ 33 :: r3 ] (* -thin *) -> match r3 with
[ [ 1 :: [ 37 :: _ ] ] (* -pathin *) (* \Pan{7,1,85} *)
| [ 1 :: [ 41 :: _ ] ] (* -mathin *)
-> build_athin r3 e
......@@ -5773,7 +5772,7 @@ value iic_avya =
; "apa"
(*; "aa" -- overgenerates *)
; "iti"
; "upa" (* upakumbham upak.r.s.naat upagafgam upanadam upaagni *)
; "upa" (* upakumbham upak.r.s.naat upagafgam upanadam upaagni upapatham *)
; "upari" (* uparibhuumi *)
; "dus" (* durbhik.sam *)
; "nis" (* nirmak.sikam *)
......@@ -5987,6 +5986,12 @@ value compute_extra iic_only_stems = do
; enter1 "viz#2" (* Vedic Whitney§218a *) decl
where decl = Declined Noun Fem [ (Plural,[ (Loc,code "vik.su") ]) ]
; iter enter_iiy iic_avya
; enter1 "tva" (* skipped in dico *) decl
where decl = Declined Noun Mas [ (Singular,[ (Nom,code "tvas") ]) ]
; enter1 "tva" decl
where decl = Declined Noun Mas [ (Dual,[ (Nom,code "tvau") ]) ]
; enter1 "tva" decl
where decl = Declined Noun Mas [ (Plural,[ (Nom,code "tve") ]) ]
; enter1 "giri" (Avyayaf (code "giram")) (* \Pan{5,4,112} upagiram *)
; iter enter_gati gatis
; tasil_extra ()
......
......@@ -96,7 +96,7 @@ value voices_of = fun
| "kuu" | "k.rp" | "k.lp" (* but Henry: {cak.lpur} "ils s'arrangèrent" *)
| "knuu" | "klav" | "k.sad" | "galbh" | "gur" | "glah"
| "gha.t" | "jabh#1" | "ju.s#1" | "j.rmbh" | ".damb" | ".dii" | "tandr"
| "tij" | "trap" | "trai" | "tvar" | "dak.s" | "day" | "diik.s" | "diip"
| "tij" | "trap" | "trai" | "tvar" | "dak.s" | "day" | "diik.s"
| "d.r#1" | "dhii#1" | "dhuk.s" | "pa.n" | "pad#1" | "pi~nj"
| "pyaa" | "prath" | "pru" | "plu" | "ba.mh" | "baadh" | "bha.n.d" | "bhand"
| "bhaa.s" | "bhraaj" | "ma.mh" | "man" | "mand#1" | "yat#1"
......@@ -111,6 +111,7 @@ value voices_of = fun
(*| "gaah" Ubha needed for gaahet epics *)
(*| "k.sam" Ubha needed for k.samati epics *)
(*| "yudh1" Ubha needed for yudhya BhG *)
(*| "diip" Ubha needed for epics *)
(* DRP restriction: "dyut1" *)
-> Atma (* "deponent" verbs: middle only *)
| _ -> Ubha (* default *)
......@@ -119,11 +120,11 @@ value voices_of = fun
| ".rj" | "ka.n.d" | "kal" | "ka.s" | "ku.t.t" | "ku.n.d" | "k.r#1" | "k.r#2"
| "k.r.s" | "kram" | "krii#1" | "krii.d" | "k.san" | "k.sap#1" | "k.sam"
| "k.sal" | "k.sip" | "k.sud" | "k.s.nu" | "khan" | "gam" | "garh"
| "gaah" | "guh" | "g.rr#1" | "gras" | "gha.t.t"
| "cat" | "carc" | "ci" | "cint" | "cud" | "ce.s.t" | "cyu" | "chad#1"
| "chand" | "chid#1" | "jan" | "juu" | "j~naa#1" | "jyaa#1" | "jyut" | "ta.d"
| "tan#1" | "tan#2" | "tap" | "tud#1" | "tul" | "t.rd" | "traa" | "daa#1"
| "daaz#1" | "diz#1" | "dih" | "duh#1" | "dev#1" | "draa#2" | "dvi.s#1"
| "gaah" | "guh" | "g.rr#1" | "gras" | "gha.t.t" | "cat" | "carc"
| "ci" | "cint" | "cud" | "ce.s.t" | "cyu" | "chad#1" | "chand" | "chid#1"
| "jan" | "juu" | "j~naa#1" | "jyaa#1" | "jyut" | "ta.d" | "tan#1" | "tan#2"
| "tap" | "tud#1" | "tul" | "t.rd" | "traa" | "daa#1" | "daaz#1" | "diz#1"
| "dih" | "diip" | "duh#1" | "dev#1" | "draa#2" | "dvi.s#1"
| "dhaa#1" | "dhaav#1" | "dhaav#2" | "dhuu#1" | "dh.r" | "dhva.ms" | "nah"
| "naath" | "nij" | "nii#1" | "nud" | "pac" | "paz" | "pa.th" | "pii.d"
| "pu.s#1" | "puu#1" | "puuj" | "puuy" | "p.rth" | "prii" | "pru.s#1"
......
(**************************************************************************)
(* *)
(* The Sanskrit Heritage Platform *)
(* *)
(* Gérard Huet & Pawan Goyal *)
(* *)
(* ©2020 Institut National de Recherche en Informatique et en Automatique *)
(**************************************************************************)
(* Chunking mechanism for guessing partial padapatha form from list of chunks *)
(* Essential for maximum parallelism in segmentation *)
value sanskrit_chunk encode s =
match encode s with (* avagraha reverts to a *)
[ [ -1 :: l ] -> [ 1 :: l ] (* only initial avagraha reverts to a *)
| x -> x
]
;
(* Preprocessing of corpus to prepare padapatha form from list of chunks *)
(* This is extremely important from the segmenter complexity point of view *)
(* Since it takes hints at parallel treatment from non-ambiguous blanks. *)
exception Hiatus
;
exception Glue
;
(* We raise Glue below when there are multiple ways to obtain the current break,
in which case we do not profit of the sandhi hint. Furthermore, this is
incomplete, notably when one of the sandhied forms is a vocative. *)
(* Chunk [w] is adjusted for padapatha in view of next character [c] *)
(* No attempt is made to change [c] and thus tacchrutvaa is not chunkable. *)
(* This function defines the maximal separability of devanaagarii into chunks
but is not always able to go as far as creating the full padapaa.tha *)
value adjust c w = match Word.mirror w with
[ [] -> failwith "adjust"
| [ last :: rest ] -> match last with
[ 14 (* .m *) -> Word.mirror [ 41 (* m *) :: rest ] (* revert .m to m *)
(* note: .m coming from sandhi of n is followed by sibilant
and chunking is allowed only after this sibilant *)
| 11 (* ai *) when c = 43 (* r *) -> raise Hiatus
(* For ai.h+r -> ai r Whitney§179 en fait, toute voyelle longue *)
(* | 10 | 13 No Hyatus: te rasasaarasafgrahavidhim but es-r -> er missed *)
| 12 (* o *) -> if rest = [ 40 ] (* bh from bhos -> bho *) then
Encode.code_string "bhos" (* "bho raama" "bho bhos" *)
else if rest = [ 49; 1 ] (* aho *) then
Encode.code_string "aho" (* "aho raama" *)
else if Phonetics.turns_visarg_to_o c || c=1
(* zivoham must be entered as zivo'ham (avagraha) *)
then Word.mirror [ 16 :: [ 1 :: rest ] ]
(* restore visarga, assuming original a.h form *)
(* This may miss hiatus os + rx -> o rx *)
else w
| 1 (* a *) -> if c=1 then w else
if Phonetics.vowel c then raise Hiatus else w
| 2 (* aa *) -> if Phonetics.vowel c then raise Hiatus else
if Phonetics.elides_visarg_aa c then raise Hiatus else
w (* Hiatus except c surd unaspirate ? *)
| 4 (* ii *) (* possible visarga vanishes *)
| 6 (* uu *) -> if c=43 (* r *) then raise Hiatus else w
(* next 4 rules attempt to revert [last] to 'd' in view of [c] *)
| 34 (* d *) -> if c=35 (* dh *) then raise Glue else
if Phonetics.is_voiced c
then Word.mirror [ 32 :: rest ] (* d -> t *)
else w
| 24 (* j *) -> if Phonetics.turns_t_to_j c (* tat+jara -> tajjara *)
then Word.mirror [ 32 :: rest ] (* j -> t *)
else w
| 26 (* ~n *) -> match rest with
[ [ 26 (* ~n *) :: ante ] -> match ante with
(* optional doubling of ~n in front of vowel *)
[ [ v :: _ ] -> if Phonetics.short_vowel v && Phonetics.vowel c
then Word.mirror rest
else failwith "padapatha"
| _ -> failwith "padapatha"
]
| _ -> if c=23 (* ch could come from ch or z *)
then raise Glue
else if Phonetics.turns_n_to_palatal c
(* taan+zaastravimukhaan -> taa~nzaastravimukhaan *)
then Word.mirror [ 36 (* n *) :: rest ] (* n -> ~n *)
else w
]
| 29 (* .d *) -> if c=30 (* .dh *) then raise Glue else
if Phonetics.is_voiced c
then Word.mirror [ 27 :: rest ] (* .d -> .t *)
else w
| 39 (* b *) -> if c=40 (* bh *) then raise Glue else
if Phonetics.is_voiced c
then Word.mirror [ 37 :: rest ] (* b -> p *)
else w
| 19 (* g *) -> if c=20 (* gh *) then raise Glue else
if Phonetics.is_voiced c (* vaak+vazya *)
then Word.mirror [ 17 :: rest ] (* g -> k *)
else w
| 36 (* n *) -> match rest with
[ [ 36 (* n *) :: ante ] -> match ante with
(* optional doubling of n in front of vowel *)
[ [ v :: _ ] -> if Phonetics.short_vowel v && Phonetics.vowel c
then Word.mirror rest (* gacchann eva *)
else w
| _ -> failwith "padapatha"
]
| _ -> if c=36 (* n *) || c=41 (* m *)
then raise Glue (* since d|m->nn and n|m -> nm *)
(* Word.mirror [ 32 :: rest ] (* n -> t *) *)
(* incompleteness: raajan naasiin vocatif raajan *)
else w
]
| 22 (* c *) -> if c=22 then Word.mirror [ 32 :: rest ] (* c -> t *)
else if c=23 (* ch could come from ch or z *)
then raise Glue else w
| 44 (* l *) -> if c=last
then Word.mirror [ 32 :: rest ] (* l -> t *)
else w
| 21 (* f *) -> match rest with
[ [ 21 (* f *) :: ante ] -> match ante with
(* optional doubling of f in front of vowel *)
[ [ v :: _ ] -> if Phonetics.short_vowel v && Phonetics.vowel c
then Word.mirror rest
else failwith "padapatha"
| _ -> failwith "padapatha"
]
| _ -> if c=41 (* m *) (* vaak+mayi *)
then Word.mirror [ 17 :: rest ] (* f -> k *)
else w
]
(* NB if last is y, r or v and c is vowel, then it may come from resp.
{i,ii}, {.r,.rr}, {u,uu} and this choice means that we cannot make
a chunk break here *)
| 42 (* y *) | 45 (* v *) -> if Phonetics.vowel c then raise Glue
else w (* will fail *)
| 43 (* r *) -> if Phonetics.turns_visarg_to_o c || Phonetics.vowel c
then Word.mirror [ 16 :: rest ] (* visarg restored *)
else w (* pb punar pitar etc *)
| 46 (* z *) -> match rest with
[ [ 14 (* .m *) :: b ] -> if c=22 || c=23 (* c ch *) then
Word.mirror [ 36 (* n *) :: b ]
else w
| [ 26 (* ~n *) :: _ ] -> if c=46 (* z *) then
Word.mirror [ 36 (* n *) :: rest ]
else w
(* c=23 (* ch *) could come from z *)
| _ -> if c=22 || c=23 (* c ch *) then
Word.mirror [ 16 (* .h *) :: rest ] else w
]
| 47 (* .s *) -> match rest with
[ [ 14 (* .m *) :: b ] -> if c=27 || c=28 (* .t .th *) then
Word.mirror [ 36 (* n *) :: b ] else w
| _ -> w
]
| 48 (* s *) -> match rest with
[ [ 14 (* .m *) :: b ] -> if c=32 || c=33 (* t th *) then
Word.mirror [ 36 (* n *) :: b ] else w
| _ -> if c=32 || c=33 (* t th *) then
raise Glue else w
]
| _ -> w
]
]
;
(* Called from [Sanskrit.read_processed_skt_stream] for use in [read_sanskrit]
with argument [read_chunk=sanskrit_chunk encode] *)
value padapatha read_chunk l = (* l is list of chunks separated by blanks *)
(* returns padapatha as list of forms in terminal sandhi *)
let rec pad_rec = fun (* returns (c,l) with c first char of first pada in l *)
[ [] -> (-1,[])
| [ chk :: chks ] ->
let (c,padas) = pad_rec chks
and w = read_chunk chk (* initial avagraha reverts to a *) in
(List.hd w (* next c *),
try let pada = if c=(-1) then w (* last chunk *)
else adjust c w in
[ pada :: padas ]
with
[ Hiatus -> match padas with
[ [] -> failwith "padapatha"
| [ p :: lp ] -> let conc = w @ [ 50 :: p ] in (* [w_p] *)
[ conc :: lp ] (* hiatus indicates a word boundary *)
]
| Glue -> match padas with
[ [] -> failwith "padapatha"
| [ p :: lp ] -> let conc = w @ p in
[ conc :: lp ] (* we lose the boundary indication *)
]
])
] in
let (_,padas) = pad_rec l in padas
;
......@@ -8,4 +8,4 @@
(**************************************************************************)
(* Generated by make version - see main Makefile *)
value version="3.23" and version_date="2020-05-06";
value version="3.23" and version_date="2020-05-21";
......@@ -243,7 +243,7 @@ UTIL=ML/Makefile $(ML_COPYRIGHT) ML/.ocamlinit ML/.depend
# CORE package - utilities, transducers, sanskrit and french lexers, dico spec
DISTR_CORE=ML/control.ml ML/dico.mli ML/version.ml ML/date.ml ML/install.ml \
ML/canon.ml ML/transduction.ml ML/encode.ml ML/order.ml ML/padapatha.ml \
ML/canon.ml ML/transduction.ml ML/encode.ml ML/order.ml ML/chunker.ml \
ML/sanskrit.mli ML/sanskrit.ml ML/skt_lexer.ml \
ML/dir.mli ML/dir.ml
CORE=$(DISTR_CORE) ML/paths.ml ML/data.ml
......
VERSION='3.23'
DATE='2020-05-06'
DATE='2020-05-21'
......@@ -375,6 +375,7 @@ française pour débuter l'apprentissage du sanskrit?</a><br>
<a href="http://www.sai.uni-heidelberg.de/">Südasien-Institut, Heidelberg</a><br>
<a href="http://www.sai.uni-heidelberg.de/abt/IND/sarasvati/sarasvati.php">Saraswati Sanskrit prize, Heidelberg</a><br>
<a href="http://www.indologie.uni-halle.de/">Institut für Indologie und S&ouml;dasienwiessenschaften, Martin-Luther-Universit&auml;t, Halle-Wittenberg</a><br>
<a href="http://www.sards.uni-halle.de/?do=about">South Asia Research Documentation Services 3 (SARDS3), Martin-Luther-Universit&auml;t, Halle-Wittenberg</a><br>
<a href="http://www.uni-koeln.de/phil-fak/indologie/">Institut für Indologie und Tamilistik, Universit&auml;t zu K&ouml;ln</a><br>
<a href="http://www.uni-leipzig.de/~indzaw/">Institut für Indologie und Zentralasienwissenschaften, Universit&auml;t Leipzig</a><br>
<a href="http://www.fu-berlin.de/einrichtungen/fachbereiche/gesch-kultur/altwiss/sprachen_sa.html">Institut für Sprachen und Kulturen Südasiens, Freie Universit&auml;t Berlin</a><br>
......@@ -546,15 +547,14 @@ page at University of Alberta</a><br>
<a href="http://asnic.utexas.edu/asnic/olivelle/index.htm">Patrick Olivelle's page, Department of Asian Studies, University of Texas at Austin</a><br>
<a href="http://alexissanderson.com/default.aspx">Alexis Sanderson's page</a><br>
<!-- Obsolete <a href="http://faculty.orinst.ox.ac.uk/index2.php?member=cminkowski">Christopher Minkowski's page</a><br> -->
<a href="http://www.orinst.ox.ac.uk/staff/isa/cminkowski.html">Christopher
Minkowski's page at Oxford</a><br>
<a href="http://www.orinst.ox.ac.uk/staff/isa/cminkowski.html">Christopher Minkowski's page at Oxford</a><br>
<a href="http://users.ox.ac.uk/~ball2185/Minkowski.Inaugural.pdf">His inaugural lecture for the Boden Chair</a><br>
<a href="https://www.universiteitleiden.nl/en/staffmembers/sasha-lubotsky#tab-1">A. M. Lubotsky's page at Universiteit Leiden</a><br>
<a href="https://www.universiteitleiden.nl/en/staffmembers/peter-bisschop#tab-1">Peter Bisschop's page at Universiteit Leiden</a><br>
<a href="http://www.detlef108.de/">Detlef Eichler's personal page</a><br>
<a href="http://www.linguistics.uiuc.edu/hhhock/">Hans Henrich Hock's home page at University of Illinois</a><br>
<a href="http://user.phil-fak.uni-duesseldorf.de/~petersen/">Wiebke Petersen's
home page at Heinrich-Heine-University Düsseldorf</a><br>
<a href="https://uni-halle.academia.edu/WalterSlaje">Walter Slaje's page at Academia.org</a><br>
<a href="http://user.phil-fak.uni-duesseldorf.de/~petersen/">Wiebke Petersen's home page at Heinrich-Heine-University Düsseldorf</a><br>
<a href="http://sseas.berkeley.edu/people/faculty/robert-p-goldman">Robert P. Goldman, Department of South and Southeast Asian Studies, University of California at Berkeley</a><br>
<a href="http://sseas.berkeley.edu/people/faculty/sally-j-sutherland-goldman">Sally J. Sutherland Goldman, Department of South and Southeast Asian Studies, University of California at Berkeley</a><br>
<a href="http://sseas.berkeley.edu/people/faculty/alexander-von-rospatt">Alexander von Rospatt, Department of South and Southeast Asian Studies, University of California at Berkeley</a><br>
......@@ -564,8 +564,7 @@ home page at Heinrich-Heine-University Düsseldorf</a><br>
<a href="http://salc.uchicago.edu/faculty/tubb">Gary Tubb's home page at University of Chicago</a><br>
<a href="http://divinity.uchicago.edu/steven-collins">Steven Collins's home page at University of Chicago</a><br>
<a href="http://yigalbronner.huji.ac.il">Yigal Bronner's home page at The Hebrew University of Jerusalem</a><br>
<a href="http://home.wlu.edu/~lubint/">Timothy Lubin's home page
at Washington and Lee University of Chicago</a><br>
<a href="http://home.wlu.edu/~lubint/">Timothy Lubin's home page at Washington and Lee University of Chicago</a><br>
<a href="http://www.bhu.ac.in/Sanskrit/prof.Gopabandhu%20mishra.html">Pr Gopabandhu Mishra, Department of Sanskrit, Banaras Hindu University, Varanasi</a><br>
<a href="http://www.soas.ac.uk/staff/staffinfo.cfm?contactid=196">Renate Sohnen-Thieme's home page at SOAS</a><br>
<a href="http://www.cs.uky.edu/~gstump/">Gregory T. Stump's home page at University of Kentucky</a><br>
......@@ -959,6 +958,7 @@ Sanskrit Book Fair: The Hindu, 06-01-11</a><br>
<a href="https://indianexpress.com/article/education/sanskrit-scholar-k-s-kannan-is-chair-professor-at-iit-madras-5815224/">Sanskrit scholar K S Kannan is chair professor at IIT-Madras; Indian Express, July 04 2019</a><br>
<a href="https://www.hindustantimes.com/india-news/sanskrit-made-mandatory-in-all-uttarakhand-schools-from-class-three-to-eight/story-gOK0vlBeRRvdVBO2alDd6L.html">Sanskrit made mandatory in all Uttarakhand schools from class three to eight; Hindustantimes, Sep 17 2019</a><br>
<a href="https://www.hindustantimes.com/india-news/phd-in-sanskrit-is-2nd-most-popular-option-for-research-after-hindi-report/story-6u4mJt2j63VwKzD80yoJFP.html">PhD in Sanskrit second most popular option among languages after Hindi: Report; Hindustantimes, Sep 21 2019</a><br>
<a href="https://www.thehindu.com/entertainment/art/panini-worlds-first-informatician/article30347920.ece">Panini — world’s first informatician; The Hindu, Dec 19 2019</a><br>
<a href="https://www.newindianexpress.com/nation/2020/jan/01/sanskrit-speaking-to-be-compulsory-at-uttarakhand-academy-as-state-mulls-channel-in-language-2083663.html">Sanskrit speaking to be compulsory at Uttarakhand academy as state mulls channel in language; Indian Express, Jan 01 2020</a><br>
<a href="https://www.financialexpress.com/lifestyle/after-yoga-its-now-the-turn-of-sanskrit-to-take-the-global-state/1835166/">After Yoga, it’s now the turn of Sanskrit to take the global state; Financial Express, Jan 26 2020</a><br>
......@@ -994,6 +994,7 @@ and Roadmap for the Development of Sanskrit - Ten year perspective Plan (2016)</
<a href="Samskrita Bharati Sanskrit Lessons">Samskrita Bharati Sanskrit Lessons</a><br>
<a href="https://www.youtube.com/channel/UCNRBEtL5Xd3AuVqYuI32hmg/playlists?disable_polymer=1">Rashtriya Sanskrit Sansthan Spoken Sanskrit Lessons</a><br>
<a href="https://www.youtube.com/channel/UCfRauUnvkjE-kUulFXCUMyg/videos?disable_polymer=1">Abhinav Seetharaman’s Spoken Sanskrit Series</a><br>
<a href="https://www.youtube.com/c/thesanskritchannel">The Sanskrit Channel</a><br>
<a href="https://www.youtube.com/playlist?list=PLAPrVB8wngPkOdZ29775LY6i0lzYxJtLH">Spoken Sanskrit Lessons - Basics by the Sanskrit Channel</a><br>
<a href="https://www.youtube.com/playlist?list=PLbRMhDVUMngfYG2GVf2bQnIgsI0Y923g3">Introduction to Basic Spoken Sanskrit by IIT Kharagpur in NPTEL</a><br>
<a href="https://www.youtube.com/playlist?list=PL2k_IFsbXOiWQIw1IIDimpW5xdbtxbnx4">IIM Bangalore 10-Day Spoken Sanskrit Workshop by Prof Mahadevan</a><br>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment