The Complete Lojban Language
Chapter 21. Formal Grammars
EBNF Grammar of Lojban
Lojban Machine Grammar, EBNF Version, Final Baseline
This EBNF document is explicitly dedicated to the public domain by its author, The Logical Language Group, Inc. Contact that organization at: 2904 Beau Lane, Fairfax VA 22031 USA 703-385-0273 (intl: +1 703 385 0273)
Explanation of notation: All rules have the form:
name number= bnf-expression
which means that the grammatical construct name is defined by bnf-expression.
- Names in lower case are grammatical constructs.
- Names in UPPER CASE are selma'o (lexeme) names, and are terminals.
- Concatenation is expressed by juxtaposition with no operator symbol.
- | represents alternation (choice).
- [] represents an optional element.
- & represents and/or (A & B is the same as A | B | A B).
- ... represents optional repetition of the construct to the left. Left-grouping is implied; right-grouping is shown by explicit self-referential recursion with no ...
- () serves to indicate the grouping of the other operators. Otherwise, ... binds closer than &, which binds closer than |.
-
is shorthand for [free ...], a construct which appears in many places.
- // encloses an elidable terminator, which may be omitted (without change of meaning) if no grammatical ambiguity results.
text 0=
[NAI ...] [CMENE ... # | (indicators & free ...)] [joik-jek] text-1
text-1 2=
[(I [jek | joik] [[stag] BO] #) ... | NIhO ... #] [paragraphs]
paragraphs 4=
paragraph [NIhO ... # paragraphs]
paragraph 10=
(statement | fragment) [I # [statement | fragment]] ...
statement 11=
statement-1 | prenex statement
statement-1 12=
statement-2 [I joik-jek [statement-2]] ...
statement-2 13=
statement-3 [I [jek | joik] [stag] BO # [statement-2]]
statement-3 14=
sentence | [tag] TUhE # text-1 /TUhU#/
fragment 20=
ek # | gihek # | quantifier | NA # | terms /VAU#/ | prenex | relative-clauses | links | linkargs
prenex 30=
terms ZOhU #
sentence 40=
[terms [CU #]] bridi-tail
subsentence 41=
sentence | prenex subsentence
bridi-tail 50=
bridi-tail-1 [gihek [stag] KE # bridi-tail /KEhE#/ tail-terms]
bridi-tail-1 51=
bridi-tail-2 [gihek # bridi-tail-2 tail-terms] ...
bridi-tail-2 52=
bridi-tail-3 [gihek [stag] BO # bridi-tail-2 tail-terms]
bridi-tail-3 53=
selbri tail-terms | gek-sentence
gek-sentence 54=
gek subsentence gik subsentence tail-terms | [tag] KE # gek-sentence /KEhE#/ | NA # gek-sentence
tail-terms 71=
[terms] /VAU#/
terms 80=
terms-1 ...
terms-1 81=
terms-2 [PEhE # joik-jek terms-2] ...
terms-2 82=
term [CEhE # term] ...
term 83=
sumti | (tag | FA #) (sumti | /KU#/) | termset | NA KU #
termset 85=
NUhI # gek terms /NUhU#/ gik terms /NUhU#/ | NUhI # terms /NUhU#/
sumti 90=
sumti-1 [VUhO # relative-clauses]
sumti-1 91=
sumti-2 [(ek | joik) [stag] KE # sumti /KEhE#/]
sumti-2 92=
sumti-3 [joik-ek sumti-3] ...
sumti-3 93=
sumti-4 [(ek | joik) [stag] BO # sumti-3]
sumti-4 94=
sumti-5 | gek sumti gik sumti-4
sumti-5 95=
[quantifier] sumti-6 [relative-clauses] | quantifier selbri /KU#/ [relative-clauses]
sumti-6 97=
(LAhE # | NAhE BO #) [relative-clauses] sumti /LUhU#/ | KOhA # | lerfu-string /BOI#/ | LA # [relative-clauses] CMENE ... # | (LA | LE) # sumti-tail /KU#/ | LI # mex /LOhO#/ | ZO any-word # | LU text /LIhU#/ | LOhU any-word ... LEhU # | ZOI any-word anything any-word #
sumti-tail 111=
[sumti-6 [relative-clauses]] sumti-tail-1 | relative-clauses sumti-tail-1
sumti-tail-1 112=
[quantifier] selbri [relative-clauses] | quantifier sumti
relative-clauses 121=
relative-clause [ZIhE # relative-clause] ...
relative-clause 122=
GOI # term /GEhU#/ | NOI # subsentence /KUhO#/
selbri 130=
[tag] selbri-1
selbri-1 131=
selbri-2 | NA # selbri
selbri-2 132=
selbri-3 [CO # selbri-2]
selbri-3 133=
selbri-4 ...
selbri-4 134=
selbri-5 [joik-jek selbri-5 | joik [stag] KE # selbri-3 /KEhE#/] ...
selbri-5 135=
selbri-6 [(jek | joik) [stag] BO # selbri-5]
selbri-6 136=
tanru-unit [BO # selbri-6] | [NAhE #] guhek selbri gik selbri-6
tanru-unit 150=
tanru-unit-1 [CEI # tanru-unit-1] ...
tanru-unit-1 151=
tanru-unit-2 [linkargs]
tanru-unit-2 152=
BRIVLA # | GOhA [RAhO] # | KE # selbri-3 /KEhE#/ | ME # sumti /MEhU#/ [MOI #] | (number | lerfu-string) MOI # | NUhA # mex-operator | SE # tanru-unit-2 | JAI # [tag] tanru-unit-2 | any-word (ZEI any-word) ... | NAhE # tanru-unit-2 | NU [NAI] # [joik-jek NU [NAI] #] ... subsentence /KEI#/
linkargs 160=
BE # term [links] /BEhO#/
links 161=
BEI # term [links]
quantifier 300=
number /BOI#/ | VEI # mex /VEhO#/
mex 310=
mex-1 [operator mex-1] ... | FUhA # rp-expression
mex-1 311=
mex-2 [BIhE # operator mex-1]
mex-2 312=
operand | [PEhO #] operator mex-2 ... /KUhE#/
rp-expression 330=
rp-operand rp-operand operator
rp-operand 332=
operand | rp-expression
operator 370=
operator-1 [joik-jek operator-1 | joik [stag] KE # operator /KEhE#/] ...
operator-1 371=
operator-2 | guhek operator-1 gik operator-2 | operator-2 (jek | joik) [stag] BO # operator-1
operator-2 372=
mex-operator | KE # operator /KEhE#/
mex-operator 374=
SE # mex-operator | NAhE # mex-operator | MAhO # mex /TEhU#/ | NAhU # selbri /TEhU#/ | VUhU #
operand 381=
operand-1 [(ek | joik) [stag] KE # operand /KEhE#/]
operand-1 382=
operand-2 [joik-ek operand-2] ...
operand-2 383=
operand-3 [(ek | joik) [stag] BO # operand-2]
operand-3 385=
quantifier | lerfu-string /BOI#/ | NIhE # selbri /TEhU#/ | MOhE # sumti /TEhU#/ | JOhI # mex-2 ... /TEhU#/ | gek operand gik operand-3 | (LAhE # | NAhE BO #) operand /LUhU#/
number 812=
PA [PA | lerfu-word] ...
lerfu-string 817=
lerfu-word [PA | lerfu-word] ...
lerfu-word 987=
BY | any-word BU | LAU lerfu-word | TEI lerfu-string FOI
ek 802=
[NA] [SE] A [NAI]
gihek 818=
[NA] [SE] GIhA [NAI]
jek 805=
[NA] [SE] JA [NAI]
joik 806=
[SE] JOI [NAI] | interval | GAhO interval GAhO
interval 932=
[SE] BIhI [NAI]
joik-ek 421=
joik # | ek #
joik-jek 422=
joik # | jek #
gek 807=
[SE] GA [NAI] # | joik GI # | stag gik
guhek 808=
[SE] GUhA [NAI] #
gik 816=
GI [NAI] #
tag 491=
tense-modal [joik-jek tense-modal] ...
stag 971=
simple-tense-modal [(jek | joik) simple-tense-modal] ...
tense-modal 815=
simple-tense-modal # | FIhO # selbri /FEhU#/
simple-tense-modal 972=
[NAhE] [SE] BAI [NAI] [KI] | [NAhE] (time [space] | space [time]) & CAhA [KI] | KI | CUhE
time 1030=
ZI & time-offset ... & (ZEhA [PU [NAI]]) & interval-property ...
time-offset 1033=
PU [NAI] [ZI]
space 1040=
VA & space-offset ... & space-interval & (MOhI space-offset)
space-offset 1045=
FAhA [NAI] [VA]
space-interval 1046=
((VEhA & VIhA) [FAhA [NAI]]) & space-int-props
space-int-props 1049=
(FEhE interval-property) ...
interval-property 1051=
number ROI [NAI] | TAhE [NAI] | ZAhO [NAI]
free 32=
SEI # [terms [CU #]] 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 # (number | lerfu-string) /BOI/ | XI # VEI # mex /VEhO/
vocative 415=
(COI [NAI]) ... & DOI
indicators 411=
[FUhE] indicator ...
indicator 413=
(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
FAhO is a universal terminator and signals the end of parsable input.
EBNF Cross-Reference
A
21.63 802
BAI
21.76 972
BAhE
21.89 1100
BE
21.44 160
BEI
21.45 161
BEhO
21.44 160
BIhE
21.48 311
BIhI
21.67 932
BO
21.14 52, 21.58 383, 21.59 385, 21.53 371, 21.39 135, 21.40 136, 21.6 13, 21.26 93, 21.29 97, 21.1 2
BOI
21.84 32, 21.59 385, 21.46 300, 21.29 97
BRIVLA
21.43 152
BU
21.62 987
BY
21.62 987
CAI
21.87 413
CAhA
21.76 972
CEI
21.41 150
CEhE
21.20 82
CMENE
CO
21.36 132
COI
21.85 415
CU
CUhE
21.76 972
DAhO
21.87 413
DOI
21.85 415
DOhU
21.84 32
FA
21.21 83
FAhA
FEhE
21.82 1049
FEhU
21.75 815
FIhO
21.75 815
FOI
21.62 987
FUhA
21.47 310
FUhE
21.86 411
FUhO
21.87 413
GA
21.70 807
GAhO
21.66 806
GEhU
21.33 122
GI
GIhA
21.64 818
GOI
21.33 122
GOhA
21.43 152
GUhA
21.71 808
I
21.3 10, 21.5 12, 21.6 13, 21.1 2
JA
21.65 805
JAI
21.43 152
JOI
21.66 806
JOhI
21.59 385
KE
21.12 50, 21.16 54, 21.56 381, 21.54 372, 21.52 370, 21.38 134, 21.24 91, 21.43 152
KEI
21.43 152
KEhE
21.12 50, 21.16 54, 21.56 381, 21.54 372, 21.52 370, 21.38 134, 21.24 91, 21.43 152
KI
21.76 972
KOhA
21.29 97
KU
KUhE
21.49 312
KUhO
21.33 122
LA
21.29 97
LAU
21.62 987
LAhE
LE
21.29 97
LEhU
21.29 97
LI
21.29 97
LIhU
21.29 97
LOhO
21.29 97
LOhU
21.29 97
LU
21.29 97
LUhU
MAI
21.84 32
MAhO
21.55 374
ME
21.43 152
MEhU
21.43 152
MOI
21.43 152
MOhE
21.59 385
MOhI
21.79 1040
NA
21.63 802, 21.8 20, 21.16 54, 21.64 818, 21.65 805, 21.35 131, 21.21 83
NAI
21.63 802, 21.70 807, 21.64 818, 21.72 816, 21.71 808, 21.87 413, 21.83 1051, 21.67 932, 21.65 805, 21.66 806, 21.76 972, 21.81 1046, 21.80 1045, 21.43 152, 21.1 0, 21.78 1033, 21.77 1030, 21.85 415
NAhE
21.55 374, 21.59 385, 21.40 136, 21.76 972, 21.29 97, 21.43 152
NAhU
21.55 374
NIhE
21.59 385
NIhO
NOI
21.33 122
NU
21.43 152
NUhA
21.43 152
NUhI
21.22 85
NUhU
21.22 85
PA
PEhE
21.19 81
PEhO
21.49 312
PU
RAhO
21.43 152
ROI
21.83 1051
SA
21.91 1101
SE
21.63 802, 21.70 807, 21.64 818, 21.71 808, 21.67 932, 21.65 805, 21.66 806, 21.55 374, 21.76 972, 21.43 152
SEI
21.84 32
SEhU
21.84 32
SI
21.91 1101
SOI
21.84 32
SU
21.91 1101
TAhE
21.83 1051
TEI
21.62 987
TEhU
TO
21.84 32
TOI
21.84 32
TUhE
21.7 14
TUhU
21.7 14
UI
21.87 413
VA
VAU
VEI
VEhA
21.81 1046
VEhO
VIhA
21.81 1046
VUhO
21.23 90
VUhU
21.55 374
XI
21.84 32
Y
21.87 413
ZAhO
21.83 1051
ZEI
21.43 152
ZEhA
21.77 1030
ZI
ZIhE
21.32 121
ZO
21.29 97
ZOI
21.29 97
ZOhU
21.9 30
any-word
21.62 987, 21.91 1101, 21.29 97, 21.43 152, 21.89 1100
anything
21.29 97
bridi-tail
bridi-tail-1
21.12 50
bridi-tail-2
bridi-tail-3
21.14 52
ek
21.8 20, 21.68 421, 21.58 383, 21.56 381, 21.24 91, 21.26 93
fragment
21.3 10
free
21.1 0
gek
21.16 54, 21.59 385, 21.27 94, 21.22 85
gek-sentence
gihek
21.13 51, 21.14 52, 21.12 50, 21.8 20
gik
21.16 54, 21.70 807, 21.59 385, 21.53 371, 21.40 136, 21.27 94, 21.22 85
guhek
indicator
21.86 411
indicators
interval
21.66 806
interval-property
jek
21.69 422, 21.53 371, 21.39 135, 21.74 971, 21.6 13, 21.1 2
joik
21.70 807, 21.68 421, 21.69 422, 21.58 383, 21.56 381, 21.53 371, 21.52 370, 21.38 134, 21.39 135, 21.74 971, 21.6 13, 21.24 91, 21.26 93, 21.1 2
joik-ek
joik-jek
21.52 370, 21.38 134, 21.5 12, 21.73 491, 21.43 152, 21.19 81, 21.1 0
lerfu-string
21.84 32, 21.62 987, 21.59 385, 21.29 97, 21.43 152
lerfu-word
21.61 817, 21.62 987, 21.60 812
linkargs
links
mex
21.84 32, 21.55 374, 21.46 300, 21.29 97
mex-1
mex-2
21.48 311, 21.49 312, 21.59 385
mex-operator
21.55 374, 21.54 372, 21.43 152
number
21.84 32, 21.83 1051, 21.46 300, 21.43 152
operand
21.49 312, 21.59 385, 21.56 381, 21.51 332
operand-1
21.56 381
operand-2
operand-3
operator
21.48 311, 21.49 312, 21.47 310, 21.54 372, 21.52 370, 21.50 330
operator-1
operator-2
21.53 371
paragraph
21.2 4
paragraphs
prenex
quantifier
21.8 20, 21.59 385, 21.28 95, 21.31 112
relative-clause
21.32 121
relative-clauses
21.8 20, 21.84 32, 21.28 95, 21.29 97, 21.31 112, 21.30 111, 21.23 90
rp-expression
rp-operand
21.50 330
selbri
21.15 53, 21.84 32, 21.55 374, 21.59 385, 21.35 131, 21.40 136, 21.28 95, 21.31 112, 21.75 815
selbri-1
21.34 130
selbri-2
selbri-3
21.36 132, 21.38 134, 21.43 152
selbri-4
21.37 133
selbri-5
selbri-6
sentence
simple-tense-modal
space
21.76 972
space-int-props
21.81 1046
space-interval
21.79 1040
space-offset
21.79 1040
stag
21.14 52, 21.12 50, 21.70 807, 21.58 383, 21.56 381, 21.53 371, 21.52 370, 21.38 134, 21.39 135, 21.6 13, 21.24 91, 21.26 93, 21.1 2
statement
statement-1
21.4 11
statement-2
statement-3
21.6 13
subsentence
21.16 54, 21.33 122, 21.11 41, 21.43 152
sumti
21.84 32, 21.59 385, 21.24 91, 21.27 94, 21.29 97, 21.31 112, 21.43 152, 21.21 83
sumti-1
21.23 90
sumti-2
21.24 91
sumti-3
sumti-4
sumti-5
21.27 94
sumti-6
sumti-tail
21.29 97
sumti-tail-1
21.30 111
tag
21.16 54, 21.34 130, 21.7 14, 21.43 152, 21.21 83
tail-terms
21.13 51, 21.14 52, 21.15 53, 21.12 50, 21.16 54
tanru-unit
21.40 136
tanru-unit-1
21.41 150
tanru-unit-2
tense-modal
21.73 491
term
21.44 160, 21.45 161, 21.33 122, 21.20 82
terms
21.8 20, 21.84 32, 21.9 30, 21.10 40, 21.17 71, 21.22 85
terms-1
21.18 80
terms-2
21.19 81
termset
21.21 83
text
21.84 32, 21.91 1101, 21.29 97
text-1
time
21.76 972
time-offset
21.77 1030
utterance
21.91 1101
vocative
21.84 32