Грамматика ложбана/21.1: Difference between revisions
No edit summary Tag: 2017 source edit |
No edit summary Tag: 2017 source edit |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
===21.1. | ===21.1. '''РБНФ''' грамматика ложбана=== | ||
Окончательная РБНФ версия синтаксиса языка ложбан. | |||
Этот | <u>Этот РБНФ-документ является общественным достоянием</u> согласно решению его создателей, The Logical Language Group, Inc. Свяжитесь с этой организацией по адресу: 2904 Beau Lane, Fairfax VA 22031 USA 703-385-0273 (междунар.: +1 703 385 0273) | ||
Объяснение обозначений: | ====Объяснение обозначений==== | ||
Все правила имеют форму: '''имя<sub>номер</sub> = bnf-выражение''' | |||
что означает: грамматическая конструкция «имя» определена через «bnf-выражение». Номер является перекрестной ссылкой этой грамматики к номеру правила в грамматике YACC. Имена такие же, что и в грамматике YACC, за исключением того, что подправила в грамматике YACC помечены как A, B, C, ... по сравнению с 1, 2, 3, .... в данной грамматике. Кроме того, правило 971 помечено как «simple_tag» в грамматике YACC, но «stag» в этой грамматике из-за его частого появления. | |||
#Имена в нижнем регистре - это грамматические конструкции. | |||
#Имена в ВЕРХНЕМ РЕГИСТРЕ являются именами selma'o (лексем) и являются терминальными. | |||
#Конкатенация выражается последовательным позиционированием конструкций без какого-либо символа оператора. | |||
#| представляет чередование (выбор). | |||
# Имена в нижнем регистре - это грамматические конструкции. | #[] представляет собой необязательный элемент. | ||
# Имена в ВЕРХНЕМ РЕГИСТРЕ являются именами selma'o (лексем) и являются терминальными. | |||
# Конкатенация выражается последовательным | |||
# | представляет чередование (выбор). | |||
# [] представляет собой необязательный элемент. | |||
# & представляет собой "и / или" («A & B» - это фактически то же, что и «A | B | A B»). | # & представляет собой "и / или" («A & B» - это фактически то же, что и «A | B | A B»). | ||
# ... представляет собой необязательное повторение конструкции слева. По умолчанию подразумевается левое группирование; правое группирование показано явной ссылающейся на саму себя рекурсией без «...» | #... представляет собой необязательное повторение конструкции слева. По умолчанию подразумевается левое группирование; правое группирование показано явной ссылающейся на саму себя рекурсией без «...» | ||
# () используется для указания группировки других операторов. В противном случае «...» имеет степень группировки больше, чем &, которая группируется сильнее, чем при использовании |. | #() используется для указания группировки других операторов. В противном случае «...» имеет степень группировки больше, чем &, которая группируется сильнее, чем при использовании |. | ||
# # является сокращением для "[free ...]", конструкции, которая появляется во многих местах. | #<nowiki># является сокращением для "[free ...]", конструкции, которая появляется во многих местах.</nowiki> | ||
# // - это границы для так называемого опускаемого завершителя, которого можно опустить в речи (без изменения смысла), если только это не приводит к грамматической неоднозначности. | #// - это границы для так называемого опускаемого завершителя, которого можно опустить в речи (без изменения смысла), если только это не приводит к грамматической неоднозначности. | ||
text<sub>0</sub> = [NAI ...] [CMENE ... # | (indicators & free ...)] [joik-jek] text-1 | |||
text<sub>0</sub>= | |||
[NAI ...] [CMENE ... # | (indicators & free ...)] [joik-jek] text-1 | |||
text-1<sub>2</sub> = [(I [jek | joik] [[stag] BO] #) ... | NIhO ... #] [paragraphs] | |||
paragraphs<sub>4</sub> = paragraph [NIhO ... # paragraphs] | |||
paragraph<sub>10</sub> = (statement | fragment) [I # [statement | fragment]] ... | |||
statement<sub>11</sub> = statement-1 | prenex statement | |||
statement-1<sub>12</sub> = statement-2 [I joik-jek [statement-2]] ... | |||
statement-2<sub>13</sub> = statement-3 [I [jek | joik] [stag] BO # [statement-2]] | |||
statement-3<sub>14</sub> = sentence | [tag] TUhE # text-1 /TUhU#/ | |||
fragment<sub>20</sub> = ek # | gihek # | quantifier | NA # | terms /VAU#/ | prenex | relative-clauses | links | linkargs | |||
prenex<sub>30</sub> = terms ZOhU # | |||
sentence<sub>40</sub> = [terms [CU #]] bridi-tail | |||
subsentence<sub>41</sub> = sentence | prenex subsentence | |||
bridi-tail<sub>50</sub> = bridi-tail-1 [gihek [stag] KE # bridi-tail /KEhE#/ tail-terms] | |||
bridi-tail-1<sub>51</sub> = bridi-tail-2 [gihek # bridi-tail-2 tail-terms] ... | |||
bridi-tail-2<sub>52</sub> = bridi-tail-3 [gihek [stag] BO # bridi-tail-2 tail-terms] | |||
bridi-tail-3<sub>53</sub> = selbri tail-terms | gek-sentence | |||
gek-sentence<sub>54</sub> = gek subsentence gik subsentence tail-terms | [tag] KE # gek-sentence /KEhE#/ | NA # gek-sentence | |||
tail-terms<sub>71</sub> = [terms] /VAU#/ | |||
terms<sub>80</sub> = terms-1 ... | |||
terms-1<sub>81</sub> = terms-2 [PEhE # joik-jek terms-2] ... | |||
terms-2<sub>82</sub> = term [CEhE # term] ... | |||
term<sub>83</sub> = sumti | (tag | FA #) (sumti | /KU#/) | termset | NA KU # | |||
termset<sub>85</sub> = NUhI # gek terms /NUhU#/ gik terms /NUhU#/ | NUhI # terms /NUhU#/ | |||
sumti<sub>90</sub> = sumti-1 [VUhO # relative-clauses] | |||
sumti-1<sub>91</sub> = sumti-2 [(ek | joik) [stag] KE # sumti /KEhE#/] | |||
sumti-2<sub>92</sub> = sumti-3 [joik-ek sumti-3] ... | |||
sumti-3<sub>93</sub> = sumti-4 [(ek | joik) [stag] BO # sumti-3] | |||
sumti-4<sub>94</sub> = sumti-5 | gek sumti gik sumti-4 | |||
sumti-5<sub>95</sub> = [quantifier] sumti-6 [relative-clauses] | quantifier selbri /KU#/ [relative-clauses] | |||
lerfu-word | sumti-6<sub>97</sub> = (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<sub>111</sub> = [sumti-6 [relative-clauses]] sumti-tail-1 | relative-clauses sumti-tail-1 | |||
sumti-tail-1<sub>112</sub> = [quantifier] selbri [relative-clauses] | quantifier sumti | |||
relative-clauses<sub>121</sub> = relative-clause [ZIhE # relative-clause] ... | |||
relative-clause<sub>122</sub> = GOI # term /GEhU#/ | NOI # subsentence /KUhO#/ | |||
selbri<sub>130</sub> = [tag] selbri-1 | |||
selbri-1<sub>131</sub> = selbri-2 | NA # selbri | |||
selbri-2<sub>132</sub> = selbri-3 [CO # selbri-2] | |||
selbri-3<sub>133</sub> = selbri-4 ... | |||
selbri-4<sub>134</sub> = selbri-5 [joik-jek selbri-5 | joik [stag] KE # selbri-3 /KEhE#/] ... | |||
[ | selbri-5<sub>135</sub> = selbri-6 [(jek | joik) [stag] BO # selbri-5] | ||
selbri-6<sub>136</sub> = tanru-unit [BO # selbri-6] | [NAhE #] guhek selbri gik selbri-6 | |||
[ | tanru-unit<sub>150</sub> = tanru-unit-1 [CEI # tanru-unit-1] ... | ||
tanru-unit-1<sub>151</sub> = tanru-unit-2 [linkargs] | |||
joik # | tanru-unit-2<sub>152</sub> = 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<sub>160</sub> = BE # term [links] /BEhO#/ | |||
links<sub>161</sub> = BEI # term [links] | |||
quantifier<sub>300</sub> = number /BOI#/ | VEI # mex /VEhO#/ | |||
[ | mex<sub>310</sub> = mex-1 [operator mex-1] ... | FUhA # rp-expression | ||
mex-1<sub>311</sub> = mex-2 [BIhE # operator mex-1] | |||
[ | mex-2<sub>312</sub> = operand | [PEhO #] operator mex-2 ... /KUhE#/ | ||
rp-expression<sub>330</sub> = rp-operand rp-operand operator | |||
rp-operand<sub>332</sub> = operand | rp-expression | |||
operator<sub>370</sub> = operator-1 [joik-jek operator-1 | joik [stag] KE # operator /KEhE#/] ... | |||
operator-1<sub>371</sub> = operator-2 | guhek operator-1 gik operator-2 | operator-2 (jek | joik) [stag] BO # operator-1 | |||
operator-2<sub>372</sub> = mex-operator | KE # operator /KEhE#/ | |||
mex-operator<sub>374</sub> = SE # mex-operator | NAhE # mex-operator | MAhO # mex /TEhU#/ | NAhU # selbri /TEhU#/ | VUhU # | |||
operand<sub>381</sub> = operand-1 [(ek | joik) [stag] KE # operand /KEhE#/] | |||
operand-1<sub>382</sub> = operand-2 [joik-ek operand-2] ... | |||
operand-2<sub>383</sub> = operand-3 [(ek | joik) [stag] BO # operand-2] | |||
operand-3<sub>385</sub> = 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<sub>812</sub> = PA [PA | lerfu-word] ... | |||
lerfu-string<sub>817</sub> = lerfu-word [PA | lerfu-word] ... | |||
lerfu-word<sub>987</sub> = BY | any-word BU | LAU lerfu-word | TEI lerfu-string FOI | |||
ek<sub>802</sub> = [NA] [SE] A [NAI] | |||
gihek<sub>818</sub> = [NA] [SE] GIhA [NAI] | |||
jek<sub>805</sub> = [NA] [SE] JA [NAI] | |||
joik<sub>806</sub> = [SE] JOI [NAI] | interval | GAhO interval GAhO | |||
interval<sub>932</sub> = [SE] BIhI [NAI] | |||
joik-ek<sub>421</sub> = joik # | ek # | |||
joik-jek<sub>422</sub> = joik # | jek # | |||
gek<sub>807</sub> = [SE] GA [NAI] # | joik GI # | stag gik | |||
guhek<sub>808</sub> = [SE] GUhA [NAI] # | |||
gik<sub>816</sub> = GI [NAI] # | |||
tag<sub>491</sub> = tense-modal [joik-jek tense-modal] ... | |||
stag<sub>971</sub> = simple-tense-modal [(jek | joik) simple-tense-modal] ... | |||
tense-modal<sub>815</sub> = simple-tense-modal # | FIhO # selbri /FEhU#/ | |||
simple-tense-modal<sub>972</sub> = [NAhE] [SE] BAI [NAI] [KI] | [NAhE] (time [space] | space [time]) & CAhA [KI] | KI | CUhE | |||
time<sub>1030</sub> = ZI & time-offset ... & ZEhA [PU [NAI]] & interval-property ... | |||
time-offset<sub>1033</sub> = PU [NAI] [ZI] | |||
space<sub>1040</sub> = VA & space-offset ... & space-interval & (MOhI space-offset) | |||
space-offset<sub>1045</sub> = FAhA [NAI] [VA] | |||
( | space-interval<sub>1046</sub>= ((VEhA & VIhA) [FAhA [NAI]]) & space-int-props | ||
space-int-props<sub>1049</sub> = (FEhE interval-property) ... | |||
interval-property<sub>1051</sub> = number ROI [NAI] | TAhE [NAI] | ZAhO [NAI] | |||
[ | free<sub>32</sub> = 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<sub>415</sub> = (COI [NAI]) ... & DOI | |||
indicators<sub>411</sub> = [FUhE] indicator ... | |||
indicator<sub>413</sub> = (UI | CAI) [NAI] | Y | DAhO | FUhO | |||
=====Следующие правила являются неформальными:===== | |||
word<sub>1100</sub> = [BAhE] any-word [indicators] | |||
any-word = “любое одинарное слово (не включает составные cmavo)” | |||
anything = “любой текст вообще, неважно ложбанский или нет” | |||
FAhO является универсальным завершителем и сигнализирует о завершении входного текста, подвергаемого синтаксическому разбору. | null<sub>1101</sub> = any-word SI | utterance SA | text SU | ||
"FAhO" является универсальным завершителем и сигнализирует о завершении входного текста, подвергаемого синтаксическому разбору. |
Latest revision as of 17:40, 13 June 2021
21.1. РБНФ грамматика ложбана
Окончательная РБНФ версия синтаксиса языка ложбан.
Этот РБНФ-документ является общественным достоянием согласно решению его создателей, The Logical Language Group, Inc. Свяжитесь с этой организацией по адресу: 2904 Beau Lane, Fairfax VA 22031 USA 703-385-0273 (междунар.: +1 703 385 0273)
Объяснение обозначений
Все правила имеют форму: имяномер = bnf-выражение
что означает: грамматическая конструкция «имя» определена через «bnf-выражение». Номер является перекрестной ссылкой этой грамматики к номеру правила в грамматике YACC. Имена такие же, что и в грамматике YACC, за исключением того, что подправила в грамматике YACC помечены как A, B, C, ... по сравнению с 1, 2, 3, .... в данной грамматике. Кроме того, правило 971 помечено как «simple_tag» в грамматике YACC, но «stag» в этой грамматике из-за его частого появления.
- Имена в нижнем регистре - это грамматические конструкции.
- Имена в ВЕРХНЕМ РЕГИСТРЕ являются именами selma'o (лексем) и являются терминальными.
- Конкатенация выражается последовательным позиционированием конструкций без какого-либо символа оператора.
- | представляет чередование (выбор).
- [] представляет собой необязательный элемент.
- & представляет собой "и / или" («A & B» - это фактически то же, что и «A | B | A B»).
- ... представляет собой необязательное повторение конструкции слева. По умолчанию подразумевается левое группирование; правое группирование показано явной ссылающейся на саму себя рекурсией без «...»
- () используется для указания группировки других операторов. В противном случае «...» имеет степень группировки больше, чем &, которая группируется сильнее, чем при использовании |.
- # является сокращением для "[free ...]", конструкции, которая появляется во многих местах.
- // - это границы для так называемого опускаемого завершителя, которого можно опустить в речи (без изменения смысла), если только это не приводит к грамматической неоднозначности.
text0 = [NAI ...] [CMENE ... # | (indicators & free ...)] [joik-jek] text-1
text-12 = [(I [jek | joik] [[stag] BO] #) ... | NIhO ... #] [paragraphs]
paragraphs4 = paragraph [NIhO ... # paragraphs]
paragraph10 = (statement | fragment) [I # [statement | fragment]] ...
statement11 = statement-1 | prenex statement
statement-112 = statement-2 [I joik-jek [statement-2]] ...
statement-213 = statement-3 [I [jek | joik] [stag] BO # [statement-2]]
statement-314 = sentence | [tag] TUhE # text-1 /TUhU#/
fragment20 = ek # | gihek # | quantifier | NA # | terms /VAU#/ | prenex | relative-clauses | links | linkargs
prenex30 = terms ZOhU #
sentence40 = [terms [CU #]] bridi-tail
subsentence41 = sentence | prenex subsentence
bridi-tail50 = bridi-tail-1 [gihek [stag] KE # bridi-tail /KEhE#/ tail-terms]
bridi-tail-151 = bridi-tail-2 [gihek # bridi-tail-2 tail-terms] ...
bridi-tail-252 = bridi-tail-3 [gihek [stag] BO # bridi-tail-2 tail-terms]
bridi-tail-353 = selbri tail-terms | gek-sentence
gek-sentence54 = gek subsentence gik subsentence tail-terms | [tag] KE # gek-sentence /KEhE#/ | NA # gek-sentence
tail-terms71 = [terms] /VAU#/
terms80 = terms-1 ...
terms-181 = terms-2 [PEhE # joik-jek terms-2] ...
terms-282 = term [CEhE # term] ...
term83 = sumti | (tag | FA #) (sumti | /KU#/) | termset | NA KU #
termset85 = NUhI # gek terms /NUhU#/ gik terms /NUhU#/ | NUhI # terms /NUhU#/
sumti90 = sumti-1 [VUhO # relative-clauses]
sumti-191 = sumti-2 [(ek | joik) [stag] KE # sumti /KEhE#/]
sumti-292 = sumti-3 [joik-ek sumti-3] ...
sumti-393 = sumti-4 [(ek | joik) [stag] BO # sumti-3]
sumti-494 = sumti-5 | gek sumti gik sumti-4
sumti-595 = [quantifier] sumti-6 [relative-clauses] | quantifier selbri /KU#/ [relative-clauses]
sumti-697 = (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-tail111 = [sumti-6 [relative-clauses]] sumti-tail-1 | relative-clauses sumti-tail-1
sumti-tail-1112 = [quantifier] selbri [relative-clauses] | quantifier sumti
relative-clauses121 = relative-clause [ZIhE # relative-clause] ...
relative-clause122 = GOI # term /GEhU#/ | NOI # subsentence /KUhO#/
selbri130 = [tag] selbri-1
selbri-1131 = selbri-2 | NA # selbri
selbri-2132 = selbri-3 [CO # selbri-2]
selbri-3133 = selbri-4 ...
selbri-4134 = selbri-5 [joik-jek selbri-5 | joik [stag] KE # selbri-3 /KEhE#/] ...
selbri-5135 = selbri-6 [(jek | joik) [stag] BO # selbri-5]
selbri-6136 = tanru-unit [BO # selbri-6] | [NAhE #] guhek selbri gik selbri-6
tanru-unit150 = tanru-unit-1 [CEI # tanru-unit-1] ...
tanru-unit-1151 = tanru-unit-2 [linkargs]
tanru-unit-2152 = 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#/
linkargs160 = BE # term [links] /BEhO#/
links161 = BEI # term [links]
quantifier300 = number /BOI#/ | VEI # mex /VEhO#/
mex310 = mex-1 [operator mex-1] ... | FUhA # rp-expression
mex-1311 = mex-2 [BIhE # operator mex-1]
mex-2312 = operand | [PEhO #] operator mex-2 ... /KUhE#/
rp-expression330 = rp-operand rp-operand operator
rp-operand332 = operand | rp-expression
operator370 = operator-1 [joik-jek operator-1 | joik [stag] KE # operator /KEhE#/] ...
operator-1371 = operator-2 | guhek operator-1 gik operator-2 | operator-2 (jek | joik) [stag] BO # operator-1
operator-2372 = mex-operator | KE # operator /KEhE#/
mex-operator374 = SE # mex-operator | NAhE # mex-operator | MAhO # mex /TEhU#/ | NAhU # selbri /TEhU#/ | VUhU #
operand381 = operand-1 [(ek | joik) [stag] KE # operand /KEhE#/]
operand-1382 = operand-2 [joik-ek operand-2] ...
operand-2383 = operand-3 [(ek | joik) [stag] BO # operand-2]
operand-3385 = quantifier | lerfu-string /BOI#/ | NIhE # selbri /TEhU#/ | MOhE # sumti /TEhU#/ | JOhI # mex-2 ... /TEhU#/ | gek operand gik operand-3 | (LAhE # | NAhE BO #) operand /LUhU#/
number812 = PA [PA | lerfu-word] ...
lerfu-string817 = lerfu-word [PA | lerfu-word] ...
lerfu-word987 = BY | any-word BU | LAU lerfu-word | TEI lerfu-string FOI
ek802 = [NA] [SE] A [NAI]
gihek818 = [NA] [SE] GIhA [NAI]
jek805 = [NA] [SE] JA [NAI]
joik806 = [SE] JOI [NAI] | interval | GAhO interval GAhO
interval932 = [SE] BIhI [NAI]
joik-ek421 = joik # | ek #
joik-jek422 = joik # | jek #
gek807 = [SE] GA [NAI] # | joik GI # | stag gik
guhek808 = [SE] GUhA [NAI] #
gik816 = GI [NAI] #
tag491 = tense-modal [joik-jek tense-modal] ...
stag971 = simple-tense-modal [(jek | joik) simple-tense-modal] ...
tense-modal815 = simple-tense-modal # | FIhO # selbri /FEhU#/
simple-tense-modal972 = [NAhE] [SE] BAI [NAI] [KI] | [NAhE] (time [space] | space [time]) & CAhA [KI] | KI | CUhE
time1030 = ZI & time-offset ... & ZEhA [PU [NAI]] & interval-property ...
time-offset1033 = PU [NAI] [ZI]
space1040 = VA & space-offset ... & space-interval & (MOhI space-offset)
space-offset1045 = FAhA [NAI] [VA]
space-interval1046= ((VEhA & VIhA) [FAhA [NAI]]) & space-int-props
space-int-props1049 = (FEhE interval-property) ...
interval-property1051 = number ROI [NAI] | TAhE [NAI] | ZAhO [NAI]
free32 = 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/
vocative415 = (COI [NAI]) ... & DOI
indicators411 = [FUhE] indicator ...
indicator413 = (UI | CAI) [NAI] | Y | DAhO | FUhO
Следующие правила являются неформальными:
word1100 = [BAhE] any-word [indicators]
any-word = “любое одинарное слово (не включает составные cmavo)”
anything = “любой текст вообще, неважно ложбанский или нет”
null1101 = any-word SI | utterance SA | text SU
"FAhO" является универсальным завершителем и сигнализирует о завершении входного текста, подвергаемого синтаксическому разбору.