「コンパイラ・スクリプトエンジン」相談室16 (649レス)
「コンパイラ・スクリプトエンジン」相談室16 http://mevius.5ch.net/test/read.cgi/tech/1405822579/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
136: 117 [sage] 2014/12/09(火) 21:43:09.57 ID:KYZ3f1RL 構文規則作ってみましたが、選択の衝突が消えません。 tasuhikuのkakewaruをkakewaru2に変えると消えます。 kakewaruで呼んでるminusの[<HIKU>]がtasuhikuの<HIKU>と競合しているのかと思いましたが、 なぜなのかわかりません。 どこが間違っているでしょうか? 警告なのでとりあえず無視してjavacコンパイルして解析&実行させてみると、以下の式はきちんと実行できました。 1+2+3 -9-3 1+2*3/4-5 7+(-2) -6*2 -(1+2)*4 (-1+2)*4 -1+2*4 4-(-2/5) -(-(-39))/13 一応ある程度のパターンを網羅していると思います。 Warning: Choice conflict in (...)* construct at line 608, column 9. Expansion nested within construct and expansion following construct have common prefixes, one of which is: <HIKU> Consider using a lookahead of 2 or more for nested expansion. http://mevius.5ch.net/test/read.cgi/tech/1405822579/136
137: 117 [sage] 2014/12/09(火) 21:44:56.07 ID:KYZ3f1RL void tasuhiku(): {} { kakewaru() //608行目 ((<TASU>|<HIKU>)kakewaru2())* } void kakewaru(): {} { minus() ((<KAKERU>|<WARU>)sikikakko())* } void kakewaru2(): {} { sikikakko() ((<KAKERU>|<WARU>)sikikakko())* } http://mevius.5ch.net/test/read.cgi/tech/1405822579/137
138: 117 [sage] 2014/12/09(火) 21:45:41.74 ID:KYZ3f1RL void minus(): {} { [<HIKU>]sikikakko() } void sikikakko(): {} { ("(" tasuhiku() ")" |atai()) } void atai(): {} { <SUUZI> } http://mevius.5ch.net/test/read.cgi/tech/1405822579/138
139: デフォルトの名無しさん [] 2014/12/10(水) 06:22:59.98 ID:ICK0nNNi 荒らされてるなぁ・・・ http://mevius.5ch.net/test/read.cgi/tech/1405822579/139
140: デフォルトの名無しさん [] 2014/12/10(水) 14:14:42.32 ID:lFxVBhH5 >>136 文法作るのはものすごく難しいんだよ。 同じ文書を受理する複数の文法が存在し、複数の間で優劣がある。 しかも、優劣を機械的に評価することが難しい。 「こいつを使えば簡単にできる」というようなソフトウェア紹介を見かけると 思うけど、そんな魔法の杖みたいなソフトは無いから。 そういうこと言ってる人は、付属してきたサンプルを動かして簡単といってるだけ。 信じちゃだめだ。 構文解析器の生成系を自分で作れるようにならないと文法を作れないと思っていい。 少なくともその程度の理解は必要。 まずドラゴンブックを買ったらどうかと思うんだが。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/140
141: デフォルトの名無しさん [] 2014/12/10(水) 14:18:41.54 ID:lFxVBhH5 まずドラゴンブックを買う。 実際に作ってみる。 この作ったものは実用にはならないよ。 テーブルが大きすぎるからね。 それでも作ることが重要。 その後に、市中に出回る生成系を使ってみたらどうだろう。 俺はこの順番が良いと思うよ。 中身の動作を知らないと使えないって、ツールとしては下等だけど、 今はまだその程度の世界なんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/141
142: 117 [sage] 2014/12/10(水) 16:50:00.17 ID:pQyEQrGQ >>139 私のことだったら荒らそうと言うつもりは全くありません。 でも荒らしに見えてしまっていたならすいません。 >>140-141 ドラゴンブックってこれのことですかね? http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E2%80%95%E5%8E%9F%E7%90%86%E3%83%BB%E6%8A%80%E6%B3%95%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB-Information-Computing-A-V-%E3%82%A8%E3%82%A4%E3%83%9B/dp/478191229X (私にとって)安くないですし今そこから勉強している余裕はないので・・・。 すいません。 よそでパーサジェネレータ使った方がいいとか言われて、 Javaが好きなどの理由でJavaCCを使うようになりました。 なんにせよ周りに作ったことある人とかいないので、 http://www.sbcr.jp/products/4797337958.html とか http://item.rakuten.co.jp/books-sanseido/ebm-techno03/ とか片手に独学でやってます。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/142
143: デフォルトの名無しさん [] 2014/12/10(水) 17:17:43.47 ID:lFxVBhH5 >>142 そこが勘違いなんだよ。 JavaCCを使うにはJavaCCを作れる程度の知識が必要。 だからドラゴンブックが必須。 ドラゴンブックは決して読みやすい書籍ではないよ。 どうとでもとれる表現がいくつもある。 読み解きながら理解する必要があるので、結局生成系を自分で一つ書き上げる必要がある。 「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は 実はJavaCCを使っていないんだよ。 そこに騙されてはいけない。 文法を作るには深い理解が必要なんだよ。 簡単にできる方法はない。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/143
144: デフォルトの名無しさん [sage] 2014/12/10(水) 18:27:22.40 ID:eXNtCHKb 誰か別の人にやってもらえばいいんだよ。クラウドソーシングとかあるじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/144
145: デフォルトの名無しさん [sage] 2014/12/10(水) 21:11:35.37 ID:Lctd7lUm 荒らされてるんじゃなくて話題がなさすぎるから一人が専有してるように見えるだけだろ? http://mevius.5ch.net/test/read.cgi/tech/1405822579/145
146: 117 [sage] 2014/12/10(水) 21:46:27.74 ID:pQyEQrGQ >>143 >「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は そこまで言われたことはないです。 一番最初は文字列を自分で解析するところからやろうとしてましたけど、 パーサジェネレータを知ってからわたしにとってはそっちの方が楽だと感じています。 ここで質問したこと以外でも詰まったりもしましたけども、 もし構文解析ツールを1から作っていたらきっとここまでたどり着くまでにもっと詰まっていると思います。 >>144 すいません。 実はこれ卒業研究なので・・・。 自分で作ってみたい→卒研のテーマに悪くないよね? な感じで決めてしまったテーマです。 >>145 連投とかしすぎましたかね・・・; http://mevius.5ch.net/test/read.cgi/tech/1405822579/146
147: デフォルトの名無しさん [] 2014/12/10(水) 21:57:46.01 ID:dcz7kjCK 指導教授に聞けば。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/147
148: デフォルトの名無しさん [sage] 2014/12/10(水) 22:28:57.42 ID:ZSLSh1LL www 卒研なら自分で考えいw http://mevius.5ch.net/test/read.cgi/tech/1405822579/148
149: デフォルトの名無しさん [sage] 2014/12/10(水) 22:32:59.96 ID:eXNtCHKb >>146 まさか卒業研究の本体がなんの新規性もない構文解析なわけじゃないだろう。 それが本質的な部分じゃなければ人に手伝ってもらうのもありだよ。 もし、構文解析そのものが君の卒業研究なら…… 楽してでっち上げるという考えは即座に捨てて、143のいうようにちゃんと勉強して理解しな。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/149
150: デフォルトの名無しさん [sage] 2014/12/10(水) 22:55:57.69 ID:Lctd7lUm 卒研かよ フォローして損した http://mevius.5ch.net/test/read.cgi/tech/1405822579/150
151: 117 [sage] 2014/12/10(水) 23:23:29.27 ID:pQyEQrGQ >>147 Javaの研究室ではありますけど、先生は構文解析などの経験はないそうなので・・・。 ゼミのときに負の数と引き算の問題も一応聞いてみたんですけど、 残念ながら大したアドバイスをもらえませんでした。 ちなみに、研究室ではネットワーク関連のことやってる人が多いです。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/151
152: デフォルトの名無しさん [sage] 2014/12/10(水) 23:27:11.16 ID:bWIayA6r うーん、その卒業研究、どこか新規性あるの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/152
153: デフォルトの名無しさん [] 2014/12/10(水) 23:46:18.31 ID:lFxVBhH5 文法を作ることの難しさを理解できていないんだよ。 嘘ではなく、本当に難しい。 実用性は無くとも理論通りに動作する生成系を自分で作るのは絶対必要。 遠回りに見えるだろうけど、これが最短の道なんだよ。 「俺の考えた言語」の文法をきちんと作れるなら、生成系程度すぐ作れる。 その逆は無いよ。 何か考え違いをしてるんだと思う。 文法程度すぐ作れるけど、生成系を作るのは難しいと思っていそう。 まるっきり逆。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/153
154: デフォルトの名無しさん [] 2014/12/10(水) 23:48:44.51 ID:lFxVBhH5 さらに言えば、理論通り動く生成系を作っても、それは実用性を持たない。 学習のために作るんだ。 実用には、既存の生成系を使うんだよ。 そういう順番が良い。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/154
155: 117 [sage] 2014/12/11(木) 00:04:58.83 ID:TxaNdaYp >>148 >>150 すいません・・・。 >>149 >>152 "こういうところが新しいです" と言える自信はありません・・・。 すいません。 一番の理由は"自分で作ってみたい"と思ったからです。 あと、先生に止められることもなかったですし。 構文解析が目的と言うよりは、半分ノリで付けてしまったテーマが 「初めでも使いやすい日本語で書けるプログラミング言語を作る」 なんてテーマです。 "日本語なら初めてでもとっつきやすいかな?"なんて安易な考えで 「初めてでも」なんてつけて付けてしまいました。 構文を考える上で自分で後悔してたりします; >>153 文法を考えるのも構文規則を作るのも楽なものではないと思ってます。 それよりも構文解析器を作るほうが難しそうと感じてしまっているのは事実です。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/155
156: デフォルトの名無しさん [sage] 2014/12/11(木) 01:55:24.44 ID:pP5Pqqse >>153=154が優しく言ってくれてる あなたが本当に本気なら明日にでも図書館行って、ドラゴンブック借りるといいよ 難しいけど必ず価値はあるから http://mevius.5ch.net/test/read.cgi/tech/1405822579/156
157: デフォルトの名無しさん [sage] 2014/12/11(木) 06:06:17.74 ID:sSshpgwI 数学の知識もないのにアンチョコ片手にMathematica使えば何でもできると思ってるようなもんだな。まあ、無理。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/157
158: 117 [sage] 2014/12/11(木) 07:22:36.95 ID:TxaNdaYp >>156 プログラミングの棚にはなかったと思うんですけど、 とりあえず今日大学の図書館探してみます。 「ふつうのコンパイラをつくろう」の方は図書館にも置いてあったので。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/158
159: デフォルトの名無しさん [] 2014/12/11(木) 07:41:13.71 ID:JXHpp2tS 空気読め http://mevius.5ch.net/test/read.cgi/tech/1405822579/159
160: 117 [sage] 2014/12/11(木) 17:45:33.30 ID:TxaNdaYp ドラゴンブックは残念ながら大学の図書館にはありませんでしたが、 市内(他区)の図書館にはあるとのことなので取り寄せて読みます。 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著 ; 牛島和夫訳 コンパイラ / 中田育男著 http://mevius.5ch.net/test/read.cgi/tech/1405822579/160
161: デフォルトの名無しさん [sage] 2014/12/11(木) 18:35:53.94 ID:yZEE5pFs 文芸的なcobol+日本語ななでしこ? >>160 あるなら手にとって読んでみればいいのに アドバイスはできないすまん http://mevius.5ch.net/test/read.cgi/tech/1405822579/161
162: デフォルトの名無しさん [sage] 2014/12/11(木) 18:43:18.72 ID:tbxqmm74 >>160 中田先生の本は良い本(というか国内で学者が書いてる数少ない本) 買うかどうかとは別に読んで損はしない。 先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/162
163: デフォルトの名無しさん [sage] 2014/12/11(木) 20:08:42.05 ID:O2yGUM7o >>143 んなアホな http://mevius.5ch.net/test/read.cgi/tech/1405822579/163
164: デフォルトの名無しさん [sage] 2014/12/11(木) 20:21:08.66 ID:ED9Fc+9a 中田本は結構いいね。でもドラゴンブックも読んどくべきだけどね。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/164
165: デフォルトの名無しさん [sage] 2014/12/11(木) 20:26:34.20 ID:URNWWvBk ドラゴンブックに限らずあの手の堅い文章は頭に入りにくい http://mevius.5ch.net/test/read.cgi/tech/1405822579/165
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 484 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s