---
# System prepended metadata

title: 考察・KSPの演算子の優先順位（＆演算子と呼ばれる物の立ち位置）
tags: [ksp, kontakt]

---

[toc]

# 考察・KSPの演算子の優先順位（＆演算子と呼ばれる物の立ち位置）

###### tags: `ksp` `kontakt`

基本はC言語と同じはず・・・。

## 現在記述している eBNF

|    名前    |    記号   | 順位 |               備考               |
|:----------:|:---------:|:----:|:--------------------------------:|
| 乗除       | * /       | ↑    |                                  |
| 加減・連結 | + - &     |      | 文字列連結演算子はココじゃない説 |
| 比較       | < <= > >= |      |                                  |
| 等値       | = #       |      |                                  |
| ビットAND  | .and.     |      |                                  |
| ビットOR   | .or.      |      |                                  |
| 論理AND    | and       |      |                                  |
| 論理OR     | or        | ↓    |                                  |

目コピーのため、文字列連結 & の立ち位置が分からず、意味解析フェーズでどうにかしようとしていた。

concat, append に近い挙動をしていたので演算子なのか？
という疑念もあった。

## こうかもしれない

挙動を再度みて考えるに実際は↓なんじゃないか、という考察。
これなら実際のKONTAKTの挙動に対して納得がいく。

|    名前    |    記号   | 順位 |                    備考                    |
|:----------:|:---------:|:----:|:------------------------------------------:|
| 乗除       | * /       | ↑    |                                            |
| 加減 | + -       |      |                                            |
| 比較       | < <= > >= |      |                                            |
| 等値       | = #       |      |                                            |
| ビットAND  | .and.     |      |                                            |
| ビットOR   | .or.      |      |                                            |
| 連結       | &         |      | **文字列連結演算子はココなんじゃないか説** |
| 論理AND    | and       |      |                                            |
| 論理OR     | or        | ↓    |                                            |


ただし条件式（いわゆるBOOL値)は言語仕様上連結できないので、そこだけは意味解析フェーズでチェックする必要がある
