「コンパイラ・スクリプトエンジン」相談室16 (649レス)
1-

137: 117 2014/12/09(火)21:44 ID:KYZ3f1RL(2/3) AAS
void tasuhiku():
{}
{
kakewaru() //608行目
((<TASU>|<HIKU>)kakewaru2())*
}

void kakewaru():
{}
{
minus()
((<KAKERU>|<WARU>)sikikakko())*
}

void kakewaru2():
{}
{
sikikakko()
((<KAKERU>|<WARU>)sikikakko())*
}
138: 117 2014/12/09(火)21:45 ID:KYZ3f1RL(3/3) AAS
void minus():
{}
{
[<HIKU>]sikikakko()
}

void sikikakko():
{}
{
("(" tasuhiku() ")"
|atai())
}

void atai():
{}
{
<SUUZI>
}
139
(1): 2014/12/10(水)06:22 ID:ICK0nNNi(1) AAS
荒らされてるなぁ・・・
140
(1): 2014/12/10(水)14:14 ID:lFxVBhH5(1/5) AAS
>>136
文法作るのはものすごく難しいんだよ。
同じ文書を受理する複数の文法が存在し、複数の間で優劣がある。
しかも、優劣を機械的に評価することが難しい。

「こいつを使えば簡単にできる」というようなソフトウェア紹介を見かけると
思うけど、そんな魔法の杖みたいなソフトは無いから。
そういうこと言ってる人は、付属してきたサンプルを動かして簡単といってるだけ。
信じちゃだめだ。

構文解析器の生成系を自分で作れるようにならないと文法を作れないと思っていい。
少なくともその程度の理解は必要。

まずドラゴンブックを買ったらどうかと思うんだが。
141
(1): 2014/12/10(水)14:18 ID:lFxVBhH5(2/5) AAS
まずドラゴンブックを買う。
実際に作ってみる。

この作ったものは実用にはならないよ。
テーブルが大きすぎるからね。

それでも作ることが重要。

その後に、市中に出回る生成系を使ってみたらどうだろう。
俺はこの順番が良いと思うよ。

中身の動作を知らないと使えないって、ツールとしては下等だけど、
今はまだその程度の世界なんだよ。
142
(1): 117 2014/12/10(水)16:50 ID:pQyEQrGQ(1/3) AAS
>>139
私のことだったら荒らそうと言うつもりは全くありません。
でも荒らしに見えてしまっていたならすいません。

>>140-141
ドラゴンブックってこれのことですかね?
外部リンク:www.amazon.co.jp
(私にとって)安くないですし今そこから勉強している余裕はないので・・・。
すいません。

よそでパーサジェネレータ使った方がいいとか言われて、
Javaが好きなどの理由でJavaCCを使うようになりました。
なんにせよ周りに作ったことある人とかいないので、
外部リンク[html]:www.sbcr.jp
とか
外部リンク:item.rakuten.co.jp
とか片手に独学でやってます。
143
(2): 2014/12/10(水)17:17 ID:lFxVBhH5(3/5) AAS
>>142
そこが勘違いなんだよ。

JavaCCを使うにはJavaCCを作れる程度の知識が必要。
だからドラゴンブックが必須。
ドラゴンブックは決して読みやすい書籍ではないよ。
どうとでもとれる表現がいくつもある。
読み解きながら理解する必要があるので、結局生成系を自分で一つ書き上げる必要がある。

「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は
実はJavaCCを使っていないんだよ。
そこに騙されてはいけない。
文法を作るには深い理解が必要なんだよ。
簡単にできる方法はない。
144
(1): 2014/12/10(水)18:27 ID:eXNtCHKb(1/2) AAS
誰か別の人にやってもらえばいいんだよ。クラウドソーシングとかあるじゃん。
145
(1): 2014/12/10(水)21:11 ID:Lctd7lUm(1/2) AAS
荒らされてるんじゃなくて話題がなさすぎるから一人が専有してるように見えるだけだろ?
146
(1): 117 2014/12/10(水)21:46 ID:pQyEQrGQ(2/3) AAS
>>143
>「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は

そこまで言われたことはないです。
一番最初は文字列を自分で解析するところからやろうとしてましたけど、
パーサジェネレータを知ってからわたしにとってはそっちの方が楽だと感じています。
ここで質問したこと以外でも詰まったりもしましたけども、
もし構文解析ツールを1から作っていたらきっとここまでたどり着くまでにもっと詰まっていると思います。

>>144
すいません。
実はこれ卒業研究なので・・・。
自分で作ってみたい→卒研のテーマに悪くないよね?
な感じで決めてしまったテーマです。

>>145
連投とかしすぎましたかね・・・;
147
(1): 2014/12/10(水)21:57 ID:dcz7kjCK(1) AAS
指導教授に聞けば。
148
(1): 2014/12/10(水)22:28 ID:ZSLSh1LL(1) AAS
www

卒研なら自分で考えいw
149
(1): 2014/12/10(水)22:32 ID:eXNtCHKb(2/2) AAS
>>146
まさか卒業研究の本体がなんの新規性もない構文解析なわけじゃないだろう。
それが本質的な部分じゃなければ人に手伝ってもらうのもありだよ。

もし、構文解析そのものが君の卒業研究なら……
楽してでっち上げるという考えは即座に捨てて、143のいうようにちゃんと勉強して理解しな。
150
(1): 2014/12/10(水)22:55 ID:Lctd7lUm(2/2) AAS
卒研かよ
フォローして損した
151: 117 2014/12/10(水)23:23 ID:pQyEQrGQ(3/3) AAS
>>147
Javaの研究室ではありますけど、先生は構文解析などの経験はないそうなので・・・。
ゼミのときに負の数と引き算の問題も一応聞いてみたんですけど、
残念ながら大したアドバイスをもらえませんでした。

ちなみに、研究室ではネットワーク関連のことやってる人が多いです。
152
(1): 2014/12/10(水)23:27 ID:bWIayA6r(1) AAS
うーん、その卒業研究、どこか新規性あるの?
153
(2): 2014/12/10(水)23:46 ID:lFxVBhH5(4/5) AAS
文法を作ることの難しさを理解できていないんだよ。
嘘ではなく、本当に難しい。

実用性は無くとも理論通りに動作する生成系を自分で作るのは絶対必要。
遠回りに見えるだろうけど、これが最短の道なんだよ。

「俺の考えた言語」の文法をきちんと作れるなら、生成系程度すぐ作れる。
その逆は無いよ。

何か考え違いをしてるんだと思う。
文法程度すぐ作れるけど、生成系を作るのは難しいと思っていそう。
まるっきり逆。
154: 2014/12/10(水)23:48 ID:lFxVBhH5(5/5) AAS
さらに言えば、理論通り動く生成系を作っても、それは実用性を持たない。
学習のために作るんだ。

実用には、既存の生成系を使うんだよ。

そういう順番が良い。
155: 117 2014/12/11(木)00:04 ID:TxaNdaYp(1/4) AAS
>>148 >>150
すいません・・・。

>>149 >>152
"こういうところが新しいです"
と言える自信はありません・・・。 すいません。
一番の理由は"自分で作ってみたい"と思ったからです。
あと、先生に止められることもなかったですし。
構文解析が目的と言うよりは、半分ノリで付けてしまったテーマが
「初めでも使いやすい日本語で書けるプログラミング言語を作る」
なんてテーマです。
"日本語なら初めてでもとっつきやすいかな?"なんて安易な考えで
「初めてでも」なんてつけて付けてしまいました。
構文を考える上で自分で後悔してたりします;

>>153
文法を考えるのも構文規則を作るのも楽なものではないと思ってます。
それよりも構文解析器を作るほうが難しそうと感じてしまっているのは事実です。
156
(1): 2014/12/11(木)01:55 ID:pP5Pqqse(1) AAS
>>153=154が優しく言ってくれてる
あなたが本当に本気なら明日にでも図書館行って、ドラゴンブック借りるといいよ
難しいけど必ず価値はあるから
157: 2014/12/11(木)06:06 ID:sSshpgwI(1) AAS
数学の知識もないのにアンチョコ片手にMathematica使えば何でもできると思ってるようなもんだな。まあ、無理。
158: 117 2014/12/11(木)07:22 ID:TxaNdaYp(2/4) AAS
>>156
プログラミングの棚にはなかったと思うんですけど、
とりあえず今日大学の図書館探してみます。
「ふつうのコンパイラをつくろう」の方は図書館にも置いてあったので。
159: 2014/12/11(木)07:41 ID:JXHpp2tS(1) AAS
空気読め
160
(2): 117 2014/12/11(木)17:45 ID:TxaNdaYp(3/4) AAS
ドラゴンブックは残念ながら大学の図書館にはありませんでしたが、
市内(他区)の図書館にはあるとのことなので取り寄せて読みます。
1万円ほどの本を買うには残念ながらお金がないもので・・・;

他に大学にあった以下のコンパイルの本び中でおすすめってありますか?
コンパイラの基礎 / 徳田雄洋著
命令レベル並列処理 : プロセッサアーキテクチャとコンパイラ / 安藤秀樹著
コンパイラ入門 : 文法から設計・製作まで / 小田一博著
Cコンパイラ設計 : yacc/lexの応用 / A.T.シュライナー,H.G.フリードマン 著 ; 矢吹道郎 〔ほか〕訳
超並列処理コンパイラ / 村岡洋一著
コンパイラ / 疋田輝雄 著
DIANA入門/言語仕様/応用 : Adaコンパイラ実現のための中間言語
やさしいコンパイラの作り方 / 中西正和 共著 ; 大野義夫 共著
新言語作成の技法 : オリジナル・コンパイラ / 大貫広幸 著
N88日本語BASIC(86)コンパイラ活用法 : Personal computer MS-DOS版 / 肥田野登 著
コンパイラの技法 / 中田育男 著
コンパイラのうちとそと / 島内剛一ほか共著
コンパイラの設計と構築 / Arthur B.Pyster 著 ; 松尾正信 訳
コンパイラの技法 / F.R.A.ホップグッド著 ; 首藤勝, 関本彰次共訳
コンパイラ構成法 / 原田賢一著
コンパイラ : プログラム言語処理の基礎 / 井上謙蔵著
コンパイラ設計技法 : 理論と実践 / T. ピットマン, J. ピーターズ著 ; 今泉貴史訳
dBASE ・ PLUSコンパイラ & アセンブラ ゜ / 桑村幸雄,池端良一 著. -- 2版
コンパイラ・コンパイラ / 井上謙蔵著. -- 産業図書, 1970.
Let's C(Ver3.0)プログラミングハンドブック : MS-DOS用Cコンパイラ / PMC研究所 編
やさしいコンパイラの作り方 / 中西正和,大野義夫 共著
Microsoft QuickC コンパイラ Ver.2.0 ランタイム ライブラリ リファレンス
コンパイラ作成の技法 / David Gries著 ; 牛島和夫訳
コンパイラ / 中田育男著
161
(1): 2014/12/11(木)18:35 ID:yZEE5pFs(1) AAS
文芸的なcobol+日本語ななでしこ?
>>160
あるなら手にとって読んでみればいいのに
アドバイスはできないすまん
162
(2): 2014/12/11(木)18:43 ID:tbxqmm74(1/3) AAS
>>160
中田先生の本は良い本(というか国内で学者が書いてる数少ない本)
買うかどうかとは別に読んで損はしない。

先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど
163: 2014/12/11(木)20:08 ID:O2yGUM7o(1) AAS
>>143
んなアホな
164
(1): 2014/12/11(木)20:21 ID:ED9Fc+9a(1) AAS
中田本は結構いいね。でもドラゴンブックも読んどくべきだけどね。
165: 2014/12/11(木)20:26 ID:URNWWvBk(1) AAS
ドラゴンブックに限らずあの手の堅い文章は頭に入りにくい
166
(1): 2014/12/11(木)20:51 ID:HAPX7Bnj(1) AAS
>>162
> 先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど

まだ執筆してるの?
最初に買った真っ白表紙のコンパイラなんて 30年以上前だったのに
1-
あと 483 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.011s