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 高卒だろ?と言いながらその直後でアフォ大学は教えないのか?
ってあんた分裂症?
Dasaniタソは今頃JavaCCでオナっているのかい?
57 :
デフォルトの名無しさん:04/08/19 15:59
sex しまつ
58 :
Dasani:04/08/23 23:32
Dasani さんが帰ってきまんこ
>>47 >
>>1 > おまえ高卒だろ。
> 大学でオートマトン習うからな。
> アホ大学は教えないのか?
つーか別にオートマトンの話しなんかしてないし。
Lexical Analysis からオートマトンを無理矢理持ってきたい気持ちは
わかるがちょっと無理があったね!!
> それはともかく、たいした話題じゃないんだよね。
んじゃ何が「たいした話題」なんだよ。 何が P, NP, NPC に属し、NP = P か、SAT ∈ P か、
とか?
>>45 >
>>4 > エクセルソフトから出てるジェットっての使えばjavaクラスからexeができる。
> ちなみに、フリーソフトだ。たぶん。
まだ使ってないけど、それ (・∀・)イイ んでない?でもそれフリーじゃないよ。
お試し版は60日で切れる
59 :
Dasani:04/08/23 23:35
しかし最近熟女にはまっちゃってさー
しかし、熟女はエロだよな。
60 :
Dasani:04/08/24 19:47
ageマン
javaccとjjtreeってどうやって使うの?
62 :
デフォルトの名無しさん:04/09/01 01:04
commons-jexlってjavacc使ってるみたいだけどさ、
リテラルすら日本語通さないんだな・・・。
あれって設定でなんとかなるもんなの?
63 :
Dasani:04/09/02 18:12
>>62 > commons-jexlってjavacc使ってるみたいだけどさ、
> リテラルすら日本語通さないんだな・・・。
>
> あれって設定でなんとかなるもんなの?
それがなんだか知らんが、ソースファイルに含まれてる
*.jjt かそれがなかったら *.jj を日本語処理できるように
直せば余裕
/* 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>
}
/* 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);
}
だいぶ前に作ったやつだから、詳細は忘れちゃた。
正規表現とか、今見てもサッパリ分からない。
読み返してみると、なんだか難しい話しててびびった。
ググりっぱなしだった。
JavaCCで新しい言語なんてつくろうとは思わないけれど、パーサを作るときは便利。
こんな使い方もあるってことで。
そのくらい正規表現で(・∀・)イイんじゃね?
やっぱJavaはXMLじゃねーのけ?
ところでjjtreeのASTからトークンへの参照がまんどいね。
NODE_SCOPE_HOOKとかムンドクセ。
HtmlってBNFで表現できますか?
文法が曖昧なので厳しいと思うのですが。
>>70 書けることは書けるんじゃないの。
strictなhtmlだけで良いなら綺麗なBNFになるし、
汚いhtmlも扱うなら小汚いBNFになる。
>>71 ありがとうございます。今、汚いhtmlも解析できるパーサーを作ろうとしています。
やっぱりLALRが使える他の処理系の方がいいですかね??
閉じるタグ<p></p>や閉じないタグ<br>、自分で閉じるタグ<br />とかが混在していることが予想されるのでかなり難しくないですか。
特にどのパスにも"<"が出現することが多いので、左再帰を許さないJavaCCだと厳しいかなと。
もちろん定石どおりの「左再帰の除去」もあるわけですが・・・。
>>72 JavaCC は LOOKAHEAD とか使えばなんでもアリなんで、
LALR でも手に負えない場合 JavaCC の方がいいかも。
とりあえず BNF で適当に書いてみて、
左再帰除去がどの程度必要かとか
LALRなら大丈夫そうかとか
見て決めるのがいいんじゃない?
>>73 感謝です。そういえばJavaCCはLL(1)ではなくてLL(k)なんですよね。
頑張ってみます。ありがとうございました。
#最近JavaでCの処理系を作ったのですが、昔のCで書いていた頃がうそみたいですね。
#HashMapとかを最初から使えるので、恐ろしく楽に作れました。
antlrとはどう違うの?
76 :
デフォルトの名無しさん:05/02/07 17:26:46
そろそろ落ちそうなのでほしゅ(´・ω・)
SableCCのがいいよ。LALR(1)だしTreeも自動でできる。
78 :
デフォルトの名無しさん:05/02/09 19:07:27
プログラムの{}、()とか変数の切り出しはかんたんにできますか??
できるけど grep で十分じゃね?
80 :
デフォルトの名無しさん:2005/04/15(金) 21:57:10
これから勉強するんであげます。
はりきりすぎなんじゃぼけが 氏ねや
82 :
デフォルトの名無しさん:2005/04/29(金) 19:23:23
83 :
:2005/04/29(金) 21:38:50
>>82 どこらへんが駄目なの?
買おうかとおもったんだが。
糞ってほどじゃないと思うが。
結構有用な情報がある。
ただ、書き方があんまり親切じゃない。
いきなりサンプルプログラムから始まってて、
入手方法とか、インストールの仕方とかは、説明してない。
そのあたりのことはだいたい自分で解決できる
(SourceForge とかJakartaプロジェクトなんかから自分でダウンロードして
セットアップするようなことを何度もしたことがある)
という前提で書かれてるみたいなので、まったくの初心者にはきついかも。
(まあ、パーサジェネレータというもの自体、初心者が扱うようなもんじゃないけど。)
全体的に複雑な内容を複雑なままいちいち説明してると言う感じ。
他に類書が無いので、腰をすえてやるならそれなりに役に立つと思う。
仕事ですぐ使う、とか数日でマスターしたい、と思って読むと投げ出したくなるかも。
ああ、付録になってた。 >入手、インストール方法
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 宣言が入るようにするには、
どうしたらよいのでしょうか?
yaccとかパーサー作るスレってないんですか?
コンパイラ作るスレ
コンパイラコンパイラを作るスレはないですか?
あるいはコンパイラコンパイラを作るためのコンパイラコンパイラコンパイラは存在しますか?
それ発音が淀川っぽく見えちゃうのは俺だけ?
コンパイラッコンパイラッコンパイラッって言ってるべ?図星?
yacc でパーサを作るってのと、yacc みたいなパーサ(ジェネレータ)作るスレ、
ではかなり意味が違うと思うが。
まあ、
>>91 のスレはなんでもありみたいだけど。
コンパイラ作る人のためのページ、だな。