This is a version (not official) of the full grammar of Lojban. I intend to make many changes to it, some cosmetic, some not. Don't take the contents of this page too seriously for now. In zasni gerna cenba vreji I will try to keep a record of the changes as I make them. mi'e xorxes
; - GRAMMAR -
PUBLIC text <- intro-null NAI#* text-part-2 (!text-1 joik-jek)? text-1? faho# EOF?
intro-null <- spaces? su#* intro-si#
text-part-2 <- (CMENE#+ / indicators? free*)
SPACE intro-si# <- si#? SI#*
SPACE faho# <- (FAhO# dot-star)?
text-1 <- I# (jek / joik)? (stag? BO#)? free* text-1? / NIhO#+ su#* paragraphs? / paragraphs
paragraphs <- paragraph (NIhO#+ su#* paragraphs)?
paragraph <- (statement / fragment) (I# !jek !joik !joik-jek free* (statement / fragment)?)*
statement <- statement-1 / prenex statement
statement-1 <- statement-2 (I# joik-jek statement-2?)*
statement-2 <- statement-3 (I# (jek / joik)? stag? BO# statement-2)? / statement-3 (I# (jek / joik)? stag? BO#)?
statement-3 <- sentence / tag? TUhE# text-1 TUhU#? free*
fragment <- prenex / terms VAU#? free* / ek free* / gihek free* / quantifier / NA# !JA# free* / relative-clauses / links / linkargs
prenex <- terms ZOhU#
sentence <- (terms CU#? free*)? bridi-tail / bridi-tail
subsentence <- sentence / prenex subsentence
bridi-tail <- bridi-tail-1 (gihek stag? KE# bridi-tail KEhE#? free* tail-terms)?
bridi-tail-1 <- bridi-tail-2 (gihek !(stag? BO#) !(stag? KE#) free* bridi-tail-2 tail-terms)*
bridi-tail-2 <- bridi-tail-3 (gihek stag? BO# bridi-tail-2 tail-terms)?
bridi-tail-3 <- selbri tail-terms / gek-sentence
gek-sentence <- gek subsentence gik subsentence tail-terms / tag? KE# gek-sentence KEhE#? free* / NA# free* gek-sentence
tail-terms <- terms? VAU#? free*
terms <- terms-1+
terms-1 <- terms-2 (PEhE# joik-jek terms-2)*
terms-2 <- term (CEhE# term)*
term <- sumti / ( !gek (tag / FA#) (sumti / KU#? free*) ) / termset / NA# KU# free*
termset <- gek-termset / NUhI# gek terms NUhU#? free* gik terms NUhU#? free* / NUhI# terms NUhU#? free*
gek-termset <- gek terms-gik-terms
terms-gik-terms <- term (gik / terms-gik-terms) term
sumti <- sumti-1 (VUhO# relative-clauses)?
sumti-1 <- sumti-2 (joik-ek stag? KE# sumti KEhE#? free*)?
sumti-2 <- sumti-3 (joik-ek sumti-3)*
sumti-3 <- sumti-4 (joik-ek stag? BO# sumti-3)?
sumti-4 <- sumti-5 / gek sumti gik sumti-4
sumti-5 <- quantifier? sumti-6 relative-clauses? / quantifier selbri KU#? free* relative-clauses?
sumti-6 <- ZO# / ZOI# / LOhU# / lerfu-string !MOI# BOI#? free* / LU# text LIhU#? free* / (LAhE# / NAhE# BO#) relative-clauses? sumti LUhU#? free* / KOhA# / LA# relative-clauses? CMENE#+ / (LA# / LE#) sumti-tail KU#? free* / li#
li# <- LI# mex LOhO#? free*
sumti-tail <- (sumti-6 relative-clauses?)? sumti-tail-1 / relative-clauses sumti-tail-1
sumti-tail-1 <- selbri relative-clauses? / quantifier selbri relative-clauses? / quantifier sumti
relative-clauses <- relative-clause (ZIhE# relative-clause)*
relative-clause <- GOI# term GEhU#? free* / NOI# subsentence KUhO#? free*
selbri <- tag? selbri-1
selbri-1 <- selbri-2 / NA# free* selbri
selbri-2 <- selbri-3 (CO# selbri-2)?
selbri-3 <- selbri-4+
selbri-4 <- selbri-5 (joik-jek selbri-5 / joik stag? KE# selbri-3 KEhE#? free*)*
selbri-5 <- selbri-6 ((jek / joik) stag? BO# selbri-5)?
selbri-6 <- tanru-unit (BO# selbri-6)? / NAhE#? free* guhek selbri gik selbri-6
tanru-unit <- tanru-unit-1 (CEI# tanru-unit-1)*
tanru-unit-1 <- tanru-unit-2 linkargs?
tanru-unit-2 <- BRIVLA# / GOhA# RAhO#? free* / KE# selbri-3 KEhE#? free* / ME# (sumti / lerfu-string) MEhU#? free* MOI#? / (number / lerfu-string) MOI# / NUhA# mex-operator / SE# free* tanru-unit-2 / JAI# tag? tanru-unit-2 / NAhE# free* tanru-unit-2 / NU# NAI#? free* (joik-jek NU# NAI#? free*)* subsentence KEI#? free*
linkargs <- BE# term links? BEhO#? free*
links <- BEI# term links?
quantifier <- number !MOI# BOI#? free* / VEI# mex VEhO#? free*
mex <- mex-1 (operator mex-1)* / rp#
rp# <- FUhA# rp-expression
mex-1 <- mex-2 (BIhE# operator mex-1)?
mex-2 <- operand / mex-forethought
; This is just to make for clearer parse trees
mex-forethought <- PEhO#? free* operator fore-operands KUhE#? free*
fore-operands <- mex-2+
;li fu'a reboi ci pi'i voboi mu pi'i su'i reboi ci vu'u su'i du li rexa
;rp-expression <- rp-operand rp-operand operator
;rp-operand <- operand / rp-expression
; AKA (almost; this one allows a single operand; above does not.
;rp-expression <- rp-expression rp-expression operator / operand
; Right recursive version.
rp-expression <- operand rp-expression-tail
rp-expression-tail <- rp-expression operator rp-expression-tail / ()
operator <- operator-1 (joik-jek operator-1 / joik stag? KE# operator KEhE#? free*)*
operator-1 <- operator-2 / guhek operator-1 gik operator-2 / operator-2 (jek / joik) stag? BO# operator-1
operator-2 <- mex-operator / KE# operator KEhE#? free*
mex-operator <- SE# free* mex-operator / NAhE# free* mex-operator / MAhO# mex TEhU#? free* / NAhU# selbri TEhU#? free* / VUhU#
operand <- operand-1 (joik-ek stag? KE# operand KEhE#? free*)?
operand-1 <- operand-2 (joik-ek operand-2)*
operand-2 <- operand-3 (joik-ek stag? BO# operand-2)?
operand-3 <- quantifier / lerfu-string !MOI# BOI#? free* / NIhE# selbri TEhU#? free* / MOhE# sumti TEhU#? free* / JOhI# mex-2+ TEhU#? free* / gek operand gik operand-3 / (LAhE# / NAhE# BO#) operand LUhU#? free*
number <- PA# (PA# / lerfu-word)*
lerfu-string <- lerfu-word (PA# / lerfu-word)*
lerfu-word <- BY# / LAU# lerfu-word / TEI# lerfu-string FOI#
ek <- NA#? SE#? A# NAI#?
gihek <- NA#? SE#? GIhA# NAI#?
jek <- NA#? SE#? JA# NAI#?
joik <- SE#? JOI# NAI#? / interval / GAhO# interval GAhO#
interval <- SE#? BIhI# NAI#?
joik-ek <- joik free* / ek free*
joik-jek <- joik free* / jek free*
gek <- SE#? GA# NAI#? free* / joik GI# free* / stag gik
guhek <- SE#? GUhA# NAI#? free*
gik <- GI# NAI#? free*
tag <- tense-modal (joik-jek tense-modal)*
;;stag <- simple-tense-modal ((jek / joik) simple-tense-modal)*
stag <- simple-tense-modal ((jek / joik) simple-tense-modal)* / tense-modal (joik-jek tense-modal)*
tense-modal <- simple-tense-modal free* / FIhO# selbri FEhU#? free*
simple-tense-modal <- NAhE#? SE#? BAI# NAI#? KI#? / NAhE#? ( ((time space? / space time?) CAhA#) / (time space? / space time?) / CAhA# ) KI#? / KI# / CUhE#
time <- ZI# time-offset* (ZEhA# (PU# NAI#?)?)? interval-property* / ZI#? time-offset+ (ZEhA# (PU# NAI#?)?)? interval-property* / ZI#? time-offset* ZEhA# (PU# NAI#?)? interval-property* / ZI#? time-offset* (ZEhA# (PU# NAI#?)?)? interval-property+
time-offset <- PU# NAI#? ZI#?
space <- VA# space-offset* space-interval? (MOhI# space-offset)? / VA#? space-offset+ space-interval? (MOhI# space-offset)? / VA#? space-offset* space-interval (MOhI# space-offset)? / VA#? space-offset* space-interval? MOhI# space-offset
space-offset <- FAhA# NAI#? VA#?
space-interval <- (VEhA# / VIhA# / VEhA# VIhA#) (FAhA# NAI#?)? space-int-props / (VEhA# / VIhA# / VEhA# VIhA#) (FAhA# NAI#?)? / space-int-props
space-int-props <- (FEhE# interval-property)+
interval-property <- number ROI# NAI#? / TAhE# NAI#? / ZAhO# NAI#?
free <- SEI# (terms CU#? free*)? selbri SEhU#? / SOI# sumti sumti? SEhU#? / vocative relative-clauses? selbri relative-clauses? DOhU#? / vocative relative-clauses? CMENE#+ relative-clauses? DOhU#? / vocative sumti? DOhU#? / (number / lerfu-string) MAI# / TO# text TOI#? / xi#
xi# <- XI# (number / lerfu-string) BOI#? / XI# VEI# mex VEhO#?
vocative <- (COI# NAI#?)+ DOI# / (COI# NAI#?) (COI# NAI#?)* / DOI#
indicators <- FUhE#? indicator+
indicator <- ((UI# / CAI#) NAI#? / DAhO# / FUhO#) !BU#
; ****************
; Magic Words
; ****************
zei# <- pre# zei#-no-pre
zei#-no-pre <- pre-zei-bu (zei-tail? bu-tail)* zei-tail post# free*
zei#-no-SA <- pre-zei-bu-no-SA (zei-tail? bu-tail)* zei-tail
bu# <- pre# bu#-no-pre
bu#-no-pre <- pre-zei-bu (bu-tail? zei-tail)* bu-tail post#
bu#-no-SA <- pre-zei-bu-no-SA (bu-tail? zei-tail)* bu-tail
zei-tail <- (ZEI# any-word)+
bu-tail <- BU#+
pre-zei-bu <- (!BU# !ZEI# !SI# !SA# !SU# !FAhO# any-word-SA-handling) si#?
; LOhU-pre / ZO-pre / ZOI-pre / !ZEI# !BU# !FAhO# !SI# !SA# !SU# any-word-SA-handling si#?
pre-zei-bu-no-SA <- LOhU-pre / ZO-pre / ZOI-pre / !ZEI# !BU# !FAhO# !SI# !SA# !SU# any-word si#?
post# <- spaces? si#? !ZEI# !BU# indicators*
pre# <- BAhE#?
any-word-SA-handling <- BRIVLA-pre / known-cmavo-SA / CMAVO-pre / CMENE-pre
known-cmavo-SA <- A-pre / BAI-pre / BAhE-pre / BE-pre / BEI-pre / BEhO-pre / BIhE-pre / BIhI-pre / BO-pre / BOI-pre / BU-pre / BY-pre / CAI-pre / CAhA-pre / CEI-pre / CEhE-pre / CO-pre / COI-pre / CU-pre / CUhE-pre / DAhO-pre / DOI-pre / DOhU-pre / FA-pre / FAhA-pre / FEhE-pre / FEhU-pre / FIhO-pre / FOI-pre / FUhA-pre / FUhE-pre / FUhO-pre / GA-pre / GAhO-pre / GEhU-pre / GI-pre / GIhA-pre / GOI-pre / GOhA-pre / GUhA-pre / I-pre / JA-pre / JAI-pre / JOI-pre / JOhI-pre / KE-pre / KEI-pre / KEhE-pre / KI-pre / KOhA-pre / KU-pre / KUhE-pre / KUhO-pre / LA-pre / LAU-pre / LAhE-pre / LE-pre / LEhU-pre / LI-pre / LIhU-pre / LOhO-pre / LOhU-pre / LU-pre / LUhU-pre / MAI-pre / MAhO-pre / ME-pre / MEhU-pre / MOI-pre / MOhE-pre / MOhI-pre / NA-pre / NAI-pre / NAhE-pre / NAhU-pre / NIhE-pre / NIhO-pre / NOI-pre / NU-pre / NUhA-pre / NUhI-pre / NUhU-pre / PA-pre / PEhE-pre / PEhO-pre / PU-pre / RAhO-pre / ROI-pre / SA-pre / SE-pre / SEI-pre / SEhU-pre / SI# / SOI-pre / SU-pre / TAhE-pre / TEI-pre / TEhU-pre / TO-pre / TOI-pre / TUhE-pre / TUhU-pre / UI-pre / VA-pre / VAU-pre / VEI-pre / VEhA-pre / VEhO-pre / VIhA-pre / VUhO-pre / VUhU-pre / XI-pre / ZAhO-pre / ZEI-pre / ZEhA-pre / ZI-pre / ZIhE-pre / ZO-pre / ZOI-pre / ZOhU-pre
su# <- (erasable# / su-word)* SU#
si# <- ((erasable# / si-word / SA#) si#? SI#)+
erasable# <- bu#-no-pre !ZEI# !BU# / zei#-no-pre !ZEI# !BU#
sa-word <- pre-zei-bu
si-word <- pre-zei-bu
su-word <- !NIhO# !LU# !TUhE# !TO# !SU# !FAhO# any-word-SA-handling
; - SELMAHO -
BRIVLA# <- BRIVLA-pre BRIVLA-post / zei#
BRIVLA-pre <- pre# BRIVLA spaces?
BRIVLA-post <- post# free*
CMENE# <- CMENE-pre CMENE-post
CMENE-pre <- pre# CMENE spaces?
CMENE-post <- post# free*
CMAVO# <- CMAVO-pre CMAVO-post
CMAVO-pre <- pre# CMAVO spaces?
CMAVO-post <- post#
; eks; basic afterthought logical connectives
A# <- A-pre A-post
A-pre <- pre# A spaces?
A-post <- post#
; modal operators
BAI# <- BAI-pre BAI-post
BAI-pre <- pre# BAI spaces?
BAI-post <- post#
; next word intensifier
BAhE# <- (BAhE-pre BAhE-post)+
BAhE-pre <- BAhE spaces?
BAhE-post <- si#? !ZEI# !BU#
; sumti link to attach sumti to a selbri
BE# <- BE-pre BE-post
BE-pre <- pre# BE spaces?
BE-post <- post# free*
; multiple sumti separator between BE, BEI
BEI# <- BEI-pre BEI-post
BEI-pre <- pre# BEI spaces?
BEI-post <- post# free*
; terminates BEBEI specified descriptors
BEhO# <- BEhO-pre BEhO-post
BEhO-pre <- pre# BEhO spaces?
BEhO-post <- post#
; prefix for high-priority MEX operator
BIhE# <- BIhE-pre BIhE-post
BIhE-pre <- pre# BIhE spaces?
BIhE-post <- post# free*
; interval component of JOI
BIhI# <- BIhI-pre BIhI-post
BIhI-pre <- pre# BIhI spaces?
BIhI-post <- post#
; joins two units with shortest scope
BO# <- BO-pre BO-post
BO-pre <- pre# BO spaces?
BO-post <- post# free*
; number or lerfu-string terminator
BOI# <- BOI-pre BOI-post
BOI-pre <- pre# BOI spaces?
BOI-post <- post#
; turns any word into a BY lerfu word
BU# <- BU-pre BU-post
BU#-no-SA <- BU-pre-no-SA BU BU-post
BU-pre <- pre# BU spaces?
BU-pre-no-SA <- pre#
BU-post <- spaces?
; individual lerfu words
BY# <- BY-pre BY-post / bu#
BY-pre <- pre# BY spaces?
BY-post <- post#
; specifies actualitypotentiality of tense
CAhA# <- CAhA-pre CAhA-post
CAhA-pre <- pre# CAhA spaces?
CAhA-post <- post#
; afterthought intensity marker
CAI# <- CAI-pre CAI-post
CAI-pre <- pre# CAI spaces?
CAI-post <- post#
; pro-bridi assignment operator
CEI# <- CEI-pre CEI-post
CEI-pre <- pre# CEI spaces?
CEI-post <- post# free*
; afterthought term list connective
CEhE# <- CEhE-pre CEhE-post
CEhE-pre <- pre# CEhE spaces?
CEhE-post <- post# free*
CO# <- CO-pre CO-post
CO-pre <- pre# CO spaces?
CO-post <- post# free*
COI# <- COI-pre COI-post
COI-pre <- pre# COI spaces?
COI-post <- post#
; vocative marker permitted inside names; must
; always be followed by pause or DOI
; separator between head sumti and selbri
CU# <- CU-pre CU-post
CU-pre <- pre# CU spaces?
CU-post <- post#
; tensemodal question
CUhE# <- CUhE-pre CUhE-post
CUhE-pre <- pre# CUhE spaces?
CUhE-post <- post#
; cancel anaphoracataphora assignments
DAhO# <- DAhO-pre DAhO-post
DAhO-pre <- pre# DAhO spaces?
DAhO-post <- post#
; vocative marker
DOI# <- DOI-pre DOI-post
DOI-pre <- pre# DOI spaces?
DOI-post <- post#
; terminator for DOI-marked vocatives
DOhU# <- DOhU-pre DOhU-post
DOhU-pre <- pre# DOhU spaces?
DOhU-post <- post#
; modifier head generic case tag
FA# <- FA-pre FA-post
FA-pre <- pre# FA spaces?
FA-post <- post# free*
; superdirections in space
FAhA# <- FAhA-pre FAhA-post
FAhA-pre <- pre# FAhA spaces?
FAhA-post <- post#
; normally elided 'done pause' to indicate end
; of utterance string
FAhO# <- pre# FAhO spaces?
; space interval mod flag
FEhE# <- FEhE-pre FEhE-post
FEhE-pre <- pre# FEhE spaces?
FEhE-post <- post#
; ends bridi to modal conversion
FEhU# <- FEhU-pre FEhU-post
FEhU-pre <- pre# FEhU spaces?
FEhU-post <- post#
; marks bridi to modal conversion
FIhO# <- FIhO-pre FIhO-post
FIhO-pre <- pre# FIhO spaces?
FIhO-post <- post# free*
; end compound lerfu
FOI# <- FOI-pre FOI-post
FOI-pre <- pre# FOI spaces?
FOI-post <- post#
; reverse Polish flag
FUhA# <- FUhA-pre FUhA-post
FUhA-pre <- pre# FUhA spaces?
FUhA-post <- post# free*
; open long scope for indicator
FUhE# <- FUhE-pre FUhE-post
FUhE-pre <- pre# FUhE spaces?
FUhE-post <- !BU# spaces? !ZEI# !BU#
; close long scope for indicator
FUhO# <- FUhO-pre FUhO-post
FUhO-pre <- pre# FUhO spaces?
FUhO-post <- post#
; geks; forethought logical connectives
GA# <- GA-pre GA-post
GA-pre <- pre# GA spaces?
GA-post <- post#
; openclosed interval markers for BIhI
GAhO# <- GAhO-pre GAhO-post
GAhO-pre <- pre# GAhO spaces?
GAhO-post <- post#
; marker ending GOI relative clauses
GEhU# <- GEhU-pre GEhU-post
GEhU-pre <- pre# GEhU spaces?
GEhU-post <- post#
; forethought medial marker
GI# <- GI-pre GI-post
GI-pre <- pre# GI spaces?
GI-post <- post#
; logical connectives for bridi-tails
GIhA# <- GIhA-pre GIhA-post
GIhA-pre <- pre# GIhA spaces?
GIhA-post <- post#
; attaches a sumti modifier to a sumti
GOI# <- GOI-pre GOI-post
GOI-pre <- pre# GOI spaces?
GOI-post <- post# free*
; pro-bridi
GOhA# <- GOhA-pre GOhA-post
GOhA-pre <- pre# GOhA spaces?
GOhA-post <- post#
; GEK for tanru units, corresponds to JEKs
GUhA# <- GUhA-pre GUhA-post
GUhA-pre <- pre# GUhA spaces?
GUhA-post <- post#
; sentence link
I# <- I-pre I-post
I-pre <- pre# I spaces?
I-post <- post#
; jeks; logical connectives within tanru
JA# <- JA-pre JA-post
JA-pre <- pre# JA spaces?
JA-post <- post#
; modal conversion flag
JAI# <- JAI-pre JAI-post
JAI-pre <- pre# JAI spaces?
JAI-post <- post# free*
; flags an array operand
JOhI# <- JOhI-pre JOhI-post
JOhI-pre <- pre# JOhI spaces?
JOhI-post <- post# free*
; non-logical connectives
JOI# <- JOI-pre JOI-post
JOI-pre <- pre# JOI spaces?
JOI-post <- post#
; left long scope marker
KE# <- KE-pre KE-post
KE-pre <- pre# KE spaces?
KE-post <- post# free*
; right terminator for KE groups
KEhE# <- KEhE-pre KEhE-post
KEhE-pre <- pre# KEhE spaces?
KEhE-post <- post#
; right terminator, NU abstractions
KEI# <- KEI-pre KEI-post
KEI-pre <- pre# KEI spaces?
KEI-post <- post#
; multiple utterance scope for tenses
KI# <- KI-pre KI-post
KI-pre <- pre# KI spaces?
KI-post <- post#
; sumti anaphora
KOhA# <- KOhA-pre KOhA-post
KOhA-pre <- pre# KOhA spaces?
KOhA-post <- post# free*
; right terminator for descriptions, etc.
KU# <- KU-pre KU-post
KU-pre <- pre# KU spaces?
KU-post <- post#
; MEX forethought delimiter
KUhE# <- KUhE-pre KUhE-post
KUhE-pre <- pre# KUhE spaces?
KUhE-post <- post#
; right terminator, NOI relative clauses
KUhO# <- KUhO-pre KUhO-post
KUhO-pre <- pre# KUhO spaces?
KUhO-post <- post#
; name descriptors
LA# <- LA-pre LA-post
LA-pre <- pre# LA spaces?
LA-post <- post# free*
; lerfu prefixes
LAU# <- LAU-pre LAU-post
LAU-pre <- pre# LAU spaces?
LAU-post <- post#
; sumti qualifiers
LAhE# <- LAhE-pre LAhE-post
LAhE-pre <- pre# LAhE spaces?
LAhE-post <- post# free*
; sumti descriptors
LE# <- LE-pre LE-post
LE-pre <- pre# LE spaces?
LE-post <- post# free*
; possibly ungrammatical text right quote
LEhU# <- LEhU-pre LEhU-post
LEhU-pre <- pre# LEhU spaces?
LEhU-post <- spaces?
LEhU#-no-SA <- LEhU-pre-no-SA LEhU-post
LEhU-pre-no-SA <- pre# LEhU spaces?
; convert number to sumti
LI# <- LI-pre LI-post
LI-pre <- pre# LI spaces?
LI-post <- post# free*
; grammatical text right quote
LIhU# <- LIhU-pre LIhU-post
LIhU-pre <- pre# LIhU spaces?
LIhU-post <- post#
; elidable terminator for LI
LOhO# <- LOhO-pre LOhO-post
LOhO-pre <- pre# LOhO spaces?
LOhO-post <- post#
; possibly ungrammatical text left quote
LOhU# <- LOhU-pre LOhU-post
LOhU-pre <- pre# LOhU spaces? (!LEhU any-word)* LEhU# spaces?
LOhU-post <- post# free*
; grammatical text left quote
LU# <- LU-pre LU-post
LU-pre <- pre# LU spaces?
LU-post <- post#
; LAhE close delimiter
LUhU# <- LUhU-pre LUhU-post
LUhU-pre <- pre# LUhU spaces?
LUhU-post <- post#
; change MEX expressions to MEX operators
MAhO# <- MAhO-pre MAhO-post
MAhO-pre <- pre# MAhO spaces?
MAhO-post <- post# free*
; change numbers to utterance ordinals
MAI# <- MAI-pre MAI-post
MAI-pre <- pre# MAI spaces?
MAI-post <- post#
; converts a sumti into a tanru_unit
ME# <- ME-pre ME-post
ME-pre <- pre# ME spaces?
ME-post <- post# free*
; terminator for ME
MEhU# <- MEhU-pre MEhU-post
MEhU-pre <- pre# MEhU spaces?
MEhU-post <- post#
; change sumti to operand, inverse of LI
MOhE# <- MOhE-pre MOhE-post
MOhE-pre <- pre# MOhE spaces?
MOhE-post <- post# free*
; motion tense marker
MOhI# <- MOhI-pre MOhI-post
MOhI-pre <- pre# MOhI spaces?
MOhI-post <- post#
; change number to selbri
MOI# <- MOI-pre MOI-post
MOI-pre <- pre# MOI spaces?
MOI-post <- post# free*
; bridi negation
NA# <- NA-pre NA-post
NA-pre <- pre# NA spaces?
NA-post <- post#
; attached to words to negate them
NAI# <- NAI-pre NAI-post
NAI-pre <- pre# NAI spaces?
NAI-post <- post#
; scalar negation
NAhE# <- NAhE-pre NAhE-post
NAhE-pre <- pre# NAhE spaces?
NAhE-post <- post#
; change a selbri into an operator
NAhU# <- NAhU-pre NAhU-post
NAhU-pre <- pre# NAhU spaces?
NAhU-post <- post# free*
; change selbri to operand; inverse of MOI
NIhE# <- NIhE-pre NIhE-post
NIhE-pre <- pre# NIhE spaces?
NIhE-post <- post# free*
; new paragraph; change of subject
NIhO# <- NIhO-pre NIhO-post
NIhO-pre <- pre# NIhO spaces?
NIhO-post <- su#* post# free*
; attaches a subordinate clause to a sumti
NOI# <- NOI-pre NOI-post
NOI-pre <- pre# NOI spaces?
NOI-post <- post# free*
; abstraction
NU# <- NU-pre NU-post
NU-pre <- pre# NU spaces?
NU-post <- post#
; change operator to selbri; inverse of MOhE
NUhA# <- NUhA-pre NUhA-post
NUhA-pre <- pre# NUhA spaces?
NUhA-post <- post# free*
; marks the start of a termset
NUhI# <- NUhI-pre NUhI-post
NUhI-pre <- pre# NUhI spaces?
NUhI-post <- post# free*
; marks the middle and end of a termset
NUhU# <- NUhU-pre NUhU-post
NUhU-pre <- pre# NUhU spaces?
NUhU-post <- post#
; numbers and numeric punctuation
PA# <- PA-pre PA-post
PA-pre <- pre# PA spaces?
PA-post <- post#
; afterthought termset connective prefix
PEhE# <- PEhE-pre PEhE-post
PEhE-pre <- pre# PEhE spaces?
PEhE-post <- post# free*
; forethought (Polish) flag
PEhO# <- PEhO-pre PEhO-post
PEhO-pre <- pre# PEhO spaces?
PEhO-post <- post#
; directions in time
PU# <- PU-pre PU-post
PU-pre <- pre# PU spaces?
PU-post <- post#
; flag for modified interpretation of GOhI
RAhO# <- RAhO-pre RAhO-post
RAhO-pre <- pre# RAhO spaces?
RAhO-post <- post#
; converts number to extensional tense
ROI# <- ROI-pre ROI-post
ROI-pre <- pre# ROI spaces?
ROI-post <- post#
SA# <- SA-pre SA-post
SA-pre <- pre# SA spaces?
SA-post <- spaces?
; metalinguistic eraser to the beginning of
; the current utterance
; conversions
SE# <- SE-pre SE-post
SE-pre <- pre# SE spaces?
SE-post <- post#
; metalinguistic bridi insert marker
SEI# <- SEI-pre SEI-post
SEI-pre <- pre# SEI spaces?
SEI-post <- post# free*
; metalinguistic bridi end marker
SEhU# <- SEhU-pre SEhU-post
SEhU-pre <- pre# SEhU spaces?
SEhU-post <- post#
; metalinguistic single word eraser
SI# <- spaces? SI spaces?
; reciprocal sumti marker
SOI# <- SOI-pre SOI-post
SOI-pre <- pre# SOI spaces?
SOI-post <- post# free*
; metalinguistic eraser of the entire text
SU# <- SU-pre SU-post
SU-pre <- pre# SU spaces?
SU-post <- post#
; tense interval properties
TAhE# <- TAhE-pre TAhE-post
TAhE-pre <- pre# TAhE spaces?
TAhE-post <- post#
; closing gap for MEX constructs
TEhU# <- TEhU-pre TEhU-post
TEhU-pre <- pre# TEhU spaces?
TEhU-post <- post#
; start compound lerfu
TEI# <- TEI-pre TEI-post
TEI-pre <- pre# TEI spaces?
TEI-post <- post#
; left discursive parenthesis
TO# <- TO-pre TO-post
TO-pre <- pre# TO spaces?
TO-post <- post#
; right discursive parenthesis
TOI# <- TOI-pre TOI-post
TOI-pre <- pre# TOI spaces?
TOI-post <- post#
; multiple utterance scope mark
TUhE# <- TUhE-pre TUhE-post
TUhE-pre <- pre# TUhE spaces?
TUhE-post <- su#* post# free*
; multiple utterance end scope mark
TUhU# <- TUhU-pre TUhU-post
TUhU-pre <- pre# TUhU spaces?
TUhU-post <- post#
; attitudinals, observationals, discursives
UI# <- UI-pre UI-post
UI-pre <- pre# UI spaces?
UI-post <- post#
; distance in space-time
VA# <- VA-pre VA-post
VA-pre <- pre# VA spaces?
VA-post <- post#
; end simple bridi or bridi-tail
VAU# <- VAU-pre VAU-post
VAU-pre <- pre# VAU spaces?
VAU-post <- post#
; left MEX bracket
VEI# <- VEI-pre VEI-post
VEI-pre <- pre# VEI spaces?
VEI-post <- post# free*
; right MEX bracket
VEhO# <- VEhO-pre VEhO-post
VEhO-pre <- pre# VEhO spaces?
VEhO-post <- post#
; MEX operator
VUhU# <- VUhU-pre VUhU-post
VUhU-pre <- pre# VUhU spaces?
VUhU-post <- post# free*
; space-time interval size
VEhA# <- VEhA-pre VEhA-post
VEhA-pre <- pre# VEhA spaces?
VEhA-post <- post#
; space-time dimensionality marker
VIhA# <- VIhA-pre VIhA-post
VIhA-pre <- pre# VIhA spaces?
VIhA-post <- post#
SPACE VIhA-no-SA-handling <- pre# VIhA post#
VUhO# <- VUhO-pre VUhO-post
VUhO-pre <- pre# VUhO spaces?
VUhO-post <- post# free*
; glue between logically connected sumti and relative clauses
; subscripting operator
XI# <- XI-pre XI-post
XI-pre <- pre# XI spaces?
XI-post <- post# free*
; hesitation
; Very very special case. Handled in the morphology section.
; SPACE Y# <- spaces? Y spaces?
; event properties - inchoative, etc.
ZAhO# <- ZAhO-pre ZAhO-post
ZAhO-pre <- pre# ZAhO spaces?
ZAhO-post <- post#
; time interval size tense
ZEhA# <- ZEhA-pre ZEhA-post
ZEhA-pre <- pre# ZEhA spaces?
ZEhA-post <- post#
; lujvo glue
ZEI# <- ZEI-pre ZEI-post
ZEI#-no-SA <- ZEI-pre-no-SA ZEI ZEI-post
ZEI-pre <- pre# ZEI spaces?
ZEI-pre-no-SA <- pre#
ZEI-post <- spaces?
; time distance tense
ZI# <- ZI-pre ZI-post
ZI-pre <- pre# ZI spaces?
ZI-post <- post#
; conjoins relative clauses
ZIhE# <- ZIhE-pre ZIhE-post
ZIhE-pre <- pre# ZIhE spaces?
ZIhE-post <- post# free*
; single word metalinguistic quote marker
ZO# <- ZO-pre ZO-post
ZO-pre <- pre# ZO spaces? any-word spaces?
ZO-post <- post# free*
; delimited quote marker
ZOI# <- ZOI-pre ZOI-post
ZOI-pre <- pre# ZOI spaces? zoi-open zoi-word* zoi-close spaces?
ZOI-post <- post# free*
; prenex terminator (not elidable)
ZOhU# <- ZOhU-pre ZOhU-post
ZOhU-pre <- pre# ZOhU spaces?
ZOhU-post <- post# free*
;************************
; MORPHOLOGY INTERFACE
; This section handles the interface with the morphology. If you are not
; interested in this particular implementation of the morphology, you can
; ignore everything below this point and consider the above as the full
; formal grammar with terminals BRIVLA, CMENE, CMAVO, any-word,
; A, BAI, ..., ZOhU, zoi-open, zoi-word, zoi-close, spaces, dot-star and EOF.
;************************
zoi-open <- any-word &{ myAssign( new String(innerWordSEP2.toString()) ) } spaces?
zoi-word <- any-printable-word &{ ! myCompare( startString, innerWordSEP3 ) } spaces?
zoi-close <- any-word &{ myCompare( startString, innerWordSEP3 ) } spaces?
any-printable-word <- any-word / non-lojban-word
any-word <- CMENE / CMAVO / BRIVLA
;-----------------------
CMENE <- jbocme / naljbocme
naljbocme <- !h &consonant-final (vowel / y / consonant / digit)* &pause
jbocme <- !h &consonant-final (any-syllable / digit)* &pause
consonant-final <- (non-space &non-space)* consonant &pause
;cmene <- !h &consonant-final coda? (any-syllable / digit)* &pause
;cmene <- !h cmene-syllable* &consonant coda? consonantal-syllable* onset &pause
;cmene-syllable <- !doi-la-lai-lahi coda? consonantal-syllable* onset nucleus / digit
;doi-la-lai-lahi <- (d o i / l a (h? i)?) !h !nucleus
;-----------------------
CMAVO <- !cmene !CVCy-lujvo cmavo-form &post-word
CVCy-lujvo <- CVC-rafsi y h? initial-rafsi* brivla-core / stressed-CVC-rafsi y short-final-rafsi
cmavo-form <- !h !cluster onset (nucleus h)* (!stressed nucleus / nucleus !cluster) / y+ / digit
;-----------------------
BRIVLA <- !cmavo initial-rafsi* brivla-core
brivla-core <- fuhivla / gismu / CVV-final-rafsi / stressed-initial-rafsi short-final-rafsi
stressed-initial-rafsi <- stressed-extended-rafsi / stressed-y-rafsi / stressed-y-less-rafsi
initial-rafsi <- extended-rafsi / y-rafsi / !any-extended-rafsi y-less-rafsi
;-----------------------
any-extended-rafsi <- fuhivla / extended-rafsi / stressed-extended-rafsi
fuhivla <- fuhivla-head stressed-syllable consonantal-syllable* final-syllable
stressed-extended-rafsi <- stressed-brivla-rafsi / stressed-fuhivla-rafsi
extended-rafsi <- brivla-rafsi / fuhivla-rafsi
stressed-brivla-rafsi <- &unstressed-syllable brivla-head stressed-syllable h y
brivla-rafsi <- &(syllable consonantal-syllable* syllable) brivla-head h y h?
stressed-fuhivla-rafsi <- fuhivla-head stressed-syllable &consonant onset y
fuhivla-rafsi <- &unstressed-syllable fuhivla-head &consonant onset y h?
fuhivla-head <- !rafsi-string brivla-head
brivla-head <- !cmavo !slinkuhi !h &onset unstressed-syllable*
slinkuhi <- consonant rafsi-string
rafsi-string <- y-less-rafsi* (gismu / CVV-final-rafsi / stressed-y-less-rafsi short-final-rafsi / y-rafsi / stressed-y-rafsi / stressed-y-less-rafsi? initial-pair y)
;-----------------------
gismu <- stressed-long-rafsi &final-syllable vowel &post-word
CVV-final-rafsi <- consonant stressed-vowel h &final-syllable vowel &post-word
short-final-rafsi <- &final-syllable (consonant diphthong / initial-pair vowel) &post-word
stressed-y-rafsi <- (stressed-long-rafsi / stressed-CVC-rafsi) y
stressed-y-less-rafsi <- stressed-CVC-rafsi !y / stressed-CCV-rafsi / stressed-CVV-rafsi
stressed-long-rafsi <- (stressed-CCV-rafsi / stressed-CVC-rafsi) consonant
stressed-CVC-rafsi <- consonant stressed-vowel consonant
stressed-CCV-rafsi <- initial-pair stressed-vowel
stressed-CVV-rafsi <- consonant (unstressed-vowel h stressed-vowel / stressed-diphthong) r-hyphen?
y-rafsi <- (long-rafsi / CVC-rafsi) y h?
y-less-rafsi <- !y-rafsi (CVC-rafsi !y / CCV-rafsi / CVV-rafsi) !any-extended-rafsi
long-rafsi <- (CCV-rafsi / CVC-rafsi) consonant
CVC-rafsi <- consonant unstressed-vowel consonant
CCV-rafsi <- initial-pair unstressed-vowel
CVV-rafsi <- consonant (unstressed-vowel h unstressed-vowel / unstressed-diphthong) r-hyphen?
r-hyphen <- r &consonant / n &r
;-----------------------
final-syllable <- onset !y !stressed nucleus !cmene &post-word
stressed-syllable <- &stressed syllable / syllable &stress
stressed-diphthong <- &stressed diphthong / diphthong &stress
stressed-vowel <- &stressed vowel / vowel &stress
unstressed-syllable <- !stressed syllable !stress / consonantal-syllable
unstressed-diphthong <- !stressed diphthong !stress
unstressed-vowel <- !stressed vowel !stress
stress <- consonant* y? syllable pause
stressed <- onset comma* [AEIOU]
any-syllable <- onset nucleus coda? / consonantal-syllable
syllable <- onset !y nucleus coda?
consonantal-syllable <- consonant syllabic &(consonantal-syllable / onset) (consonant &spaces)?
coda <- !any-syllable consonant &any-syllable / syllabic? consonant? &pause
onset <- h / consonant? glide / initial
nucleus <- vowel / diphthong / y !nucleus
;-------------------------
glide <- (i / u) &nucleus !glide
diphthong <- (a i / a u / e i / o i) !nucleus !glide
vowel <- (a / e / i / o / u) !nucleus
a <- comma* [aA]
e <- comma* [eE]
i <- comma* [iI]
o <- comma* [oO]
u <- comma* [uU]
y <- comma* [yY]
;-----------------------
cluster <- consonant consonant+
initial-pair <- &initial consonant consonant !consonant
initial <- (affricate / sibilant? other? liquid?) !consonant !glide
affricate <- t c / t s / d j / d z
liquid <- l / r
other <- p / t !l / k / f / x / b / d !l / g / v / m / n !liquid
sibilant <- c / s !x / (j / z) !n !liquid
consonant <- voiced / unvoiced / syllabic
syllabic <- l / m / n / r
voiced <- b / d / g / j / v / z
unvoiced <- c / f / k / p / s / t / x
l <- comma* [lL] !h !l
m <- comma* [mM] !h !m !z
n <- comma* [nN] !h !n !affricate
r <- comma* [rR] !h !r
b <- comma* [bB] !h !b !unvoiced
d <- comma* [dD] !h !d !unvoiced
g <- comma* [gG] !h !g !unvoiced
v <- comma* [vV] !h !v !unvoiced
j <- comma* [jJ] !h !j !z !unvoiced
z <- comma* [zZ] !h !z !j !unvoiced
s <- comma* [sS] !h !s !c !voiced
c <- comma* [cC] !h !c !s !x !voiced
x <- comma* [xX] !h !x !c !k !voiced
k <- comma* [kK] !h !k !x !voiced
f <- comma* [fF] !h !f !voiced
p <- comma* [pP] !h !p !voiced
t <- comma* [tT] !h !t !voiced
h <- comma* ['h] &nucleus
;-----------------------
digit <- comma* [0123456789] !h !nucleus
post-word <- pause / !nucleus lojban-word
pause <- comma* space-char+ / EOF
EOF <- comma* !.
dot-star <- .*
comma <- [,]
non-lojban-word <- !lojban-word non-space+
NORATS non-space <- !space-char .
NORATS space-char <- [.\t\n\r?!\u0020]
;-----------------------
spaces <- !Y initial-spaces
initial-spaces <- (comma* space-char / !ybu Y)+ EOF? / EOF
ybu <- Y space-char* BU
lujvo <- !gismu !fuhivla brivla
;-----------------------
A <- &CMAVO ( a / e / j i / o / u ) &post-word
BAI <- &CMAVO ( d u h o / s i h u / z a u / k i h i / d u h i / c u h u / t u h i / t i h u / d i h o / j i h u / r i h a / n i h i / m u h i / k i h u / v a h u / k o i / c a h i / t a h i / p u h e / j a h i / k a i / b a i / f i h e / d e h i / c i h o / m a u / m u h u / r i h i / r a h i / k a h a / p a h u / p a h a / l e h a / k u h u / t a i / b a u / m a h i / c i h e / f a u / p o h i / c a u / m a h e / c i h u / r a h a / p u h a / l i h e / l a h u / b a h i / k a h i / s a u / f a h e / b e h i / t i h i / j a h e / g a h a / v a h o / j i h o / m e h a / d o h e / j i h e / p i h o / g a u / z u h e / m e h e / r a i ) &post-word
BAhE <- &CMAVO ( b a h e / z a h e ) &post-word
BE <- &CMAVO ( b e ) &post-word
BEI <- &CMAVO ( b e i ) &post-word
BEhO <- &CMAVO ( b e h o ) &post-word
BIhE <- &CMAVO ( b i h e ) &post-word
BIhI <- &CMAVO ( m i h i / b i h o / b i h i ) &post-word
BO <- &CMAVO ( b o ) &post-word
BOI <- &CMAVO ( b o i ) &post-word
BU <- &CMAVO ( b u ) &post-word
BY <- ybu / &CMAVO ( j o h o / r u h o / g e h o / j e h o / l o h a / n a h a / s e h e / t o h a / g a h e / y h y / b y / c y / d y / f y / g y / j y / k y / l y / m y / n y / p y / r y / s y / t y / v y / x y / z y ) &post-word
CAhA <- &CMAVO ( c a h a / p u h i / n u h o / k a h e ) &post-word
CAI <- &CMAVO ( p e i / c a i / c u h i / s a i / r u h e ) &post-word
CEI <- &CMAVO ( c e i ) &post-word
CEhE <- &CMAVO ( c e h e ) &post-word
CO <- &CMAVO ( c o ) &post-word
COI <- &CMAVO ( j u h i / c o i / f i h i / t a h a / m u h o / f e h o / c o h o / p e h u / k e h o / n u h e / r e h i / b e h e / j e h e / m i h e / k i h e / v i h o ) &post-word
CU <- &CMAVO ( c u ) &post-word
CUhE <- &CMAVO ( c u h e / n a u ) &post-word
DAhO <- &CMAVO ( d a h o ) &post-word
DOI <- &CMAVO ( d o i ) &post-word
DOhU <- &CMAVO ( d o h u ) &post-word
FA <- &CMAVO ( f a i / f a / f e / f o / f u / f i h a / f i ) &post-word
FAhA <- &CMAVO ( d u h a / b e h a / n e h u / v u h a / g a h u / t i h a / n i h a / c a h u / z u h a / r i h u / r u h u / r e h o / t e h e / b u h u / n e h a / p a h o / n e h i / t o h o / z o h i / z e h o / z o h a / f a h a ) &post-word
FAhO <- &CMAVO ( f a h o ) &post-word
FEhE <- &CMAVO ( f e h e ) &post-word
FEhU <- &CMAVO ( f e h u ) &post-word
FIhO <- &CMAVO ( f i h o ) &post-word
FOI <- &CMAVO ( f o i ) &post-word
FUhA <- &CMAVO ( f u h a ) &post-word
FUhE <- &CMAVO ( f u h e ) &post-word
FUhO <- &CMAVO ( f u h o ) &post-word
GA <- &CMAVO ( g e h i / g e / g o / g a / g u ) &post-word
GAhO <- &CMAVO ( k e h i / g a h o ) &post-word
GEhU <- &CMAVO ( g e h u ) &post-word
GI <- &CMAVO ( g i ) &post-word
GIhA <- &CMAVO ( g i h e / g i h i / g i h o / g i h a / g i h u ) &post-word
GOI <- &CMAVO ( n o h u / n e / g o i / p o h u / p e / p o h e / p o ) &post-word
GOhA <- &CMAVO ( m o / n e i / g o h u / g o h o / g o h i / n o h a / g o h e / g o h a / d u / b u h a / b u h e / b u h i / c o h e ) &post-word
GUhA <- &CMAVO ( g u h e / g u h i / g u h o / g u h a / g u h u ) &post-word
I <- &CMAVO ( i ) &post-word
JA <- &CMAVO ( j e h i / j e / j o / j a / j u ) &post-word
JAI <- &CMAVO ( j a i ) &post-word
JOhI <- &CMAVO ( j o h i ) &post-word
JOI <- &CMAVO ( f a h u / p i h u / j o i / c e h o / c e / j o h u / k u h a / j o h e / j u h e ) &post-word
KE <- &CMAVO ( k e ) &post-word
KEhE <- &CMAVO ( k e h e ) &post-word
KEI <- &CMAVO ( k e i ) &post-word
KI <- &CMAVO ( k i ) &post-word
KOhA <- &CMAVO ( d a h u / d a h e / d i h u / d i h e / d e h u / d e h e / d e i / d o h i / m i h o / m a h a / m i h a / d o h o / k o h a / f o h u / k o h e / k o h i / k o h o / k o h u / f o h a / f o h e / f o h i / f o h o / v o h a / v o h e / v o h i / v o h o / v o h u / r u / r i / r a / t a / t u / t i / z i h o / k e h a / m a / z u h i / z o h e / c e h u / d a / d e / d i / k o / m i / d o ) &post-word
KU <- &CMAVO ( k u ) &post-word
KUhE <- &CMAVO ( k u h e ) &post-word
KUhO <- &CMAVO ( k u h o ) &post-word
LA <- &CMAVO ( l a i / l a h i / l a ) &post-word
LAU <- &CMAVO ( c e h a / l a u / z a i / t a u ) &post-word
LAhE <- &CMAVO ( t u h a / l u h a / l u h o / l a h e / v u h i / l u h i / l u h e ) &post-word
LE <- &CMAVO ( l e i / l o i / l e h i / l o h i / l e h e / l o h e / l o / l e ) &post-word
LEhU <- &CMAVO ( l e h u ) &post-word
LI <- &CMAVO ( m e h o / l i ) &post-word
LIhU <- &CMAVO ( l i h u ) &post-word
LOhO <- &CMAVO ( l o h o ) &post-word
LOhU <- &CMAVO ( l o h u ) &post-word
LU <- &CMAVO ( l u ) &post-word
LUhU <- &CMAVO ( l u h u ) &post-word
MAhO <- &CMAVO ( m a h o ) &post-word
MAI <- &CMAVO ( m o h o / m a i ) &post-word
ME <- &CMAVO ( m e ) &post-word
MEhU <- &CMAVO ( m e h u ) &post-word
MOhE <- &CMAVO ( m o h e ) &post-word
MOhI <- &CMAVO ( m o h i ) &post-word
MOI <- &CMAVO ( m e i / m o i / s i h e / c u h o / v a h e ) &post-word
NA <- &CMAVO ( j a h a / n a ) &post-word
NAI <- &CMAVO ( n a i ) &post-word
NAhE <- &CMAVO ( t o h e / j e h a / n a h e / n o h e ) &post-word
NAhU <- &CMAVO ( n a h u ) &post-word
NIhE <- &CMAVO ( n i h e ) &post-word
NIhO <- &CMAVO ( n i h o / n o h i ) &post-word
NOI <- &CMAVO ( v o i / n o i / p o i ) &post-word
NU <- &CMAVO ( n i / d u h u / s i h o / n u / l i h i / k a / j e i / s u h u / z u h o / m u h e / p u h u / z a h i ) &post-word
NUhA <- &CMAVO ( n u h a ) &post-word
NUhI <- &CMAVO ( n u h i ) &post-word
NUhU <- &CMAVO ( n u h u ) &post-word
PA <- &CMAVO ( d a u / f e i / g a i / j a u / r e i / v a i / p i h e / p i / f i h u / z a h u / m e h i / n i h u / k i h o / c e h i / m a h u / r a h e / d a h a / s o h a / j i h i / s u h o / s u h e / r o / r a u / s o h u / s o h i / s o h e / s o h o / m o h a / d u h e / t e h o / k a h o / c i h i / t u h o / x o / p a i / n o h o / n o / p a / r e / c i / v o / m u / x a / z e / b i / s o / digit ) &post-word
PEhE <- &CMAVO ( p e h e ) &post-word
PEhO <- &CMAVO ( p e h o ) &post-word
PU <- &CMAVO ( b a / p u / c a ) &post-word
RAhO <- &CMAVO ( r a h o ) &post-word
ROI <- &CMAVO ( r e h u / r o i ) &post-word
SA <- &CMAVO ( s a ) &post-word
SE <- &CMAVO ( s e / t e / v e / x e ) &post-word
SEI <- &CMAVO ( s e i / t i h o ) &post-word
SEhU <- &CMAVO ( s e h u ) &post-word
SI <- &CMAVO ( s i ) &post-word
SOI <- &CMAVO ( s o i ) &post-word
SU <- &CMAVO ( s u ) &post-word
TAhE <- &CMAVO ( r u h i / t a h e / d i h i / n a h o ) &post-word
TEhU <- &CMAVO ( t e h u ) &post-word
TEI <- &CMAVO ( t e i ) &post-word
TO <- &CMAVO ( t o h i / t o ) &post-word
TOI <- &CMAVO ( t o i ) &post-word
TUhE <- &CMAVO ( t u h e ) &post-word
TUhU <- &CMAVO ( t u h u ) &post-word
UI <- &CMAVO ( i h a / i e / a h e / u h i / i h o / i h e / a h a / i a / o h i / o h e / e h e / o i / u o / e h i / u h o / a u / u a / a h i / i h u / i i / u h a / u i / a h o / a i / a h u / i u / e i / o h o / e h a / u u / o h a / o h u / u h u / e h o / i o / e h u / u e / i h i / u h e / b a h a / j a h o / c a h e / s u h a / t i h e / k a h u / s e h o / z a h a / p e h i / r u h a / j u h a / t a h o / r a h u / l i h a / b a h u / m u h a / d o h a / t o h u / v a h i / p a h e / z u h u / s a h e / l a h a / k e h u / s a h u / d a h i / j e h u / s a h a / k a u / t a h u / n a h i / j o h a / b i h u / l i h o / p a u / m i h u / k u h i / j i h a / s i h a / p o h o / p e h a / r o h i / r o h e / r o h o / r o h u / r o h a / r e h e / l e h o / j u h o / f u h i / d a i / g a h i / z o h o / b e h u / r i h e / s e h i / s e h a / v u h e / k i h a / x u / g e h e / b u h o ) &post-word
VA <- &CMAVO ( v i / v a / v u ) &post-word
VAU <- &CMAVO ( v a u ) &post-word
VEI <- &CMAVO ( v e i ) &post-word
VEhO <- &CMAVO ( v e h o ) &post-word
VUhU <- &CMAVO ( g e h a / f u h u / p i h i / f e h i / v u h u / s u h i / j u h u / g e i / p a h i / f a h i / t e h a / c u h a / v a h a / n e h o / d e h o / f e h a / s a h o / r e h a / r i h o / s a h i / p i h a / s i h i ) &post-word
VEhA <- &CMAVO ( v e h u / v e h a / v e h i / v e h e ) &post-word
VIhA <- &CMAVO ( v i h i / v i h a / v i h u / v i h e ) &post-word
VUhO <- &CMAVO ( v u h o ) &post-word
XI <- &CMAVO ( x i ) &post-word
Y <- &CMAVO ( y+ ) &post-word
ZAhO <- &CMAVO ( c o h i / p u h o / c o h u / m o h u / c a h o / c o h a / d e h a / b a h o / d i h a / z a h o ) &post-word
ZEhA <- &CMAVO ( z e h u / z e h a / z e h i / z e h e ) &post-word
ZEI <- &CMAVO ( z e i ) &post-word
ZI <- &CMAVO ( z u / z a / z i ) &post-word
ZIhE <- &CMAVO ( z i h e ) &post-word
ZO <- &CMAVO ( z o ) &post-word
ZOI <- &CMAVO ( z o i / l a h o ) &post-word
ZOhU <- &CMAVO ( z o h u ) &post-word