aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

Scannerで一部の文字が無視される

Open poppingmoon opened this issue 1 year ago • 6 comments

##, |, & のいずれかの後に数字やアルファベットが続くとき、記号部分が無視される

実行例

<: ##1    // 1
<: |0.2   // 0.2
<: &null  // null

poppingmoon avatar Aug 25 '24 03:08 poppingmoon

どのような環境で実行しましたか?私の手元の環境では再現できないのですが…

FineArchs avatar Aug 25 '24 05:08 FineArchs

https://aiscript-dev.github.io/aiscript/ です

poppingmoon avatar Aug 25 '24 05:08 poppingmoon

確認できました。開発版の方のパーサーの問題ですね。

本来ならパーサーエラーで弾くべきですが、普通は書かない文であり、放っておいても問題はなさそうな気もします。

FineArchs avatar Aug 25 '24 07:08 FineArchs

ちなみに、どのような状況でこのバグを発見したかを聞いてもいいですか?

FineArchs avatar Aug 25 '24 07:08 FineArchs

https://github.com/aiscript-dev/aiscript/blob/master/src/parser/scanner.ts を読んでいるときに気づきました

poppingmoon avatar Aug 25 '24 07:08 poppingmoon

確認した所、readToken()の記号トークンのswitch caseの一部に変数tokenを更新しない場合があるものがあり、それが今回のバグに繋がっているようですね。

修正は容易そうですし、今後の安全性のために直したほうがよさそうですね。

FineArchs avatar Aug 25 '24 07:08 FineArchs

done in #769

FineArchs avatar Sep 02 '24 08:09 FineArchs