いやマジで、JavaCC すごすぎるって。語れ

このエントリーをはてなブックマークに追加
1Dasani

【検索】キーワード「JAVACC」を探しました
http://makimo.to/cgi-bin/search/search.cgi?q=JavaCC&andor=AND&sf=2&H=&view=table&all=on&G=%8E%D0%89%EF

なんだこれ? こんなハイテクツールをなんでお前等語らないの?
JJTree とかと併用すれば最強だろーが!



↓から javacc 3.2 ダウンロードして早く使え。そして報告しる!
https://javacc.dev.java.net/servlets/ProjectDocumentList

JavaCC Documentation
http://trese.cs.utwente.nl/prototypes/composeJ/wichman/JavaCC/

ということで、 JavaCC の質問、使い方、技などなんでも OK です。
   ○
   人
   〉
2Dasani:04/08/05 04:27
いや、マジで。みんな使おうよ。
「こんなに朝早くからアフォか」って言うかもしれんけど。。


JavaCCおもしろ〜〜〜い!
>>1

まだJavaとか使ってんの?
4デフォルトの名無しさん:04/08/05 04:47
Javaはでかくて重くて嫌になってくる。
あと、exeが作れたらね〜
いいんだけど〜

4げっと?
5Dasani:04/08/05 04:52
いや、そんなに言うほど重くないでしょ? どんだけ大きいソフト開発してんのよ?
中規模のプログラムだってサクサク動くよ。
それにツールもAPI も死ぬほどあるしね。
調べれば、必要なツールは過去にだれかがすでに作ってるっしょ。

とりあえずJavaCC の話ししよーよ。
重複なので削除依頼ヨロ

「コンパイラ・スクリプトエンジン」相談室 3
http://pc5.2ch.net/test/read.cgi/tech/1070089173/
7Dasani:04/08/05 04:56

いや、重複じゃないでしょーが。
JavaCC だけで語ることありまくりだし、十分スレを消化できると思うよ。
その割にはあんた自身何も語ってないな
向こう過疎だし、乗っ取る形でいいから盛り上げてくれや
むしろ来ないで欲しい。こいつアフォそうだし。
コンパイラコンパイラ分かって無さそうだし。
11Dasani:04/08/05 05:17

とりあえず、「JavaCCで日本語を扱う方法」は以下の URL で語られています。

http://www.ingrid.org/java/javacc/murata.html

でも、↑のはかなり古い情報だよね? 今でも同じようにしていけんの?

生成された *.jj ファイルの BNF グラマーは jjdoc で自動生成されます。
(これはかなりお得なのよ!!)
もうグラマー見放題だね!

jjtree は AST を使用してノードごとに処理を施したい時にかなり使えます。
オプション VISITOR=true にしておけば、ビジターインターフェースも
使用することができます。

ネ!
12Dasani:04/08/05 05:18
>>10
> むしろ来ないで欲しい。こいつアフォそうだし。
> コンパイラコンパイラ分かって無さそうだし。

まあそんなわかってないけどね。あんたはどうなん?
なんか言語でも開発したんかい?
13Dasani:04/08/05 05:22
グラマーうぷしろ(゚Д゚)ゴルァ
14Dasani:04/08/05 05:25
日本語の文書見つけた。以下引用ね。(http://ltm.cs.uec.ac.jp/~takahisa/study/java_cc/grammar.html)

この文書は、WebGain内で公開されている「Description of the JavaCC Grammar File」
http://www.webgain.com/products/java_cc/javaccgrm.html
を邦訳したものです。

http://ltm.cs.uec.ac.jp/~takahisa/study/java_cc/grammar.html
******************
****          ****
****   終  了   ****
****          ****
******************
16Dasani:04/08/05 05:41
やっぱ今に時間は人いないのかな。。。
起きたらにレスしてちょ。
みなたん
17Dasani:04/08/05 05:58
ところで、>>11 で俺「BNF」って言ってるけど、実は EBNFね。
自動生成されたファイルのタイトルはBNFって言ってるけど。
なぜ今更スレがったのかいまいち理解できない流れだな
昔、JavaCC スレなかったっけ?
20Dasani:04/08/05 15:58

いやー、また簡単なプログラミング言語作っちまったよー。

JavaCC は最高だな

21Dasani:04/08/05 17:44
いやマジで、JavaCC すごすぎるなー。
みなたん?
生成されるコードがJavaということ以外で、yacc/bisonとの違いを書いてくれYO!
時に、「のったばしーしー」なる物を御存じか?
>>22
そもそも構文解析だけなのこれ?
それともこれ一つでflexとbisonのセットだと考えていいの?
25Dasani:04/08/05 18:26
>>22
>>24

- yacc+bison は bottom-up LALR(1) パーシング アルゴリズムを使用する。
- javaCC は LL(k) (正確には LL(k) より強力)
⇒ 故に、 javaCC でのプログラムの方が人間に対しては理解しやすい。

- yacc は BNF 記述
- javaCC は EBNF 。
⇒ 故に javaCC プログラムのほうが読みやすい。

- javacc には jjtree が付いてくる
⇒ 故に、 AST は簡単に作成できる。

- javaCC の方が精密で、verbose なエラーメッセージをはく (かなり大事)

もっとあるけど、簡単にはこんなとこかな。
yacc+bisonって何?
二重構文解析?
27Dasani:04/08/05 18:40
yacc/bison
>>24に対する返答が無いみたいなんだけど。
29Dasani:04/08/05 18:44

わるーう゛ぃ。
そうそう、セットだよ。だから超ー楽よ。
30Dasani:04/08/05 18:45

君達も使用してみたまえ。 気が狂うぞ!
   ○
   <)
   |
3123:04/08/05 18:55
やっぱし見事スルーだったんで一応リンク張ってみる。
"¬<><∪∪"
http://ne.cs.uec.ac.jp/~koto/notavacc/
んで、JavaCCとの違い。
http://ne.cs.uec.ac.jp/~koto/notavacc/diary.html#d030918
32Dasani:04/08/05 19:22
>>31

その なんとか ってツールの作者は

(以下引用)
「しかしその代償として、JavaCC/JJTree では、人間のハンドリングなしに処理できる文
法はあまり多くありません。例えば次の文法を扱えません。

// BNF
expr ::= term
| expr "+" term

term ::= factor
| term "*" factor

factor ::= "(" expr ")"
| NUMBER


って言うけど、 JavaCC が left recursion (左再帰) を認めないのは
LL が top-down だからあたりまえでしょ? これは仕方ない。
プログラムを見やすくするためだもん。

んで、その作者は
「(拡張)BNFで記述できるものはなんでも扱えます。これは、Yacc が扱える文法よりも広範囲です。」
って言ってるけど、曖昧。 どの種類の CFG なのか教えてもらいたい。LR(k) ぐらいまでいくのかどうか

ごめん。なんか、俺にはそのツールの良さがみえなかった。
>>Dasani
なんかおまえいろいろ知ってんな
コンパイラの教科書に載ってる程度の事ばかりだと思うが…
35Dasani:04/08/05 19:43

>>34
アホと他二人が書いた本か? あれはつまらなかった。死ぬかと思ったよ。
どうやったらあんなにつまらなく書けるのかが不思議でしょうがないね。
appelの本の方を勧めるよ
36Dasani:04/08/05 19:49

しかし君達はつくづく JavaCC マンセーだな。
君達を見てるとこちらも楽しくなってくるよ。

って、いいから早く語れ。
37Dasani:04/08/05 19:53

君達は今頃 JavaCC と (;´Д`)ハァハァ してるんだろうね。
まったく

コンパイルして多少速くなっても、メモリーのバカ喰いはどうにもならない。
↑?
40Dasani:04/08/06 15:38


君達、今もJavaCCでオナっているのかい?
41Dasani:04/08/06 16:44
そろそろみんな発言したくなってきたんじゃない?
いつでもいいよ。


みなたん。 早く語れよ
>>25
LLはLALRより遅い

EBNFは再帰定義の展開しなければならない分、手間がかかる
43デフォルトの名無しさん:04/08/06 18:23
JavaCCで新たに言語を作る意義って何さ?

できあがった言語はJavaのようにVM上で動かすことができ
OSに対する依存性をさげることができる?
↑?
45デフォルトの名無しさん:04/08/10 00:43
>>4
エクセルソフトから出てるジェットっての使えばjavaクラスからexeができる。
ちなみに、フリーソフトだ。たぶん。
46デフォルトの名無しさん:04/08/10 01:12
JJTreeなら良く使うな。
47デフォルトの名無しさん:04/08/10 01:21
>>1
おまえ高卒だろ。
大学でオートマトン習うからな。
アホ大学は教えないのか?

それはともかく、たいした話題じゃないんだよね。
OSに興味が無いのと同様に
そんな低レベル(アホって意味じゃない)な事に興味のある人なんて
少ないと思うけど。
48デフォルトの名無しさん:04/08/10 01:22
5万次元の連立一次方程式を解くための
アルゴリズムでも勉強してこいよ。
>>48
5次元の連立1次方程式解くときと、どう違うですか?
50デフォルトの名無しさん:04/08/10 08:48
left recursionが書けないのは痛すぎ。
使えねえな。
51デフォルトの名無しさん:04/08/10 11:10
>>49
同じだと思ったら実装してみれ。
動かないから。
>>47
高卒だろ?と言いながらその直後でアフォ大学は教えないのか?
ってあんた分裂症?
>>52
お前すっごい馬鹿だな
>>53の方が馬鹿っぽい。
>>54モナー
Dasaniタソは今頃JavaCCでオナっているのかい?
57デフォルトの名無しさん:04/08/19 15:59
sex しまつ
58Dasani:04/08/23 23:32
Dasani さんが帰ってきまんこ

>>47
> >>1
> おまえ高卒だろ。
> 大学でオートマトン習うからな。
> アホ大学は教えないのか?

つーか別にオートマトンの話しなんかしてないし。
Lexical Analysis からオートマトンを無理矢理持ってきたい気持ちは
わかるがちょっと無理があったね!!

> それはともかく、たいした話題じゃないんだよね。

んじゃ何が「たいした話題」なんだよ。 何が P, NP, NPC に属し、NP = P か、SAT ∈ P か、
とか?

>>45
> >>4
> エクセルソフトから出てるジェットっての使えばjavaクラスからexeができる。
> ちなみに、フリーソフトだ。たぶん。

まだ使ってないけど、それ (・∀・)イイ んでない?でもそれフリーじゃないよ。
お試し版は60日で切れる

59Dasani:04/08/23 23:35

しかし最近熟女にはまっちゃってさー

しかし、熟女はエロだよな。
60Dasani:04/08/24 19:47
ageマン
javaccとjjtreeってどうやって使うの?
62デフォルトの名無しさん:04/09/01 01:04
commons-jexlってjavacc使ってるみたいだけどさ、
リテラルすら日本語通さないんだな・・・。

あれって設定でなんとかなるもんなの?
63Dasani:04/09/02 18:12
>>62
> commons-jexlってjavacc使ってるみたいだけどさ、
> リテラルすら日本語通さないんだな・・・。
>
> あれって設定でなんとかなるもんなの?

それがなんだか知らんが、ソースファイルに含まれてる
*.jjt かそれがなかったら *.jj を日本語処理できるように
直せば余裕
64DowI ◆8.LPxIE7C6 :04/09/06 00:26
/* URLParser.jj その1 */

PARSER_BEGIN(URLParser)

public class URLParser{
}
PARSER_END(URLParser)


TOKEN : {
<LF: "\n"|"\r\n"> |
<LINK: ("http://"|"https://"|"ftp://")+(["\u0023","\u0025"-"\u0026","\u002d"-"\u003b","\u003d","\u003f"-"\u005a","\u005e"-"\u005f","\u0061"-"\u007a","\u007e"])+> |
<NOLINK1: (~["h", "f"]|["\u007f"-"\uffff"])+ > |
<NOLINK2: (["h", "f"])>
}

SKIP : {
<SPACE: " "|"\t"|"\r"|"\f">
}


void sentence() : {} {
(
try {
line()
} catch (Throwable th) {
error_skipto();
}
)+<EOF>
}

65DowI ◆8.LPxIE7C6 :04/09/06 00:27
/* URLParser.jj その2 */

void line() : {} {
( link() | nolink() )* (lf())+
}
void link() : {
Token t;
}
{
t = <LINK> {
System.out.print("<a href=\"" + t.image + "\">" + t.image + "</a>");
}
}
void nolink() : {
Token t;
} {
(t=<NOLINK1>|t=<NOLINK2>) {
System.out.print(t.image);
}
}
void lf() : {
} {
<LF> {System.out.println("<LF>");}
}
JAVACODE
void error_skipto() {
Token t;
do {
t = getNextToken();
} while (t.kind != LF && t.kind != EOF);
}
66DowI ◆8.LPxIE7C6 :04/09/06 00:30
1 名前:Dasani[] 投稿日:04/08/05 04:25

【検索】キーワード「JAVACC」を探しました
<a href="http://makimo.to/cgi-bin/search/search.cgi?q=JavaCC&andor=AND&sf=2&H=&view=table&all=on&G=%8E%D0%89%EF">http://makimo.to/cgi-bin/search/search.cgi?q=JavaCC&andor=AND&sf=2&H=&view=table&all=on&G=%8E%D0%89%EF</a>

なんだこれ? こんなハイテクツールをなんでお前等語らないの?
JJTree とかと併用すれば最強だろーが!



↓から javacc 3.2 ダウンロードして早く使え。そして報告しる!
<a href="https://javacc.dev.java.net/servlets/ProjectDocumentList">https://javacc.dev.java.net/servlets/ProjectDocumentList</a>

JavaCC Documentation
<a href="http://trese.cs.utwente.nl/prototypes/composeJ/wichman/JavaCC/">http://trese.cs.utwente.nl/prototypes/composeJ/wichman/JavaCC/</a>

ということで、 JavaCC の質問、使い方、技などなんでも OK です。
   ○
   人
   〉
67DowI ◆8.LPxIE7C6 :04/09/06 00:32
だいぶ前に作ったやつだから、詳細は忘れちゃた。
正規表現とか、今見てもサッパリ分からない。
68DowI ◆8.LPxIE7C6 :04/09/06 00:52
読み返してみると、なんだか難しい話しててびびった。
ググりっぱなしだった。

JavaCCで新しい言語なんてつくろうとは思わないけれど、パーサを作るときは便利。
こんな使い方もあるってことで。
69デフォルトの名無しさん:04/09/19 02:32:11
そのくらい正規表現で(・∀・)イイんじゃね?
やっぱJavaはXMLじゃねーのけ?

ところでjjtreeのASTからトークンへの参照がまんどいね。
NODE_SCOPE_HOOKとかムンドクセ。
70デフォルトの名無しさん:05/01/10 20:17:03
HtmlってBNFで表現できますか?
文法が曖昧なので厳しいと思うのですが。
71デフォルトの名無しさん:05/01/10 21:06:20
>>70
書けることは書けるんじゃないの。
strictなhtmlだけで良いなら綺麗なBNFになるし、
汚いhtmlも扱うなら小汚いBNFになる。
7270:05/01/12 02:23:13
>>71
ありがとうございます。今、汚いhtmlも解析できるパーサーを作ろうとしています。
やっぱりLALRが使える他の処理系の方がいいですかね??
閉じるタグ<p></p>や閉じないタグ<br>、自分で閉じるタグ<br />とかが混在していることが予想されるのでかなり難しくないですか。
特にどのパスにも"<"が出現することが多いので、左再帰を許さないJavaCCだと厳しいかなと。
もちろん定石どおりの「左再帰の除去」もあるわけですが・・・。
73デフォルトの名無しさん:05/01/12 12:26:01
>>72
JavaCC は LOOKAHEAD とか使えばなんでもアリなんで、
LALR でも手に負えない場合 JavaCC の方がいいかも。
とりあえず BNF で適当に書いてみて、
左再帰除去がどの程度必要かとか
LALRなら大丈夫そうかとか
見て決めるのがいいんじゃない?
7470:05/01/12 19:01:34
>>73
感謝です。そういえばJavaCCはLL(1)ではなくてLL(k)なんですよね。
頑張ってみます。ありがとうございました。
#最近JavaでCの処理系を作ったのですが、昔のCで書いていた頃がうそみたいですね。
#HashMapとかを最初から使えるので、恐ろしく楽に作れました。
75デフォルトの名無しさん:05/02/06 22:33:40
antlrとはどう違うの?
76デフォルトの名無しさん:05/02/07 17:26:46
そろそろ落ちそうなのでほしゅ(´・ω・)
77デフォルトの名無しさん:05/02/08 22:34:58
SableCCのがいいよ。LALR(1)だしTreeも自動でできる。
78デフォルトの名無しさん:05/02/09 19:07:27
プログラムの{}、()とか変数の切り出しはかんたんにできますか??
79デフォルトの名無しさん:05/02/16 05:09:51
できるけど grep で十分じゃね?
80デフォルトの名無しさん:2005/04/15(金) 21:57:10
これから勉強するんであげます。
81デフォルトの名無しさん:2005/04/20(水) 12:37:29
はりきりすぎなんじゃぼけが 氏ねや
82デフォルトの名無しさん:2005/04/29(金) 19:23:23
83 :2005/04/29(金) 21:38:50
>>82
どこらへんが駄目なの?
買おうかとおもったんだが。
84デフォルトの名無しさん:2005/08/30(火) 08:18:13
糞ってほどじゃないと思うが。

結構有用な情報がある。

ただ、書き方があんまり親切じゃない。
いきなりサンプルプログラムから始まってて、
入手方法とか、インストールの仕方とかは、説明してない。
そのあたりのことはだいたい自分で解決できる
(SourceForge とかJakartaプロジェクトなんかから自分でダウンロードして
 セットアップするようなことを何度もしたことがある)
という前提で書かれてるみたいなので、まったくの初心者にはきついかも。
(まあ、パーサジェネレータというもの自体、初心者が扱うようなもんじゃないけど。)

全体的に複雑な内容を複雑なままいちいち説明してると言う感じ。
他に類書が無いので、腰をすえてやるならそれなりに役に立つと思う。
仕事ですぐ使う、とか数日でマスターしたい、と思って読むと投げ出したくなるかも。
85デフォルトの名無しさん:2005/08/30(火) 08:23:35
ああ、付録になってた。 >入手、インストール方法
86デフォルトの名無しさん:2005/08/30(火) 08:54:38
質問です。

JavaCC 3.2 で、

---
PARSER_BEGIN(HelloWorld)
package hellojavacc;

〜中略〜
PARSER_END(HelloWorld)
---

として、javacc したのですが、生成されたファイルのうち、
SimpleCharStream.java、Token.java、TokenMgrError.java
には package 宣言が入っていません。
これらのファイルに他のファイル同様、package 宣言が入るようにするには、
どうしたらよいのでしょうか?
87デフォルトの名無しさん:2005/09/03(土) 15:54:05
yaccとかパーサー作るスレってないんですか?
88デフォルトの名無しさん:2005/09/03(土) 16:07:37
コンパイラ作るスレ
89デフォルトの名無しさん:2005/09/03(土) 19:19:14
コンパイラコンパイラを作るスレはないですか?
あるいはコンパイラコンパイラを作るためのコンパイラコンパイラコンパイラは存在しますか?
90デフォルトの名無しさん:2005/09/03(土) 21:35:00
それ発音が淀川っぽく見えちゃうのは俺だけ?
コンパイラッコンパイラッコンパイラッって言ってるべ?図星?
91デフォルトの名無しさん:2005/09/04(日) 15:24:04
92デフォルトの名無しさん:2005/09/06(火) 01:47:12
yacc でパーサを作るってのと、yacc みたいなパーサ(ジェネレータ)作るスレ、
ではかなり意味が違うと思うが。
まあ、 >>91 のスレはなんでもありみたいだけど。
93デフォルトの名無しさん:2005/09/30(金) 08:32:52
>>87
スレじゃないけど、↓コンパイラつくるページ
http://catalog.compilertools.net/
94デフォルトの名無しさん
コンパイラ作る人のためのページ、だな。