nadesiko3 3.2.36 → 3.2.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/release/_hash.txt +24 -24
- package/release/_script-tags.txt +13 -13
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/editor.js +1 -1
- package/release/nako_gen_async.js +1 -1
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/wnako3.js +1 -1
- package/release/wnako3webworker.js +1 -1
- package/release/yoyakugo.json +3 -0
- package/src/nako_from_dncl.js +97 -88
- package/src/nako_gen.js +38 -0
- package/src/nako_lex_rules.js +2 -2
- package/src/nako_parser3.js +138 -46
- package/src/nako_reserved_words.js +3 -0
- package/src/nako_version.js +2 -2
- package/src/plugin_math.js +8 -0
- package/src/plugin_system.js +57 -0
- package/test/common/basic_test.js +11 -0
- package/test/common/dncl_test.js +24 -0
- package/test/common/lex_test.js +3 -0
- package/test/common/plugin_system_test.js +4 -0
package/src/plugin_system.js
CHANGED
|
@@ -202,6 +202,30 @@ const PluginSystem = {
|
|
|
202
202
|
},
|
|
203
203
|
return_none: true
|
|
204
204
|
},
|
|
205
|
+
'連続表示': { // @引数に指定した引数を全て表示する // @れんぞく表示
|
|
206
|
+
type: 'func',
|
|
207
|
+
josi: [['と', 'を']],
|
|
208
|
+
isVariableJosi: true,
|
|
209
|
+
pure: true,
|
|
210
|
+
fn: function (...a) {
|
|
211
|
+
const sys = a.pop()
|
|
212
|
+
const v = a.join('')
|
|
213
|
+
sys.__exec('表示', [v, sys])
|
|
214
|
+
},
|
|
215
|
+
return_none: true
|
|
216
|
+
},
|
|
217
|
+
'連続無改行表示': { // @引数に指定した引数を全て表示する(改行しない) // @れんぞくむかいぎょうひょうじ
|
|
218
|
+
type: 'func',
|
|
219
|
+
josi: [['と', 'を']],
|
|
220
|
+
isVariableJosi: true,
|
|
221
|
+
pure: true,
|
|
222
|
+
fn: function (...a) {
|
|
223
|
+
const sys = a.pop()
|
|
224
|
+
const v = a.join('')
|
|
225
|
+
sys.__exec('継続表示', [v, sys])
|
|
226
|
+
},
|
|
227
|
+
return_none: true
|
|
228
|
+
},
|
|
205
229
|
'表示ログ': { type: 'const', value: '' }, // @ひょうじろぐ
|
|
206
230
|
'表示ログクリア': { // @表示ログを空にする // @ひょうじろぐくりあ
|
|
207
231
|
type: 'func',
|
|
@@ -281,6 +305,22 @@ const PluginSystem = {
|
|
|
281
305
|
return a % b
|
|
282
306
|
}
|
|
283
307
|
},
|
|
308
|
+
'偶数': { // @Aが偶数なら真を返す // @ぐうすう
|
|
309
|
+
type: 'func',
|
|
310
|
+
josi: [['が']],
|
|
311
|
+
pure: true,
|
|
312
|
+
fn: function (a) {
|
|
313
|
+
return (a % 2 == 0)
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
'奇数': { // @Aが奇数なら真を返す // @きすう
|
|
317
|
+
type: 'func',
|
|
318
|
+
josi: [['が']],
|
|
319
|
+
pure: true,
|
|
320
|
+
fn: function (a) {
|
|
321
|
+
return (a % 2 == 1)
|
|
322
|
+
}
|
|
323
|
+
},
|
|
284
324
|
'二乗': { // @Aを二乗する // @にじょう
|
|
285
325
|
type: 'func',
|
|
286
326
|
josi: [['の', 'を']],
|
|
@@ -676,6 +716,23 @@ const PluginSystem = {
|
|
|
676
716
|
return parseInt(v).toString(n)
|
|
677
717
|
}
|
|
678
718
|
},
|
|
719
|
+
'二進': { // @値Vを2進数に変換 // @にしん
|
|
720
|
+
type: 'func',
|
|
721
|
+
josi: [['を', 'の', 'から']],
|
|
722
|
+
pure: true,
|
|
723
|
+
fn: function (v) {
|
|
724
|
+
return parseInt(v).toString(2)
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
'二進表示': { // @値Vを2進数に変換して表示 // @にしんひょうじ
|
|
728
|
+
type: 'func',
|
|
729
|
+
josi: [['を', 'の', 'から']],
|
|
730
|
+
pure: true,
|
|
731
|
+
fn: function (v, sys) {
|
|
732
|
+
const s = parseInt(v).toString(2)
|
|
733
|
+
sys.__exec('表示', [s, sys])
|
|
734
|
+
}
|
|
735
|
+
},
|
|
679
736
|
'RGB': { // @HTML用のカラーコードを返すRGB(R,G,B)で各値は0-255 // @RGB
|
|
680
737
|
type: 'func',
|
|
681
738
|
josi: [['と'], ['の'], ['で']],
|
|
@@ -314,4 +314,15 @@ describe('basic', () => {
|
|
|
314
314
|
it('もし文で「ならば」の前の空行でエラー #1079', () => {
|
|
315
315
|
cmp('A=5;もし、A > 3 ならば「OK」と表示;', 'OK')
|
|
316
316
|
})
|
|
317
|
+
it('『増やす』『減らす』文の追加 #1145', () => {
|
|
318
|
+
// 増やす
|
|
319
|
+
cmp('A=0;Aを1増やす。Aと表示;', '1')
|
|
320
|
+
cmp('A=0;Aを123だけ増やす。Aと表示;', '123')
|
|
321
|
+
// 減らす
|
|
322
|
+
cmp('A=10;Aを1減らす。Aと表示;', '9')
|
|
323
|
+
cmp('A=10;Aを5だけ減らす。Aと表示;', '5')
|
|
324
|
+
// 初期化しないで使うと0になる
|
|
325
|
+
cmp('Aを3増やす;Aと表示;', '3')
|
|
326
|
+
cmp('Aを3減らす;Aと表示;', '-3')
|
|
327
|
+
})
|
|
317
328
|
})
|
package/test/common/dncl_test.js
CHANGED
|
@@ -58,6 +58,30 @@ describe('dncl (#1140)', () => {
|
|
|
58
58
|
it('表示エミュレート', () => {
|
|
59
59
|
cmpNako('!DNCLモード\nx←10,y←20\nxと"-"とyを表示する。', '10-20')
|
|
60
60
|
cmpNako('!DNCLモード\nx←10,y←20\n"("とxと","とyと")"を表示する。', '(10,20)')
|
|
61
|
+
cmpNako('!DNCLモード\nx←10,y←20,z←30\n"("とxと","とyと","とzと")"を表示する。', '(10,20,30)')
|
|
62
|
+
cmpNako('!DNCLモード\nx←10,y←20\n「<」とxと","とyと「>」を表示する。', '<10,20>')
|
|
63
|
+
// #1079
|
|
64
|
+
cmpNako('!DNCLモード\nx←10,y←20\n「<」 と x と "," と y と 「>」 を 表示する。', '<10,20>')
|
|
65
|
+
})
|
|
66
|
+
it('乱数エミュレート #1146', () => {
|
|
67
|
+
cmpNako('!DNCLモード\nr ← 乱数 (5,10)\nもし(rが5以上)かつ(rが10以下)ならば「OK」と表示する。', 'OK')
|
|
68
|
+
cmpNako('!DNCLモード\nr ← 乱数 (1,6)\nもし(rが1以上)かつ(rが6以下)ならば「OK」と表示する。', 'OK')
|
|
69
|
+
})
|
|
70
|
+
it('二進 #1146', () => {
|
|
71
|
+
cmpNako('!DNCLモード\nA← 二進 (9)\nAを表示する。', '1001')
|
|
72
|
+
cmpNako('!DNCLモード\nA← 二進 (255)\nAを表示する。', '11111111')
|
|
73
|
+
cmpNako('!DNCLモード\n二進で表示 (255)', '11111111')
|
|
74
|
+
})
|
|
75
|
+
it('減らす・増やす #1149', () => {
|
|
76
|
+
cmpNako('!DNCLモード\nsaihu←1000。syuppi←500。saihuをsyuppi減らす。saihuを表示する。', '500')
|
|
77
|
+
cmpNako('!DNCLモード\nsaihu←1000。syuppi←500。saihuをsyuppi増やす。saihuを表示する。', '1500')
|
|
78
|
+
})
|
|
79
|
+
it('DNCLで「もし」文の否定形が動かない #1148', () =>{
|
|
80
|
+
cmpNako('!DNCLモード\nkosu←1\nもし、kosu>27でないならば\n|「OK」を表示する。\nを実行する。\n', 'OK')
|
|
81
|
+
})
|
|
82
|
+
it('DNCLで後判定のループが動かない #1147', () =>{
|
|
83
|
+
cmpNako('!DNCLモード\nA←1\n繰り返し,\nAを表示する\nAを1増やす\nを,A>3になるまで実行する\n', '1\n2\n3')
|
|
84
|
+
cmpNako('!DNCLモード\nA←1\n繰り返し,\nAを表示する\nAを1だけ増やす\nを,A>3になるまで実行する\n', '1\n2\n3')
|
|
61
85
|
})
|
|
62
86
|
})
|
|
63
87
|
|
package/test/common/lex_test.js
CHANGED