1read 100read
2013年07月UNIX58: yacc & lex (138)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
【Macintosh】MacでUNIX【Terminal】 (140)
■■■X11不要論■■■R4■■■ (116)
初心者もOK! FreeBSD質問スレッド その116 (489)
Solaris を入れてみます (181)
UNIX板住人ならEUCで会話するよな? (120)
中卒、土方、塗装工、ガテン系のためのUnix (130)
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元 削除依頼 ▲
FreeBSD/amd64 part3 (and for operation-2ch) (145)
ユニ板も 五七五だよ 逝ってヨシ (110)
Σワークステーションを使いこなそう (134)
【脱・初心者】僕のパソコン日記【達人を目指せ】 (108)
30年後のUNIX板 (146)
Internet Server インターネット サーバー (142)
--log9.info------------------
つまらない小説を無理矢理褒めちぎるスレ15 (820)
あなたに合うおすすめ本を紹介するスレ〜Part66〜 (150)
【ベン・トー】アサウラスレッド45 (313)
壱日千次 〜社会的には死んでも君を!〜 (243)
◆書籍重点◆ニンジャスレイヤー#7◆忍殺◆ (534)
オーバーラップ文庫総合スレッド2 (182)
【魔法科高校の劣等生】佐島勤スレ23 (149)
鬱陶しい、気持ち悪いヒロインINラノベ板 20人目 (237)
さがら総 変態王子と笑わない猫。30匹目 (567)
雨木シュウスケ 「鋼殻のレギオス」Part49 (225)
【ルーン】浜松春日統合スレ【トルーパーズ】 (123)
HJ文庫◆ホビージャパン総合 Vol.28 (841)
津守時生/多戸雅之 ●9 〜また落ちた〜 (462)
長谷敏司51[あなたのためのBEATLESS円環少女] (111)
角川スニーカー文庫総合スレッド49 (106)
橘公司 蒼穹のカルマ/デート・ア・ライブ part28 (123)
--log55.com------------------
【芸能】 宮迫博之、繊細で優しいが最後は保身/こんな人 2019/07/20
【ZOZO】前澤社長が心臓移植"3億寄付"で叩かれた原因「救える命の総数は変わらない、助かるはずの米国人患者が助からない」
【テレビ】<橋本マナミ>DeNA綾部の不貞行為「気持ち悪い」友人と結婚の元プロ野球選手も「30人位の人と関係」と暴露
【未来を変えていくのは私達だよ!】秋元才加さん、浅野忠信さん、城田優さん…。著名人が続々と投票に関する発信
【芸能】DeNA・綾部の「18人不倫」報道、相手が「いろんな年代の人」でびっくりと岩井志麻子さん
【宮迫博之“解雇”でどこへ行く? 】闇営業で泥沼の吉本興業
【ドラマ】大森南朋「サイン」2人の若い女性遺体9・5%
【NGT48】村雲颯香、異例の“全員立会い動画”で卒業、芸能界引退を発表【コメント全文】