yy0931
yy0931
現在のコンパイラでも次のように書けば `関数実体` を定義出来ますが、`A=テストの関数実体。1秒後にはA` のように書くと、(preDefineFuncで)暗黙的に関数Aが定義されるため、`A=テストの関数実体` が代入的関数呼び出しと解釈されてパースエラーになり、使い物になりません。 ``` ●テストとは 1を表示 ここまで ●({関数}Aの)関数実体とは Aを戻す ここまで テストの関数実体を表示 ``` 出力 ``` function(){ try { __vars = {'それ':''}; __varslist.push(__vars); __vars['引数'] = arguments; ; __v0.line=3;// (function(){ const...
hasOwnPropertyのチェックをつければいいと思います ```javascript const select = document.createElement('select') select.append(document.createElement('option')) select.append(document.createElement('option')) for (const key in select.options) { if (select.options.hasOwnProperty(key)) { console.log(key) } } ```
monacoであればVSCode拡張と同じコードを使えて、簡単に用意できます(ハイライトのみ実装: https://yy0931.github.io/nadesiko3-vscode/index.html )。ただ、(VSCodeの最適化の恩恵を受けられないため)現状だと400行あたりから重くなるため、トークンの可視化を切るか、他の調整が必要です。 Webであればシンタックスハイライトの無い ace editor でも十分な気もします。
ace editor でシンタックスハイライトを実装しました。これを使いませんか? @kujirahand GitHub Pages: https://yy0931.github.io/nadesiko3-ace/ GitHub: https://github.com/yy0931/nadesiko3-ace (index.htmlの1ファイルのみ) aceのカスタムルールは情報があまり見つからず制限も厳しいようだったので(例: https://stackoverflow.com/questions/35289002/ace-editor-multiline-regex )、ソースコードを見てBackgroundTokenizerクラスを上書きしてnako3.lex()とつなげました。 プログラムが長くなるとlexが遅くなりコードを書きにくくなるため、6000行以上のときはシンタックスハイライトを無効化します。
もし助詞まで同じ色になるのが気に入らなければ、トークンの長さから token.rawJosi.length を引くだけなのですぐに変更できるはずです。
上にあるace editorで試しに作ったエディタのコードは公開していないのですか?
JS関数実行でできると思います。 ``` ●(AでBを)ユーザ関数とは Cは123 『(function (A, B, C) { console.log(A, B, C) })』を[A, B, C]でJS関数実行 ここまで { a: 1 }で{ b: 2 }をユーザ関数 ```
MDNによればevalよりFunctionの方が速いらしいので、Functionに変えたいですね。
Webpackについて詳しくないのですが、シンタックスハイライトのためにコンパイラの一部分を直接requireしているため、scriptタグを分割すると逆に全体のサイズが大きくなるのではないかと思っています。
ほぼ全ての出力ファイルにcore-jsが含まれているため、`optimization: ` に次のコードを追加して core-js を独立したscriptタグで読み込ませれば wnako3.js + editor.js = 316.7 + 272.47 = 589KB から wnako3.js + editor.js + vendor.js = 245.84 + 215.02 + 71.89 = 532KB に減り、全部のファイルの合計も 1.32MBから1.01MBに減るものの、追加すべきタグが増えて面倒になりますね。...