; This is an RFC 2234 (ABNF) version of bnf.300.  See
; http://www.faqs.org/rfcs/rfc2234.html
; 
; The only part that is not ABNF is the elidable terminators.  The
; conversion was done entirely programatically, by a perl program.
; 
; All rules have the form:
; 
; 	name<number> = bnf-expression
; 
; which means that the grammatical construct "name" is defined by
; "bnf-expression".  The number cross-references this grammar with
; the rule numbers in the YACC grammar.  The names are the same as those
; in the YACC grammar, except that subrules are labeled with A, B, C, ... in the
; YACC grammar and with 1, 2, 3, ... in this grammar.  In addition, rule 971 is
; "simple_tag" in the YACC grammar but "stag" in this grammar, because of its
; frequent appearance.
; 
; 1)  Names in lower case are grammatical constructs.
; 2)  Names in UPPER CASE are selma'o (lexeme) names, and are terminals.
; 3)  Concatenation is expressed by juxtaposition with no operator symbol.
; 4)  / represents alternation (choice).
; 5)  [] represents an optional element.
; 6)  * represents optional repetition of the construct to the right.
; 7)  1* represents one-or-more repetition of the construct to the right.
; 8)  () serves to indicate the grouping of the other operators.
; 9) {} encloses an elidable terminator, which may be omitted (without change
;     of meaning) if no grammatical ambiguity results.
;
; A pre-processor should remove everything after the first fa'o.

; --- GRAMMAR ---
; Do not *ever* remove the line above this one.

text = [1*NAI] [1*CMENE *free / (indicators / 1*free / indicators 1*free)] [joik-jek] text-1 [FAhO]

text-1 = [1*(I [jek / joik] [[stag] BO] *free) / 1*NIhO *free] [paragraphs]

paragraphs = paragraph [1*NIhO *free paragraphs]

paragraph = (statement / fragment) *(I *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 *free [statement-2]]

statement-3 = sentence / [tag] TUhE *free text-1 [TUhU *free]

fragment = ek *free / gihek *free / quantifier / NA *free / terms [VAU *free] / prenex / relative-clauses / links / linkargs

prenex = terms ZOhU *free

sentence = [terms [CU *free]] bridi-tail

subsentence = sentence / prenex subsentence

bridi-tail = bridi-tail-1 [gihek [stag] KE *free bridi-tail {KEhE *free} tail-terms]

bridi-tail-1 = bridi-tail-2 *(gihek *free bridi-tail-2 tail-terms)

bridi-tail-2 = bridi-tail-3 [gihek [stag] BO *free bridi-tail-2 tail-terms]

bridi-tail-3 = selbri tail-terms / gek-sentence

gek-sentence = gek subsentence gik subsentence tail-terms / [tag] KE *free gek-sentence {KEhE *free} / NA *free gek-sentence

tail-terms = [terms] [VAU *free]

terms = 1*terms-1

terms-1 = terms-2 *(PEhE *free joik-jek terms-2)

terms-2 = term *(CEhE *free term)

term = sumti / ( (tag / FA *free) (sumti / {KU *free}) ) / termset / NA KU *free

termset = NUhI *free gek terms NUhU *free gik terms [NUhU *free] / NUhI *free terms [NUhU *free]

sumti = sumti-1 [VUhO *free relative-clauses]

sumti-1 = sumti-2 [(ek / joik) [stag] KE *free sumti {KEhE *free}]

sumti-2 = sumti-3 *(joik-ek sumti-3)

sumti-3 = sumti-4 [(ek / joik) [stag] BO *free 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 = (LAhE *free / NAhE BO *free) [relative-clauses] sumti {LUhU *free} / KOhA *free / lerfu-string {BOI *free} / LA *free [relative-clauses] 1*CMENE *free / (LA / LE) *free sumti-tail {KU *free} / LI *free mex {LOhO *free} / ZO any-word *free / LU text {LIhU *free} / LOhU 1*any-word LEhU *free / ZOI any-word anything any-word *free

sumti-tail = [sumti-6 [relative-clauses]] sumti-tail-1 / relative-clauses sumti-tail-1

sumti-tail-1 = [quantifier] selbri [relative-clauses] / quantifier sumti

relative-clauses = relative-clause *(ZIhE *free relative-clause)

relative-clause = GOI *free term {GEhU *free} / NOI *free subsentence {KUhO *free}

selbri = [tag] selbri-1

selbri-1 = selbri-2 / NA *free selbri

selbri-2 = selbri-3 [CO *free selbri-2]

selbri-3 = 1*selbri-4

selbri-4 = selbri-5 *(joik-jek selbri-5 / joik [stag] KE *free selbri-3 {KEhE *free})

selbri-5 = selbri-6 [(jek / joik) [stag] BO *free selbri-5]

selbri-6 = tanru-unit [BO *free selbri-6] / [NAhE *free] guhek selbri gik selbri-6

tanru-unit = tanru-unit-1 *(CEI *free tanru-unit-1)

tanru-unit-1 = tanru-unit-2 [linkargs]

tanru-unit-2 = BRIVLA *free / GOhA [RAhO] *free / KE *free selbri-3 {KEhE *free} / ME *free sumti {MEhU *free} [MOI *free] / (number / lerfu-string) MOI *free / NUhA *free mex-operator / SE *free tanru-unit-2 / JAI *free [tag] tanru-unit-2 / any-word 1*(ZEI any-word) / NAhE *free tanru-unit-2 / NU [NAI] *free *(joik-jek NU [NAI] *free) subsentence {KEI *free}

linkargs = BE *free term [links] {BEhO *free}

links = BEI *free term [links]

quantifier = number {BOI *free} / VEI *free mex {VEhO *free}

mex = mex-1 *(operator mex-1) / FUhA *free rp-expression

mex-1 = mex-2 [BIhE *free operator mex-1]

mex-2 = operand / [PEhO *free] operator 1*mex-2 {KUhE *free}

rp-expression = rp-operand rp-operand operator

rp-operand = operand / rp-expression

operator = operator-1 *(joik-jek operator-1 / joik [stag] KE *free operator {KEhE *free})

operator-1 = operator-2 / guhek operator-1 gik operator-2 / operator-2 (jek / joik) [stag] BO *free operator-1

operator-2 = mex-operator / KE *free operator {KEhE *free}

mex-operator = SE *free mex-operator / NAhE *free mex-operator / MAhO *free mex {TEhU *free} / NAhU *free selbri {TEhU *free} / VUhU *free

operand = operand-1 [(ek / joik) [stag] KE *free operand {KEhE *free}]

operand-1 = operand-2 *(joik-ek operand-2)

operand-2 = operand-3 [(ek / joik) [stag] BO *free operand-2]

operand-3 = quantifier / lerfu-string {BOI *free} / NIhE *free selbri {TEhU *free} / MOhE *free sumti {TEhU *free} / JOhI *free 1*mex-2 {TEhU *free} / gek operand gik operand-3 / (LAhE *free / NAhE BO *free) operand {LUhU *free}

number = PA *(PA / lerfu-word)

lerfu-string = lerfu-word *(PA / lerfu-word)

lerfu-word = BY / any-word BU / 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)

tense-modal = simple-tense-modal *free / FIhO *free 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 [1*time-offset] [ZEhA [PU [NAI]]] [1*interval-property] / [ZI] 1*time-offset [ZEhA [PU [NAI]]] [1*interval-property] / [ZI] [1*time-offset] ZEhA [PU [NAI]] [1*interval-property] / [ZI] [1*time-offset] [ZEhA [PU [NAI]]] 1*interval-property

time-offset = PU [NAI] [ZI]

space = VA [1*space-offset] [space-interval] [(MOhI space-offset)] / [VA] 1*space-offset [space-interval] [(MOhI space-offset)] / [VA] [1*space-offset] space-interval [(MOhI space-offset)] / [VA] [1*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 = 1*(FEhE interval-property)

interval-property = number ROI [NAI] / TAhE [NAI] / ZAhO [NAI]

free = SEI *free [terms [CU *free]] selbri {SEhU} / SOI *free sumti [sumti] {SEhU} / vocative [relative-clauses] selbri [relative-clauses] {DOhU} / vocative [relative-clauses] 1*CMENE *free [relative-clauses] {DOhU} / vocative [sumti] {DOhU} / (number / lerfu-string) MAI / TO text {TOI} / XI *free (number / lerfu-string) {BOI} / XI *free VEI *free mex {VEhO}

vocative = (1*(COI [NAI]) / DOI / 1*(COI [NAI]) DOI)

indicators = [FUhE] 1*indicator

indicator =  (UI / CAI) [NAI] / Y / DAhO / FUhO

; The following rules are non-formal:
; 
; word<1100> = [BAhE] any-word [indicators]
; 
; any-word = "any single word (no compound cmavo)"
; 
; anything = "any text at all, whether Lojban or not"
; 
; null<1101> = any-word SI / utterance SA / text SU

; --- MORPHOLOGY ---
; Do not *ever* remove the line above this one.
; (currently, nothing special is done to the morphology section; it
; is treated as part of the main grammar)

any_words = "AnyWords" ;         a string of lexable Lojban words 
any_word = "AnyWord" ;         any single lexable Lojban words 
anything = "AnyThing" ;         a possibly unlexable phoneme string 

;         any brivla 
; For now: gismu pattern.
; BRIVLA	: /[bcdfgjklmnprstvxz]{2}['a-z]{2,}[aeiou]/
;		/ /[bcdfgjklmnprstvxz][aeiou][bcdfgjklmnprstvxz]y?[bcdfgjklmnprstvxz]['a-z]*[aeiou]/
;		/ /[bcdfgjklmnprstvxz][aeiou]'?[aeiou][bcdfgjklmnprstvxz]{2}['a-z]*[aeiou]/
;		/ /[aeiou]('?[aeiou]){,2}[bcdfgjklmnprstvxz]{2}['a-z]*[aeiou]/
BRIVLA = "broda" / "brode" / "brodi" / "brodo" / "brodu"

; CMENE = /\.?[,'a-pr-z]+[bcdfgjklmnprstvxz]/
CMENE = "cmene" / ".alis" / "bab"

; --- SELMAHO ---
; Do not *ever* remove the line above this one.
; Special processing is done on the selma'o to stop abnf2bison from
; breaking them up into many, many productions.

;         eks; basic afterthought logical connectives 
A = ".a" / ".e" / "ji" / ".o" / ".u" 
;         modal operators 
BAI = "du'o" / "si'u" / "zau" / "ki'i" / "du'i" / "cu'u" / "tu'i" / "ti'u" / "di'o" / "ji'u" / "ri'a" / "ni'i" / "mu'i" / "ki'u" / "va'u" / "koi" / "ca'i" / "ta'i" / "pu'e" / "ja'i" / "kai" / "bai" / "fi'e" / "de'i" / "ci'o" / "mau" / "mu'u" / "ri'i" / "ra'i" / "ka'a" / "pa'u" / "pa'a" / "le'a" / "ku'u" / "tai" / "bau" / "ma'i" / "ci'e" / "fau" / "po'i" / "cau" / "ma'e" / "ci'u" / "ra'a" / "pu'a" / "li'e" / "la'u" / "ba'i" / "ka'i" / "sau" / "fa'e" / "be'i" / "ti'i" / "ja'e" / "ga'a" / "va'o" / "ji'o" / "me'a" / "do'e" / "ji'e" / "pi'o" / "gau" / "zu'e" / "me'e" / "rai" 
BAhE = "ba'e" / "za'e" ;         next word intensifier 
BE = "be" / "bei" / "be'o" ;         sumti link to attach sumti to a selbri 
BEI = "bei" ;         multiple sumti separator between BE, BEI 
BEhO = "be'o" ;         terminates BEBEI specified descriptors 
BIhI = "mi'i" / "bi'o" / "bi'i" ;         interval component of JOI 
BO = "bo" / "boi" ;         joins two units with shortest scope 

BU = "bu" ;         turns any word into a BY lerfu word 
BY = "jo'o" / "ru'o" / "ge'o" / "je'o" / "lo'a" / "na'a" / "se'e" / "to'a" / "ga'e" / ".y'y" / "by" / "cy" / "dy" / "fy" / "gy" / "jy" / "ky" / "ly" / "my" / "ny" / "py" / "ry" / "sy" / "ty" / "vy" / "xy" / "zy" ;         individual lerfu words 
CAhA = "ca'a" / "pu'i" / "nu'o" / "ka'e" ;         specifies actualitypotentiality of tense 
CAI = "pei" / "cai" / "cu'i" / "sai" / "ru'e" ;         afterthought intensity marker 
CEI = "cei" ;         pro-bridi assignment operator 
CEhE = "ce'e" ;         afterthought term list connective 

;         names; require consonant end, then pause no
;                                    LA or DOI selma'o embedded, pause before if
;                                    vowel initial and preceded by a vowel 

CO = "co" / "ju'i" / "coi" / "fi'i" / "ta'a" / "mu'o" / "fe'o" / "co'o" / "pe'u" / "ke'o" / "nu'e" / "re'i" / "be'e" / "je'e" / "mi'e" / "ki'e" / "vi'o" ;         tanru inversion  
COI = "ju'i" / "coi" / "fi'i" / "ta'a" / "mu'o" / "fe'o" / "co'o" / "pe'u" / "ke'o" / "nu'e" / "re'i" / "be'e" / "je'e" / "mi'e" / "ki'e" / "vi'o"
;         vocative marker permitted inside names; must
;                                    always be followed by pause or DOI 

CU = "cu" / "cu'e" / "nau" ;         separator between head sumti and selbri 
CUhE = "cu'e" / "nau" ;         tensemodal question 
DAhO = "da'o" ;         cancel anaphoracataphora assignments 
DOI = "doi" ;         vocative marker 
DOhU = "do'u" ;         terminator for DOI-marked vocatives 
FA = "fa" / "fe" / "fi" / "fo" / "fu" / "fai" / "fi'a" / "du'a" / "be'a" / "ne'u" / "vu'a" / "ga'u" / "ti'a" / "ni'a" / "ca'u" / "zu'a" / "ri'u" / "ru'u" / "re'o" / "te'e" / "bu'u" / "ne'a" / "pa'o" / "ne'i" / "to'o" / "zo'i" / "ze'o" / "zo'a" / "fa'a" / "fa'o" ;         modifier head generic case tag 
FAhA = "du'a" / "be'a" / "ne'u" / "vu'a" / "ga'u" / "ti'a" / "ni'a" / "ca'u" / "zu'a" / "ri'u" / "ru'u" / "re'o" / "te'e" / "bu'u" / "ne'a" / "pa'o" / "ne'i" / "to'o" / "zo'i" / "ze'o" / "zo'a" / "fa'a" ;         superdirections in space 
FAhO = "fa'o"
;         normally elided 'done pause' to indicate end
;                                    of utterance string 

FEhE = "fe'e" ;         space interval mod flag 
FEhU = "fe'u" ;         ends bridi to modal conversion 
FIhO = "fi'o" ;         marks bridi to modal conversion 
FOI = "foi" ;         end compound lerfu 
FUhE = "fu'e" ;         open long scope for indicator 
FUhO = "fu'o" ;         close long scope for indicator 
GA = "ge" / "ge'i" / "go" / "ga" / "gu" / "ke'i" / "ga'o" ;         geks; forethought logical connectives 
GEhU = "ge'u" ;         marker ending GOI relative clauses 
GI = "gi" / "gi'e" / "gi'i" / "gi'o" / "gi'a" / "gi'u" ;         forethought medial marker 
GIhA = "gi'e" / "gi'i" / "gi'o" / "gi'a" / "gi'u" ;         logical connectives for bridi-tails 
GOI = "no'u" / "ne" / "po" / "goi" / "po'u" / "pe" / "po'e" ;         attaches a sumti modifier to a sumti 
GOhA = "mo" / "nei" / "go'u" / "go'o" / "go'i" / "no'a" / "go'e" / "go'a" / "du" / "bu'a" / "bu'e" / "bu'i" / "co'e" ;         pro-bridi 
GUhA = "gu'e" / "gu'i" / "gu'o" / "gu'a" / "gu'u" ;         GEK for tanru units, corresponds to JEKs 
I = ".i" ;         sentence link 
JA = "je" / "je'i" / "jo" / "ja" / "ju" / "jai" ;         jeks; logical connectives within tanru 
JAI = "jai" ;         modal conversion flag 
JOI = "fa'u" / "pi'u" / "joi" / "ce'o" / "ce" / "jo'u" / "ku'a" / "jo'e" / "ju'e" ;         non-logical connectives 
KEhE = "ke'e" ;         right terminator for KE groups 
KE = "ke" / "kei" / "ke'e" ;         left long scope marker 
KEI = "kei" ;         right terminator, NU abstractions 
KI = "ki" ;         multiple utterance scope for tenses 
KOhA = "da" / "de" / "di" / "da'u" / "da'e" / "di'u" / "di'e" / "de'u" / "de'e" / "dei" / "do'i" / "ko" / "mi" / "mi'o" / "ma'a" / "mi'a" / "do" / "do'o" / "ko'a" / "fo'u" / "ko'e" / "ko'i" / "ko'o" / "ko'u" / "fo'a" / "fo'e" / "fo'i" / "fo'o" / "vo'a" / "vo'e" / "vo'i" / "vo'o" / "vo'u" / "ru" / "ri" / "ra" / "ta" / "tu" / "ti" / "zi'o" / "ke'a" / "ma" / "zu'i" / "zo'e" / "ce'u" ;         sumti anaphora 
KU = "ku" / "ku'e" / "ku'o" ;         right terminator for descriptions, etc. 
KUhO = "ku'o" ;         right terminator, NOI relative clauses 
LA = "la" / "lai" / "la'i" / "ce'a" / "lau" / "zai" / "tau" / "tu'a" / "lu'a" / "lu'o" / "la'e" / "vu'i" / "lu'i" / "lu'e" ;         name descriptors 
LAU = "ce'a" / "lau" / "zai" / "tau" ;         lerfu prefixes 
LAhE = "tu'a" / "lu'a" / "lu'o" / "la'e" / "vu'i" / "lu'i" / "lu'e" ;         sumti qualifiers 
LE = "le" / "lei" / "loi" / "lo" / "le'i" / "lo'i" / "le'e" / "lo'e" / "le'u" ;         sumti descriptors 
LEhU = "le'u" ;         possibly ungrammatical text right quote 
LI = "me'o" / "li" / "li'u" ;         convert number to sumti 
LIhU = "li'u" ;         grammatical text right quote 
LOhO = "lo'o" ;         elidable terminator for LI 
LOhU = "lo'u" ;         possibly ungrammatical text left quote 
LU = "lu" / "lu'u" ;         grammatical text left quote 
LUhU = "lu'u" ;         LAhE close delimiter 
ME = "me" / "me'u" ;         converts a sumti into a tanru_unit 
MEhU = "me'u" ;         terminator for ME 
MOhI = "mo'i" ;         motion tense marker 
NA = "ja'a" / "na" / "nai" / "to'e" / "je'a" / "na'e" / "no'e" / "na'u" ;         bridi negation  
NAI = "nai" ;         attached to words to negate them 
NAhE = "to'e" / "je'a" / "na'e" / "no'e" ;         scalar negation  
NIhO = "ni'o" / "no'i" ;         new paragraph; change of subject 
NOI = "voi" / "noi" / "poi" ;         attaches a subordinate clause to a sumti 
NU = "ni" / "du'u" / "si'o" / "nu" / "li'i" / "ka" / "jei" / "su'u" / "zu'o" / "mu'e" / "pu'u" / "za'i" / "nu'a" / "nu'i" / "nu'u" ;         abstraction  
NUhI = "nu'i" ;         marks the start of a termset 
NUhU = "nu'u" ;         marks the middle and end of a termset 
PEhE = "pe'e" ;         afterthought termset connective prefix 
PU = "ba" / "pu" / "ca" ;         directions in time 
RAhO = "ra'o" ;         flag for modified interpretation of GOhI 
ROI = "re'u" / "roi" ;         converts number to extensional tense 
SA = "sa"
;         metalinguistic eraser to the beginning of
;                                    the current utterance 

SE = "se" / "te" / "ve" / "xe" / "sei" / "ti'o" / "se'u" ;         conversions 
SEI = "sei" / "ti'o" ;         metalinguistic bridi insert marker 
SEhU = "se'u" ;         metalinguistic bridi end marker 
SI = "si" ;         metalinguistic single word eraser 
SOI = "soi" ;         reciprocal sumti marker 
SU = "su" ;         metalinguistic eraser of the entire text 
TAhE = "ru'i" / "ta'e" / "di'i" / "na'o" ;         tense interval properties 
TEI = "tei" ;         start compound lerfu 
TO = "to'i" / "to" / "toi" ;         left discursive parenthesis 
TOI = "toi" ;         right discursive parenthesis 
TUhE = "tu'e" ;         multiple utterance scope mark 
TUhU = "tu'u" ;         multiple utterance end scope mark 
UI = ".i'a" / ".ie" / ".a'e" / ".u'i" / ".i'o" / ".i'e" / ".a'a" / ".ia" / ".o'i" / ".o'e" / ".e'e" / ".oi" / ".uo" / ".e'i" / ".u'o" / ".au" / ".ua" / ".a'i" / ".i'u" / ".ii" / ".u'a" / ".ui" / ".a'o" / ".ai" / ".a'u" / ".iu" / ".ei" / ".o'o" / ".e'a" / ".uu" / ".o'a" / ".o'u" / ".u'u" / ".e'o" / ".io" / ".e'u" / ".ue" / ".i'i" / ".u'e" / "ba'a" / "ja'o" / "ca'e" / "su'a" / "ti'e" / "ka'u" / "se'o" / "za'a" / "pe'i" / "ru'a" / "ju'a" / "ta'o" / "ra'u" / "li'a" / "ba'u" / "mu'a" / "do'a" / "to'u" / "va'i" / "pa'e" / "zu'u" / "sa'e" / "la'a" / "ke'u" / "sa'u" / "da'i" / "je'u" / "sa'a" / "kau" / "ta'u" / "na'i" / "jo'a" / "bi'u" / "li'o" / "pau" / "mi'u" / "ku'i" / "ji'a" / "si'a" / "po'o" / "pe'a" / "ro'i" / "ro'e" / "ro'o" / "ro'u" / "ro'a" / "re'e" / "le'o" / "ju'o" / "fu'i" / "dai" / "ga'i" / "zo'o" / "be'u" / "ri'e" / "se'i" / "se'a" / "vu'e" / "ki'a" / "xu" / "ge'e" / "bu'o" ;         attitudinals, observationals, discursives 
VA = "vi" / "va" / "vu" / "vau" ;         distance in space-time 
VAU = "vau" ;         end simple bridi or bridi-tail 
VEhA = "ve'u" / "ve'a" / "ve'i" / "ve'e" ;         space-time interval size 
VIhA = "vi'i" / "vi'a" / "vi'u" / "vi'e" ;         space-time dimensionality marker 
VUhO = "vu'o"
;         glue between logically connected sumti
;                                     and relative clauses 

XI = "xi" ;         subscripting operator 
Y = ".y" ;         hesitation 
ZAhO = "co'i" / "pu'o" / "co'u" / "mo'u" / "ca'o" / "co'a" / "de'a" / "ba'o" / "di'a" / "za'o" ;         event properties - inchoative, etc. 
ZEhA = "ze'u" / "ze'a" / "ze'i" / "ze'e" ;         time interval size tense 
ZEI = "zei" ;         lujvo glue 
ZI = "zu" / "za" / "zi" / "zi'e" ;         time distance tense 
ZIhE = "zi'e" ;         conjoins relative clauses 
ZO = "zo" / "zoi" / "la'o" / "zo'u" ;         single word metalinguistic quote marker 
ZOI = "zoi" / "la'o" ;         delimited quote marker 
ZOhU = "zo'u" ;         prenex terminator (not elidable) 

BIhE = "bi'e" ;         prefix for high-priority MEX operator 
BOI = "boi" ;         number or lerfu-string terminator 
FUhA = "fu'a" ;         reverse Polish flag 
GAhO = "ke'i" / "ga'o" ;         openclosed interval markers for BIhI 
JOhI = "jo'i" ;         flags an array operand 
KUhE = "ku'e" ;         MEX forethought delimiter 
MAI = "mo'o" / "mai" ;         change numbers to utterance ordinals 
MAhO = "ma'o" ;         change MEX expressions to MEX operators 
MOI = "mei" / "moi" / "si'e" / "cu'o" ;         change number to selbri 
MOhE = "mo'e" ;         change sumti to operand, inverse of LI 
NAhU = "na'u" ;         change a selbri into an operator 
NIhE = "ni'e" ;         change selbri to operand; inverse of MOI 
NUhA = "nu'a" ;         change operator to selbri; inverse of MOhE 
PA = "no" / "pa" / "re" / "ci" / "vo" / "mu" / "xa" / "ze" / "bi" / "so" / "dau" / "fei" / "gai" / "jau" / "rei" / "vai" / "pi" / "pi'e" / "fi'u" / "za'u" / "me'i" / "ni'u" / "ki'o" / "ce'i" / "ma'u" / "ra'e" / "da'a" / "so'a" / "ji'i" / "su'o" / "su'e" / "ro" / "rau" / "so'u" / "so'i" / "so'e" / "so'o" / "mo'a" / "du'e" / "te'o" / "ka'o" / "ci'i" / "tu'o" / "xo" / "pai" / "no'o" ;         numbers and numeric punctuation 
PEhO = "pe'o" ;         forethought (Polish) flag 
TEhU = "te'u" ;         closing gap for MEX constructs 
VEI = "vei" ;         left MEX bracket 
VEhO = "ve'o" ;         right MEX bracket 
VUhU = "ge'a" / "fu'u" / "pi'i" / "fe'i" / "vu'u" / "su'i" / "ju'u" / "gei" / "pa'i" / "fa'i" / "te'a" / "cu'a" / "va'a" / "ne'o" / "de'o" / "fe'a" / "sa'o" / "re'a" / "ri'o" / "sa'i" / "pi'a" / "si'i" ;         MEX operator 

