nadesiko3 3.2.35 → 3.2.36
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 +2 -2
- package/release/_hash.txt +16 -16
- package/release/_script-tags.txt +13 -13
- 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/src/nako_from_dncl.js +16 -4
- package/src/nako_gen.js +7 -4
- package/src/nako_version.js +2 -2
- package/test/common/dncl_test.js +9 -3
package/src/nako_from_dncl.js
CHANGED
|
@@ -118,18 +118,30 @@ function dncl2nako(src, filename) {
|
|
|
118
118
|
//「S1とS2とS3を表示する」を「(S1)&(S2)&S3)を表示」と置き換える
|
|
119
119
|
// あまりスマートではないが手抜きで
|
|
120
120
|
if (line.indexOf('表示') >= 0) {
|
|
121
|
-
const
|
|
121
|
+
const r6 = line.match(/^(.+?)と(.+?)と(.+?)と(.+?)と(.+?)と(.+?)(を|と)表示/)
|
|
122
|
+
if (r6) {
|
|
123
|
+
const s1 = r6[1]
|
|
124
|
+
const s2 = r6[2]
|
|
125
|
+
const s3 = r6[3]
|
|
126
|
+
const s4 = r6[4]
|
|
127
|
+
const s5 = r6[5]
|
|
128
|
+
const s6 = r6[6]
|
|
129
|
+
result += `(${s1})&(${s2})&(${s3})&(${s4})&(${s5})&(${s6})を表示`
|
|
130
|
+
src = src.substring(r6[0].length)
|
|
131
|
+
continue
|
|
132
|
+
}
|
|
133
|
+
const r5 = line.match(/^(.+?)と(.+?)と(.+?)と(.+?)と(.+?)(を|と)表示/)
|
|
122
134
|
if (r5) {
|
|
123
135
|
const s1 = r5[1]
|
|
124
136
|
const s2 = r5[2]
|
|
125
137
|
const s3 = r5[3]
|
|
126
138
|
const s4 = r5[4]
|
|
127
|
-
const s5 = r5[
|
|
139
|
+
const s5 = r5[5]
|
|
128
140
|
result += `(${s1})&(${s2})&(${s3})&(${s4})&(${s5})を表示`
|
|
129
141
|
src = src.substring(r5[0].length)
|
|
130
142
|
continue
|
|
131
143
|
}
|
|
132
|
-
const r4 = line.match(/^(.+?)と(.+?)と(.+?)と(.+?)
|
|
144
|
+
const r4 = line.match(/^(.+?)と(.+?)と(.+?)と(.+?)(を|と)表示/)
|
|
133
145
|
if (r4) {
|
|
134
146
|
const s1 = r4[1]
|
|
135
147
|
const s2 = r4[2]
|
|
@@ -139,7 +151,7 @@ function dncl2nako(src, filename) {
|
|
|
139
151
|
src = src.substring(r4[0].length)
|
|
140
152
|
continue
|
|
141
153
|
}
|
|
142
|
-
const r3 = line.match(/^(.+?)と(.+?)と(.+?)
|
|
154
|
+
const r3 = line.match(/^(.+?)と(.+?)と(.+?)(を|と)表示/)
|
|
143
155
|
if (r3) {
|
|
144
156
|
const s1 = r3[1]
|
|
145
157
|
const s2 = r3[2]
|
package/src/nako_gen.js
CHANGED
|
@@ -856,11 +856,13 @@ try {
|
|
|
856
856
|
let codeArray = ''
|
|
857
857
|
// codeInit?
|
|
858
858
|
if (node.checkInit) {
|
|
859
|
-
|
|
860
|
-
|
|
859
|
+
const arrayDefCode = '[0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0]'
|
|
860
|
+
codeInit += `\n/*配列初期化*/if (!(${name} instanceof Array)) { ${name} = ${arrayDefCode}; console.log('初期化:${name}') };`
|
|
861
|
+
for (let i = 0; i < list.length - 1; i++) {
|
|
861
862
|
const idx = this._convGen(list[i], true)
|
|
862
863
|
codeArray += `[${idx}]`
|
|
863
|
-
codeInit +=
|
|
864
|
+
codeInit += `\n/*配列初期化${i}*/if (!(${name}${codeArray} instanceof Array)) { ${name}${codeArray} = ${arrayDefCode}; };`
|
|
865
|
+
// codeInit += `\n/*配列初期化${i}*/if (!(${name}${codeArray} instanceof Array)) { ${name}${codeArray} = ${arrayDefCode}; console.log('初期化:${i}:${name}${codeArray}',JSON.stringify(${name})) }; `
|
|
864
866
|
}
|
|
865
867
|
codeInit += '\n'
|
|
866
868
|
}
|
|
@@ -872,7 +874,8 @@ try {
|
|
|
872
874
|
const value = this._convGen(node.value, true)
|
|
873
875
|
code += ' = ' + value + ';\n'
|
|
874
876
|
// generate code
|
|
875
|
-
|
|
877
|
+
const src = this.convLineno(node, false) + codeInit + code
|
|
878
|
+
return src
|
|
876
879
|
}
|
|
877
880
|
|
|
878
881
|
convGenLoop (node) {
|
package/src/nako_version.js
CHANGED
package/test/common/dncl_test.js
CHANGED
|
@@ -46,12 +46,18 @@ describe('dncl (#1140)', () => {
|
|
|
46
46
|
cmpNako('!DNCLモード\nA={{11,12,13},{21,22,23}}。C=2;AA=A[1+C,1];AAを表示', '13')
|
|
47
47
|
cmpNako('!DNCLモード\nA={{11,12,13},{21,22,23}}。X=2;Y=1;AA=A[X,Y+1];AAを表示', '22')
|
|
48
48
|
})
|
|
49
|
-
it('配列の自動初期化', () => {
|
|
50
|
-
cmpNako('!DNCLモード\nA[1]←111。A
|
|
51
|
-
cmpNako('!DNCLモード\nA[
|
|
49
|
+
it('配列の自動初期化(#1143)', () => {
|
|
50
|
+
cmpNako('!DNCLモード\nA[1]←111。A[1]を表示する', '111')
|
|
51
|
+
cmpNako('!DNCLモード\nA[3,3]=3;A[3,3]を表示する', '3')
|
|
52
|
+
cmpNako('!DNCLモード\nA[3,2,1]=30;A[3,2,1]を表示する', '30')
|
|
53
|
+
cmpNako('!DNCLモード\nA[1,1]=11,A[1,2]=12;A[1,2]を表示する', '12')
|
|
52
54
|
})
|
|
53
55
|
it('インデントを|で表現する', () => {
|
|
54
56
|
cmpNako('!DNCLモード\nA=3;もしA>1ならば\n|A←A+1\nを実行する。\nAを表示する。', '4')
|
|
55
57
|
})
|
|
58
|
+
it('表示エミュレート', () => {
|
|
59
|
+
cmpNako('!DNCLモード\nx←10,y←20\nxと"-"とyを表示する。', '10-20')
|
|
60
|
+
cmpNako('!DNCLモード\nx←10,y←20\n"("とxと","とyと")"を表示する。', '(10,20)')
|
|
61
|
+
})
|
|
56
62
|
})
|
|
57
63
|
|