YOLOL
starBaseで用いられる独自プログラミング言語「YOLOL」の情報を、公式WIKIから持ってきて日本語化しています。バリバリ機械翻訳なので、追記していただけると助かります。
目次
[部分編集]
概要
「YOLOL」は、電気機器の制御と管理に使用されるプログラミング言語です。
コードは「チップ」に書き込まれ、「チップソケット」に挿入することにより読み取られ、実行されます。
YOLOLにより、ほぼすべてのデバイスのプログラミングと制御をすることが可能です。
コードは「チップ」に書き込まれ、「チップソケット」に挿入することにより読み取られ、実行されます。
YOLOLにより、ほぼすべてのデバイスのプログラミングと制御をすることが可能です。
基本情報
どうやって使うの?
実行されたコードは、書き込まれたチップと接続された、電気機器の監視と制御の両方に使用できます。
スクリプトに特定の行の変更、または実行を完全に停止するための命令がない限り、コードは行の上から下へ順番に実行され、最後の行の実行後に一行目からまた繰り返します。
簡単にいえば:
スクリプトに特定の行の変更、または実行を完全に停止するための命令がない限り、コードは行の上から下へ順番に実行され、最後の行の実行後に一行目からまた繰り返します。
簡単にいえば:
- コードは一行目から実行されて
- 一行目を実行したら、チップに設定された時間分停止した後、次の行へ進んで
- 上のプロセスが、それぞれの行で繰り返されて
- 最後の行が実行された後、チップは再び一行目を実行し始める(スクリプトに特定の行の変更、または実行を完全に停止するための命令が含まれていない場合)
なお、空白行であっても時間の停止は発生するため、短い実行遅延として使用できます。(コメントのみの行も空白行と同じ扱い)
コマンド・リファレンス
ケースセンシティブ(大文字小文字を区別しない)
このプログラミング言語は大文字と小文字を区別しません
これは、次の2つのスクリプトが同じように機能することを意味します。
これは、次の2つのスクリプトが同じように機能することを意味します。
if ButtonState == 1 then DoorState = 1 end IF buttonstate == 1 THEN doorstate = 1 END
- buttonstateの値が1の場合、doorstateを1に設定します。
- プログラミング言語の文字は、小文字でも大文字でも書くことができます。
- 大文字と小文字を区別せずに解析されます。
- これを利用して、コードを綺麗に見せることができます。
変数
- 変数は弱く型付けされ(型の有効性を強制しない)、2つのデータ型をサポートします。それは10進数の固定小数点演算(最大0.001までの精度)とString型です。
- 簡単に言うと、変数は文字列または数値として代入でき、以前の型と同じでない場合でもエラーを発生させることなく、以前の型を無視できます。
- 各変数は常に単一の型ですが、必要に応じ勝手に変換されます。
- 初期化されていない変数の初期値は0で、null値はサポートされていません。
- True / Falseは、0以外および0の数値です。
- True =! 0
- False == 0
値を変数に割り当てると、変数は常に新しく割り当てられた値の型に変換されます。
ultimateAutopilot= 128.643
- その結果、変数ultimateAutopilotには128.643の数値が含まれます。
ultimateAutopilot= "Error prone"
- これにより、変数ultimateAutopilotが文字列変数「Error prone」になり、数値128.643が削除されます。
小数
YOLOLの数値は、64ビットの10進数の固定小数点演算です。
変数は、最大3桁の精度で10進数を保持します。
その結果、最大値の範囲は(運用中であっても)[-9223372036854775.808、9223372036854775.807]です。
変数は、最大3桁の精度で10進数を保持します。
その結果、最大値の範囲は(運用中であっても)[-9223372036854775.808、9223372036854775.807]です。
pieVariable= 3.142
- 上記のスクリプトは、数値3.142を変数pieVariableに割り当てます。
- 変数により正確な値を指定しても、最終結果には影響しません。
notPieVariable= 0.5772156649
- 上記のスクリプトは、0.5772156649の数値を変数notPieVariableに割り当てようとします。
- ただし、最終結果は、notPieVariable == 0.577です。
- ここでは、より正確な値が切り捨てられ、小数点以下3桁のみが残ります。
変数の型
文字列値を指定するには、目的の文字列値を二重引用符で囲む必要があります。
badRobots= "saltberia"
- この命令は、「saltberia」の文字列値を変数badRobotsに割り当てます。
デバイスフィールド/外部変数
外部変数とデバイスフィールドは、次の構文で使用できます。
- :variableName
- variableName は、構築済みのデバイスフィールドIDです。
コロン(:)は、スクリプトで宣言または使用できる変数を使用する代わりに、外部変数がアクセスされていることをコードに通知するために使用されます。
デバイスに接続されているチップは、同じネットワーク内のすべてのデバイスにアクセスできます。 そして、アクセスできるデバイスフィールドを通じて監視する事もできます。
デバイスに接続されているチップは、同じネットワーク内のすべてのデバイスにアクセスできます。 そして、アクセスできるデバイスフィールドを通じて監視する事もできます。
if :ButtonState == 1 then :DoorState = 1 end
- 上記の命令は、データネットワークでButtonStateの値が1の場合、デバイスフィールドDoorStateを監視しているデバイスに1の値を送信します。
演算子とコマンド
使用可能な演算子は、チップの種類によって制限される場合があります。
基本的なチップでは単純な操作しか実行出来ませんが、より高度なチップではより複雑な操作を実行できます。
基本的なチップでは単純な操作しか実行出来ませんが、より高度なチップではより複雑な操作を実行できます。
基本的な算術演算子と代入演算子
| 操作 | 数値演算 | ストリング操作 |
| A + B | 加算 | AにBが加算されます。 |
| A - B | 減算 | AからBが引かれます |
| A * B | 乗算 | ランタイムエラー。行の残りは無視されます。 |
| A / B | 除算 | ランタイムエラー。行の残りは無視されます。 |
| A ++ | A=A+1 | 文字列Aにスペースを追加します。元の値を評価します。 |
| A -- | A=A-1 | 文字列の最後の文字を削除します。スペースを削除しようとすると、ランタイムエラーが発生します。元の値に評価します。 |
| ++ A | A=A+1 | 文字列Aにスペースを追加します。元の値を評価します。 |
| -- A | A=A-1 | 文字列の最後の文字を削除します。スペースを削除しようとすると、ランタイムエラーが発生します。元の値に評価します。 |
| A = B | 割り当て(変数Aは変数Bの値に設定されます) | 割り当て |
| A += B | 追加割り当て(A = A+B) | AにはA+Bの値が割り当てられます |
| A -= B | 減算割り当て(A = A-B) | AにはA-Bの値が割り当てられます |
| A *= B | 乗算割り当て(A = A*B) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| A /= B | 除算割り当て(A = A/B) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| A %= B | 余り割り当て(A = A%B) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| A ^ B | 乗数(AのB乗) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| A % B | 余り(A/B=1余りx) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| ABS A | 絶対値(A=A if A>=0,else A=-A) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| A! | 階乗 | 文字列変数の実行時エラー。行の残りは無視されます。 |
| SQRT A | Aの平方根(√) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| SIN A | Aのサイン(正弦) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| COS A | Aのコサイン(余弦) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| TAN A | Aのタンジェント(正接) | 文字列変数の実行時エラー。行の残りは無視されます。 |
| ASIN A | Aの逆正弦 | 文字列変数の実行時エラー。行の残りは無視されます。 |
| ACOS A | Aの逆余弦 | 文字列変数の実行時エラー。行の残りは無視されます。 |
| ATAN A | Aの逆正接 | 文字列変数の実行時エラー。行の残りは無視されます。 |
論理演算子
論理演算子は、ステートメントが真か偽かを識別するチェックです。
すべての論理演算は、「0の場合はFalse」または「1の場合はTrue」を返します
すべての論理演算は、「0の場合はFalse」または「1の場合はTrue」を返します
| 操作 | 数値演算 | ストリング操作 |
| A < B | 未満 | AがBよりも小さい場合は1を返し、そうでない場合は0を返します。 |
| A > B | 超過 | AがBよりも大きい場合は1を返し、そうでない場合は0を返します。 |
| A <= B | 以下 | AがBと等しい、もしくは小さい場合は1を返し、そうでない場合は0を返します。 |
| A >= B | 以上 | AがBと等しい、もしくは大きい場合は1を返し、そうでない場合は0を返します。 |
| A != B | 等しくない | AがBと等しくない場合は1を返し、そうでない場合は0を返します。 |
| A == B | 等しい | AがBと等しい場合は1を返し、そうでない場合は0を返します。 |
not、andおよびorを使用して、単純な変数値のチェックよりも複雑な条件を設定することもできます。
変数タイプの混合
変数タイプを混合した場合、すべてを文字列として処理されます。
A = "10" + 15
- 上記の命令により、文字列値「1015」を含むAが生成されます。
- パラメーター自体はタイプを変更せず、値は操作の目的で文字列として変換されるだけであることに注意してください。
A = 15 B = "10" + A
- この命令が実行されると、Bにはストリング値「1015」が含まれますが、Aには数値15が含まれます。
goto構文
Goto構文は、コードの読み取り順序が1から20になっていない場合、または変更する必要がある場合に使用されます。
Gotoは次の構文で使用されます。
Gotoは次の構文で使用されます。
- goto lineNumber
- lineNumberは、行き先の行です
goto 3 end
この場合3行目へ飛ぶ。
- goto-commandの後にある、同じ行の残りの命令は実行されません。
goto 3 end goto 6
この場合6行目へは飛ばない。
- goto構文がfalse状態の場合、goto構文は無視されます。
- false goto構文は無視されるため、条件を使用して複数のgoto構文を同じ行に追加できます。
if A == 5 then goto 4 end goto 6
Aの値が5の場合、4行目へ移動します。それ以外の場合、6行目へ移動します。
if-else条件文
if-else条件文は、コードを分岐するために使用されます。
次の構文を使用します。
次の構文を使用します。
- if 条件 then 文 else 文 end
- 条件は、結果として数値になる文(0はFalseとして解析され、その他はTrueとして解析される)であり、文は実行される命令の一部です。
- すべてのif-else条件文には、文の完了後に必ずend構文が必要です。
変数値に基づいて一時的にスクリプト実行を2つの可能な結果に分岐するために使用できる場合。
例:
例:
if A != 2 then B = 3 else B = 4 end
- Aの値が2でない場合、Bの値を3に設定します。
- Aの値が2である場合、Bの値を4に設定します。
elseは必要に応じて省略することが出来ます。
if A != 2 then B = 3 end
- Aの値が2でない場合、Bの値を3に設定し、それ以外は何もしません。
if文のネスト(入れ子)
true / false構文内にif条件を配置して、複雑な分岐を実現することができます。
例:
例:
if A == 0 then B = 1 else if A == 1 then B = 2 end end
- Aが0である場合、Bを1に設定します。
- Aが0ではないが、1に等しい場合、Bを2に設定します。
例:
if A == 0 then if B == 1 then B = 2 end else B = 1 end
- Aが0で、Bが1の場合、Bを2に設定します。
- それ以外の場合、Bを1に設定します。
入れ子にされたif文を含むコードをより適切な形式に調整することにより、コードの理解とデバッグが容易になる場合があります。
また、次のようなコードの作成はチップでは使用できませんが、コードをデバッグする際には便利な場合があります。
また、次のようなコードの作成はチップでは使用できませんが、コードをデバッグする際には便利な場合があります。
if A == 0 then
if B == 1 then
B = 2
end
else
B = 1
end
コメント
コメントは、多くのプログラマーが使用するコードを書くときに役立ちます。
コメントに対しても、1行70文字制限が適応されることに注意してください。
コメントは次の構文で使用されます。
コメントに対しても、1行70文字制限が適応されることに注意してください。
コメントは次の構文で使用されます。
- //テキスト
- テキストには、任意の単一行の文字を代入できます。
- テキストに書いたことは実行されません。
//これはコメントです。
- コメント構文の例
エラー
プログラミング言語で発生する可能性のあるエラーには2つのタイプがあります。
- 構文エラー
- ランタイムエラー
- 構文エラーは、無効で解析不能な命令文から発生し、コード全体が実行されない結果になります。
- ランタイムエラーは、命令の実行中にのみ発生します。その結果、その行で実行が中断されますが、エラーが出るまでの命令は実行され、残ります。