プレイ日記
say sayer.exe
変数名と命令名?は、被っても問題ない様だ すげー&こわい
8そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
うひゃー!! これは嫌な仕様だな・・・
2そうだね
プレイ済み
返信[2]
親投稿
say sayer.exe
「たまたま名前がかぶってしまった やっほーい」と言うときにはありがたい仕様な気がするんだけど、そんなマヌケなケース自体起こりにくい気がする もっと掘り下げてみたい気もするけど、マヌケースのために調べるのもなぁ… コロンが省略できる仕様も相まって、7行目みたいな書き方しちゃうと もう何がなんだか あ、予約語でないキーワード(TOとか)で同じように書いてみるとどうなるんだろう? FOR TO[0]=TO[TO[1]] TO TO[TO[2]] STEP TO(TO[3]) こんな感じ
1そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
プチコンのサブセット的な言語処理系作っているのですが、この仕様は私の力では実現不可能です。 そのような仕様であることは記憶に留めつつ、非互換とせざるを得ないですね。(とはいえ、互換性にはそんなに重きを置いてないですけど)
2そうだね
プレイ済み
返信[4]
親投稿
say sayer.exe
不明なワードが出てきた時点で、「変数」とも「命令」とも仮定して解釈してるんでしょうか? 不明なワードでも、あとに「=」が付けば変数と確定、そうでない場合は命令かも?と解釈 そうした場合、 ? A はどのように解釈されるんでしょう? ?:A ? A とも解釈できるので、こりゃ困ったねー 何にせよ、「悪い書き方」の為の互換性は、考慮しないほうがいいと思います
3そうだね
プレイ済み
返信[5]
親投稿
てらこや actorbug
昔々にソースコードチェッカーを作ったときに調べた限りでは、以下のような感じでした。 BASICは命令と式を明確に区別します。式が出てくるのは、基本的に命令の後かカンマの後なので、そのタイミングで出てきた不明な名前は常に変数名か関数名と解釈されます。そのため、?Aが?:Aと解釈されることはありません。(命令の後なので) 命令が来るはずの箇所なら、後ろに"="か"["がある場合にだけ変数名と解釈し、それ以外は命令だとみなします。
0そうだね
プレイ済み
返信[6]
親投稿
MIKI ifconfig
てらこやさん おお、これはわかりやすい!! アドバイスありがとうございます。 字句解析では変数も命令もまとめて「識別子」で返せばいいのか。 構文解析側で区別できますね。(yacc(1)前提) やらないけど。 今文法書いてますが endif の無い if 文が癌ですね。あれだけが改行を要求する・・・ あと、ご存知と思いますが、var()関数も左辺値になりますよ。
0そうだね
プレイ済み