前のページ 次のページ
kmyacc 投稿者:森 公一郎  投稿日:11月29日(水)12時51分39秒


どーも、森です。オケゲムさん、お久しぶりです。
人から教えてもらってここを知りました。

kmyacc は7年ちかく全然改訂していません。リエントラントなパーサーという
要望が結構あるのなら、対応してみようかと思いますが、まあ世の中bisonが
ふつーですよねえ。

(でも kmyacc はデバッグモードが結構ユニークだと自分では思っているのだが…)


first boyさん、はじめまして 投稿者:徳丸(オケゲム)  投稿日:11月27日(月)09時24分09秒

first boyさん、インプリメンタの部屋にようこそ。席亭の徳丸です。

そうですか。高専でパスカルを勉強中ですか。がんぱって下さいね。
ただ、Cabezonは極力ISO Pascalに準拠しているものの、集合型がなかったり
しますし、Turbo Pascalとはかなり違うところもありますので、その点は
考慮して使ってください。

要望や質問などありましたら、この掲示板でどうぞ。

これからもちょくちょく立ち寄ってくださいね。

http://www.tokumaru.org/


Flex&Bisonの商用利用 投稿者:徳丸(オケゲム)  投稿日:11月27日(月)09時21分41秒

こんにちは。Pontaさん、「インプリメンタの部屋」にようこそ。
FlexとBisonの商用利用についてですが、私はBisonは既にお仕事で利用しています。
以下の本に、Bison1.25以降であれば、Bisonの商用利用が可能であるという記述が
あります。

チャールズ・ドネリー、リチャード・ストールマン著,石川直太訳
Bison入門
アスキー ISBN: 4756130658

FlexとBisonは通常ペアで使うものですから、「常識的に考えて」Bisonが
OKなら、FlexもOKだと思いたいところですが、私はlex/flexは昔から使って
いないので、とくに調べていません。

なお、私は本当はkmyaccを使いたかったのですが、これはスレッドセーフな
パーサをジェネレートできないためにあきらめました。強引に使えば使えなく
もない(パーサ利用部をシングルスレッドで動くようにするとか)と思いますが、
Bisonならスレッドセーフなパーサをジェネレートできるので、そちらにした
というところです。

ただ、上記の解釈はあくまで個人的なものなので、商用利用ということであれば、
オリジナルのCopyright Noticeなどから、ご自身で確認頂きたいと思います。


http://www.tokumaru.org/


ありがとうございます 投稿者:first boy  投稿日:11月24日(金)23時55分59秒

某高専で学んでいる者で、授業にパスカルを使うのでダウンロードしました。これを使って勉強したいと思います。


Flex&Bison 投稿者:Ponta  投稿日:11月24日(金)12時50分56秒

徳丸さま

はじめまして、北海道在住のPontaと申します。
検索をかけてこのページを見つけました。
いきなりで不躾かとは思うのですが、質問させてください。

現在、とあるプロジェクトに関わっていまして、
その開発過程の中で字句解析/構文解析をしなければならないのですが
lex(Flex),yacc(Bison)って業務(商用ソフト)に使用しても良いんでしょうかね?
(ソースを公開しないといけないのでしょうか?)

追伸:「yaccによるCコンパイラプログラミング」誰か譲ってくれませんかね・・・


re: XMLコンパイラ 投稿者:dude  投稿日:11月 3日(金)23時52分27秒

すみません、xml のソースをそのままアップロードしてしまったら、body の開始
タグはちゃんと < に変換されているのですが、終了タグがそのままになって
しまっているようです(minibbsのバグかな・・・)。

一応、IE5.5 と Netscape 4.7, 6.0PR2 では誤動作をしない(無視する)よう
ですが、もし誤動作をするようでしたらご指摘ください。

たとえば、“こんにちは、徳丸さん。”の次に body の閉じタグが来ます。お手
数おかけしてすみません。気をつけるようにいたします。


re: XMLコンパイラ 投稿者:dude  投稿日:11月 3日(金)23時44分31秒

徳丸さん、おひさしぶりです。

僕も、この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 関係は関連技術がたくさんあるし、なによりテキストベースなので、いろい
ろと遊ぶ要素があるような気がしています。基本的には、言語処理の技術かなと
思っています。

http://www.airclub.org/


re: XMLコンパイラ 投稿者:徳丸(オケゲム)  投稿日:11月 3日(金)13時03分57秒

dudeさん、自作コンパイラの部屋にようこそ。おひさしぶりですねぇ〜
確かに、10年ぶりくらいです。お元気でしたか?

私は、元気ですが、結婚したり、ひげを生やしたりで、見た目は変わっているかも:-p

XMLのDTDは、BNFと似ているような、似ていないようなと言う感じですが、
たしかに、DTDを元に(特定の)XMLを解析するパーサはできるだろうと思います。
ただし、それがどれほど嬉しいかは、あまりピンと来ていません。

〉それとも、既にそのようなものは存在しているのでしょうか?

詳しくウォッチングしているわけではありせんが、聞いたことはない
ですね。XMLからツリーを作ることは汎用のツールでできるので、
そこからDTDを満足しているかどうかをチェックするのは、
コンパイラでいう意味解析フェーズでやっているのではないでしょうか?

ただし、yaccでもできなくはないかもしれまんね。タグ言語の解析を
軸解析レベルで頑張れば、できなくはないような気もします。DTDそのもの
をyaccに食わせるわけにはいきませんが、DTD→yaccソースのトランスレータは
直感的にはできそうな気がします。

これから、もうちょっと考えてみます。

ちょくちょく遊びに来てくださいね>dude

http://www.tokumaru.org/


XML コンパイラ 投稿者:dude  投稿日:11月 1日(水)17時23分38秒

徳丸さん(オケゲムさんの方がしっくり来ますが ^^;)、おひさしぶりです。
10年ぶりぐらいでしょうか(笑)。相変わらずお元気そうでなによりです。

だいぶ前から、XML が流行しつつありますが、これを見てかねてから考えてい
るアイディアがあります。

XML は DTD によって規則が定義されるわけですが、この DTD はコンパイラに
おける BNF と意味的には同じではないかということです。とすると、XML ソ
ースは実際のプログラムソースと同じということになり、DTD に対する yacc
のようなコンパイラ・コンパイラを作れば、XML ソースを解析するコンパイラ
を自動的に生成できるのではなかろうかと考えています。

記法が若干異なるので yacc そのままでは使えませんが、ちょっといじれば、
DTD を解析することは難しくなさそうな気がします。その yacc もどきのア
クションの記述では、いろいろなアウトプットを実現できるので便利そうです。

それとも、既にそのようなものは存在しているのでしょうか?

というのを自分のサイトの日記に書いたのですが、こちらのほうが適切のよう
な気がしましたので、ご挨拶がてら書かせていただきました。実際のところ、
どうでしょうかね。

http://www.airclub.org/


感謝! 投稿者:相模隆明  投稿日: 9月 5日(火)15時21分22秒

親切にお答えいただきありがとうございます。
友人にも聞いてみたのですが、その友人は
「本によってはポーランド記法と逆ポーランド記法の意味が逆になってる。」
といっていました。
情報系では前置記法をあまり使わないので逆ポーランドの「逆」が
省略されるのだそうです。
後置記法・前置記法と呼ぶのが無難かもしれませんね。


前のページ 次のページ