[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/23 13:47 / Filesize : 226 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

「コンパイラ・スクリプトエンジン」相談室 3



1 名前:デフォルトの名無しさん [03/11/29 15:59]
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)

関連リンクは多分 >>2-8 あたり

710 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:58]
>>704
C++でならTypeList or boost::mpl使えば書けそう。
まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。


711 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:12]
ECMAScriptを解析してくれて、しかも組み込み関数・オブジェクトを定義できるライブラリが欲しい
自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ

712 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:38]
Schemeは括弧さえ折り合いつけば最高の言語の一つだ

713 名前:デフォルトの名無しさん mailto:sage [04/07/02 14:23]
>>711
クロスプラットフォームなら spidermonkey とか、
Windows だけでいいなら ActiveScript とか。
どちらでも簡単にできるよ。

714 名前:デフォルトの名無しさん mailto:sage [04/07/02 17:21]
>>709
>Win emacsの筆頭

Meadowの方が広く使われてます。

715 名前:デフォルトの名無しさん mailto:sage [04/07/02 22:36]
>>713
SpiderMonkeyはかなりよさげだね
しかし英語だらけで組み込めるのは当分先か・・w

716 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:17]
>>704
そういうプリプロセサ書いて、差し替えれば済む話だと思うけど。

全部 C/C++ でできますよ。(藁

717 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:38]
C/C++ではたしかpreprocessor commandsも規格の一部な罠。


718 名前:デフォルトの名無しさん mailto:sage [04/07/03 11:22]
プリプロセッサを差し替えるオプションなんてあるの?
Visual C++とgccを見たけど見つからなかった。




719 名前:デフォルトの名無しさん mailto:sage [04/07/03 15:40]
>>716 それじゃ「コンパイラ書けばできますよ」ってのと変わらないやん.

720 名前:デフォルトの名無しさん mailto:sage [04/07/03 22:50]
>>718
自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?

721 名前:デフォルトの名無しさん mailto:sage [04/07/04 02:06]
>>720
そりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。


722 名前:デフォルトの名無しさん mailto:sage [04/07/04 09:28]
差し換えるならspecファイルだろ。

723 名前:デフォルトの名無しさん mailto:sage [04/07/04 11:46]
>>718
GCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ?

>>719
まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。

724 名前:デフォルトの名無しさん mailto:sage [04/07/04 16:57]
結局使い物にはならないと。
普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ
チ込みで保守したくはねーなあ。


725 名前:デフォルトの名無しさん mailto:sage [04/07/04 18:28]
まあ、このスレ的にはコンパイラまで作ってしまえって事になるかな。
TinyC->.asm位だったら簡単だしね。

俺は#defineなどC言語準拠なプリプロセッサに
アセンブラ風の複数行マクロを使えるような物を作って、
言語ごとに微調整しているよ。
()を使わないバージョンなどね。

エラーを探知するために、##lineっていう
現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、
デバックもしやすくしているよ。

726 名前:デフォルトの名無しさん mailto:sage [04/07/04 21:39]
>>724
て言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。
マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。

昔使った PL/I のプリプロセサは、IF 文は当然、FOR/WHILE の制御構造や PROCEDURE/FUNCTION なんかの手続き/関数定義までできた。
だから凝った定義を書けば、ソースを短く書けたけど、プリプロセサ文をデバッグする手間を考えたら素直にソースを手で展開した方が早かったよ。(藁

MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。

727 名前:デフォルトの名無しさん mailto:sage [04/07/05 01:31]
俺はわりとしょっちゅう欲しくなる方だな。
Lispのマクロで俺言語を作ることを考えると>>726も想像はできるけど。
>>726とは逆に最初書くときはベタに展開したソースを書くけど後から
保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。
cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。


728 名前:デフォルトの名無しさん [04/07/13 22:28]
コンパイラとかの参考図書は、よくありますが
スクリプト言語の参考図書(定番)は、ごぞんじないですか?




729 名前:デフォルトの名無しさん mailto:sage [04/07/13 22:52]
各OS毎のリソースコンパイラの作り方に触れたサイトってありますか?

730 名前:デフォルトの名無しさん mailto:sage [04/07/14 00:35]
>>728
その二つに大きな違いはない。

731 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:11]
>>728
コンピュータアーキテクチャの本じゃないか?

>>730
構文解析だけじゃなくて、実行機の話してるんじゃないの?


732 名前:デフォルトの名無しさん [04/07/14 01:26]
すいませんyacc/lex初心者の質問です。
WIN XPのコンソールから
GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが
bisonとflexは通過するのですが
最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。
bison.simpleとbison.hairを見てもよくわからないので
なにがまずいのでしょうか?


733 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:39]
>実行機

ってなんじゃらほい?

734 名前:デフォルトの名無しさん mailto:sage [04/07/14 11:23]
>>728
『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。

735 名前:デフォルトの名無しさん [04/07/14 19:49]
このスレでよく出てくるyaccやlexってのはソフトウェアなの?
それともライブラリの類?
で、実際にはどのようなことをするものなの?

736 名前:デフォルトの名無しさん mailto:sage [04/07/14 20:00]
>>735
ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html

737 名前:735 [04/07/14 21:00]
つまり、字句解析や構文解析をするソフトウェアね。
コンパイラにおけるそれらの処理を外部のソフトウェアに
頼ると言うのは有りかね?

738 名前:デフォルトの名無しさん mailto:sage [04/07/14 21:02]
>>737
何を言ってるの?



739 名前:ほんたま [04/07/14 21:26]
おみゃ〜らよ、おれのスリムドカンはある意味コンパイラよ。
スリムドカンはおれのページにあるから見ちみれ?

hp.vector.co.jp/authors/VA015412/
おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。
スリムドカンに装備させるためよ。
おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ!
自分じわかるかな?


740 名前:デフォルトの名無しさん mailto:sage [04/07/15 00:53]
>>737
字句解析や構文解析をするソースコードを生成してくれるソフト
これ以上は自分で調べてくれ

741 名前:デフォルトの名無しさん mailto:sage [04/07/15 04:40]
>>735
あなた、最高に頭悪そうですよ?

742 名前:デフォルトの名無しさん [04/07/15 18:37]
昔、OL進化論っていうのがあったなぁ〜
ちょっと思い出したw


743 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:34]
インタプリタ進化論って、絶版じゃなかったっけ?
読みやすい本でいい本だと思うけど、
実行環境の話はそれほど無かったような気がします。
とはいっても、字句/構文/意味解析を作るより
実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。

744 名前:デフォルトの名無しさん mailto:sage [04/07/15 23:56]
My VMをレジスタマシンにするかスタックマシンにするか悩む

スタックマシンにすると決めた、するとbytecodeにするかwordcodeにするかまた悩む

スピードの為にwordcodeにするならそもそもレジスタマシンにするべきなのかと悩む

一向に前に進みましぇん

745 名前:ほんたま [04/07/16 00:05]
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

hp.vector.co.jp/authors/VA015412/


746 名前:デフォルトの名無しさん mailto:sage [04/07/16 01:05]
全部作れ。


747 名前:ほんたま [04/07/16 13:55]
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?

hp.vector.co.jp/authors/VA015412/


748 名前:デフォルトの名無しさん [04/07/16 22:00]
コンパイラ作るならBNF記法(拡張)についての理解は必須ですか?



749 名前:デフォルトの名無しさん mailto:sage [04/07/16 22:13]
無くても作れるよ。あった方が楽だけど。

750 名前:デフォルトの名無しさん mailto:sage [04/07/17 00:00]
context free grammerについては「理解」という程大変なことはない気がする。
# オートマトンを理解するにはちっと勉強が必要になるが、
# それこそ知らなくても何とかなりそう

なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。
# リンカとかアセンブラとかの知識は既習だとして

751 名前:デフォルトの名無しさん [04/07/17 03:09]
言語設計はともかく、コンパイラ設計となったら
フロントエンドよりバックエンドのが難しいというか
面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?


752 名前:デフォルトの名無しさん mailto:sage [04/07/17 03:43]
たぶん、そこまで行きつかない奴しかこのスレにいないから。


753 名前:デフォルトの名無しさん mailto:sage [04/07/17 09:41]
バック部のトピックス

・並列化(ループ,タスク.手続き間解析は必須)
・別名解析(フロー依存はまだ重い)
・SSA(冗長コピーをどう減らす? 別名の扱いも)
・コピー伝播(非常に重要.でも語ることは余りないか)
・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮)
・CPS(手続き型ではやらんか)
・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒)
・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた)
・命令スケジューリング(コンパイル時間爆発の主犯)
・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)

754 名前:デフォルトの名無しさん [04/07/17 18:50]
本日、佐々政孝氏の「プログラミング言語処理系」という本買いました。
コンパイラについてちゃんと学んでいこうかと思います。

755 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:02]
バック部はCにトランスレートする事で済ませちゃってるから、あんまやらないんだよな。
とはいっても、最近の仕事でそういうのをする必要もあったりして
書籍紹介とかやってもらえます?


756 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:07]
そういや 21st Century Compilers 読んだ人いる?

757 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:57]
あぁ、それね…。2005年11月15日に延びたみたい。_| ̄|○
www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
 Copyright: 2006ってなってるからもっと延びるかも…

758 名前:デフォルトの名無しさん [04/07/17 20:18]
バックエンド「も」それなりに解説している本としては龍本はもちろんのこと、appel本や中田本がありますね。
龍本がバックエンド概要集だとすれば、
appel本が実践本、中田本が理論本といった感じでしょうか?

バックエンドオンリーな変り種としては
Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X)
ってのがあります。こいつは本当にバックエンドしか書いていません。




759 名前:デフォルトの名無しさん [04/07/17 20:21]
いまだに龍本なの?
進歩ないね。

760 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:54]
何でそんなに詳しいのに新たな言語を作ろうとしないの?

761 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:57]
>>760
何でそんな労力割かなきゃならぬ?

762 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:05]
>>757
がぁん。評判よければ夏休みにでも読もうと思ってたんだが。

763 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:17]
目を通すだけで満足だから何も作らんのだろうな

764 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:21]
バックエンドまで作りこんだ言語を書いても、それで食ってける人はごく少数だし。
理屈を理解して普段のプログラミングに生かせれば、それで良いかと。

765 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:36]
>>761
本当はコンパイラの原理とかよく分かって無いんだよな?

766 名前:デフォルトの名無しさん mailto:sage [04/07/17 22:08]
原理を理解→新しい言語、でもあるまいに

767 名前:デフォルトの名無しさん mailto:sage [04/07/17 23:31]
>>760
一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ
趣味の人は確かに新しい言語って事になるんだろうけどね。

768 名前:デフォルトの名無しさん mailto:sage [04/07/18 00:44]
言語ビジネスは死々累々とはMatz氏の言



769 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:01]
>>768
つまり「俺ってば勝ち組w」と主張されたのですね?

770 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:11]
>>764
その反対でバックエンドがほとんどのお仕事もあるよ、
特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。


771 名前:デフォルトの名無しさん [04/07/18 13:04]
割込みすいません、bisonの-v出力で得られる

State番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?
同様に、 Rule番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?

bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。


772 名前:デフォルトの名無しさん mailto:sage [04/07/18 14:25]
>>771
行番号との関連?
別に行番号とは関連しないんじゃない?

773 名前:771 [04/07/18 17:10]
どうも、Conflict が発生するようで、いろいろと原因を探ってるんですが、
「State何番が何番とconflictした。」とか出て来るんですが、
具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。



774 名前:デフォルトの名無しさん [04/07/20 17:56]
構文解析器を作るのに正規表現が必要になりますけど、
正規表現の構文解析ってどうすりゃいいんでしょうか?
ものすごく再帰してるんですけど?

775 名前:デフォルトの名無しさん mailto:sage [04/07/20 17:57]
再帰っつーか永久ループですね。

776 名前:デフォルトの名無しさん mailto:sage [04/07/20 18:22]
>>774
>構文解析器を作るのに正規表現が必要になりますけど、
無くてもできます

777 名前:デフォルトの名無しさん mailto:sage [04/07/21 00:38]
>>774
有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。



778 名前:デフォルトの名無しさん [04/07/29 19:55]

FLEXについて調べているんですが、よくわからないので質問させてください。
UNIXで書かれた字句解析ソース(moto.l)をWindows上で使いたいのですが、
これってWin用のFLEXを使用してmoto.lから、moto.cを作成して
それをVisualStudio.Netなんかで、ビルドすればいいんでしょうか?

Win用FLEXで吐き出されたmoto.cをビルドしてもエラー出まくりなもので・・・・
なにかうまい方法などあるんですか?

(なぜか元の字句解析ソース(moto.l)も一緒にビルドしてしまいエラーになりま
す。。。)

わかる方がいらっしゃいましたら、
ご教授お願いします。




779 名前:デフォルトの名無しさん mailto:sage [04/07/29 20:01]
>>778
なんのエラーが出てます?

780 名前:デフォルトの名無しさん mailto:sage [04/07/29 22:05]
なんとなく改行コードの問題?

781 名前:>>778です [04/07/30 11:15]
>>779 >>780 
レスありがとうございます

改行コードは、LFからCR+LF 文字コードEUCからSJIS
に変更をかけ、「bison & flex compiler for Windows GUI」を使って
コンパイルをかけ、できたCソースを.NET2003でビルドかけました。

一応、エラーは
「Zsscanf:1番目の引数を'unsigned char*'から'const char*'に変換できません」
というのが、大量にでました。
(これは、Zsscanf関数を大量に使用しているんででています。)

また、warningとして
「C4244 '=' _W64 int から intに変換しましたデータが失われているかもしれません」
というのが、たいりょうに出ています。

もしよかったら、ソースをお送りしますが・・・
よろしくお願いします。

782 名前:デフォルトの名無しさん mailto:sage [04/07/30 11:54]
>>781
そういう場合は、ここに貼り付けて
do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html


783 名前:> [04/07/30 12:32]
>>782さん
こちらにCソースファイルを貼り付けました。
よくわからなかったので、まちがってスレを立ててしまいましたorz

do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50

すみませんが、よろしくお願いします。
これでだめでしたら、FLEXソースも貼り付けますので・・・

784 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:00]
>>783
あぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。
#なんとなく見えてますが、上手く行くかどうかは不明。

785 名前:> [04/07/30 13:09]
>>784さん

元のFLEXソースを
do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50
においておきます

786 名前:784じゃないけど mailto:sage [04/07/30 13:35]
yytext は YY_CHAR* 型で,これは unsigned char * の typedef になっている.
Zsscanf は Zsscanf(const char*, ...) と定義されている.
Zsscanf(yytext, ....) というように呼び出しをしたい.

ということで
1. Zsscanf の第1引数の型を unsigned char * にするか
2. Zsscanf の呼び出し時に毎回キャストするか
のどっちかで対処できるんじゃないかと思う.


787 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:55]
3. コンパイラのcharをunsignedにするオプションを指定する

788 名前:ありがとうございます!! [04/07/30 14:18]
みなさん ありがとうございます。

とりあえず>>786さんの
「1. Zsscanf の第1引数の型を unsigned char * にするか」で
対応し、エラーを回避させました。

それともう一つ基本的な質問ですが、
この作成されたCソースファイルは、
どのように動作させればいいのでしょうか?
ライブラリとして動作させる場合、
どの関数をよべばよろしいのでしょうか?
(main関数を作成し、それから呼ぶのもどうすればいいのでしょうか?)

すみませんが、ご教授お願いします。




789 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:23]
>>785
とりあえず、こちらはCygwinのflexしかないので、それでのやり方を説明しておきます。
まず、この部分
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
char skipflag;
va_start(ap, fmt) の後に char skipflag がありますが、これはC言語の構文として許されません。
以下のように書きます。
char skipflag;
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
コンパイル方法
www.cygwin.com/
より "Install or update now!" をクリックして実行してください。
あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。
flexの入っているフォルダーにパスを通したら、
flex flex_test.l
cl flex_test.c
以上です、
あと、_yywrap _yylex はちゃんと定義して置いてください。
出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。


790 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:35]
>>788
yylexを呼び出します。
そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。
入出力の特化は結構ややこしいので・・・


791 名前:>>778です [04/07/30 14:53]
みなさん いろいろ教えてくださってありがとうございます。。。

>>790さん 
yylex()を呼び出すというのまでは、調べたのですが
これを呼び出すとDOS窓で入力待ちなのかどうかは、わかりませんが
止まったままになってしまします。
いろんなサンプルを見てみたら
単に
return yylex();
としているだけなのが、あったので
このように書いていたのですが・・・・
こういう呼び出し方ではいけないのでしょうか?

何度も何度もすみませんが、
ご教授お願いします。

792 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:59]
>>791
一番簡単な方法は
yyin = fopen( ... ) ;
として
yylex()
を呼び出します。


793 名前:>>778です [04/07/30 15:18]
>>792さん

ファイルからの読み込みではなく
指定された文字列を受け取って
それを変換かけてから、変換後の文字列を
返すというようなプログラムを組みたいのです。

yytextに指定文字列を入れてから
yylex()を呼び出せばよろしいのでしょうか?
(どこかのサンプルでこのような形のものがあったのですが・・・)

794 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:22]
>>793
ちがいまーす!!(^^;
実は貴方のやりたい事は、書き始めると結構ヘビーです。
素直にflexの本を買ったほうが良いかと・・・・
どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?


795 名前:> [04/07/30 15:32]
>>794 さん
では、入力したい文字列を
一度ファイルに落としてから
再度、yyin = fopen( ... ) ;
で読み込むという方法だと
まずいでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:36]
>>795
それで問題がなければ、それでも良いかと・・・・

797 名前:>>778です [04/07/30 16:27]
今のサンプルFLEXプログラムは「H16/7/16」を「平成16年7月16日」に
変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから
yyin = fopen( ... ) ;
として
yylex()
を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと
文字化けが出てしまい、途中で終了してしまいます。
これって何が原因があるのでしょうか?

798 名前:デフォルトの名無しさん mailto:sage [04/07/30 17:17]
cygwin でやるんだったら、ソースファイルとテスト用入力ファイルは EUC にしておく。lex(flex) はマルチバイト文字をマルチバイト文字として扱わないからDIGIT [0123456789]
の書き方だとダメ。
DIGIT (0|1|2|3|4|5|6|7|8|9)
だと動くみたい。




799 名前:デフォルトの名無しさん [04/07/31 00:18]
すいませんが、bison.output の見方を解説しているページとか
ご存知ありませんか?


800 名前:デフォルトの名無しさん mailto:sage [04/07/31 01:14]
>>799
見方を理解しようとしないで、LR解析をある程度理解した方
が良いと思うよ。
そうするとbison.outputの意味が分かるようになる。

801 名前:799 [04/07/31 22:52]
LR解析を理解するための、書籍とかありますか?


802 名前:デフォルトの名無しさん mailto:sage [04/07/31 22:54]
はじめてのLR

803 名前:デフォルトの名無しさん [04/07/31 22:54]
1つの先読みだけしか許されないというのは、かなり不自由かも。
LR(1)を完璧に実装した yacc もどきってご存知ないですか?


804 名前:800 mailto:sage [04/08/01 00:44]
800ゴット

>>799=801
コンパイラ系の書籍ならば、大抵構文解析の説明はあるでしょ。
手元の本だと『ドラゴンブック』と『コンパイラの理論と実現』と
『コンパイラ(昭昇堂)』にLR解析の話が書いてある。

>>803
知らないけど、あまり不自由を感じたこと無いな>先読み1
たいしたもの作ってないからかな。

805 名前:デフォルトの名無しさん mailto:sage [04/08/01 01:08]
Catalog of Free Compilers and Interpreters.
www.idiom.com/free-compilers/

806 名前:デフォルトの名無しさん mailto:sage [04/08/01 02:53]
>>803
LLだけとboost::splitを使ってみるとか。
boost.cppll.jp/HEAD/libs/spirit/index.html

でも、文法を変えたほうがいいかもね
LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。


807 名前:デフォルトの名無しさん mailto:sage [04/08/01 03:41]
LR
LL
LALR
ってなんの略?
(1)
ってのは1つ先見るってことでよい?

808 名前:デフォルトの名無しさん mailto:sage [04/08/01 04:04]
manの番号



809 名前:デフォルトの名無しさん mailto:sage [04/08/01 06:21]
>>807
Lonely Rotary
Lonely Lolita
Lolita and Lonely Rotary

810 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:50]
>>807
LR:左から読んで右から導出
LL:左から読んで左から導出
LALR:ルックアヘッド付きLR







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

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

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