From 70954a6c71356c9797600b91d166b784128a835a Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sat, 4 Nov 2023 21:17:11 +0900 Subject: [PATCH 1/8] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e45e3130..271d0dc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - **Breaking Change** 改行トークンを導入。改行の扱いが今までより厳密になりました。改行することができる部分以外では文法エラーになります。 - 文字列リテラルやテンプレートで、`\`とそれに続く1文字は全てエスケープシーケンスとして扱われるように - 文法エラーやラインタイムエラーの発生位置が表示されるように +- **Breaking Change** パースの都合によりmatch文の構文を変更。パターンの前に`case`キーワードが必要となり、`*`は`default`に変更。 - **Breaking Change** 多くの予約語を追加。これまで変数名等に使えていた名前に影響が出る可能性があります。 # 0.17.0 From a507ebe650ef221b8191e0b301f00f358604dec5 Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sat, 4 Nov 2023 21:41:50 +0900 Subject: [PATCH 2/8] Update syntax.md --- docs/syntax.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/syntax.md b/docs/syntax.md index ed21880a..7d6b8097 100644 --- a/docs/syntax.md +++ b/docs/syntax.md @@ -85,11 +85,14 @@ let foo = eval { ``` let x = 1 let y = match x { - 1 => "yes" - 0 => "no" - * => "other" + case 1 => "yes" + case 0 => "no" + default => "other" } <: y // "yes" + +// ワンライナー +<:match x{case 1=>"yes",case 0=>"no",default=>"other"} // "yes" ``` ## exists From d1d0892c372aae364039c873248c0fddabef9df8 Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sat, 4 Nov 2023 21:51:11 +0900 Subject: [PATCH 3/8] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 271d0dc9..21914201 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ - スペースの厳密さが緩和 - **Breaking Change** 改行トークンを導入。改行の扱いが今までより厳密になりました。改行することができる部分以外では文法エラーになります。 - 文字列リテラルやテンプレートで、`\`とそれに続く1文字は全てエスケープシーケンスとして扱われるように -- 文法エラーやラインタイムエラーの発生位置が表示されるように +- 文法エラーに加えランタイムエラーの発生位置が表示されるように。行・列の数値は1始まりになりました - **Breaking Change** パースの都合によりmatch文の構文を変更。パターンの前に`case`キーワードが必要となり、`*`は`default`に変更。 - **Breaking Change** 多くの予約語を追加。これまで変数名等に使えていた名前に影響が出る可能性があります。 From 1fc890b531410599a6f36c3d08173ca3897b4fc1 Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sat, 4 Nov 2023 23:35:59 +0900 Subject: [PATCH 4/8] Update get-started.md --- docs/get-started.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/get-started.md b/docs/get-started.md index f23eadea..c17fddc5 100644 --- a/docs/get-started.md +++ b/docs/get-started.md @@ -261,8 +261,8 @@ AiScriptファイルにメタデータを埋め込める機能です。 ``` ## エラー型 -一部の標準関数は実行失敗時にエラー型の値を返します。 -これによりエラー処理を行うことができます。 +一部の標準関数は実行失敗時にエラー型の値を返します。 +これによりエラー処理を行うことができます。 ``` @validate(str){ let v=Json:parse(str) @@ -270,3 +270,15 @@ AiScriptファイルにメタデータを埋め込める機能です。 else print('successful') } ``` + +## エラーメッセージ +進行不能なエラーが発生するとエラーメッセージが表示されます。 +``` +let scores=[10, 8, 5, 5] +let 3rd=scores[2] // unexpected token: NumberLiteral (Line 2, Column 5) +``` +``` +let arr=[] +arr[0] // Runtime: Index out of range. Index: 0 max: -1 (Line 2, Column 4) +``` +行(Line)、列(Column)は1始まりです。 From 53e2f54a3ce5ad9840c1baf7cc8bcb967ea9c63d Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sun, 12 Nov 2023 03:54:54 +0900 Subject: [PATCH 5/8] Update CHANGELOG.md --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21914201..d8c7f60f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ - スペースの厳密さが緩和 - **Breaking Change** 改行トークンを導入。改行の扱いが今までより厳密になりました。改行することができる部分以外では文法エラーになります。 - 文字列リテラルやテンプレートで、`\`とそれに続く1文字は全てエスケープシーケンスとして扱われるように -- 文法エラーに加えランタイムエラーの発生位置が表示されるように。行・列の数値は1始まりになりました +- 文法エラーの表示を改善。理由を詳細に表示するように。 +- 複数行のコメントがある時に文法エラーの表示行数がずれる問題を解消しました。 +- 実行時エラーの発生位置が表示されるように。 - **Breaking Change** パースの都合によりmatch文の構文を変更。パターンの前に`case`キーワードが必要となり、`*`は`default`に変更。 - **Breaking Change** 多くの予約語を追加。これまで変数名等に使えていた名前に影響が出る可能性があります。 From e53b2b05040ef0fe1650574caf078fdfd806e1a2 Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:22:24 +0900 Subject: [PATCH 6/8] Update keywords.md --- docs/keywords.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/keywords.md b/docs/keywords.md index 0e2b71de..4f3e2aa7 100644 --- a/docs/keywords.md +++ b/docs/keywords.md @@ -1,10 +1,10 @@ ## 予約語について AiScriptにおける予約語とは、変数や関数の名前として使用することが禁止されている単語のことを言います。 使用するとSyntax Errorとなります。 -``` +```js // matchとforは予約語 let match=null // エラー -@for(){ print('hoge')} // エラー +@for(){ print('hoge') } // エラー ``` ## 使用中の語と使用予定の語 @@ -18,7 +18,7 @@ let match=null // エラー ## 一覧 以下の単語が予約語として登録されています。 ### 使用中の語 -`null`, `true`, `false`, `each`, `for`, `loop`, `break`, `continue`, `match`, `if`, `elif`, `else`, `return`, `eval`, `var`, `let`, `exists` +`null`, `true`, `false`, `each`, `for`, `loop`, `break`, `continue`, `match`, `case`, `default`, `if`, `elif`, `else`, `return`, `eval`, `var`, `let`, `exists` ### 使用予定の語 -`fn`, `namespace`, `meta`, `attr`, `attribute`, `static`, `class`, `struct`, `module`, `while`, `import`, `export` +`as`, `async`, `attr`, `attribute`, `await`, `catch`, `class`, `component`, `constructor`, `dictionary`, `do`, `enum`, `export`, `finally`, `fn`, `hash`, `in`, `interface`, `out`, `private`, `public`, `ref`, `static`, `struct`, `table`, `this`, `throw`, `trait`, `try`, `undefined`, `use`, `using`, `when`, `while`, `yield`, `import`, `is`, `meta`, `module`, `namespace`, `new` From 95fa6fdeacc9597d193f79cc80f32e310a79ff61 Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:33:13 +0900 Subject: [PATCH 7/8] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8c7f60f..f6815bf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - 実行時エラーの発生位置が表示されるように。 - **Breaking Change** パースの都合によりmatch文の構文を変更。パターンの前に`case`キーワードが必要となり、`*`は`default`に変更。 - **Breaking Change** 多くの予約語を追加。これまで変数名等に使えていた名前に影響が出る可能性があります。 +- **Breaking Change** 配列及び関数の引数において、空白区切りが使用できなくなりました。`,`または改行が必要です。 # 0.17.0 - `package.json`を修正 From 7fa8ec0f21b552c22b0ba36cf4a5b3b9c75ec07d Mon Sep 17 00:00:00 2001 From: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:24:22 +0900 Subject: [PATCH 8/8] Update get-started.md --- docs/get-started.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/get-started.md b/docs/get-started.md index 507aa36e..a629c0ec 100644 --- a/docs/get-started.md +++ b/docs/get-started.md @@ -22,7 +22,7 @@ print("Hello, world!") `"~"`は文字列リテラルです。`"`で囲ったものが文字列になります。 ちなみに、`print( ~ )`には糖衣構文があり、次のようにも書けます: -``` +```js <: "Hello, world!" ``` @@ -86,13 +86,13 @@ print(message) ## 配列 `[]`の中に式をスペースで区切って列挙します。 ``` -["ai" "chan" "kawaii"] +["ai", "chan", "kawaii"] ``` 配列の要素にアクセスするときは、`[]`と書きます。 インデックスは0始まりです。 ``` -let arr = ["ai" "chan" "kawaii"] +let arr = ["ai", "chan", "kawaii"] <: arr[0] // "ai" <: arr[2] // "kawaii" ``` @@ -216,7 +216,7 @@ for (100) { ## 繰り返し(配列) `each`を使うと、配列の各アイテムに対し処理を繰り返すことができます: ``` -let items = ["a" "b" "c"] +let items = ["a", "b", "c"] each (let item, items) { <: item } @@ -260,7 +260,7 @@ AiScriptファイルにメタデータを埋め込める機能です。 ### { name: "example" version: 42 - keywords: ["foo" "bar" "baz"] + keywords: ["foo", "bar", "baz"] } ```