[表示 : 全て 最新50 1-99 101- 2ch.scのread.cgiへ]
Update time : 07/23 09:15 / Filesize : 32 KB / Number-of Response : 151
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

yacc & lex



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

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

lexとyaccは、我々が既に書いてきた字句解析ルーチンと同一のメカニズムで、共同して働く。

2 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 12:35.net]
>>1
えっと・・・おめでとう?

3 名前:えんぢにあ mailto:sage [02/09/12 12:39.net]
flex & bison ですが、何か?

4 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 12:51.net]
オライリー本を買ったのがそんなに嬉しかった、ってことかな

5 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 12:56.net]
>>4
引用としての体をなしてないので著作権に抵触してますな。>>1は。
通報してくる。

6 名前:SystemX [02/09/12 13:01.net]
>>2
2get荒らしなのか、俺に対する励ましなのか分からんのだが、、、

とにかく、ココはyacc&lexに関するスレという事でヨロシク!!

7 名前:SystemX [02/09/12 13:04.net]
>>5
なっ、何をもってそのような事が、、、

8 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 13:05.net]
ここは、自信のないスレ、なのか……?

9 名前:みゆりん祭り ◆MiYU.XlA mailto:みゆりんだべ (●´ー`●) [02/09/12 13:21.net]
                    \
                      \  新スレおめでとうございまぁす☆
                       \
                         \            /|   。.
                       ,,-'―\       _,/ノ   . .
        ___,,-―――='' ̄ ̄    _,,-'―=''' ̄_,/|  o    *
_,,-―=''' ̄      ___,,-―――='' ̄ __,-―='' ̄   / .   . .
   _,,-―=''' ̄        _,,-―='' ̄ ヽ       /  +
 ̄ ̄        _,,-―=''' ̄          \    /  . . .  .
      ,,-='' ̄                   ヽ  /    .  。. ★  ☆
    ,,,-''        ノ              ノ   ヽ/     。.    .
-―'' ̄        (;;;)    |___,/  (;;;)   |   . ☆  +
.  |        ..::::::::::::...       |     /    ..:::::::... | + .   . .
   |                    |     /        |    . .   ☆
  ヽ    γ´~⌒ヽ.        |   /          /☆ . *  +.  .
――ヽ   /      ヽ      |  /         /⌒ヽ、.  .  . .
    \/       |       |_/          /    ヽ +★
      /         |             /     ノ *  ☆

10 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 14:54.net]



























11 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 14:54.net]



















 

12 名前:名無しさん@お腹いっぱい。 [02/09/12 15:28.net]
ヤッケ?

13 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 15:33.net]
>>12
ユッケ食いたいなぁ・・・。

14 名前:棄教者 ◆witdLTi2 [02/09/12 16:02.net]
pc3.2ch.net/test/read.cgi/tech/1021136715/l50

15 名前:名無しさん@Emacs mailto:sage [02/09/12 21:29.net]
lex どんな時に使ってる?

16 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/12 23:25.net]
みゆりんってだれ?

17 名前:えんぢにあ mailto:sage [02/09/13 10:27.net]
>>15
使わない。
業務システムのコンサル SE だから。
# いまは、ぷー太郎だけど。

18 名前:名無しさん@お腹いっぱい。 [02/09/13 22:25.net]
率直な話、プログラマじゃなきゃ使い道ないとおもうなぁ。
ふつーの文字列処理で使えるものなのか?
一般人の使うような使い方があったらだれか教えて

19 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/13 22:41.net]
>>18
個人的なプチコンパイラつくって悦に浸るとき。

20 名前:名無しさん@Meadow mailto:sage [02/09/14 02:20.net]
意外と便利だが、最近はXMLパーサを利用してしまう……



21 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/14 05:14.net]
>>18
lex は、正規表現の複雑なことをするには、sed より便利だよ。
覚えとくと非常に便利。


22 名前:えんぢにあ mailto:sage [02/09/14 07:42.net]
>>21
lex が必要になることがあまりないな。
たいていは sed で済んじゃうし。

そういえば SJIS to EBIDIK 変換の前処理を
C で書いたけど lex 使えば楽だったかも。

23 名前:棄教者 ◆witdLTi2 [02/09/14 16:05.net]
>>21
でも Perl でも十分。
lex が必要になったことは滅多にない。

24 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/14 16:33.net]
個人レベルでパーサ作る時はracc使うなあ…
正直、lex&yaccは面倒すぎ。

25 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/14 17:01.net]
俺、yacc は使うけど lex の部分は手で書いちゃう。
再帰降下型パーサーで、ちょちょいと書けるような
簡単な文法だと、yacc も使わずに、すべて手で書い
ちゃう。
これって、ひょっとして old type よりもさらに
older ってことですか? 欝だ死脳


26 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/15 00:18.net]
いや、yacc も lex も使わず手で書いてしまうってのはよくある。


27 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/17 11:41.net]
何でいまだにほとんどのUnixに標準添付なのかと。








いやツールのmakeんときに必要なんだろうけどさ

28 名前:名無しさん@お腹いっぱい。 [02/09/19 18:02.net]
まだだ!まだおわらんよ!
>>27
perlのコンパイルの時も使います

29 名前:名無しさん@Emacs [02/09/20 02:37.net]
yacc & lex 本で良いのどれ? ってもう買っちゃったけど。
C のインタープリタ作りたい。>>0


30 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/20 05:11.net]
SymphonyXに見えた



31 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/20 07:10.net]
>>30
あのウソコバソドか

32 名前:萌え萌え ◆MOE73MOE [02/09/20 08:42.net]
プログラム板にも何冊か推薦図書がありましたが、ぼくが参考にしたのは
yacc/lex プログラムジェネレータ on UNIX 五月女健治 テクノプレス
コンパイラ構成法 原田賢一 共立出版

他にも「コンパイラ」に関する本は何冊かありましたが、むしろ
yacc/lex の使い方よりもコンパイラの理論が中心になっているので、
初心者には取っつきにくいかもしれません。

33 名前:棄教者 ◆KIKYO7cg [02/09/20 08:43.net]
>>32ハンドル間違えた。

34 名前:棄教者 ◆KIKYO7cg [02/09/20 09:54.net]
www.linux.or.jp/JF/workshop/JF-in-Progress.html
の翻訳進捗状況一覧眺めていたら
Lex-YACC-HOWTO 未訳だってさ。
2CHer で訳さない?

35 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/20 09:54.net]
>>29
俺は「yaccによるCコンパイラプログラミング」って本が激しくよかったんですが
(lexは扱ってないけど)絶版になったと聞きました。

36 名前:名無しさん@Emacs mailto:sage [02/09/21 00:45.net]
>>萌え萌え
あぁ! それ買ったんですよ。

>>35
そのものズバリなタイトルですね。読みたゐな♪

37 名前:仕様書無しさん mailto:sage [02/09/21 01:20.net]
lex&yacc入門なら

「UNIXプログラミング環境」 アスキー

に、素晴らしい章がある。本気でやってみたいんなら、
この章を読むためだけに買ってもいいんじゃないかと思う。
これを読んだ後で、ほかの本を買えばいいんじゃないかな。

でも、この本、まだ売ってんのかな?

38 名前:名無しさん@Emacs mailto:sage [02/09/21 03:51.net]
>>37
それってカーニハンのですか? 本屋で見かけたような・・・。
見付けたらゲットしてみます。

39 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/22 02:32.net]
>>37
その章だけ学校の図書館でコピーしたよ、昔。

40 名前:35 [02/09/22 14:20.net]
>>36
本のほうは入手困難ぽ。俺もだいぶ苦労しますた。

Cマガの99年10月号についてるCDにキモの部分が入ってるそうなんで
(www.context.co.jp/~cond/books/ ご参照)
これをなんとか入手するのが早いかもです。

x86向けコードを吐き出す (最適化はあんまりやってないけど)
実物のCコンパイラを題材として分かりやすく説明してくれてるいい本でした。

>>37
残念ながらそっちも絶版ぽ

本気で言語処理系学ぶならやっぱドラゴンブックに挑むのがいいんかねえ。



41 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/22 15:36.net]
読み方についてなのだが、以下の形でよいのだろうか?

lex ......... レックス
yacc .... ヤック
flex ....... フレックス
bison ... バイソン

42 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/22 16:30.net]
lex レフ
yacc ヤッシッシー
flex フレフ
bison ビソン

43 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/22 16:37.net]
れきしかるあならいざじぇねれーた
いぇっとあなざーこんぱいらこんぱいら
ふぁーすとれきしかるあならいざじぇねれーた
のうし

44 名前:名無しさん@お腹いっぱい。 mailto:age [02/09/22 19:24.net]
炒飯
餃子
レバニラ炒め
天津飯


45 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/23 02:22.net]
>>41
いいんじゃネーノ?

46 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/23 10:20.net]
UNIXに関する言葉のカタカナ読みスレッド
pc.2ch.net/test/read.cgi/unix/979465046/

47 名前:名無しさん@お腹いっぱい。 [02/11/15 17:13.net]
誰か、%type に複数の項目をカンマで区切って並べる書き方の載っている
マニュアルか何かを知りませんか?

bison-1.75 がタコで、ルールの末尾のセミコロンが絶対必要になったのと
複数項目をカンマで区切って並べる書き方を認めなくなったおかげで、
世間に存在する大量の yacc コードがコンパイルできなくなった模様。
作者は「こりゃ仕様だセミコロンつけないヤシが悪いんだゴルァ」と
MLでおっしゃってます。

直してもらおうと思って Single Unix Specification ではどうなって
いるか調べてみたんだけど、ダメらしい。yaccによるyaccの文法定義は
PSD:15の孫引きなんで、世間のマニュアルはみんな右に倣えの予感。

V7のyaccをコンパイルして試してみたらカンマでもちゃんと通ります。

48 名前:名無しさん@お腹いっぱい。 [02/11/15 18:29.net]
>>41
覚えたてのころは、ごっちゃになって
レック
ヤックス
とか言ってた


49 名前:山崎渉 mailto:(^^)sage [03/01/15 13:21.net]
(^^)

50 名前:ファンキー大山 mailto:sage [03/02/15 19:26.net]
やっくすのせりかた



51 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/16 21:19.net]
pc2.2ch.net/test/read.cgi/tech/1045139908/

52 名前:山崎渉 mailto:(^^) [03/03/13 17:54.net]
(^^)

53 名前:山崎渉 mailto:(^^) [03/04/17 12:21.net]
(^^)

54 名前:あぼーん mailto:あぼーん [あぼーん.net]
あぼーん

55 名前:名無しさん@お腹いっぱい。 [03/05/21 16:32.net]
flex でルール部を C の変数で動的に生成することって出来ないですかね?

56 名前:クンクン(葬式) mailto:sage [03/05/21 17:03.net]
>>55
何にでも当てはまるようなオマンコガバガバのルールに対して、
切り出したトークンの値に応じて C の内部で場合分けをして逝くのはどうかしら。。。

クククのクーソ。。。

57 名前:あぼーん mailto:あぼーん [あぼーん.net]
あぼーん

58 名前:名無しさん@お腹いっぱい。 [03/06/02 13:51.net]
自己晒しage

>>55
flexの内部テーブルをいじればいけるんじゃないすか。
そこまでするなら自分で字句解析したほうが楽な気もします。

59 名前:名無しさん@お腹いっぱい。 [03/06/08 09:39.net]
yacc -d とか bison -y が通らないものは
"byacc"つかうとたいてい通る。

しかしナニをするものなのかとかは
全くシラン。


60 名前:あぼーん mailto:あぼーん [あぼーん.net]
あぼーん



61 名前:名無しさん@お腹いっぱい。 [03/07/20 01:27.net]
盛り上がんないなあ

>>34
ほらよ
www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.txt

62 名前:名無しさん@XEmacs mailto:sage [03/07/21 23:16.net]
>>55

ルールを出力、 *.l を作成

flex を実行、 *.c を作成

コンパイル

yylex() を dlopen()

とか?

lex って状態機械作るんですよね。単にテーブルに要素追加すればオケという
ほど簡単でもないと思うんだけど? >>58


63 名前:名無しさん@お腹いっぱい。 [03/08/12 01:11.net]
58っす

>>62
そっか、そうだな。

しかしlex使うシチュエーションって少ねえなあ。

64 名前:あぼーん mailto:あぼーん [あぼーん.net]
あぼーん

65 名前:あぼーん mailto:あぼーん [あぼーん.net]
あぼーん

66 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/29 23:15.net]
設定ファイルの書式もなんだかんだでXMLになりつつあるしなあ。

67 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/07 01:06.net]
>>63
正規表現ライブラリの代わりとか

68 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/17 23:33.net]
補修

69 名前:名無しさん@お腹いっぱい。 [04/05/03 13:18.net]
raccのこととかも語ってちょ。

70 名前:名無しさん@お腹いっぱい。 [04/05/11 01:13.net]
アドベンチャーゲームなど用にスクリプトプログラムを作成したいのですが、
そのような目的にyaccやlexって向いていますか?

yaccやlexについて調べようとおもったのですが、見つけることができませんでした。

開発環境はWindowsですので、bisonとflexというのを入れてみました。





71 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 06:47.net]
>>70
スクリプトプログラムを作成するインタプリタプログラムを作るには
むいてるかもしれない。日本語周りは要注意ね。

Unix板的には
「既存のものを使え」
「既存のもので満足できなければ改造しろ」
と思う。車輪の再発明はもっとも愚かだ


72 名前:名無しさん@お腹いっぱい。 [04/06/22 22:14.net]
Lexで標準入力以外(例えば文字列)を取得したい場合、下記のような定義をすると思うんですが、

#undef YY_INPUT
#define YY_INPUT(buf, result, max_size) (result = my_yyinput(buf, max_size))

この場合、my_yyinput()はどういうタイミングで呼ばれるのでしょうか?
また、bufの値はどこで設定すればよいのでしょうか?

73 名前:名無しさん@お腹いっぱい。 mailto:sage [04/06/23 23:39.net]
>>71
私は車輪を再発明して理解しろ。という方が好きです

74 名前:名無しさん@お腹いっぱい。 mailto:sage [04/06/24 14:24.net]
学生やアマチュアはそれで良いんじゃないの

75 名前:名無しさん@Vim%Chalice [05/01/30 03:09:21 .net]
 

76 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/30 09:05:18 .net]
>>71
お前は愚かだ

77 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/01 12:4 ]
[ここ壊れてます]

78 名前:5:38 .net mailto: 車輪の再発明は勉強にはなるけど学生のうちに済ませとけ []
[ここ壊れてます]

79 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/01 17:58:32 .net]
自分らは普段なにやってるの?車輪磨き?

80 名前:名無しさん@お腹いっぱい。 mailto:sage [05/03/05 23:39:09 .net]
UNIXプログラミング環境

在庫があるところにはあるらしい
www.boople.com/servlet/AFsearch?&isc=&idn=321429&iqm=2



81 名前:名無しさん@お腹いっぱい。 mailto:sage [05/03/07 20:57:01 .net]
>>79
普通に買えるみたい。
www.junkudo.co.jp/detail2.jsp?ID=0185262822
bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9850359668
家の近所の本屋でも売ってました。

82 名前:名無しさん@お腹いっぱい。 mailto:_age [2006/01/18(水) 02:07:16 .net]
からあげ うまうま だよもん

83 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/03(月) 12:15:00 .net]
flex のyy_push_state() って、FlexLexer ではprotected なのですが
ってことは、.y 側のルールでyy_push_state() を使うのはunsupported でつか?

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/05(水) 02:03:44 .net]
初めて lex を使ってみました。なんか面白いのねん。

85 名前:「なぜ敢えて yyなの?」 mailto:sage [2006/07/10(月) 19:35:15 .net]
lex は yy.lex.c吐くわ、yyナンチャラいう変数/関数をもってるわ
なぜそこで yy? あんた lexさんでしょう?と思ってしまうのですが

yyがつくものは yaccへの引渡しを想定していますよという暗示なのん?
なんつ−か、
歴史的な経緯とかyacc/lex開発時のエピソ−ドがあるようなら教えて下しい
もしかして lex is Yet another Yacc だからとかいう話しなのかしらん?

という質問はくだ質逝ったほうが吉?

86 名前:84 mailto:sage [2006/07/11(火) 13:01:49 .net]
<< yy.lex.c
>> lex.yy.c 誤記ですた

87 名前:名無しさん@お腹いっぱい。 mailto:age [2006/07/27(木) 18:31:21 .net]
bisonでコンパイルするときに使う記号テーブルって何で必要なんだ?
誰か教えてくれorz

ぐぐっても見つかんない・・・

88 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/27(木) 18:50:10 .net]
>>84
sourceの行番号の受け渡しとか、
協調しないといけないものがあるから。
--stdoutで切り替えられるから問題ないでしょ。
yyin, yyoutとか。

>>86
えーと、'+'とか'-'とかですめばいいけど、
"if"とか"then"とかをtokenとして扱いたいから。

89 名前:名無しさん@お腹いっぱい。 [2006/07/27(木) 23:20:24 .net]
>>86
そんなレベルで bison 使うの?

90 名前:86 mailto:age [2006/07/28(金) 00:59:27 .net]
使わないといけないらしいです。
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
って感じでいいのかなぁ・・・。



91 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/28(金) 22:52:12 .net]
なんじゃそりゃ

92 名前:名無しさん@お腹いっぱい。 [2007/06/28(木) 02:50:14 .net]
yyac 使って,define に相当するようなコマンドをもつ
コンパイラ or インタプリタを作るには
どうしたらいいのでしょうか.

参考文献を教えて下さると有難いです.

それとも不可能ですか?


93 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 02:59:57 .net]
BNFで書けるなら(つまり文脈自由文法なら)yaccで記述出来るし
BNFで書けないならyaccで記述出来ない

そのdefineをBNFで書いて見る事をお奨めする

94 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 14:03:07 .net]
ああ、ひょっとして91が作りたかったのは
defineじゃなくてインタプリタの事じゃないだろうか?
もしそうならyaccでは不可能。
だって、yaccはCompiler Compilerだから。

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 15:08:19 .net]
(´・ω・`)

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/30(土) 20:15:09 .net]
>>93

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/01(日) 02:27:18 .net]
>>55

98 名前:名無しさん@お腹いっぱい。 [2007/07/01(日) 22:01:53 .net]
>>93
マクロ定義ができるコンパイラが作りたかったんじゃね?

99 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/02(月) 00:15:22 .net]
(´・ω・`)

100 名前:名無しさん@お腹いっぱい。 [2007/07/07(土) 17:12:42 .net]
関数定義ができるコンパイラを yacc で記述するにはどうしたらいいですか?








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<32KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef