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 -
text <- intro-null? free? (!gek joik-jek)? text-1? FAhO#?
intro-null <- spaces? Y? words-SU* SI#* !BU# !ZEI#
text-1 <- I# joik-jek? (tag? BO#)? text-1? / NIhO#* paragraphs
paragraphs <- paragraph (NIhO#+ paragraph)*
paragraph <- statement (I# statement?)*
statement <- statement-1 / prenex statement / fragment
statement-1 <- statement-2 (I# joik-jek statement-2?)*
statement-2 <- statement-3 (I# joik-jek? tag? BO# statement-2?)?
statement-3 <- sentence / TUhE# text-1 TUhU#?
fragment <- prenex / terms VAU#? / ek / gihek / quantifier / NA# !JA#
; ------------------
prenex <- terms ZOhU#
sentence <- (terms CU#?)? bridi-tail
subsentence <- sentence / prenex subsentence
bridi-tail <- bridi-tail-2 (gihek bridi-tail-2 tail-terms)*
bridi-tail-2 <- bridi-tail-3 (gihek tag? BO# bridi-tail-2 tail-terms)?
bridi-tail-3 <- selbri tail-terms / (!gek tag / NA#)* gek subsentence gik subsentence tail-terms
tail-terms <- terms? VAU#?
terms <- term+
term <- FA#? sumti / tag? sumti / tag KU#? / FA# KU#? / NA# KU# / gek terms gik tail-terms
; -----------
sumti <- sumti-1 (VUhO# relative-clauses)?
sumti-1 <- sumti-3 (joik-ek sumti-3)*
sumti-3 <- sumti-4 (joik-ek tag? BO# sumti-3)?
sumti-4 <- sumti-5 / gek sumti gik sumti-4
sumti-5 <- quantifier? sumti-6 relative-clauses? / quantifier selbri KU#? relative-clauses?
sumti-6 <- ZO-word# / ZOI-expression# / LOhU-words-LEhU# / lerfu-string !MOI# BOI#? / LU# text LIhU#? / (LAhE# / NAhE# BO#) relative-clauses? sumti LUhU#? / KOhA# / (LA# / LE#) sumti-tail / LI# operand LOhO#?
sumti-tail <- sumti-6? relative-clauses? (quantifier? selbri relative-clauses? / quantifier sumti) KU#?
relative-clauses <- relative-clause (ZIhE# relative-clause)*
relative-clause <- GOI# term GEhU#? / NOI# subsentence KUhO#?
; ----------
selbri <- (tag / NA#)* selbri-2
selbri-2 <- selbri-4+ (CO# selbri-2)?
selbri-4 <- selbri-5 (joik-jek selbri-5)*
selbri-5 <- selbri-6 (joik-jek tag? BO# selbri-5)?
selbri-6 <- tanru-unit (BO# selbri-6)? / 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# / word-ZEI-word# / CMEVLA# / GOhA# / KE# selbri-4+ KEhE#? / ME# (sumti / lerfu-string) MEhU#? MOI#? / (number / lerfu-string) MOI# / NUhA# joik-ek / SE# tanru-unit-2 / JAI# tag? tanru-unit-2 / NAhE# tanru-unit-2 / NU# subsentence KEI#?
linkargs <- BE# term (BEI# term)* BEhO#?
; -------------
operand <- operand-1 (joik-ek operand)*
operand-1 <- operand-2 (joik-ek tag? BO# operand-1)? / PEhO#? joik-ek operand+ KUhE#? / FUhA# rp-expression
operand-2 <- quantifier / lerfu-string !MOI# BOI#? / gek operand gik operand-2 / (LAhE# / NAhE# BO#) operand LUhU#?
rp-expression <- operand (rp-expression joik-ek)*
quantifier <- number !MOI# BOI#? / VEI# operand VEhO#? / NIhE# selbri TEhU#? / MOhE# sumti TEhU#?
number <- PA#+
lerfu-string <- lerfu-word+
lerfu-word <- BY# / word-BU# / LAU# lerfu-word / TEI# lerfu-string FOI#
; ----------
joik-ek <- joik-jek / NA#? SE#? A#
joik-jek <- NA#? SE#? (JOI# / JA# / BIhI# / VUhU# / JOhI# / NAhU# selbri TEhU#? / MAhO# operand TEhU#?)
gihek <- NA#? SE#? GIhA#
guhek <- NAhE#? SE#? GUhA#
gek <- SE#? GA# / joik-jek GI# / tag GI#
gik <- GI#
tag <- tag-unit+ (joik-jek tag-unit+)*
tag-unit <- KI# / BAI# / PU# / ZI# / ZEhA# / FAhA# / VA# / VEhA# / VIhA# / TAhE# / ZAhO# / CAhA# / CUhE# / number ROI# / FIhO# selbri FEhU# / (FEhE# / MOhI# / SE# / NAhE#) tag-unit
; ---------------------
free <- vocative / parenthetical / number-mai / lerfu-mai / subscript / indicator
vocative <- (COI#+ DOI#? / DOI#) (relative-clauses? selbri relative-clauses? / sumti?) DOhU#?
parenthetical <- SEI# (terms CU#?)? selbri SEhU#? / SOI# sumti sumti? SEhU#? / TO# text TOI#?
number-mai <- number MAI#
lerfu-mai <- lerfu-string MAI#
subscript <- XI# (number BOI#? / lerfu-string BOI#? / VEI# operand VEhO#?)
indicator <- FUhE# / UI# / CAI# / NAI# / DAhO# / FUhO# / RAhO# / GAhO#
; - Special SELMAHO -
FAhO# <- pre# FAhO anything*
COI# <- pre# COI vocative-post#
PA# <- pre# PA number-post#
BY# <- pre# BY lerfu-post#
LAU# <- pre# LAU lerfu-post#
TEI# <- pre# TEI lerfu-post#
FOI# <- pre# FOI lerfu-post#
; - Normal SELMAHO -
BRIVLA# <- pre# BRIVLA post#
CMEVLA# <- pre# CMEVLA post#
CMAVO# <- pre# CMAVO post#
A# <- pre# A post#
BAI# <- pre# BAI post#
BE# <- pre# BE post#
BEI# <- pre# BEI post#
BEhO# <- pre# BEhO post#
BIhE# <- pre# BIhE post#
BIhI# <- pre# BIhI post#
BO# <- pre# BO post#
BOI# <- pre# BOI post#
CAhA# <- pre# CAhA post#
CAI# <- pre# CAI post#
CEI# <- pre# CEI post#
CEhE# <- pre# CEhE post#
CO# <- pre# CO post#
CU# <- pre# CU post#
CUhE# <- pre# CUhE post#
DAhO# <- pre# DAhO post#
DOhU# <- pre# DOhU post#
DOI# <- pre# DOI post#
FA# <- pre# FA post#
FAhA# <- pre# FAhA post#
FEhE# <- pre# FEhE post#
FEhU# <- pre# FEhU post#
FIhO# <- pre# FIhO post#
FUhA# <- pre# FUhA post#
FUhE# <- pre# FUhE post#
FUhO# <- pre# FUhO post#
GA# <- pre# GA post#
GAhO# <- pre# GAhO post#
GEhU# <- pre# GEhU post#
GI# <- pre# GI post#
GIhA# <- pre# GIhA post#
GOI# <- pre# GOI post#
GOhA# <- pre# GOhA post#
GUhA# <- pre# GUhA post#
I# <- pre# I post#
JA# <- pre# JA post#
JAI# <- pre# JAI post#
JOhI# <- pre# JOhI post#
JOI# <- pre# JOI post#
KE# <- pre# KE post#
KEhE# <- pre# KEhE post#
KEI# <- pre# KEI post#
KI# <- pre# KI post#
KOhA# <- pre# KOhA post#
KU# <- pre# KU post#
KUhE# <- pre# KUhE post#
KUhO# <- pre# KUhO post#
LA# <- pre# LA post#
LAhE# <- pre# LAhE post#
LE# <- pre# LE post#
LEhU# <- pre# LEhU post#
LI# <- pre# LI post#
LIhU# <- pre# LIhU post#
LOhO# <- pre# LOhO post#
LU# <- pre# LU post#
LUhU# <- pre# LUhU post#
MAhO# <- pre# MAhO post#
MAI# <- pre# MAI post#
ME# <- pre# ME post#
MEhU# <- pre# MEhU post#
MOhE# <- pre# MOhE post#
MOhI# <- pre# MOhI post#
MOI# <- pre# MOI post#
NA# <- pre# NA post#
NAI# <- pre# NAI post#
NAhE# <- pre# NAhE post#
NAhU# <- pre# NAhU post#
NIhE# <- pre# NIhE post#
NIhO# <- pre# NIhO post#
NOI# <- pre# NOI post#
NU# <- pre# NU post#
NUhA# <- pre# NUhA post#
NUhI# <- pre# NUhI post#
NUhU# <- pre# NUhU post#
PEhE# <- pre# PEhE post#
PEhO# <- pre# PEhO post#
PU# <- pre# PU post#
RAhO# <- pre# RAhO post#
ROI# <- pre# ROI post#
SE# <- pre# SE post#
SA# <- pre# SA post#
SEI# <- pre# SEI post#
SEhU# <- pre# SEhU post#
SOI# <- pre# SOI post#
TAhE# <- pre# TAhE post#
TEhU# <- pre# TEhU post#
TO# <- pre# TO post#
TOI# <- pre# TOI post#
TUhE# <- pre# TUhE post#
TUhU# <- pre# TUhU post#
UI# <- pre# UI post#
VA# <- pre# VA post#
VAU# <- pre# VAU post#
VEI# <- pre# VEI post#
VEhO# <- pre# VEhO post#
VUhU# <- pre# VUhU post#
VEhA# <- pre# VEhA post#
VIhA# <- pre# VIhA post#
VUhO# <- pre# VUhO post#
XI# <- pre# XI post#
ZAhO# <- pre# ZAhO post#
ZEhA# <- pre# ZEhA post#
ZI# <- pre# ZI post#
ZIhE# <- pre# ZIhE post#
ZOhU# <- pre# ZOhU post#
; -- Pseudo SELMAHO -----
ZO-word# <- pre# ZO-word post#
LOhU-words-LEhU# <- pre# LOhU-words-LEhU post#
ZOI-expression# <- pre# ZOI-expression post#
word-ZEI-word# <- pre# word-ZEI-word post#
word-BU# <- pre# word-BU lerfu-post#
; -- Word Modifiers -----
number-post# <- !BU# !ZEI# (!number-mai free)?
lerfu-post# <- !BU# !ZEI# (!lerfu-mai free)?
vocative-post# <- !BU# !ZEI# (!vocative free)?
post# <- !BU# !ZEI# free?
pre# <- BAhE#* word-SI*
BAhE# <- word-SI* BAhE
ZEI-word# <- word-SI* ZEI-word
ZEI# <- word-SI* ZEI
BU# <- word-SI* BU
SI# <- word-SI* SI
; **************************
; MAGIC WORD CONSTRUCTS (ZOI-delimiters not fully implemented here.)
; **************************
words-SU <- (word-ZEI-word / word-BU / ZO-word / LOhU-words-LEhU / ZOI-expression / any-word)* SU#
word-SI <- (word-ZEI-word / word-BU / ZO-word / LOhU-words-LEhU / ZOI-expression / any-word) SI#
word-BU <- (ZO-word / LOhU-words-LEhU / ZOI-expression / any-word) (BU#* ZEI-word#+)* BU#+
word-ZEI-word <- (ZO-word / LOhU-words-LEhU / ZOI-expression / any-word) (ZEI-word#* BU#+)* ZEI-word#+
ZEI-word <- ZEI any-word
ZO-word <- ZO any-word
LOhU-words-LEhU <- LOhU (!LEhU any-word)* LEhU
ZOI-expression <- ZOI ZOI (!ZOI anything)* ZOI
any-word <- CMEVLA / BRIVLA / A / BAI / BAhE / BE / BEI / BEhO / BIhE / BIhI / BO / BOI / BU / BY / CAI / CAhA / CEI / CEhE / CO / COI / CU / CUhE / DAhO / DOI / DOhU / FA / FAhA / FAhO / FEhE / FEhU / FIhO / FOI / FUhA / FUhE / FUhO / GA / GAhO / GEhU / GI / GIhA / GOI / GOhA / GUhA / I / JA / JAI / JOI / JOhI / KE / KEI / KEhE / KI / KOhA / KU / KUhE / KUhO / LA / LAU / LAhE / LE / LEhU / LI / LIhU / LOhO / LOhU / LU / LUhU / MAI / MAhO / ME / MEhU / MOI / MOhE / MOhI / NA / NAI / NAhE / NAhU / NIhE / NIhO / NOI / NU / NUhA / NUhI / NUhU / PA / PEhE / PEhO / PU / RAhO / ROI / SA / SE / SEI / SEhU / SI / SOI / SU / TAhE / TEI / TEhU / TO / TOI / TUhE / TUhU / UI / VA / VAU / VEI / VEhA / VEhO / VIhA / VUhO / VUhU / XI / ZAhO / ZEI / ZEhA / ZI / ZIhE / ZO / ZOI / ZOhU / CMAVO
;************************
; MORPHOLOGY
; the above has terminals BRIVLA, CMEVLA, CMAVO, A, BAI, ... ZOhU, anything and spaces.
;************************
;-----------------------
anything <- non-space+ spaces?
;-----------------------
A <- &CMAVO ( a / e / j i / o / u ) post-cmavo
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-cmavo
BAhE <- &CMAVO ( b a h e / z a h e ) post-cmavo
BE <- &CMAVO ( b e ) post-cmavo
BEI <- &CMAVO ( b e i ) post-cmavo
BEhO <- &CMAVO ( b e h o ) post-cmavo
BIhE <- &CMAVO ( b i h e ) post-cmavo
BIhI <- &CMAVO ( m i h i / b i h o / b i h i ) post-cmavo
BO <- &CMAVO ( b o ) post-cmavo
BOI <- &CMAVO ( b o i ) post-cmavo
BU <- &CMAVO ( b u ) post-cmavo
BY <- &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-cmavo
CAhA <- &CMAVO ( c a h a / p u h i / n u h o / k a h e ) post-cmavo
CAI <- &CMAVO ( p e i / c a i / c u h i / s a i / r u h e ) post-cmavo
CEI <- &CMAVO ( c e i ) post-cmavo
CEhE <- &CMAVO ( c e h e ) post-cmavo
CO <- &CMAVO ( c o ) post-cmavo
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-cmavo
CU <- &CMAVO ( c u ) post-cmavo
CUhE <- &CMAVO ( c u h e / n a u ) post-cmavo
DAhO <- &CMAVO ( d a h o ) post-cmavo
DOI <- &CMAVO ( d o i ) post-cmavo
DOhU <- &CMAVO ( d o h u ) post-cmavo
FA <- &CMAVO ( f a i / f a / f e / f o / f u / f i h a / f i ) post-cmavo
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-cmavo
FAhO <- &CMAVO ( f a h o ) post-cmavo
FEhE <- &CMAVO ( f e h e ) post-cmavo
FEhU <- &CMAVO ( f e h u ) post-cmavo
FIhO <- &CMAVO ( f i h o ) post-cmavo
FOI <- &CMAVO ( f o i ) post-cmavo
FUhA <- &CMAVO ( f u h a ) post-cmavo
FUhE <- &CMAVO ( f u h e ) post-cmavo
FUhO <- &CMAVO ( f u h o ) post-cmavo
GA <- &CMAVO ( g e h i / g e / g o / g a / g u ) post-cmavo
GAhO <- &CMAVO ( k e h i / g a h o ) post-cmavo
GEhU <- &CMAVO ( g e h u ) post-cmavo
GI <- &CMAVO ( g i ) post-cmavo
GIhA <- &CMAVO ( g i h e / g i h i / g i h o / g i h a / g i h u ) post-cmavo
GOI <- &CMAVO ( n o h u / n e / g o i / p o h u / p e / p o h e / p o ) post-cmavo
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-cmavo
GUhA <- &CMAVO ( g u h e / g u h i / g u h o / g u h a / g u h u ) post-cmavo
I <- &CMAVO ( i ) post-cmavo
JA <- &CMAVO ( j e h i / j e / j o / j a / j u ) post-cmavo
JAI <- &CMAVO ( j a i ) post-cmavo
JOhI <- &CMAVO ( j o h i ) post-cmavo
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-cmavo
KE <- &CMAVO ( k e ) post-cmavo
KEhE <- &CMAVO ( k e h e ) post-cmavo
KEI <- &CMAVO ( k e i ) post-cmavo
KI <- &CMAVO ( k i ) post-cmavo
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-cmavo
KU <- &CMAVO ( k u ) post-cmavo
KUhE <- &CMAVO ( k u h e ) post-cmavo
KUhO <- &CMAVO ( k u h o ) post-cmavo
LA <- &CMAVO ( l a i / l a h i / l a ) post-cmavo
LAU <- &CMAVO ( c e h a / l a u / z a i / t a u ) post-cmavo
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-cmavo
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-cmavo
LEhU <- &CMAVO ( l e h u ) post-cmavo
LI <- &CMAVO ( m e h o / l i ) post-cmavo
LIhU <- &CMAVO ( l i h u ) post-cmavo
LOhO <- &CMAVO ( l o h o ) post-cmavo
LOhU <- &CMAVO ( l o h u ) post-cmavo
LU <- &CMAVO ( l u ) post-cmavo
LUhU <- &CMAVO ( l u h u ) post-cmavo
MAhO <- &CMAVO ( m a h o ) post-cmavo
MAI <- &CMAVO ( m o h o / m a i ) post-cmavo
ME <- &CMAVO ( m e ) post-cmavo
MEhU <- &CMAVO ( m e h u ) post-cmavo
MOhE <- &CMAVO ( m o h e ) post-cmavo
MOhI <- &CMAVO ( m o h i ) post-cmavo
MOI <- &CMAVO ( m e i / m o i / s i h e / c u h o / v a h e ) post-cmavo
NA <- &CMAVO ( j a h a / n a ) post-cmavo
NAI <- &CMAVO ( n a i ) post-cmavo
NAhE <- &CMAVO ( t o h e / j e h a / n a h e / n o h e ) post-cmavo
NAhU <- &CMAVO ( n a h u ) post-cmavo
NIhE <- &CMAVO ( n i h e ) post-cmavo
NIhO <- &CMAVO ( n i h o / n o h i ) post-cmavo
NOI <- &CMAVO ( v o i / n o i / p o i ) post-cmavo
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-cmavo
NUhA <- &CMAVO ( n u h a ) post-cmavo
NUhI <- &CMAVO ( n u h i ) post-cmavo
NUhU <- &CMAVO ( n u h u ) post-cmavo
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 ) post-cmavo
PEhE <- &CMAVO ( p e h e ) post-cmavo
PEhO <- &CMAVO ( p e h o ) post-cmavo
PU <- &CMAVO ( b a / p u / c a ) post-cmavo
RAhO <- &CMAVO ( r a h o ) post-cmavo
ROI <- &CMAVO ( r e h u / r o i ) post-cmavo
SA <- &CMAVO ( s a ) post-cmavo
SE <- &CMAVO ( s e / t e / v e / x e ) post-cmavo
SEI <- &CMAVO ( s e i / t i h o ) post-cmavo
SEhU <- &CMAVO ( s e h u ) post-cmavo
SI <- &CMAVO ( s i ) post-cmavo
SOI <- &CMAVO ( s o i ) post-cmavo
SU <- &CMAVO ( s u ) post-cmavo
TAhE <- &CMAVO ( r u h i / t a h e / d i h i / n a h o ) post-cmavo
TEhU <- &CMAVO ( t e h u ) post-cmavo
TEI <- &CMAVO ( t e i ) post-cmavo
TO <- &CMAVO ( t o h i / t o ) post-cmavo
TOI <- &CMAVO ( t o i ) post-cmavo
TUhE <- &CMAVO ( t u h e ) post-cmavo
TUhU <- &CMAVO ( t u h u ) post-cmavo
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-cmavo
VA <- &CMAVO ( v i / v a / v u ) post-cmavo
VAU <- &CMAVO ( v a u ) post-cmavo
VEI <- &CMAVO ( v e i ) post-cmavo
VEhO <- &CMAVO ( v e h o ) post-cmavo
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-cmavo
VEhA <- &CMAVO ( v e h u / v e h a / v e h i / v e h e ) post-cmavo
VIhA <- &CMAVO ( v i h i / v i h a / v i h u / v i h e ) post-cmavo
VUhO <- &CMAVO ( v u h o ) post-cmavo
XI <- &CMAVO ( x i ) post-cmavo
Y <- &CMAVO ( y ) post-cmavo
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-cmavo
ZEhA <- &CMAVO ( z e h u / z e h a / z e h i / z e h e ) post-cmavo
ZEI <- &CMAVO ( z e i ) post-cmavo
ZI <- &CMAVO ( z u / z a / z i ) post-cmavo
ZIhE <- &CMAVO ( z i h e ) post-cmavo
ZO <- &CMAVO ( z o ) post-cmavo
ZOI <- &CMAVO ( z o i / l a h o ) post-cmavo
ZOhU <- &CMAVO ( z o h u ) post-cmavo
;-----------------------
CMEVLA <- jbocme / zifcme
jbocme <- &zifcme (onset nucleus coda?)+ spaces
zifcme <- !h (nucleus / glide / h / C !spaces)* C spaces
;-----------------------
CMAVO <- !CMEVLA !CVCy-lujvo C? glide? nucleus (h nucleus)* post-cmavo
CVCy-lujvo <- C V C y initial-rafsi* (end-rafsi / gismu / fuhivla / type-3-fuhivla)
post-cmavo <- spaces / &CMAVO / &BRIVLA
;-----------------------
BRIVLA <- gismu / !h fuhivla / type-3-fuhivla / lujvo
lujvo <- !CMEVLA !CMAVO !h initial-rafsi+ (end-rafsi / gismu / fuhivla / type-3-fuhivla)
type-3-fuhivla <- !CMEVLA classifier syllable+ spaces
fuhivla <- !CMEVLA !CMAVO !rafsi-string !slinkuhi syllable syllable+ spaces
gismu <- full-rafsi spaces
end-rafsi <- !CMEVLA short-rafsi spaces
;---------------
initial-rafsi <- y-less-rafsi / y-rafsi / fuhivla-rafsi / type-3-rafsi / brivla-rafsi
brivla-rafsi <- !CMAVO !slinkuhi syllable syllable+ h y
type-3-rafsi <- classifier syllable* onset y
fuhivla-rafsi <- !CMAVO !rafsi-string !slinkuhi syllable+ onset y
slinkuhi <- C rafsi-string
rafsi-string <- y-less-rafsi* (gismu / end-rafsi / y-rafsi / CC y / h y / full-rafsi h y)
y-less-rafsi <- short-rafsi &rafsi-string
classifier <- C V C CR / CC V CR / C V CR / y-rafsi R
full-rafsi <- C V C C V / CC V C V
y-rafsi <- C V C C y / CC V C y / C V C y
short-rafsi <- C V C / CC V / C VV R? / C V h V R?
;-----------------------
;************************
; PHONOTACTICS
; the above has terminals a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, r, s, t, u, v, x, y, z,
; V, VV, glide, C, CC, R, CR, onset, nucleus, coda, syllable, non-space and spaces.
;************************
;------------
syllable <- onset !y nucleus coda?
coda <- !onset C
onset <- (h / C? glide / affricate / sibilant? middle? liquid?) &nucleus
sibilant <- c / s !x / j !n !liquid / z !n !liquid
middle <- f / p / t !l / k / x / v / b / d !l / g / m / n !liquid
liquid <- l / r
CC <- &onset C C
CR <- C R / r n &C / r l &n / r l &affricate / n l &r
R <- r &C / n &r
C <- voiced / unvoiced / l / m / n / r
affricate <- t c / t s / d j / d z
voiced <- b / d / g / j / v / z
unvoiced <- c / f / k / p / s / t / x
l <- "l" !h !l
m <- "m" !h !m !z
n <- "n" !h !n !affricate
r <- "r" !h !r
b <- "b" !h !b !unvoiced
d <- "d" !h !d !unvoiced
g <- "g" !h !g !unvoiced
v <- "v" !h !v !unvoiced
j <- "j" !h !j !z !unvoiced
z <- "z" !h !z !j !unvoiced
s <- "s" !h !s !c !voiced
c <- "c" !h !c !s !x !voiced
x <- "x" !h !x !c !k !voiced
k <- "k" !h !k !x !voiced
f <- "f" !h !f !voiced
p <- "p" !h !p !voiced
t <- "t" !h !t !voiced
h <- "'" &nucleus
;----------------
glide <- (i / u) &nucleus
nucleus <- V / VV / y
VV <- (a i / a u / e i / o i) !nucleus !glide
V <- (a / e / i / o / u) !nucleus
a <- "a"
e <- "e"
i <- "i"
o <- "o"
u <- "u"
y <- "y"+ !nucleus
;-----------------------
spaces <- space-char Y? spaces?
non-space <- !space-char .
space-char <- [.\t\n\r?!\u0020]