- Visual Studio 2017 Part4
854 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 14:10:41.07 ID:dT49NCpma - 前からですかと聞かれたらそうだと言う答え
タブは固定4文字スペース換算とかじゃなくて たとえば4の倍数の位置から文字がスタートになる 各行の文字の最後がそのライン前後でうろうろしてたら タブ1個じゃ調整できない その行の長さで必要なタブ一個だったり二個だったりする
|
- Visual Studio 2017 Part4
856 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 14:22:36.88 ID:dT49NCpma - タブ幅なんてエディタで自由に指定できる
wordなんかファイル単位じゃなくてそれこそ書式区切ごとに自由にできる コンパイラ作ってて気付いたのはコンパイラはタブの幅がわからない(渡されてないから当然) ので適当に推定するしかないってこと だからエラーの場所は行頭から何文字目”周辺”とか”付近”としか言えない
|
- Visual Studio 2017 Part4
857 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 14:27:11.68 ID:dT49NCpma - インデントが必須の言語はエディタにその言語の支援機能を入れないと
素のファイルを吐き出すのでコンパイルが通らないことがある
|
- ふらっと C#,C♯,C#(初心者用) Part134
826 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 22:38:26.26 ID:dT49NCpma - >>824
やり方次第 作ったことあるのでわかりやすいのは文法をのままコードにする 頭から呼んでって状態を覚えておく 文字リテラル内は解析しないでエスケープルールや”の監視だけする //や/*コメントの時は行末まで読み捨て
|
- ふらっと C#,C♯,C#(初心者用) Part134
827 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 22:39:44.98 ID:dT49NCpma - 間違い
/*は*/を読み捨てしたらダメだなw
|
- ふらっと C#,C♯,C#(初心者用) Part134
830 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 22:52:11.72 ID:dT49NCpma - >>829
それは変なやり方してるからだろ おおかた正規表現などで判定してるんだろう コードを頭から読んでできないのは 文法がおかしいかパースのやり方がおかしいからだ
|
- ふらっと C#,C♯,C#(初心者用) Part134
831 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 22:56:57.54 ID:dT49NCpma - 急がないならどれかの言語のコードでもじっくり読んで勉強したらいい
大体の言語はオープンソースなので好きなのをやればいい ただしc++の知識ぐらいはいる 急ぐならテストパターンを十分に用意して手あたり次第やればいい
|
- ふらっと C#,C♯,C#(初心者用) Part134
834 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 23:15:27.28 ID:dT49NCpma - 独自言語の解析してるんだろ?
他の部分が出来てるなら 普通に頭から読んでって "が出たらリテラルフラグオンにして //が出たら行末まで読み捨て /*だったら次の*/がでるまで捨てるだけ 何も難しくない
|
- ふらっと C#,C♯,C#(初心者用) Part134
835 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 23:17:24.91 ID:dT49NCpma - 文字が抜けた
"が出たらリテラルフラグオンにして仕様通りリテラルを最後まで読み切るだけ
|
- ふらっと C#,C♯,C#(初心者用) Part134
840 :デフォルトの名無しさん (アウアウウー Sa5b-+DFt)[sage]:2018/02/02(金) 23:24:41.10 ID:dT49NCpma - >>832
本当にめちゃくちゃだな 前方見ても意味ない 確定するためには本当に最初までさかのぼることになる
|