ゆくゆくは有へと

おかゆ/彼ノ∅有生 の雑記

ロジバン slabu gerna の selbritcita まわりと複合タグ

ちょっと需要があるようなので、まとめておきます。

基本的には、CLL 日本語抄訳の目次にある 現行文法のPEGの解説 を元にしていきます*1

といいつつも、有名なパーサが微妙に(もっぱらバグ取りを目的として)変更を加えてる点も知っておく必要があると思いますし、僕が(多分世間的にも)よく使う ilmentufa https://lojban.github.io/ilmentufa/camxes.html の standard も適宜参照します。

selbri と selbrisle

ロジバンのアレのことは「述語」とかはじロジなら「述なれ語」などと言われるが、PEG では大きく分けて selbri と tanru-unit のどちらを意味しているのかで統語論的な立ち位置は変わってくるので注意。ロジバンでは tanru-unit は {selbrisle} と呼ばれる。*2

tanru-unit はその名の通り、「tanruの要素(seltau, tertau)になれるような統語的要素」のことです。一方、PEGの selbri は 1から6まであって、PEGを見てもらった方が早い気もしますが、概ね

  • selbri-2~6 : デフォルトなり{bo} なり接続詞なり{co}なりで繋げた tanru
  • selbri : tanru の頭に tag や {na} をつけた表現

になります。ので、口語で無難にいえば

「tanru-unit によって tanru がつくられて、それにタグや {na} を冠したものが selbri」

となります。詳しいところは下のPEGを見てください。

selbri <- tag? selbri_1

selbri_1 <- selbri_2 / NA_clause free* selbri

selbri_2 <- selbri_3 (CO_clause free* selbri_2)?

selbri_3 <- selbri_4+ # !LR

selbri_4 <- selbri_5 (joik_jek selbri_5 / joik stag? KE_clause free* selbri_3 KEhE_elidible free*)* # !LR2

selbri_5 <- selbri_6 ((jek / joik) stag? BO_clause free* selbri_5)?

selbri_6 <- tanru_unit (BO_clause free* selbri_6)? / NAhE_clause? free* guhek selbri gik selbri_6

tanru_unit <- tanru_unit_1 (CEI_clause free* tanru_unit_1)*

tanru_unit_1 <- tanru_unit_2 linkargs?

# ** zei is part of BRIVLA_clause
tanru_unit_2 <- BRIVLA_clause free* / GOhA_clause RAhO_clause? free* / KE_clause free* selbri_3 KEhE_elidible free* / 
ME_clause free* (sumti / lerfu_string) MEhU_elidible free* MOI_clause? free* / (number / lerfu_string) MOI_clause free* /
NUhA_clause free* mex_operator / SE_clause free* tanru_unit_2 / JAI_clause free* tag? tanru_unit_2 / NAhE_clause free*
tanru_unit_2 / NU_clause NAI_clause? free* (joik_jek NU_clause NAI_clause? free*)* subsentence KEI_elidible free*

selbri と tag

selbri <- tag? selbri_1

selbri_1 <- selbri_2 / NA_clause free* selbri

のところ。「タグは連続して置けないけど、{na}があれば置ける」ということになります。

なので、{na bai na na bai na bai na na na na bai broda} とかはOKですが、{bai bai broda} ではダメ。

ここで「ダメ」というのは「selbritcita として解析されない」という意味で、非文になるということではないので注意。

{bai bai broda} は {bai ku bai broda} と解析されます。つまり、タグが selbri の前で連続してる場合、見た目的に selbritcita っぽくても、一部は「sumtcita ku」になって分離してる可能性があるので注意してください。

なので、{na bai bai broda} は解析に失敗します。1つ目の bai は sumtcita として分離しようとしますが、sumtcita に {na} のつくようなことはないからです*3

cu 無しの tag の注意

ここでさらに注意です。日本語抄訳にある現行PEGでは、{mi pu broda} は {mi pu ku broda} と解析されてしまいます。{pu} を selbritcita として解析したい場合は {mi cu pu broda} とする必要があります。これはどう考えても誰も望んでいないですね。

というわけで、ilmentufa の PEG ではその辺り微修正されています:

term_1 <- sumti / ( !gek (tag !(!tag selbri) / FA_clause free*) (sumti / KU_elidible free*) ) / termset / NA_clause KU_clause free*

selbri 以前の term の解析のところで 「tag selbri」構造の tag まで呑み込まないようにしてます。日本語抄訳にある方では、

term-1 <- sumti / ( !gek (tag / FA-clause free*) (sumti / KU-clause? free*) ) / termset / NA-clause KU-clause free*

となってます。

複合タグにご用心

tanru に冠することができる tag が1つだけというのは間制のことを考えると意外かもしれません。しかし、間制タグは大体において複合タグ化しているので、あれはあれで実質1つなのです。{pu zi ze'u ba ta'e ca'o roroi broda} の {pu zi ze'u ba ta'e ca'o roroi} なんかはこれで1つの(複合)タグ表現とみなされます*4

新文法案だとこのタグの複合化に関する細かな統語論を廃してしまっていて、頭空っぽでも大丈夫なんですが*5、現行文法だとこのあたりがま~た面倒で嫌になりますよね。見ていった方がいいですか?ですよね、見ていった方がいいですよね…。どうせなんで、ilmentufa PEG をみていきます。

tag <- tense_modal (joik_jek tense_modal)*

tense_modal <- simple_tense_modal free* / FIhO_clause free* selbri FEhU_elidible free*

simple_tense_modal <- NAhE_clause? SE_clause? BAI_clause NAI_clause? KI_clause? / NAhE_clause? ( ((time space? / space time?) CAhA_clause) / (time space? / space time?) / CAhA_clause ) KI_clause? / KI_clause / CUhE_clause

time <- ZI_clause time_offset* (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property* / ZI_clause? time_offset+ (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property* / ZI_clause? time_offset* ZEhA_clause (PU_clause NAI_clause?)? interval_property* / ZI_clause? time_offset* (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property+

time_offset <- PU_clause NAI_clause? ZI_clause?

space <- VA_clause space_offset* space_interval? (MOhI_clause space_offset)? / VA_clause? space_offset+ space_interval? (MOhI_clause space_offset)? / VA_clause? space_offset* space_interval (MOhI_clause space_offset)? / VA_clause? space_offset* space_interval? MOhI_clause space_offset

space_offset <- FAhA_clause NAI_clause? VA_clause?

space_interval <- (VEhA_clause VIhA_clause? / VIhA_clause) (FAhA_clause NAI_clause?)? space_int_props? / space_int_props

space_int_props <- (FEhE_clause interval_property)+

interval_property <- number ROI_clause NAI_clause? / TAhE_clause NAI_clause? / ZAhO_clause NAI_clause?
  • tag とは tense-modal を接続詞で任意個繋げたもののこと。
  • tense-modal とは simple-tense-modal か fi'o selbri fe'u タグのこと。
  • simple-tense-modal とは……

ここからが死にそうになるので、箇条書きをやめます。

simple-tense-modal -> NAhE_clause? SE_clause? BAI_clause NAI_clause? KI_clause? / NAhE_clause? ( ((time space? / space time?) CAhA_clause) / (time space? / space time?) / CAhA_clause ) KI_clause? / KI_clause / CUhE_clause

simple-tense-modal

まず1つ目が BAI 関連(つまり法制タグの方)で、{NAhE? SE? BAI NAI? KI?} のこと。NAhE や SE や NAI や KI はこの順で BAI につけられる。

次は間制タグの方で、ちょっとうるさいので (time space? / space time?) を time-space とおくと、

NAhE? (time-space CAhA / time-space / CAhA) KI? / KI / CUhE

ってなるんですが、

  • time-space CAhA や time-space や CAhA に NAhE を冠したり、KIを後ろにつけたりできる。
  • time-space と CAhA はこの順で生起可能。少なくともどちらかひとつは生起しないといけない。
  • KI 単独もOK
  • CUhE は単独のみOK

という感じです。*6

順序が大事で、{pu ca'a broda} は {pu ca'a} は selbritcita ですが、{ca'a pu broda} は {ca'a ku pu broda} になります。

NAhE の付け方も割と重要で、time-space と CAhA が共起してる場合、CAhA だけに NAhE を作用させることができません。つまり {pu na'e ca'a broda} とすると、{puku na'e ca'a broda} と解析されてしまい {pu} が分離します。細かくてうざったいですね。

time

次に time のほうにいきます。

time <- ZI_clause time_offset* (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property* / ZI_clause? time_offset+ (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property* / ZI_clause? time_offset* ZEhA_clause (PU_clause NAI_clause?)? interval_property* / ZI_clause? time_offset* (ZEhA_clause (PU_clause NAI_clause?)?)? interval_property+

time_offset <- PU_clause NAI_clause? ZI_clause?

...

interval_property <- number ROI_clause NAI_clause? / TAhE_clause NAI_clause? / ZAhO_clause NAI_clause?

このあたり、ロジバンPEGで嫌いなところベスト10くらいには入りますね。

まあ大したことは言って無くて、登場人物は

  • time-offset
  • ZEhA 句(ZEhA (PU NAI?)? の構造)
  • interval-property

の3つで、

  • time-offset と interval-property は任意個可能
  • この順に共起可能
  • この3つのうち必ず1つは生起しておかなくてはならない
  • 一番最初の time-offset については PU 無し ZI 有り の構造も認められる

ってことをPEGで頑張って書いています。4つ目の条件について補足すると、time-offset が

PU NAI? ZI?

で、time の ZI の要素とこれを総合して考えると4つ目の条件に相当します。{pu zi zi broda} や {zi zi pu broda} はダメですが、{zi pu zi broda} はOKです。

interval-property は、

  • 数字 ROI
  • TAhE
  • ZAhO

のことで、それぞれ NAI をつけれます*7

以上が time です。

space

ロジバンでは time と space の文法はほぼパラレルなので、さっきの説明がほとんど通用します。

space <- VA_clause space_offset* space_interval? (MOhI_clause space_offset)? / VA_clause? space_offset+ space_interval? (MOhI_clause space_offset)? / VA_clause? space_offset* space_interval (MOhI_clause space_offset)? / VA_clause? space_offset* space_interval? MOhI_clause space_offset

space_offset <- FAhA_clause NAI_clause? VA_clause?

space_interval <- (VEhA_clause VIhA_clause? / VIhA_clause) (FAhA_clause NAI_clause?)? space_int_props? / space_int_props

space_int_props <- (FEhE_clause interval_property)+

というわけで、登場人物は

  • space-offset
  • space-interval
  • MOhI 句 (MOhI space-offset? のこと)

の3つで、

  • space-offset は任意個可能
  • この順に共起可能
  • この3つのうち必ず1つは生起しておかなくてはならない
  • 一番最初の space-offset については FAhA 無し VA 有り の構造も認められる

を満たすことになります。

とはいえ、space-interval が ZEhA 句よりも複雑&interval-propertyに対応するものも盛り込んでいるので、これだけ見ておきます:

space_interval <- (VEhA_clause VIhA_clause? / VIhA_clause) (FAhA_clause NAI_clause?)? space_int_props? / space_int_props

space_int_props <- (FEhE_clause interval_property)+

(VEhA VIhA? / VIhA) (FAhA NAI?)? が ZEhA句(ZEhA (PU NAI?)?)に相当します。ZEhA に対応して、

  • VEhA VIhA
  • VEhA
  • VIhA

が可能ということですね。ちなみに VIhA は空間の次元を表します。

そのあとに、space_int_props がきます。これは space interval property のことでしょう*8

整理するため(そして、time との対応付けをよくするため)に、

pure-space-interval -> (VEhA_clause VIhA_clause? / VIhA_clause) (FAhA_clause NAI_clause?)?

space-interval-property -> FEhE_clause interval_property

としておくと、space の登場人物は

  • space-offset(time-offsetと対応)
  • pure-space-interval(ZEhA 句と対応)
  • space-interval-property(interval-propertyと対応)
  • MOhI句

の4つからなり、

  • space-offset と space-interval-property は任意個可能
  • この順に共起可能
  • この4つのうち必ず1つは生起しておかなくてはならない
  • 一番最初の space-offset については FAhA 無し VA 有り の構造も認められる

となるので time とほぼパラレルになのが分かるかと思います。違いは MOhI 句だけですね。

おわり

以上です。selbri の頭にはタグは1つしかついておらず、複数ついてるように見える場合は、複合タグか、実際 sumtcita だということです。で、間制の複合タグの作り方は割と面倒だねという話でした。

「sumtcitaとして分離するものの、非文にはならないから別に気にしなくてもいいんちゃうの」と思うかもしれませんが、LE を冠するとなるとそうもいかないんですよ。

{ta'e pu broda} は {ta'e ku pu broda} なので、{lo ta'e pu broda} は非文法的です。{lo pu ta'e broda} は文法的です。ということになるので、タグ付きselbri を項化させることまで考えると、このあたりも一応抑えとかないといけないわけですね*9

おさらいしとくと、

  • selbri にタグは1つだけつく。ただし{na}がついたりするとちょっと変わる。
  • タグは、大まかには 接続詞で繋げたものと {fi'o selbri fe'u}と法制(BAI)系と間制系
  • 間制系はクソだるだけど、基本「オフセット」「間隔」「間隔特性」からなる(spaceは「MOhI」が加わる)。

*1:僕がいつも見ているのは jbominji の peg http://subvert-the-dominant-paradigm.net/~jbominji/code/lojban_grammar.peg ですが、これは多分さっきのと同じものだと思う

*2:もっと厳密なことをいえば、selbri は bridi_2 のことで、bridi とは命題であって命題表現のことではないので、字面の話をする際は {selbrisni} を使うべき。とはいえ、現状はPEGでも selbri と表記しているので selbri でいいとは思う。ロジバン内での意味と異なることには注意。

*3:目ざとい人のために言っておくと、{na ku bai bai broda} とすれば、{na ku bai ku bai broda} と解析されます。

*4:この時点で、BAI系と間制系を同時につけることはできないんだなというところをお察しください。とはいえ、{jai tag broda} の表現は selbrisle なのでこのあたりを上手く使うと両立できそうな気はする

*5:詳しいことは、 lela.iúk.tánxe - おかゆ超訳ロジバン に書いてあります

*6:CAhAは間制なんか?って感じですが、統語的にはなんか似たところで語られてるのでまとめておきます。

*7:ZAhOは意味的には相であってテンスではないのですが、周辺の議論あげておきます (ロジバン相談室「アスペクトについて」)https://groups.google.com/forum/?fromgroups=#!topic/lojban-soudan/Jx6R7iTQXmo

*8:一応言っておくと、space の interval-property を直接表す語は存在せず、すべて time の interval-property に FEhE をつけたものでまかなわれます

*9:で、この細々としたところのアホらしさを xorxes の新文法案は取っ払ってるわけですね