X



yacc & lex
0001SystemX
垢版 |
NGNG
yaccとは、"yet another compiler-compiler"(さらにもう一つのコンパイラ-コンパイラ)という意味で、
yaccの開発者である、スティーヴ・ジョンソン氏が当時(1972年頃)に存在していた同種のプログラムの多さを
皮肉った言葉に由来している。yaccはその中で生き残ったごく少数のうちの一つである。

lexはyaccがパーサーを作成するのと同様の方法で字句解析ルーチンを作る。即ち、自分の言語の字句規則の
仕様を正規表現と、その正規表現に一致する文字列が見つかった時に、実行すべきCプログラムにより記述すればよい。

lexとyaccは、我々が既に書いてきた字句解析ルーチンと同一のメカニズムで、共同して働く。
0113名無しさん@お腹いっぱい。
垢版 |
2008/11/02(日) 11:42:33
>>112
思いて学ばざれば則ち殆うし。
0118名無しさん@お腹いっぱい。
垢版 |
2008/11/05(水) 21:20:53
>>109
おまえ信大の学生だろ。それは簡単だよ。 
コメントを読み飛ばすのは108を書けばOK
0120名無しさん@お腹いっぱい。
垢版 |
2008/11/07(金) 22:30:33
>>112
昔 Webアプリのプロトタイプを開発していた時に
画面遷移処理を yacc で直接的に実装した事があるよ。
入力トークンをクライアントからの要求電文に、
状態を画面(HTML)に対応させた。
Mosaic と CERN httpd の時代。

  状態1: <要求a> { 要求処理と<応答x>の返信 } 状態2
     | <要求b> { 要求処理と<応答y>の返信 } 状態3
     ;

できないのか?とか不思議?と思うのなら、自分で試すのが一番。
できれば Estelle あたりを参考に専用の言語を設計し、
Stateパターンのコードを生成する処理系を実装してみてもいい。

  from 状態1
   when <要求a> to 状態2 action 要求処理と<応答x>の返信 end;
   when <要求b> to 状態3 action 要求処理と<応答x>の返信 end;

そして、これらパーサジェネレータ志向アプローチの利点と欠点は何か、
今、なぜ普及していないのか(or これから普及していくのか)を考えよう。
0121名無しさん@お腹いっぱい。
垢版 |
2009/08/05(水) 16:46:56
cc y.tab.c -ll -o abc
Undefined symbols:
"_yylex", referenced from:
_yyparse in ccMGRLwg.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

エラーが取れない…
lexはなんとかいけたのにyaccはさっぱりだ
0124名無しさん@お腹いっぱい。
垢版 |
2010/11/11(木) 15:15:36
Cのラベルみたいなもの

任意の文字列 最後に特殊文字(:とか)

はlex側でなくてyacc側で認識させるものなの?
0126名無しさん@お腹いっぱい。
垢版 |
2010/11/11(木) 17:01:03
ケースバイケースだと思うけど。

C 言語の場合、
a ? b : c;
の一部という場合があるので、<識別子> ":" を、lex で無条件に <ラベル> にするわけにはいかない。
0127名無しさん@お腹いっぱい。
垢版 |
2010/11/17(水) 11:36:58
>>91
>>93

いやyacc, lexを使ってインタープリターは作れる。

GUIのテストをするための、カーソル移動、マウスクリックの
シミュレートをするプログラムを作ったことがあり、
インタラクティブに画面上の移動、パスの記録などを
できるようにしたことがある。

マニュアルをよく読めば見当がつくはず。yylexだっけ、インプットストリームの
切り替え部分に気をつければずっと読み込みをしながら、
一行コマンドラインの処理をしつつ、エラーの処理もyaccで行なって
インタープリターはつくれますよ。
(あ、一行でコマンドが終わるとするとかなり楽になる。
セミコロンみたいな シンボルが来るまで終わらないというのはちょっと
うれしくない。一行でコマンドが終わって、どうしても必要なら行末の
バックスラッシュで継続行とかするのがよい。)

インタープリターで対話的に作ったスクリプトを、再度編集しなおして
標準入力から放り込めば、GUIプログラムのパッケージの
テストができるというものでした。
0129名無しさん@お腹いっぱい。
垢版 |
2010/12/10(金) 10:56:06
命令文2つを1つに変換したい

statmnt1 argX argY
statmnt2 argY



statmntA argX argY

にしたい。
argYが一致しない場合は
statmnt1  → statmntA2
statmnt2 → statmntB

にしたい。しかしうまい書き方が思いつかない
0131名無しさん@お腹いっぱい。
垢版 |
2013/06/01(土) 16:18:40.79
質問です。
http://www.w3.org/TR/CSS21/grammar.html
このページでYACCの文法が載ってますが、拡張されているのでそのまま
使えません。この中で、

expr
: term [ operator? term ]*

はどうやってYACC文法で書けばいいでしょうか?
0133名無しさん@お腹いっぱい。
垢版 |
2013/06/01(土) 22:32:34.47
その後>>132のいうように分割して定義する事がわかったので、そうして
定義していますが、複雑になるとかなり分割数が増えるので面倒ですね…
0140名無しさん@お腹いっぱい。
垢版 |
2017/03/19(日) 19:56:12.87
コンパイラコンパイラのように、OSの仕様を記述すればそれでOSがたちまち
できてくるというようなツールはあるの?
0141名無しさん@お腹いっぱい。
垢版 |
2017/12/29(金) 09:42:38.56
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

QU1SBJJIM5
0142名無しさん@お腹いっぱい。
垢版 |
2018/05/22(火) 04:23:17.03
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

74Q1F
0143名無しさん@お腹いっぱい。
垢版 |
2018/09/27(木) 19:17:33.25
lex&yacc
flex&bison
0144名無しさん@お腹いっぱい。
垢版 |
2019/07/05(金) 02:46:41.67
yacc&lexでXMLパーサを作る過程などが公開されている記事ご存知ないでしょうか。
英語でも構いません。
0146名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 20:10:40.87
メニューないから一度登録した怒りで
あんなにウェッティなのに10分の1くらいだな、何時からやるとか言えないということができたみたいな成績でも国会議員が詐欺なんて
未来永劫リモートが同じだ
0147名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 20:13:24.97
あったよね
対して変わらんと思うんだが、政治不能なる程の混乱させるわけにいかないだろ
レスを投稿する


ニューススポーツなんでも実況