Skip to content

Commit

Permalink
関数から始まる変数が定義できなくなったいたので、暫定的に、バッチスクリプトを修正(#341)(#221)
Browse files Browse the repository at this point in the history
  • Loading branch information
kujirahand committed Jan 3, 2019
1 parent d1ef3d3 commit dd1df23
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 21 deletions.
43 changes: 22 additions & 21 deletions batch/pickup_command.nako3
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@
'src/plugin_browser.js',
'src/plugin_turtle.js',
'src/plugin_node.js',
'src/plugin_express.js',
'src/plugin_websocket.js'
'src/plugin_express.js'
]

関数定義とは変数
関数説明とは変数
FN定義とは変数
FN説明とは変数
助詞定義JSONとは変数
ヨミガナとは変数
カレントプラグインとは変数
Expand Down Expand Up @@ -76,30 +75,30 @@
抽出文字列で定数定義処理。戻る。
ここまで。

# 関数定義
# FN定義
Sを『/'(.+?)'\s*:\s*\{\s*\/\/\s*\@(.+)$/』で正規表現マッチ
もし、そうならば
助詞定義JSON=[]
ヨミガナ=「」
関数定義=トリム(抽出文字列[0])
関数説明=トリム(抽出文字列[1])
関数定義を表示
関数説明で「//」が何文字目
FN定義=トリム(抽出文字列[0])
FN説明=トリム(抽出文字列[1])
FN定義を表示
FN説明で「//」が何文字目
もし、それ>0ならば
  関数説明を「//」で区切って、Aに代入。
  関数説明=トリム(A[0])
  FN説明を「//」で区切って、Aに代入。
  FN説明=トリム(A[0])
  ヨミガナ=トリム(A[1])
ヨミガナ=ヨミガナの「^@」を「」に正規表現置換
  もし、ヨミガナが空ならば、ヨミガナ=関数定義
  もし、ヨミガナが空ならば、ヨミガナ=FN定義
ここまで
もし、ヨミガナが空ならば
  「--- ERROR ---『{関数定義}』でヨミガナがありません」と表示。
  「--- ERROR ---『{FN定義}』でヨミガナがありません」と表示。
  終わる。
ここまで。
戻る。
ここまで

もし、関数定義≠空ならば
もし、FN定義≠空ならば
# typeの行なら次の行を読むようにする
Sを『/type\s*\:\s*'func'/』で正規表現マッチ
もし、そうならば
Expand All @@ -120,11 +119,11 @@
助詞定義JSONに代入。
戻る。
ここまで
# JS関数定義? そうであれば、JSに対する引数名を得られる
# JSFN定義? そうであれば、JSに対する引数名を得られる
Sを『/^fn\s*\:\s*function\s*\((.*?)\)/』で正規表現マッチ。
もし、そうならば
助詞定義=「」
# システムオブジェクトへの参照は、なでしこ関数定義と関係ないので除去
# システムオブジェクトへの参照は、なでしこFN定義と関係ないので除去
それ=抽出文字列[0]
「/(\,\s*sys|sys)$/」を「」に正規表現置換
トリム。
Expand All @@ -137,7 +136,7 @@
引数一覧に引数名を配列追加。
ここまで。
もし、要素数(引数一覧)≠要素数(助詞定義JSON)ならば
「*** [警告] {カレントプラグイン}:『{関数定義}』で助詞の定義がJS関数の定義と異なります」と表示。
「*** [警告] {カレントプラグイン}:『{FN定義}』で助詞の定義がJS関数の定義と異なります」と表示。
引数一覧を表示。
終わる。
ここまで。
Expand All @@ -157,15 +156,17 @@
ここまで
助詞定義=AAを「/」で配列結合
もし、助詞定義="undefined"ならば
「*** [警告] {カレントプラグイン}:『{関数定義}』で助詞定義がundefinedです」と表示。
「*** [警告] {カレントプラグイン}:『{FN定義}』で助詞定義がundefinedです」と表示。
助詞定義JSONをJSONエンコードして表示。
AAを表示
終わる。
ここまで
「| 関数 | {関数定義} | {助詞定義} | {関数説明} | {ヨミガナ}」を表示
関数定義=「」
「| 関数 | {FN定義} | {助詞定義} | {FN説明} | {ヨミガナ}」を表示
FN定義=「」
ここまで。
ここまで
関数定義=「」
FN定義=「」
定数定義=「」
ここまで。


3 changes: 3 additions & 0 deletions src/nako_parser3.js
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,9 @@ class NakoParser extends NakoParserBase {
funcObj = this.yMumeiFunc()
if (funcObj === null) throw new NakoSyntaxError('『Fには』構文がありましたが、関数定義が見当たりません。', t.line)
}
if (!f || typeof f['josi'] === undefined) {
throw new NakoSyntaxError('関数の定義でエラー。', t.line)
}
const args = []
let nullCount = 0
let valueCount = 0
Expand Down

0 comments on commit dd1df23

Please sign in to comment.