どーも、森です。オケゲムさん、お久しぶりです。
人から教えてもらってここを知りました。
kmyacc は7年ちかく全然改訂していません。リエントラントなパーサーという
要望が結構あるのなら、対応してみようかと思いますが、まあ世の中bisonが
ふつーですよねえ。
(でも kmyacc はデバッグモードが結構ユニークだと自分では思っているのだが…)
first boyさん、インプリメンタの部屋にようこそ。席亭の徳丸です。
そうですか。高専でパスカルを勉強中ですか。がんぱって下さいね。
ただ、Cabezonは極力ISO Pascalに準拠しているものの、集合型がなかったり
しますし、Turbo Pascalとはかなり違うところもありますので、その点は
考慮して使ってください。
要望や質問などありましたら、この掲示板でどうぞ。
これからもちょくちょく立ち寄ってくださいね。
こんにちは。Pontaさん、「インプリメンタの部屋」にようこそ。
FlexとBisonの商用利用についてですが、私はBisonは既にお仕事で利用しています。
以下の本に、Bison1.25以降であれば、Bisonの商用利用が可能であるという記述が
あります。
チャールズ・ドネリー、リチャード・ストールマン著,石川直太訳
Bison入門
アスキー ISBN: 4756130658
FlexとBisonは通常ペアで使うものですから、「常識的に考えて」Bisonが
OKなら、FlexもOKだと思いたいところですが、私はlex/flexは昔から使って
いないので、とくに調べていません。
なお、私は本当はkmyaccを使いたかったのですが、これはスレッドセーフな
パーサをジェネレートできないためにあきらめました。強引に使えば使えなく
もない(パーサ利用部をシングルスレッドで動くようにするとか)と思いますが、
Bisonならスレッドセーフなパーサをジェネレートできるので、そちらにした
というところです。
ただ、上記の解釈はあくまで個人的なものなので、商用利用ということであれば、
オリジナルのCopyright Noticeなどから、ご自身で確認頂きたいと思います。
某高専で学んでいる者で、授業にパスカルを使うのでダウンロードしました。これを使って勉強したいと思います。
徳丸さま
はじめまして、北海道在住のPontaと申します。
検索をかけてこのページを見つけました。
いきなりで不躾かとは思うのですが、質問させてください。
現在、とあるプロジェクトに関わっていまして、
その開発過程の中で字句解析/構文解析をしなければならないのですが
lex(Flex),yacc(Bison)って業務(商用ソフト)に使用しても良いんでしょうかね?
(ソースを公開しないといけないのでしょうか?)
追伸:「yaccによるCコンパイラプログラミング」誰か譲ってくれませんかね・・・
すみません、xml のソースをそのままアップロードしてしまったら、body の開始
タグはちゃんと < に変換されているのですが、終了タグがそのままになって
しまっているようです(minibbsのバグかな・・・)。
一応、IE5.5 と Netscape 4.7, 6.0PR2 では誤動作をしない(無視する)よう
ですが、もし誤動作をするようでしたらご指摘ください。
たとえば、“こんにちは、徳丸さん。”の次に body の閉じタグが来ます。お手
数おかけしてすみません。気をつけるようにいたします。
徳丸さん、おひさしぶりです。
僕も、この10年の間に結婚したり、ひげを生やしたりしておりました ^^;。奇遇です
ね(笑)。
さて、XML コンパイラですが、 DTD をもとに Parser を出力するものはないのですが、
DTD を出力可能な(論理的にもう少し広い集合の)RELAX をもとにして、Parser を出
力する Relaxer がありました。RELAX は XML の書式によるデータスキーマのようで
すが、こんがらがりそうです。
僕の考えていたのは、もっと単純で、下のような DTD 風の定義を行います。
<---- message.d -------------------------
<!ELEMENT message (title, body)> :
{
printf("From: %s\n", message.from);
printf("To: %s\n", message.to);
printf("Subject:%s\n", title);
printf("\n");
printf("%s\n.\n", body);
}
;
<!ATTLIST message to CDATA #REQUIRED>
<!ATTLIST message from CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)> :
;
<!ELEMENT body (#PCDATA)> :
;
<----------------------------------------
この例が仮に動作したとすると、こんなことができます。
<---- 入力する XML ソース ---------------
<?xml version="1.0" ?>
<!DOCTYPE message SYSTEM "message.dtd">
<message to="hiroshi@tokumaru.org" from="dude@airclub.org">
<title>ハロー</title>
<body>こんにちは、徳丸さん。
</message>
<message to="hiroshi@tokumaru.org" from="dude@airclub.org">
<title>忘れていました</title>
<body>明日は晴れだそうです。
</message>
<----------------------------------------
で、
% dtdcc message.d
% cc message.c
% ./a.out
とすると、、、、
<---- 生成されたコンパイラによる出力 ----
From: dude@airclub.org
To: hiroshi@tokumaru.org
Subject: ハロー
こんにちは、徳丸さん。
.
From: dude@airclub.org
To: yoshiaki@awagumo.org
Subject: 忘れていました
明日は雨だそうです。
.
<----------------------------------------
ということができるものを想定していました。これに限らず、特定のエレメントが
来たところで、いろいろなハンドリングができるんじゃないかと考えられます。
と書いたところ、このくらいの変換だけなら XSL でも可能という指摘がありまし
て、調べてみたら確かにそうでした ^^;。思ったより早く世の中が進んでいます
ね。基礎は変わっていませんが。
XML 関係は関連技術がたくさんあるし、なによりテキストベースなので、いろい
ろと遊ぶ要素があるような気がしています。基本的には、言語処理の技術かなと
思っています。
投稿者:徳丸(オケゲム) 投稿日:11月 3日(金)13時03分57秒
dudeさん、自作コンパイラの部屋にようこそ。おひさしぶりですねぇ〜
確かに、10年ぶりくらいです。お元気でしたか?
私は、元気ですが、結婚したり、ひげを生やしたりで、見た目は変わっているかも:-p
XMLのDTDは、BNFと似ているような、似ていないようなと言う感じですが、
たしかに、DTDを元に(特定の)XMLを解析するパーサはできるだろうと思います。
ただし、それがどれほど嬉しいかは、あまりピンと来ていません。
〉それとも、既にそのようなものは存在しているのでしょうか?
詳しくウォッチングしているわけではありせんが、聞いたことはない
ですね。XMLからツリーを作ることは汎用のツールでできるので、
そこからDTDを満足しているかどうかをチェックするのは、
コンパイラでいう意味解析フェーズでやっているのではないでしょうか?
ただし、yaccでもできなくはないかもしれまんね。タグ言語の解析を
軸解析レベルで頑張れば、できなくはないような気もします。DTDそのもの
をyaccに食わせるわけにはいきませんが、DTD→yaccソースのトランスレータは
直感的にはできそうな気がします。
これから、もうちょっと考えてみます。
ちょくちょく遊びに来てくださいね>dude
投稿者:dude 投稿日:11月 1日(水)17時23分38秒
徳丸さん(オケゲムさんの方がしっくり来ますが ^^;)、おひさしぶりです。
10年ぶりぐらいでしょうか(笑)。相変わらずお元気そうでなによりです。
だいぶ前から、XML が流行しつつありますが、これを見てかねてから考えてい
るアイディアがあります。
XML は DTD によって規則が定義されるわけですが、この DTD はコンパイラに
おける BNF と意味的には同じではないかということです。とすると、XML ソ
ースは実際のプログラムソースと同じということになり、DTD に対する yacc
のようなコンパイラ・コンパイラを作れば、XML ソースを解析するコンパイラ
を自動的に生成できるのではなかろうかと考えています。
記法が若干異なるので yacc そのままでは使えませんが、ちょっといじれば、
DTD を解析することは難しくなさそうな気がします。その yacc もどきのア
クションの記述では、いろいろなアウトプットを実現できるので便利そうです。
それとも、既にそのようなものは存在しているのでしょうか?
というのを自分のサイトの日記に書いたのですが、こちらのほうが適切のよう
な気がしましたので、ご挨拶がてら書かせていただきました。実際のところ、
どうでしょうかね。
投稿者:相模隆明 投稿日: 9月 5日(火)15時21分22秒
親切にお答えいただきありがとうございます。
友人にも聞いてみたのですが、その友人は
「本によってはポーランド記法と逆ポーランド記法の意味が逆になってる。」
といっていました。
情報系では前置記法をあまり使わないので逆ポーランドの「逆」が
省略されるのだそうです。
後置記法・前置記法と呼ぶのが無難かもしれませんね。