; 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 = 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 <- (NAI+)? (CMENE+ free* / (indicators / free+ / indicators free+))? (joik-jek)? text-1 (FAhO)?

text-1 <- ((I (jek / joik)? ((stag)? BO)? free*)+ / NIhO+ free*)? (paragraphs)?

paragraphs <- paragraph (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 <- 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)? CMENE+ free* / (LA / LE) free* sumti-tail (KU free*)? / LI free* mex (LOhO free*)? / ZO any-word free* / LU text (LIhU free*)? / LOhU 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 <- 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 (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 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* 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 (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 free* (terms (CU free*)?)? selbri (SEhU)? / SOI free* sumti (sumti)? (SEhU)? / vocative (relative-clauses)? selbri (relative-clauses)? (DOhU)? / vocative (relative-clauses)? 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 <- ((COI (NAI)?)+ / DOI / (COI (NAI)?)+ DOI)

indicators <- (FUhE)? 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)

;         a string of lexable Lojban words 
any_words <- any_word+ 
;         any single lexable Lojban words 
any_word <- BRIVLA / CMENE / CMAVO 
;         a possibly unlexable phoneme string 
anything <- "AnyThing" 

;         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"

CMAVO <- 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 / Y / ZAhO / ZEI / ZEhA / ZI / ZIhE / ZO / ZOI / ZOhU

; --- 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" 
;         next word intensifier 
BAhE <- "ba'e" / "za'e" 
;         sumti link to attach sumti to a selbri 
BE <- "be" 
;         multiple sumti separator between BE, BEI 
BEI <- "bei" 
;         terminates BEBEI specified descriptors 
BEhO <- "be'o" 
;         prefix for high-priority MEX operator 
BIhE <- "bi'e" 
;         interval component of JOI 
BIhI <- "mi'i" / "bi'o" / "bi'i" 
;         joins two units with shortest scope 
BO <- "bo"
;         number or lerfu-string terminator 
BOI <- "boi" 
;         turns any word into a BY lerfu word 
BU <- "bu" 
;         individual lerfu words 
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" 

;         specifies actualitypotentiality of tense 
CAhA <- "ca'a" / "pu'i" / "nu'o" / "ka'e" 
;         afterthought intensity marker 
CAI <- "pei" / "cai" / "cu'i" / "sai" / "ru'e" 
;         pro-bridi assignment operator 
CEI <- "cei" 
;         afterthought term list connective 
CEhE <- "ce'e" 
;         names; require consonant end, then pause no
;                                    LA or DOI selma'o embedded, pause before if
;                                    vowel initial and preceded by a vowel 
;         tanru inversion  
CO <- "co" 
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 
;         separator between head sumti and selbri 
CU <- "cu" 
;         tensemodal question 
CUhE <- "cu'e" / "nau" 

;         cancel anaphoracataphora assignments 
DAhO <- "da'o" 
;         vocative marker 
DOI <- "doi" 
;         terminator for DOI-marked vocatives 
DOhU <- "do'u" 

;         modifier head generic case tag 
FA <- "fa" / "fe" / "fi" / "fo" / "fu" / "fai" / "fi'a" 
;         superdirections in space 
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" 
FAhO <- "fa'o"
;         normally elided 'done pause' to indicate end
;                                    of utterance string 
;         space interval mod flag 
FEhE <- "fe'e" 
;         ends bridi to modal conversion 
FEhU <- "fe'u" 
;         marks bridi to modal conversion 
FIhO <- "fi'o" 
;         end compound lerfu 
FOI <- "foi" 
;         reverse Polish flag 
FUhA <- "fu'a" 
;         open long scope for indicator 
FUhE <- "fu'e" 
;         close long scope for indicator 
FUhO <- "fu'o" 

;         geks; forethought logical connectives 
GA <- "ge" / "ge'i" / "go" / "ga" / "gu" 
;         openclosed interval markers for BIhI 
GAhO <- "ke'i" / "ga'o" 
;         marker ending GOI relative clauses 
GEhU <- "ge'u" 
;         forethought medial marker 
GI <- "gi"   
;         logical connectives for bridi-tails 
GIhA <- "gi'e" / "gi'i" / "gi'o" / "gi'a" / "gi'u" 
;         attaches a sumti modifier to a sumti 
GOI <- "no'u" / "ne" / "po" / "goi" / "po'u" / "pe" / "po'e" 
;         pro-bridi 
GOhA <- "mo" / "nei" / "go'u" / "go'o" / "go'i" / "no'a" / "go'e" / "go'a" / "du" / "bu'a" / "bu'e" / "bu'i" / "co'e" 
;         GEK for tanru units, corresponds to JEKs 
GUhA <- "gu'e" / "gu'i" / "gu'o" / "gu'a" / "gu'u" 

;         sentence link 
I <- ".i" 

;         jeks; logical connectives within tanru 
JA <- "je" / "je'i" / "jo" / "ja" / "ju" 
;         modal conversion flag 
JAI <- "jai" 
;         flags an array operand 
JOhI <- "jo'i" 
;         non-logical connectives 
JOI <- "fa'u" / "pi'u" / "joi" / "ce'o" / "ce" / "jo'u" / "ku'a" / "jo'e" / "ju'e" 

;         left long scope marker 
KE <- "ke" 
;         right terminator for KE groups 
KEhE <- "ke'e" 
;         right terminator, NU abstractions 
KEI <- "kei" 
;         multiple utterance scope for tenses 
KI <- "ki" 
;         sumti anaphora 
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" 
;         right terminator for descriptions, etc. 
KU <- "ku" 
;         MEX forethought delimiter 
KUhE <- "ku'e" 
;         right terminator, NOI relative clauses 
KUhO <- "ku'o" 

;         name descriptors 
LA <- "la" / "lai" / "la'i" 
;         lerfu prefixes 
LAU <- "ce'a" / "lau" / "zai" / "tau" 
;         sumti qualifiers 
LAhE <- "tu'a" / "lu'a" / "lu'o" / "la'e" / "vu'i" / "lu'i" / "lu'e" 
;         sumti descriptors 
LE <- "le" / "lei" / "loi" / "lo" / "le'i" / "lo'i" / "le'e" / "lo'e" 
;         possibly ungrammatical text right quote 
LEhU <- "le'u" 
;         convert number to sumti 
LI <- "me'o" / "li" 
;         grammatical text right quote 
LIhU <- "li'u" 
;         elidable terminator for LI 
LOhO <- "lo'o" 
;         possibly ungrammatical text left quote 
LOhU <- "lo'u" 
;         grammatical text left quote 
LU <- "lu" 
;         LAhE close delimiter 
LUhU <- "lu'u" 

;         change MEX expressions to MEX operators 
MAhO <- "ma'o" 
;         change numbers to utterance ordinals 
MAI <- "mo'o" / "mai" 
;         converts a sumti into a tanru_unit 
ME <- "me" 
;         terminator for ME 
MEhU <- "me'u" 
;         change sumti to operand, inverse of LI 
MOhE <- "mo'e" 
;         motion tense marker 
MOhI <- "mo'i" 
;         change number to selbri 
MOI <- "mei" / "moi" / "si'e" / "cu'o" / "va'e" 

;         bridi negation  
NA <- "ja'a" / "na" 
;         attached to words to negate them 
NAI <- "nai" 
;         scalar negation  
NAhE <- "to'e" / "je'a" / "na'e" / "no'e" 
;         change a selbri into an operator 
NAhU <- "na'u" 
;         change selbri to operand; inverse of MOI 
NIhE <- "ni'e" 
;         new paragraph; change of subject 
NIhO <- "ni'o" / "no'i" 
;         attaches a subordinate clause to a sumti 
NOI <- "voi" / "noi" / "poi" 
;         abstraction  
NU <- "ni" / "du'u" / "si'o" / "nu" / "li'i" / "ka" / "jei" / "su'u" / "zu'o" / "mu'e" / "pu'u" / "za'i" 
;         change operator to selbri; inverse of MOhE 
NUhA <- "nu'a" 
;         marks the start of a termset 
NUhI <- "nu'i" 
;         marks the middle and end of a termset 
NUhU <- "nu'u" 

;         numbers and numeric punctuation 
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" 
;         afterthought termset connective prefix 
PEhE <- "pe'e" 
;         forethought (Polish) flag 
PEhO <- "pe'o" 
;         directions in time 
PU <- "ba" / "pu" / "ca" 

;         flag for modified interpretation of GOhI 
RAhO <- "ra'o" 
;         converts number to extensional tense 
ROI <- "re'u" / "roi" 

SA <- "sa"
;         metalinguistic eraser to the beginning of
;                                    the current utterance 
;         conversions 
SE <- "se" / "te" / "ve" / "xe" 
;         metalinguistic bridi insert marker 
SEI <- "sei" / "ti'o" 
;         metalinguistic bridi end marker 
SEhU <- "se'u" 
;         metalinguistic single word eraser 
SI <- "si" 
;         reciprocal sumti marker 
SOI <- "soi" 
;         metalinguistic eraser of the entire text 
SU <- "su" 

;         tense interval properties 
TAhE <- "ru'i" / "ta'e" / "di'i" / "na'o" 
;         closing gap for MEX constructs 
TEhU <- "te'u" 
;         start compound lerfu 
TEI <- "tei" 
;         left discursive parenthesis 
TO <- "to'i" / "to" 
;         right discursive parenthesis 
TOI <- "toi" 
;         multiple utterance scope mark 
TUhE <- "tu'e" 
;         multiple utterance end scope mark 
TUhU <- "tu'u" 

;         attitudinals, observationals, discursives 
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" 

;         distance in space-time 
VA <- "vi" / "va" / "vu" 
;         end simple bridi or bridi-tail 
VAU <- "vau" 
;         left MEX bracket 
VEI <- "vei" 
;         right MEX bracket 
VEhO <- "ve'o" 
;         MEX operator 
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" 
;         space-time interval size 
VEhA <- "ve'u" / "ve'a" / "ve'i" / "ve'e" 
;         space-time dimensionality marker 
VIhA <- "vi'i" / "vi'a" / "vi'u" / "vi'e" 
VUhO <- "vu'o"
;         glue between logically connected sumti
;                                     and relative clauses 

;         subscripting operator 
XI <- "xi" 

;         hesitation 
Y <- ".y" 

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

