yaccとは、"yet another compiler-compiler"(さらにもう一つのコンパイラ-コンパイラ)という意味で、
yaccの開発者である、スティーヴ・ジョンソン氏が当時(1972年頃)に存在していた同種のプログラムの多さを
皮肉った言葉に由来している。yaccはその中で生き残ったごく少数のうちの一つである。
lexはyaccがパーサーを作成するのと同様の方法で字句解析ルーチンを作る。即ち、自分の言語の字句規則の
仕様を正規表現と、その正規表現に一致する文字列が見つかった時に、実行すべきCプログラムにより記述すればよい。
lexとyaccは、我々が既に書いてきた字句解析ルーチンと同一のメカニズムで、共同して働く。
yacc & lex
■ このスレッドは過去ログ倉庫に格納されています
1SystemX
NGNG59名無しさん@お腹いっぱい。
NGNG yacc -d とか bison -y が通らないものは
"byacc"つかうとたいてい通る。
しかしナニをするものなのかとかは
全くシラン。
"byacc"つかうとたいてい通る。
しかしナニをするものなのかとかは
全くシラン。
60あぼーん
NGNGあぼーん
61名無しさん@お腹いっぱい。
NGNGNGNG
63名無しさん@お腹いっぱい。
NGNG64あぼーん
NGNGあぼーん
65あぼーん
NGNGあぼーん
NGNG
設定ファイルの書式もなんだかんだでXMLになりつつあるしなあ。
NGNG
>>63
正規表現ライブラリの代わりとか
正規表現ライブラリの代わりとか
NGNG
補修
69名無しさん@お腹いっぱい。
NGNG raccのこととかも語ってちょ。
70名無しさん@お腹いっぱい。
NGNG アドベンチャーゲームなど用にスクリプトプログラムを作成したいのですが、
そのような目的にyaccやlexって向いていますか?
yaccやlexについて調べようとおもったのですが、見つけることができませんでした。
開発環境はWindowsですので、bisonとflexというのを入れてみました。
そのような目的にyaccやlexって向いていますか?
yaccやlexについて調べようとおもったのですが、見つけることができませんでした。
開発環境はWindowsですので、bisonとflexというのを入れてみました。
NGNG
>>70
スクリプトプログラムを作成するインタプリタプログラムを作るには
むいてるかもしれない。日本語周りは要注意ね。
Unix板的には
「既存のものを使え」
「既存のもので満足できなければ改造しろ」
と思う。車輪の再発明はもっとも愚かだ
スクリプトプログラムを作成するインタプリタプログラムを作るには
むいてるかもしれない。日本語周りは要注意ね。
Unix板的には
「既存のものを使え」
「既存のもので満足できなければ改造しろ」
と思う。車輪の再発明はもっとも愚かだ
72名無しさん@お腹いっぱい。
NGNG Lexで標準入力以外(例えば文字列)を取得したい場合、下記のような定義をすると思うんですが、
#undef YY_INPUT
#define YY_INPUT(buf, result, max_size) (result = my_yyinput(buf, max_size))
この場合、my_yyinput()はどういうタイミングで呼ばれるのでしょうか?
また、bufの値はどこで設定すればよいのでしょうか?
#undef YY_INPUT
#define YY_INPUT(buf, result, max_size) (result = my_yyinput(buf, max_size))
この場合、my_yyinput()はどういうタイミングで呼ばれるのでしょうか?
また、bufの値はどこで設定すればよいのでしょうか?
NGNG
>>71
私は車輪を再発明して理解しろ。という方が好きです
私は車輪を再発明して理解しろ。という方が好きです
NGNG
学生やアマチュアはそれで良いんじゃないの
75名無しさん@Vim%Chalice
05/01/30 03:09:2105/01/30 09:05:18
>>71
お前は愚かだ
お前は愚かだ
05/02/01 12:45:38
車輪の再発明は勉強にはなるけど学生のうちに済ませとけ
05/02/01 17:58:32
自分らは普段なにやってるの?車輪磨き?
05/03/05 23:39:09
UNIXプログラミング環境
在庫があるところにはあるらしい
www.boople.com/servlet/AFsearch?&isc=&idn=321429&iqm=2
在庫があるところにはあるらしい
www.boople.com/servlet/AFsearch?&isc=&idn=321429&iqm=2
05/03/07 20:57:01
2006/01/18(水) 02:07:16
からあげ うまうま だよもん
2006/04/03(月) 12:15:00
flex のyy_push_state() って、FlexLexer ではprotected なのですが
ってことは、.y 側のルールでyy_push_state() を使うのはunsupported でつか?
ってことは、.y 側のルールでyy_push_state() を使うのはunsupported でつか?
2006/07/05(水) 02:03:44
初めて lex を使ってみました。なんか面白いのねん。
2006/07/10(月) 19:35:15
lex は yy.lex.c吐くわ、yyナンチャラいう変数/関数をもってるわ
なぜそこで yy? あんた lexさんでしょう?と思ってしまうのですが
yyがつくものは yaccへの引渡しを想定していますよという暗示なのん?
なんつ−か、
歴史的な経緯とかyacc/lex開発時のエピソ−ドがあるようなら教えて下しい
もしかして lex is Yet another Yacc だからとかいう話しなのかしらん?
という質問はくだ質逝ったほうが吉?
なぜそこで yy? あんた lexさんでしょう?と思ってしまうのですが
yyがつくものは yaccへの引渡しを想定していますよという暗示なのん?
なんつ−か、
歴史的な経緯とかyacc/lex開発時のエピソ−ドがあるようなら教えて下しい
もしかして lex is Yet another Yacc だからとかいう話しなのかしらん?
という質問はくだ質逝ったほうが吉?
8584
2006/07/11(火) 13:01:49 << yy.lex.c
>> lex.yy.c 誤記ですた
>> lex.yy.c 誤記ですた
2006/07/27(木) 18:31:21
bisonでコンパイルするときに使う記号テーブルって何で必要なんだ?
誰か教えてくれorz
ぐぐっても見つかんない・・・
誰か教えてくれorz
ぐぐっても見つかんない・・・
2006/07/27(木) 18:50:10
88名無しさん@お腹いっぱい。
2006/07/27(木) 23:20:24 >>86
そんなレベルで bison 使うの?
そんなレベルで bison 使うの?
8986
2006/07/28(金) 00:59:27 使わないといけないらしいです。
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
って感じでいいのかなぁ・・・。
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
って感じでいいのかなぁ・・・。
2006/07/28(金) 22:52:12
なんじゃそりゃ
91名無しさん@お腹いっぱい。
2007/06/28(木) 02:50:14 yyac 使って,define に相当するようなコマンドをもつ
コンパイラ or インタプリタを作るには
どうしたらいいのでしょうか.
参考文献を教えて下さると有難いです.
それとも不可能ですか?
コンパイラ or インタプリタを作るには
どうしたらいいのでしょうか.
参考文献を教えて下さると有難いです.
それとも不可能ですか?
2007/06/28(木) 02:59:57
BNFで書けるなら(つまり文脈自由文法なら)yaccで記述出来るし
BNFで書けないならyaccで記述出来ない
そのdefineをBNFで書いて見る事をお奨めする
BNFで書けないならyaccで記述出来ない
そのdefineをBNFで書いて見る事をお奨めする
2007/06/30(土) 14:03:07
ああ、ひょっとして91が作りたかったのは
defineじゃなくてインタプリタの事じゃないだろうか?
もしそうならyaccでは不可能。
だって、yaccはCompiler Compilerだから。
defineじゃなくてインタプリタの事じゃないだろうか?
もしそうならyaccでは不可能。
だって、yaccはCompiler Compilerだから。
2007/06/30(土) 15:08:19
(´・ω・`)
2007/06/30(土) 20:15:09
2007/07/01(日) 02:27:18
97名無しさん@お腹いっぱい。
2007/07/01(日) 22:01:53 >>93
マクロ定義ができるコンパイラが作りたかったんじゃね?
マクロ定義ができるコンパイラが作りたかったんじゃね?
2007/07/02(月) 00:15:22
(´・ω・`)
99名無しさん@お腹いっぱい。
2007/07/07(土) 17:12:42 関数定義ができるコンパイラを yacc で記述するにはどうしたらいいですか?
2007/07/08(日) 10:09:07
100ゲト!
普通が一番だよ
普通が一番だよ
2007/07/19(木) 15:40:27
rAwIsK name is Kostya.My nick is Zold . I want to find friends .ICQ 324600825
2007/07/26(木) 17:55:32
antlr
2008/08/30(土) 23:01:26
BS1にチョムスキー出てた
104名無しさん@お腹いっぱい。
2008/10/30(木) 23:58:54 c言語でコメント/*から*/を字句解析できないようにさせるには、
規則部にどういう正規表現をすればいいですか?
/*
・・・・・・
*/
となっています。
規則部にどういう正規表現をすればいいですか?
/*
・・・・・・
*/
となっています。
2008/10/31(金) 00:52:06
lex?
flexのFAQに、
How can I match C-style comments?
ってのがあるよ。
flexのFAQに、
How can I match C-style comments?
ってのがあるよ。
2008/10/31(金) 12:09:51
flex だったらそれでいいね。
一般的には、
非欲張り型量指定子 *? が使えるなら /\*.*?\*/ でおk
使えない場合は少々厄介で、
/\*([^*]|\*+[^/*])*\*+/
詳説正規表現の第二版だと 6.6.8.3 にある。
一般的には、
非欲張り型量指定子 *? が使えるなら /\*.*?\*/ でおk
使えない場合は少々厄介で、
/\*([^*]|\*+[^/*])*\*+/
詳説正規表現の第二版だと 6.6.8.3 にある。
107名無しさん@お腹いっぱい。
2008/11/01(土) 00:04:56108名無しさん@お腹いっぱい。
2008/11/01(土) 00:35:06109名無しさん@お腹いっぱい。
2008/11/01(土) 01:56:53 ファイルからプログラムを読み込ませてそのプログラムに出てくる演算子とか
識別子の数を一番下に表示させるようにするにはどうしたらいいですか?
識別子の数を一番下に表示させるようにするにはどうしたらいいですか?
2008/11/01(土) 09:43:16
パーズしろ。
2008/11/01(土) 16:25:17
C言語のコメントってプリプロセッサが空白に置換するものだよ。
2008/11/02(日) 11:08:35
サーバの役割のひとつに
クライアントからの電文をプロトコルにしたがって解析して、処理し、返答を
返すという役割があるかと思います。
パーサジェネレータをつかって、簡単に上記のような枠組みを
実装するようなことはできないでしょうか。
インタプリタをパーサジェネレータを使って実装するような流れはあるのに、
drubyやerlang、アクターモデルなどの実装方法とパーサジェネレータが
なぜか結び付けられていないのが不思議に思われます。
クライアントからの電文をプロトコルにしたがって解析して、処理し、返答を
返すという役割があるかと思います。
パーサジェネレータをつかって、簡単に上記のような枠組みを
実装するようなことはできないでしょうか。
インタプリタをパーサジェネレータを使って実装するような流れはあるのに、
drubyやerlang、アクターモデルなどの実装方法とパーサジェネレータが
なぜか結び付けられていないのが不思議に思われます。
113名無しさん@お腹いっぱい。
2008/11/02(日) 11:42:33 >>112
思いて学ばざれば則ち殆うし。
思いて学ばざれば則ち殆うし。
2008/11/02(日) 12:25:37
2008/11/02(日) 12:39:46
パーサジェネレータだけ知ってて状態機械知らないの?
2008/11/02(日) 17:01:54
>>114
CORBAキター
CORBAキター
2008/11/02(日) 20:36:42
本格的な構文解析が必要な通信プロトコルを設計するのがそもそも間違いですから
118名無しさん@お腹いっぱい。
2008/11/05(水) 21:20:532008/11/06(木) 17:46:14
学生か
図書館にyaccの解説本の1冊ぐらいあるだろ
図書館にyaccの解説本の1冊ぐらいあるだろ
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 これから普及していくのか)を考えよう。
昔 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 これから普及していくのか)を考えよう。
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はさっぱりだ
Undefined symbols:
"_yylex", referenced from:
_yyparse in ccMGRLwg.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
エラーが取れない…
lexはなんとかいけたのにyaccはさっぱりだ
2009/08/05(水) 17:03:07
_yylexがない、っていうんだから、yylex()を定義すればいいんじゃないの?
2009/08/05(水) 17:27:41
なんとか121はこえたのでパースエラーと戦ってくる
>>122ありがとう
>>122ありがとう
2010/11/11(木) 15:15:36
Cのラベルみたいなもの
任意の文字列 最後に特殊文字(:とか)
はlex側でなくてyacc側で認識させるものなの?
任意の文字列 最後に特殊文字(:とか)
はlex側でなくてyacc側で認識させるものなの?
2010/11/11(木) 15:20:20
labelname ':'
とyaccで扱うのが普通じゃないか?
とyaccで扱うのが普通じゃないか?
2010/11/11(木) 17:01:03
ケースバイケースだと思うけど。
C 言語の場合、
a ? b : c;
の一部という場合があるので、<識別子> ":" を、lex で無条件に <ラベル> にするわけにはいかない。
C 言語の場合、
a ? b : c;
の一部という場合があるので、<識別子> ":" を、lex で無条件に <ラベル> にするわけにはいかない。
2010/11/17(水) 11:36:58
>>91
>>93
いやyacc, lexを使ってインタープリターは作れる。
GUIのテストをするための、カーソル移動、マウスクリックの
シミュレートをするプログラムを作ったことがあり、
インタラクティブに画面上の移動、パスの記録などを
できるようにしたことがある。
マニュアルをよく読めば見当がつくはず。yylexだっけ、インプットストリームの
切り替え部分に気をつければずっと読み込みをしながら、
一行コマンドラインの処理をしつつ、エラーの処理もyaccで行なって
インタープリターはつくれますよ。
(あ、一行でコマンドが終わるとするとかなり楽になる。
セミコロンみたいな シンボルが来るまで終わらないというのはちょっと
うれしくない。一行でコマンドが終わって、どうしても必要なら行末の
バックスラッシュで継続行とかするのがよい。)
インタープリターで対話的に作ったスクリプトを、再度編集しなおして
標準入力から放り込めば、GUIプログラムのパッケージの
テストができるというものでした。
>>93
いやyacc, lexを使ってインタープリターは作れる。
GUIのテストをするための、カーソル移動、マウスクリックの
シミュレートをするプログラムを作ったことがあり、
インタラクティブに画面上の移動、パスの記録などを
できるようにしたことがある。
マニュアルをよく読めば見当がつくはず。yylexだっけ、インプットストリームの
切り替え部分に気をつければずっと読み込みをしながら、
一行コマンドラインの処理をしつつ、エラーの処理もyaccで行なって
インタープリターはつくれますよ。
(あ、一行でコマンドが終わるとするとかなり楽になる。
セミコロンみたいな シンボルが来るまで終わらないというのはちょっと
うれしくない。一行でコマンドが終わって、どうしても必要なら行末の
バックスラッシュで継続行とかするのがよい。)
インタープリターで対話的に作ったスクリプトを、再度編集しなおして
標準入力から放り込めば、GUIプログラムのパッケージの
テストができるというものでした。
2010/11/30(火) 15:31:10
BNFCもいいな
2010/12/10(金) 10:56:06
命令文2つを1つに変換したい
statmnt1 argX argY
statmnt2 argY
を
statmntA argX argY
にしたい。
argYが一致しない場合は
statmnt1 → statmntA2
statmnt2 → statmntB
にしたい。しかしうまい書き方が思いつかない
statmnt1 argX argY
statmnt2 argY
を
statmntA argX argY
にしたい。
argYが一致しない場合は
statmnt1 → statmntA2
statmnt2 → statmntB
にしたい。しかしうまい書き方が思いつかない
スレの趣旨がわからん
131名無しさん@お腹いっぱい。
2013/06/01(土) 16:18:40.79 質問です。
http://www.w3.org/TR/CSS21/grammar.html
このページでYACCの文法が載ってますが、拡張されているのでそのまま
使えません。この中で、
expr
: term [ operator? term ]*
はどうやってYACC文法で書けばいいでしょうか?
http://www.w3.org/TR/CSS21/grammar.html
このページでYACCの文法が載ってますが、拡張されているのでそのまま
使えません。この中で、
expr
: term [ operator? term ]*
はどうやってYACC文法で書けばいいでしょうか?
2013/06/01(土) 19:22:48.72
一般にA*は、
X =
X = A | X
A?は、
X =
X = A
と定義したXで置き換えられる。
X =
X = A | X
A?は、
X =
X = A
と定義したXで置き換えられる。
2013/06/01(土) 22:32:34.47
その後>>132のいうように分割して定義する事がわかったので、そうして
定義していますが、複雑になるとかなり分割数が増えるので面倒ですね…
定義していますが、複雑になるとかなり分割数が増えるので面倒ですね…
2013/06/02(日) 09:21:11.71
めんどうだから拡張されてるんじゃないの。
2013/06/02(日) 14:59:49.67
http://www.w3.org/TR/CSS21/grammar.html
このYACC文法がそのまま入力出来るツールがあってほしいね。
このYACC文法がそのまま入力出来るツールがあってほしいね。
2013/06/03(月) 01:08:35.25
文法は違うけど、
parsec辺りは拡張BNFがOKで、
自然な記述でアクションも定義できる。
parsec辺りは拡張BNFがOKで、
自然な記述でアクションも定義できる。
2013/06/04(火) 19:07:57.43
2013/06/05(水) 21:48:31.36
コンパイラコンパイラのコンパイラコンパイラになるのか?
2016/01/20(水) 01:28:56.56
Yet Another Compiler Compiler Compiler
140名無しさん@お腹いっぱい。
2017/03/19(日) 19:56:12.87 コンパイラコンパイラのように、OSの仕様を記述すればそれでOSがたちまち
できてくるというようなツールはあるの?
できてくるというようなツールはあるの?
141名無しさん@お腹いっぱい。
2017/12/29(金) 09:42:38.56 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
QU1SBJJIM5
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
QU1SBJJIM5
142名無しさん@お腹いっぱい。
2018/05/22(火) 04:23:17.03 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
74Q1F
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
74Q1F
143名無しさん@お腹いっぱい。
2018/09/27(木) 19:17:33.25 lex&yacc
flex&bison
flex&bison
2019/07/05(金) 02:46:41.67
yacc&lexでXMLパーサを作る過程などが公開されている記事ご存知ないでしょうか。
英語でも構いません。
英語でも構いません。
2023/11/20(月) 10:17:25.84
おはよ、起きた? 寝坊しちゃ、駄目だよ。お兄ちゃん
146名無しさん@お腹いっぱい。
2024/03/27(水) 20:10:40.87 メニューないから一度登録した怒りで
あんなにウェッティなのに10分の1くらいだな、何時からやるとか言えないということができたみたいな成績でも国会議員が詐欺なんて
未来永劫リモートが同じだ
あんなにウェッティなのに10分の1くらいだな、何時からやるとか言えないということができたみたいな成績でも国会議員が詐欺なんて
未来永劫リモートが同じだ
147名無しさん@お腹いっぱい。
2024/03/27(水) 20:13:24.97 あったよね
対して変わらんと思うんだが、政治不能なる程の混乱させるわけにいかないだろ
対して変わらんと思うんだが、政治不能なる程の混乱させるわけにいかないだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【フジ】中居正広氏の代理人弁護士が第三者委員会報告に反論「性暴力の実態は確認できず」★19 [Ailuropoda melanoleuca★]
- 【文春】《明日の記事予告》AKB元センター 熱愛スクープ! [冬月記者★]
- 【米高騰】コメ価格「高いとは思ってない」 JA全中会長★4 [シャチ★]
- イオンが米カリフォルニア産「カルローズ米」販売へ!4キロあたり2680円 6月上旬から ★4 [おっさん友の会★]
- 元フジ・中井美穂アナ 不妊治療断念 夫・古田敦也の子を残せず 「役割を果たしてないなという申し訳なさ、引け目は今でも」 [冬月記者★]
- 【芸能】嵐のラストツアーに「政府も協力すべき」 元衆院議員が持論「日本の興行史に残る話。警察とかね、何らかの支援を」 [冬月記者★]
- 【画像】デフレ時代の日本、とんでもないwwwwwwwwwwwwwww [551743856]
- 【朗報】 「機動戦士Gundam GQuuuuuuX(ジークアクス)」、ガチのマジでシコらせにくる バスク、ゲーツ・キャパもキタ━━(゚∀゚)━━━!! [303493227]
- 【訃報】ガンダムジークアスク、バスク・オムとゲーツキャパとサイコガンダムが出てきてZガンダムになるwwwwwwwwww [579392623]
- ▶フブミオに精子搾り取られたくてたまらない人達のスレ
- MissAV←こいつ無敵すぎね?いまだにサイト消されずに存続してる
- (ง ´ん`)วエッホエッホ 安倍晋三はまだ生きてるって伝えなきゃ エッホエッホ [904880432]