1read 100read
2013年07月UNIX58: yacc & lex (138)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
お前ら!! 386BSDから使ってたやつの数→ (151)
マイナーハードにオープンソースOS入れてる奴は変態 (110)
gnuplot を使おう。 その3 (165)
グラフソフト (165)
Windows禁止の職場に勤める人の集い (122)
■■■X11不要論■■■R4■■■ (116)
yacc & lex
- 1 :02/09/12 〜 最終レス :2013/06/05
- yaccとは、"yet another compiler-compiler"(さらにもう一つのコンパイラ-コンパイラ)という意味で、
yaccの開発者である、スティーヴ・ジョンソン氏が当時(1972年頃)に存在していた同種のプログラムの多さを
皮肉った言葉に由来している。yaccはその中で生き残ったごく少数のうちの一つである。
lexはyaccがパーサーを作成するのと同様の方法で字句解析ルーチンを作る。即ち、自分の言語の字句規則の
仕様を正規表現と、その正規表現に一致する文字列が見つかった時に、実行すべきCプログラムにより記述すればよい。
lexとyaccは、我々が既に書いてきた字句解析ルーチンと同一のメカニズムで、共同して働く。
- 2 :
- >>1
えっと・・・おめでとう?
- 3 :
- flex & bison ですが、何か?
- 4 :
- オライリー本を買ったのがそんなに嬉しかった、ってことかな
- 5 :
- >>4
引用としての体をなしてないので著作権に抵触してますな。>>1は。
通報してくる。
- 6 :
- >>2
2get荒らしなのか、俺に対する励ましなのか分からんのだが、、、
とにかく、ココはyacc&lexに関するスレという事でヨロシク!!
- 7 :
- >>5
なっ、何をもってそのような事が、、、
- 8 :
- ここは、自信のないスレ、なのか……?
- 9 :
- \
\ 新スレおめでとうございまぁす☆
\
\ /| 。.
,,-'―\ _,/ノ . .
___,,-―――='' ̄ ̄ _,,-'―=''' ̄_,/| o *
_,,-―=''' ̄ ___,,-―――='' ̄ __,-―='' ̄ / . . .
_,,-―=''' ̄ _,,-―='' ̄ ヽ / +
 ̄ ̄ _,,-―=''' ̄ \ / . . . .
,,-='' ̄ ヽ / . 。. ★ ☆
,,,-'' ノ ノ ヽ/ 。. .
-―'' ̄ (;;;) |___,/ (;;;) | . ☆ +
. | ..::::::::::::... | / ..:::::::... | + . . .
| | / | . . ☆
ヽ γ´~⌒ヽ. | / /☆ . * +. .
――ヽ / ヽ | / /⌒ヽ、. . . .
\/ | |_/ / ヽ +★
/ | / ノ * ☆
- 10 :
-
- 11 :
-
- 12 :
- ヤッケ?
- 13 :
- >>12
ユッケ食いたいなぁ・・・。
- 14 :
- http://pc3.2ch.net/test/read.cgi/tech/1021136715/l50
- 15 :
- lex どんな時に使ってる?
- 16 :
- みゆりんってだれ?
- 17 :
- >>15
使わない。
業務システムのコンサル SE だから。
# いまは、ぷー太郎だけど。
- 18 :
- 率直な話、プログラマじゃなきゃ使い道ないとおもうなぁ。
ふつーの文字列処理で使えるものなのか?
一般人の使うような使い方があったらだれか教えて
- 19 :
- >>18
個人的なプチコンパイラつくって悦に浸るとき。
- 20 :
- 意外と便利だが、最近はXMLパーサを利用してしまう……
- 21 :
- >>18
lex は、正規表現の複雑なことをするには、sed より便利だよ。
覚えとくと非常に便利。
- 22 :
- >>21
lex が必要になることがあまりないな。
たいていは sed で済んじゃうし。
そういえば SJIS to EBIDIK 変換の前処理を
C で書いたけど lex 使えば楽だったかも。
- 23 :
- >>21
でも Perl でも十分。
lex が必要になったことは滅多にない。
- 24 :
- 個人レベルでパーサ作る時はracc使うなあ…
正直、lex&yaccは面倒すぎ。
- 25 :
- 俺、yacc は使うけど lex の部分は手で書いちゃう。
再帰降下型パーサーで、ちょちょいと書けるような
簡単な文法だと、yacc も使わずに、すべて手で書い
ちゃう。
これって、ひょっとして old type よりもさらに
older ってことですか? 欝だ死脳
- 26 :
- いや、yacc も lex も使わず手で書いてしまうってのはよくある。
- 27 :
- 何でいまだにほとんどのUnixに標準添付なのかと。
いやツールのmakeんときに必要なんだろうけどさ
- 28 :
- まだだ!まだおわらんよ!
>>27
perlのコンパイルの時も使います
- 29 :
- yacc & lex 本で良いのどれ? ってもう買っちゃったけど。
C のインタープリタ作りたい。>>0
- 30 :
- SymphonyXに見えた
- 31 :
- >>30
あのウソコバソドか
- 32 :
- プログラム板にも何冊か推薦図書がありましたが、ぼくが参考にしたのは
yacc/lex プログラムジェネレータ on UNIX 五月女健治 テクノプレス
コンパイラ構成法 原田賢一 共立出版
他にも「コンパイラ」に関する本は何冊かありましたが、むしろ
yacc/lex の使い方よりもコンパイラの理論が中心になっているので、
初心者には取っつきにくいかもしれません。
- 33 :
- >>32ハンドル間違えた。
- 34 :
- http://www.linux.or.jp/JF/workshop/JF-in-Progress.html
の翻訳進捗状況一覧眺めていたら
Lex-YACC-HOWTO 未訳だってさ。
2CHer で訳さない?
- 35 :
- >>29
俺は「yaccによるCコンパイラプログラミング」って本が激しくよかったんですが
(lexは扱ってないけど)絶版になったと聞きました。
- 36 :
- >>萌え萌え
あぁ! それ買ったんですよ。
>>35
そのものズバリなタイトルですね。読みたゐな♪
- 37 :
- lex&yacc入門なら
「UNIXプログラミング環境」 アスキー
に、素晴らしい章がある。本気でやってみたいんなら、
この章を読むためだけに買ってもいいんじゃないかと思う。
これを読んだ後で、ほかの本を買えばいいんじゃないかな。
でも、この本、まだ売ってんのかな?
- 38 :
- >>37
それってカーニハンのですか? 本屋で見かけたような・・・。
見付けたらゲットしてみます。
- 39 :
- >>37
その章だけ学校の図書館でコピーしたよ、昔。
- 40 :
- >>36
本のほうは入手困難ぽ。俺もだいぶ苦労しますた。
Cマガの99年10月号についてるCDにキモの部分が入ってるそうなんで
(http://www.context.co.jp/~cond/books/ ご参照)
これをなんとか入手するのが早いかもです。
x86向けコードを吐き出す (最適化はあんまりやってないけど)
実物のCコンパイラを題材として分かりやすく説明してくれてるいい本でした。
>>37
残念ながらそっちも絶版ぽ
本気で言語処理系学ぶならやっぱドラゴンブックに挑むのがいいんかねえ。
- 41 :
- 読み方についてなのだが、以下の形でよいのだろうか?
lex ......... レックス
yacc .... ヤック
flex ....... フレックス
bison ... バイソン
- 42 :
- lex レフ
yacc ヤッシッシー
flex フレフ
bison ビソン
- 43 :
- れきしかるあならいざじぇねれーた
いぇっとあなざーこんぱいらこんぱいら
ふぁーすとれきしかるあならいざじぇねれーた
のうし
- 44 :
- 炒飯
餃子
レバニラ炒め
天津飯
- 45 :
- >>41
いいんじゃネーノ?
- 46 :
- UNIXに関する言葉のカタカナ読みスレッド
http://pc.2ch.net/test/read.cgi/unix/979465046/
- 47 :
- 誰か、%type に複数の項目をカンマで区切って並べる書き方の載っている
マニュアルか何かを知りませんか?
bison-1.75 がタコで、ルールの末尾のセミコロンが絶対必要になったのと
複数項目をカンマで区切って並べる書き方を認めなくなったおかげで、
世間に存在する大量の yacc コードがコンパイルできなくなった模様。
作者は「こりゃ仕様だセミコロンつけないヤシが悪いんだゴルァ」と
MLでおっしゃってます。
直してもらおうと思って Single Unix Specification ではどうなって
いるか調べてみたんだけど、ダメらしい。yaccによるyaccの文法定義は
PSD:15の孫引きなんで、世間のマニュアルはみんな右に倣えの予感。
V7のyaccをコンパイルして試してみたらカンマでもちゃんと通ります。
- 48 :
- >>41
覚えたてのころは、ごっちゃになって
レック
ヤックス
とか言ってた
- 49 :
- (^^)
- 50 :
- やっくすのせりかた
- 51 :
- http://pc2.2ch.net/test/read.cgi/tech/1045139908/
- 52 :
- (^^)
- 53 :
- (^^)
- 54 :あぼーん:あぼーん
- あぼーん
- 55 :
- flex でルール部を C の変数で動的に生成することって出来ないですかね?
- 56 :
- >>55
何にでも当てはまるようなオRガバガバのルールに対して、
切り出したトークンの値に応じて C の内部で場合分けをして逝くのはどうかしら。。。
クククのクーソ。。。
- 57 :あぼーん:あぼーん
- あぼーん
- 58 :
- 自己晒しage
>>55
flexの内部テーブルをいじればいけるんじゃないすか。
そこまでするなら自分で字句解析したほうが楽な気もします。
- 59 :
- yacc -d とか bison -y が通らないものは
"byacc"つかうとたいてい通る。
しかしナニをするものなのかとかは
全くシラン。
- 60 :あぼーん:あぼーん
- あぼーん
- 61 :
- 盛り上がんないなあ
>>34
ほらよ
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.txt
- 62 :
- >>55
ルールを出力、 *.l を作成
↓
flex を実行、 *.c を作成
↓
コンパイル
↓
yylex() を dlopen()
とか?
lex って状態機械作るんですよね。単にテーブルに要素追加すればオケという
ほど簡単でもないと思うんだけど? >>58
- 63 :
- 58っす
>>62
そっか、そうだな。
しかしlex使うシチュエーションって少ねえなあ。
- 64 :あぼーん:あぼーん
- あぼーん
- 65 :あぼーん:あぼーん
- あぼーん
- 66 :
- 設定ファイルの書式もなんだかんだでXMLになりつつあるしなあ。
- 67 :
- >>63
正規表現ライブラリの代わりとか
- 68 :
- 補修
- 69 :
- raccのこととかも語ってちょ。
- 70 :
- アドベンチャーゲームなど用にスクリプトプログラムを作成したいのですが、
そのような目的にyaccやlexって向いていますか?
yaccやlexについて調べようとおもったのですが、見つけることができませんでした。
開発環境はWindowsですので、bisonとflexというのを入れてみました。
- 71 :
- >>70
スクリプトプログラムを作成するインタプリタプログラムを作るには
むいてるかもしれない。日本語周りは要注意ね。
Unix板的には
「既存のものを使え」
「既存のもので満足できなければ改造しろ」
と思う。車輪の再発明はもっとも愚かだ
- 72 :
- Lexで標準入力以外(例えば文字列)を取得したい場合、下記のような定義をすると思うんですが、
#undef YY_INPUT
#define YY_INPUT(buf, result, max_size) (result = my_yyinput(buf, max_size))
この場合、my_yyinput()はどういうタイミングで呼ばれるのでしょうか?
また、bufの値はどこで設定すればよいのでしょうか?
- 73 :
- >>71
私は車輪を再発明して理解しろ。という方が好きです
- 74 :
- 学生やアマチュアはそれで良いんじゃないの
- 75 :
-
- 76 :
- >>71
お前は愚かだ
- 77 :
- 車輪の再発明は勉強にはなるけど学生のうちに済ませとけ
- 78 :
- 自分らは普段なにやってるの?車輪磨き?
- 79 :
- UNIXプログラミング環境
在庫があるところにはあるらしい
www.boople.com/servlet/AFsearch?&isc=&idn=321429&iqm=2
- 80 :
- >>79
普通に買えるみたい。
http://www.junkudo.co.jp/detail2.jsp?ID=0185262822
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9850359668
家の近所の本屋でも売ってました。
- 81 :
- からあげ うまうま だよもん
- 82 :
- flex のyy_push_state() って、FlexLexer ではprotected なのですが
ってことは、.y 側のルールでyy_push_state() を使うのはunsupported でつか?
- 83 :
- 初めて lex を使ってみました。なんか面白いのねん。
- 84 :
- lex は yy.lex.c吐くわ、yyナンチャラいう変数/関数をもってるわ
なぜそこで yy? あんた lexさんでしょう?と思ってしまうのですが
yyがつくものは yaccへの引渡しを想定していますよという暗示なのん?
なんつ−か、
歴史的な経緯とかyacc/lex開発時のエピソ−ドがあるようなら教えて下しい
もしかして lex is Yet another Yacc だからとかいう話しなのかしらん?
という質問はくだ質逝ったほうが吉?
- 85 :
- << yy.lex.c
>> lex.yy.c 誤記ですた
- 86 :
- bisonでコンパイルするときに使う記号テーブルって何で必要なんだ?
誰か教えてくれorz
ぐぐっても見つかんない・・・
- 87 :
- >>84
sourceの行番号の受け渡しとか、
協調しないといけないものがあるから。
--stdoutで切り替えられるから問題ないでしょ。
yyin, yyoutとか。
>>86
えーと、'+'とか'-'とかですめばいいけど、
"if"とか"then"とかをtokenとして扱いたいから。
- 88 :
- >>86
そんなレベルで bison 使うの?
- 89 :
- 使わないといけないらしいです。
http://www.kuzbass.ru/docs/unixprogenv/src/hoc4/
これでy=1+5*yを計算したときにどうなるかって言う課題が出て
プリントを復習中ですけど、明日までに間に合いそうに無いので
困り果ててますorz
constpush:1
constpush:5
varpush:x
eval
mul
add
varpush:y
assign
pop
STOP
って感じでいいのかなぁ・・・。
- 90 :
- なんじゃそりゃ
- 91 :
- yyac 使って,define に相当するようなコマンドをもつ
コンパイラ or インタプリタを作るには
どうしたらいいのでしょうか.
参考文献を教えて下さると有難いです.
それとも不可能ですか?
- 92 :
- BNFで書けるなら(つまり文脈自由文法なら)yaccで記述出来るし
BNFで書けないならyaccで記述出来ない
そのdefineをBNFで書いて見る事をお奨めする
- 93 :
- ああ、ひょっとして91が作りたかったのは
defineじゃなくてインタプリタの事じゃないだろうか?
もしそうならyaccでは不可能。
だって、yaccはCompiler Compilerだから。
- 94 :
- (´・ω・`)
- 95 :
- >>93
- 96 :
- >>55
- 97 :
- >>93
マクロ定義ができるコンパイラが作りたかったんじゃね?
- 98 :
- (´・ω・`)
- 99 :
- 関数定義ができるコンパイラを yacc で記述するにはどうしたらいいですか?
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
テキストエディタ総合スレ (176)
Debian GNU/kFreeBSD (197)
UNIXの語源=universal Rなのしってた? (119)
Mixi モード for Emacs [ミクシィー] (129)
BSDマガジン?なめんな、漢ならサンワールド読め (101)
BSDとWinは仲良しなわけですが (107)
--log9.info------------------
LUNA SEA 312 (313)
DEAD END Vol.9 (545)
X JAPAN THREAD SHOCK #802 (1001)
ゴールデンボンバー118 (105)
人格ラヂオ73 (558)
中田ヤスタカ被害者の会 part4 (107)
Aira Mitsuki part.10 (103)
渋谷キャメロット (258)
D'Angelo 19 (964)
【イマジネーション】THE STSR CLUB【ラリパッパ】 (499)
【ファン専用】 ラフィンノーズ 【短歌お断り】 (420)
SAってパンクなのか? (131)
【ラフィンノーズ】短歌先生第五首【LAUGHIN'NOSE】 (434)
【爺】35過ぎてバンドやってる奴等で語るスレ【婆】 (105)
アパッチ part4 (1001)
【ロカビリー】 CREAM SODA 【ロカビリー】 (255)
--log55.com------------------
【McLaren】マクラーレンF1【12台目】
レッドブル・レーシング -Red Bull Racing- #2
□■2018□■F1GP総合 LAP1764■□ベルギー■□
【非国民】チョン上げ売国スケート連盟【売国奴】
島田美穂は何故オリンピックに出られなかったのか
関西学生アメリカンフットボール Div.1 Part 108
アメフトとホモビデオ
日大フェニックス退部者続出その3
-