Scannerで一部の文字が無視される
##, |, & のいずれかの後に数字やアルファベットが続くとき、記号部分が無視される
実行例
<: ##1 // 1
<: |0.2 // 0.2
<: &null // null
どのような環境で実行しましたか?私の手元の環境では再現できないのですが…
https://aiscript-dev.github.io/aiscript/ です
確認できました。開発版の方のパーサーの問題ですね。
本来ならパーサーエラーで弾くべきですが、普通は書かない文であり、放っておいても問題はなさそうな気もします。
ちなみに、どのような状況でこのバグを発見したかを聞いてもいいですか?
https://github.com/aiscript-dev/aiscript/blob/master/src/parser/scanner.ts を読んでいるときに気づきました
確認した所、readToken()の記号トークンのswitch caseの一部に変数tokenを更新しない場合があるものがあり、それが今回のバグに繋がっているようですね。
修正は容易そうですし、今後の安全性のために直したほうがよさそうですね。
done in #769