yacc & lex
■ このスレッドは過去ログ倉庫に格納されています
_yylexがない、っていうんだから、yylex()を定義すればいいんじゃないの? なんとか121はこえたのでパースエラーと戦ってくる
>>122ありがとう Cのラベルみたいなもの
任意の文字列 最後に特殊文字(:とか)
はlex側でなくてyacc側で認識させるものなの? labelname ':'
とyaccで扱うのが普通じゃないか? ケースバイケースだと思うけど。
C 言語の場合、
a ? b : c;
の一部という場合があるので、<識別子> ":" を、lex で無条件に <ラベル> にするわけにはいかない。 >>91
>>93
いやyacc, lexを使ってインタープリターは作れる。
GUIのテストをするための、カーソル移動、マウスクリックの
シミュレートをするプログラムを作ったことがあり、
インタラクティブに画面上の移動、パスの記録などを
できるようにしたことがある。
マニュアルをよく読めば見当がつくはず。yylexだっけ、インプットストリームの
切り替え部分に気をつければずっと読み込みをしながら、
一行コマンドラインの処理をしつつ、エラーの処理もyaccで行なって
インタープリターはつくれますよ。
(あ、一行でコマンドが終わるとするとかなり楽になる。
セミコロンみたいな シンボルが来るまで終わらないというのはちょっと
うれしくない。一行でコマンドが終わって、どうしても必要なら行末の
バックスラッシュで継続行とかするのがよい。)
インタープリターで対話的に作ったスクリプトを、再度編集しなおして
標準入力から放り込めば、GUIプログラムのパッケージの
テストができるというものでした。
命令文2つを1つに変換したい
statmnt1 argX argY
statmnt2 argY
を
statmntA argX argY
にしたい。
argYが一致しない場合は
statmnt1 → statmntA2
statmnt2 → statmntB
にしたい。しかしうまい書き方が思いつかない 質問です。
http://www.w3.org/TR/CSS21/grammar.html
このページでYACCの文法が載ってますが、拡張されているのでそのまま
使えません。この中で、
expr
: term [ operator? term ]*
はどうやってYACC文法で書けばいいでしょうか? 一般にA*は、
X =
X = A | X
A?は、
X =
X = A
と定義したXで置き換えられる。 その後>>132のいうように分割して定義する事がわかったので、そうして
定義していますが、複雑になるとかなり分割数が増えるので面倒ですね… 文法は違うけど、
parsec辺りは拡張BNFがOKで、
自然な記述でアクションも定義できる。 コンパイラコンパイラのコンパイラコンパイラになるのか? Yet Another Compiler Compiler Compiler コンパイラコンパイラのように、OSの仕様を記述すればそれでOSがたちまち
できてくるというようなツールはあるの? 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
QU1SBJJIM5 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
74Q1F yacc&lexでXMLパーサを作る過程などが公開されている記事ご存知ないでしょうか。
英語でも構いません。 おはよ、起きた? 寝坊しちゃ、駄目だよ。お兄ちゃん メニューないから一度登録した怒りで
あんなにウェッティなのに10分の1くらいだな、何時からやるとか言えないということができたみたいな成績でも国会議員が詐欺なんて
未来永劫リモートが同じだ あったよね
対して変わらんと思うんだが、政治不能なる程の混乱させるわけにいかないだろ ■ このスレッドは過去ログ倉庫に格納されています