ドキュメント
はじめに
Cu言語の初期設計資料です。現時点では理念と構文案をまとめたものであり、正式な言語仕様書ではありません。実装を始める前に、構文の曖昧さ、型規則、エラー処理、実行方式を確定していく必要があります。
設計哲学
3つの原則を設計判断の基準とします。
- Accessibility(利用しやすさ):習得しやすく、幅広い開発者や用途に対応できる言語を目指す。
- Performance(性能):実行速度やメモリ使用量などを考慮し、言語仕様と処理系の設計段階から性能を追求する。
- Control(制御性):実行環境やハードウェアの特性を考慮し、必要な制御を実現できる言語を目指す。
基本構文(検討案)
以下は検討中の構文です。全てが実装済みの仕様ではありません。
ファイル形式
main.cu29
ディレクティブ
#mode
#apply
標準出力
Io.print(none: str = "Hello, World!")
変数の宣言・初期化
x: int = 1
name: str = "Cu"
pi: float = 3.14
enabled: bool = True
基本型の候補:int(整数)、float(浮動小数点数)、str(文字列)、bool(真偽値)
変数の再代入
x: int = 1
x = 3
x += 1
noneによる値の直接指定
Io.print(none: str = "Cu")
検討中の構文。一般的な None / null と同じ意味だと確定したものではありません。
関数の定義
fnc: int = init() {
Io.print(none: str = "a")
return none: int = 0
}
複数の戻り値
fnc: (int, str) = get_values() {
return none: int = 10, none: str = "Cu"
}
a, b = get_values()
条件分岐
if: pro = x == 0 {
Io.print(none: str = "x is 0!")
} elif: pro = x == 1 {
Io.print(none: str = "x is 1!")
} else {
Io.print(none: str = "x isn't 0 or 1!")
}
繰り返し処理:for
for: pro = 5 {
Io.print(none: str = "Hello")
}
繰り返し処理:while
while: pro = x == 0 {
Io.print(none: str = "x is 0")
}
while: pro = True {
Io.print(none: str = "Running")
}
ループ制御
break
continue
演算子と複数行記述
result: int = 10 + 20
value: int = result * 2
result: int = 10 +
20
仕様の確定状況
| 項目 | 状態 |
|---|---|
| 言語名 Cu | 確定 |
| 拡張子 .cu29 | 確定 |
| 初期実装言語 Python | 方針 |
| クラスを初期仕様に含めない | 方針 |
| APCの3原則 | 内容確定 |
| 変数・関数・条件分岐の構文 | 検討案 |
| noneの意味 | 要定義 |
| proの厳密な意味 | 要定義 |
| 型システム | 要設計 |
| メモリ管理方式 | 要設計 |
| コンパイル方式・実行方式 | 要設計 |
| RTOS・ハードウェア制御機能 | 将来の検討項目 |
重要: 現時点では、Cuの理念と構文案をまとめた初期設計資料であり、正式な言語仕様書ではありません。
Cu言語