Skip to main content
21

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.

  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 and/or (A & B is the same as A | B | A B).
  7. ... represents optional repetition of the construct to the left. Left-grouping is implied; right-grouping is shown by explicit self-referential recursion with no ...
  8. () serves to indicate the grouping of the other operators. Otherwise, ... binds closer than &, which binds closer than |.
  9. is shorthand for [free ...], a construct which appears in many places.

  10. // 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

21.84 32, 21.29 97, 21.1 0

CO

21.36 132

COI

21.85 415

CU

21.84 32, 21.10 40

CUhE

21.76 972

DAhO

21.87 413

DOI

21.85 415

DOhU

21.84 32

FA

21.21 83

FAhA

21.81 1046, 21.80 1045

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

21.70 807, 21.72 816

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

21.28 95, 21.29 97, 21.21 83

KUhE

21.49 312

KUhO

21.33 122

LA

21.29 97

LAU

21.62 987

LAhE

21.59 385, 21.29 97

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

21.59 385, 21.29 97

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

21.2 4, 21.1 2

NOI

21.33 122

NU

21.43 152

NUhA

21.43 152

NUhI

21.22 85

NUhU

21.22 85

PA

21.61 817, 21.60 812

PEhE

21.19 81

PEhO

21.49 312

PU

21.78 1033, 21.77 1030

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

21.55 374, 21.59 385

TO

21.84 32

TOI

21.84 32

TUhE

21.7 14

TUhU

21.7 14

UI

21.87 413

VA

21.80 1045, 21.79 1040

VAU

21.8 20, 21.17 71

VEI

21.84 32, 21.46 300

VEhA

21.81 1046

VEhO

21.84 32, 21.46 300

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

21.78 1033, 21.77 1030

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

21.12 50, 21.10 40

bridi-tail-1

21.12 50

bridi-tail-2

21.13 51, 21.14 52

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

21.15 53, 21.16 54

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

21.53 371, 21.40 136

indicator

21.86 411

indicators

21.1 0, 21.89 1100

interval

21.66 806

interval-property

21.82 1049, 21.77 1030

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

21.57 382, 21.25 92

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

21.8 20, 21.42 151

links

21.8 20, 21.44 160, 21.45 161

mex

21.84 32, 21.55 374, 21.46 300, 21.29 97

mex-1

21.48 311, 21.47 310

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

21.57 382, 21.58 383

operand-3

21.58 383, 21.59 385

operator

21.48 311, 21.49 312, 21.47 310, 21.54 372, 21.52 370, 21.50 330

operator-1

21.53 371, 21.52 370

operator-2

21.53 371

paragraph

21.2 4

paragraphs

21.2 4, 21.1 2

prenex

21.8 20, 21.4 11, 21.11 41

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

21.47 310, 21.51 332

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

21.35 131, 21.36 132

selbri-3

21.36 132, 21.38 134, 21.43 152

selbri-4

21.37 133

selbri-5

21.38 134, 21.39 135

selbri-6

21.39 135, 21.40 136

sentence

21.7 14, 21.11 41

simple-tense-modal

21.74 971, 21.75 815

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

21.3 10, 21.4 11

statement-1

21.4 11

statement-2

21.5 12, 21.6 13

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

21.25 92, 21.26 93

sumti-4

21.26 93, 21.27 94

sumti-5

21.27 94

sumti-6

21.28 95, 21.30 111

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

21.42 151, 21.43 152

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

21.7 14, 21.1 0

time

21.76 972

time-offset

21.77 1030

utterance

21.91 1101

vocative

21.84 32