天泣記

2002/06/01

#1

Active-DVI is a DVI previewer and a programmable presenter for slides written in LaTeX.

#2

以前から読んでみたかった diff3 を眺める。

2002/06/02

#1

states とたわむれる。これもヘンな言語だ。

2002/06/03

#1

Netcat 6 is a netcat clone with IPv6 support. It is designed to be tiny, extensible, and elegant, and it makes use of the new extended BSD socket APIs.

#2

state を追いかけるのに疲れたので、y.output を HTML にしてみる。

2002/06/04

#1

parsing automaton を逆に(非決定的に)たどれば、reduce のときの lookahead がわかる?

#2

Noncanonical Extensions of LR Parsing Methods, Michael D. Hutton

を眺める。

2002/06/05

#1

Efficient Full LR(1) Parser Generation, David Spector, SIGPLAN Notices, Vol. 23, No. 12

を読む。 読んでいると、以前既に読んだことがあるのを思い出した。 そのときはいまひとつわからなかったのだが、 今はなんとなくわかる。

以前はわからなかった理由もわかる。 これは技術的な内容は数10行書いてあるだけで、 既にほぼわかっている人にしかわからないのだと思う。

2002/06/06

#1

Apocalypse 5

パターンの話。

2002/06/07

#1

Parsing Techniques - A Practical Guide

昔、印刷したのだが、どこにやったかな...

#2

diffxml is a collection of XML diff and patch utilities which operate on the hierarchical structure of XML documents.

2002/06/08

#1

FRANK DeREMER and THOMAS PENNELLO, Efficient computation of LALR(1) look-ahead sets, ACM Trans. Program. Lang. Syst. 4, 4 (Oct. 1982), 615--649.

を読む。ふむ。

#2

a + b の + みたいなのを infix operator という。

-a の - みたいなのを prefix operator という。

a! の ! みたいなのを postfix operator という。

では、a ? b : c の ?: みたいなのはなんというか?

どうも、distfix operator という(ことがある)らしい。

#3

Bison の REFERENCES には

Bison uses a faster but less space-efficient encoding for the parse tables (see Corbett's PhD thesis from Berkeley, "Static Semantics in Compiler Error Recovery", June 1985, Report No. UCB/CSD 85/251)

とある。

2002/06/09

#1

SLiP - a "Sorta Like Python" shorthand for XML

まだまだいろいろあるんだなぁ。

2002/06/10

#1

lexical tie-in が正しく動くことをなんらかの意味で検証できないだろうか?

#2

What's New in Python 2.3 (draft)

おぉ、expat を同梱しますか。

#3

今日の Ruby script:

% ruby -e 'p(())'

2002/06/11

#1

The GraphML File Format

#2

再帰的な関数は defined but not used な警告が出ないことに気がつく。

2002/06/13

#1

静的に展開できるような導出規則を定義できると便利な気がする。

#2

bison と byacc を書いたのは同じ人なのか...

#3

btyacc は backtrack により(可能性を全部試すのに)指数関数的なコストがかかるらしい。 ふと思ったのだが、GLR みたいにやればそんなにかからないんじゃないか?

README には NP-complete とかとも書いてあるが、これは信じられない。

#4

btyacc であそぶ。

2002/06/14

#1

btyacc は便利だ... backtrack もいいが、position を簡単に扱えるのがいい。

#2

cvsdelta works with a CVS project, producing a list of the local files that have been changed.

#3

やはり、LALR(1) lookahead だと判断基準としては甘いか。

必要なところだけ状態を split するか、 あるいは、実行時に判断するか。

2002/06/15

#1

CVSGrab is another kind of CVS client. When other CVS clients use the cvs protocol or ssh to read the repository, this utility reads the repository via its ViewCVS web interface.

#2

flex って non-gnu なのか。

#3

IE で XML を開いた時のような XML viewer って Unix にあるだろうか?

なんかたくさんありそうな気がするけど、軽いやつはないかなぁ。

(Mozilla の DOM Inspector は重い上に中身を見るのにいちいちクリックがが必要で使えん...)

#4

Runtime optimization mailing list

2002/06/18

#1

line は 1-origin なのに column は 0-origin とはこれいかに。

2002/06/19

#1

IE で XML を表示するとサイズに対して非線形な時間がかかる気がする。

2002/06/20

#1

Ruby コード(みたいなもの)をパーズして XML で吐くものをでっちあげてみる。

あくまでも「みたいなもの」であってそのものではないのは、 間違うことがあるためである。

間違わないためにはもっともぉっと深く深ぁく オリジナルを理解する必要がある模様。

#2

明日は神保町(の近く)。

#3

tidy で XML の整形ができることに気がつく。

<?xml version="1.0"?>
<source><compstmt
><command
><tIDENTIFIER
>print</tIDENTIFIER
> <call_args
><qqstring
><qqstring-beg
>&quot;</qqstring-beg
><qqstring_data
><string-contents
>Hello World!</string-contents
><qqstring-escape
>\n</qqstring-escape
></qqstring_data
><string-end
>&quot;</string-end
></qqstring
><none/></call_args
></command
><tNEWLINE
>
</tNEWLINE
></compstmt
></source>

というのが、

<?xml version="1.0"?>
<source>
  <compstmt>
    <command>
      <tIDENTIFIER>print</tIDENTIFIER>

      <call_args>
        <qqstring>
          <qqstring-beg>"</qqstring-beg>

          <qqstring_data>
            <string-contents>Hello World!</string-contents>

            <qqstring-escape>\n</qqstring-escape>
          </qqstring_data>

          <string-end>"</string-end>
        </qqstring>

        <none />
      </call_args>
    </command>

    <tNEWLINE>
    </tNEWLINE>
  </compstmt>
</source>

というようになる。

でも、なぜ空行が入るのだろう?

#4

しかし、XML にすると大きくなるものである。 もともとは print "Hello World!\n" の 23bytes だというのに、 XML にすると 389bytes になり、tidy で整形すると 508bytes になる。

それに、それはまだノードを省略してコンパクトにまとめた形式で、 ノードを全部出して、導出規則もコメントとしてつけると

<?xml version="1.0"?>
<source>
  <program>
<!--program : compstmt-->
    <compstmt>
<!--compstmt : stmts opt_terms-->
      <stmts>
<!--stmts : stmt-->
        <stmt>
<!--stmt : expr-->
          <expr>
<!--expr : command_call-->
            <command_call>
<!--command_call : command-->
              <command>
<!--command : operation command_args-->
                <operation>
<!--operation : tIDENTIFIER-->
                  <tIDENTIFIER>print</tIDENTIFIER>
                </operation>

                <command_args>
<!--command_args : open_args-->
                  <open_args>
<!--open_args : call_args-->
                    <call_args>
<!--call_args : args opt_block_arg-->
                      <args>
<!--args : arg_value-->
                        <arg_value>
<!--arg_value : arg-->
                          <arg>
<!--arg : primary-->
                            <primary>
<!--primary : string-->
                              <string>
<!--string : qqstring-->
                                <qqstring>
<!--qqstring : tQQSTRING_BEG qqstring_data tSTRING_END-->
                                  <qqstring-beg>"</qqstring-beg>

                                  <qqstring_data>
<!--qqstring_data : qqstring_data tSTRING_ESC-->
                                    <qqstring_data>
<!--qqstring_data : qqstring_data tSTRING_CONTENTS-->
                                      <qqstring_data />

<!--qqstring_data :-->
                                      <string-contents>Hello
                                      World!</string-contents>
                                    </qqstring_data>

                                    <qqstring-escape>
                                    \n</qqstring-escape>
                                  </qqstring_data>

                                  <string-end>"</string-end>
                                </qqstring>
                              </string>
                            </primary>
                          </arg>
                        </arg_value>
                      </args>

                      <opt_block_arg>
<!--opt_block_arg : none-->
                        <none />

<!--none :-->
                      </opt_block_arg>
                    </call_args>
                  </open_args>
                </command_args>
              </command>
            </command_call>
          </expr>
        </stmt>
      </stmts>

      <opt_terms>
<!--opt_terms : terms-->
        <terms>
<!--terms : term-->
          <term>
<!--term : '\n'-->
            <tNEWLINE>
            </tNEWLINE>
          </term>
        </terms>
      </opt_terms>
    </compstmt>
  </program>
</source>

というようなかんじで 1509bytes (整形後は 2660bytes) にもなる。

感覚として、サイズは 10〜100倍になるというかんじである。

#5

gxmlviewer を試す。

起動時に木が全部閉じているのが気にくわないが、まぁ、こんなものか。

#6

Associating Style Sheets with XML documents

2002/06/23

#1

yacc で厄介な文法を書く秘訣を悟った気がする。

いかに reduce を遅延するかが鍵なわけで、 左再帰より右再帰を使うとか、 なるべく右の方に長く伸びるように非終端記号を定義するとかが重要なのだろう。

#2

MlView - Markup Language Viewer - an xml editor for gnome

2002/06/24

#1

yacc (や bison) は LALR(1) のアセンブラなんだよなぁ。

もっと高級な言語があってもいいはずだ。

静的に規則を展開するとか、 この非終端記号なんだけど特定の記号は含まないものとか、 いろいろとやれることはあるはずだと思う。

2002/06/25

#1

permission はふつう 8進で表現する。 これは、rwx の 3桁がまとまっていると便利だからである。

しかし、setuid, setgid, sticky をそれぞれ user, group, other にふくめれば、 4桁になって、わかりやすく 16進にできるのではないだろうか?

つまり、01777 のかわりに 0x77f と表現するのであるが。

#2

XML Pull Parsing Common API

2002/06/26

#1

ELFIO - ELF (Executable and Linkable Format) reader and producer implemented as a C++ library.

2002/06/27

#1

try が問題なら、 try を再帰する前に終わらせて、

let rec aux channel n =
  match (try Some (input_line channel) with End_of_file -> None) with
    None -> n
  | Some _ -> aux channel (1 + n)

というようにすればいいんじゃないですかねぇ。

末尾再帰にならないのは try の body が tail position じゃないからなんじゃないのかなぁ。 try を抜ける時に例外ハンドラを消すという処理があるだろうから。

#2

OpenZz is an interpreted dynamic parser which is well suited to rapid development of parsing solutions, starting from rapid language prototyping to full fledged compilers.

#3

天正やおよろず

うぅむ。コミックを読んでも設定がわからないぞ?

2002/06/28

#1

ふと思ったのだが、流れてくる端から処理ができるような XSLT engine というのはあるだろうか?

むろん、それが不可能な XSLT stylesheet はいくらでもあるわけだけど、 可能な場合について。

#2

xmlclitools provides four command-line tools for searching, modifying, and formating XML data. The tools are designed to work in conjunction with standard *nix utilities such as grep, sort, and shell scripts.

2002/06/29

#1

長年 parser generator では、 reduce に対応する action を記述することによって、 処理を行なってきたわけだが、 XML に対して同様な形式で記述をするシステムはあるだろうか?

作ったとして、使いやすいものになるだろうか?

#2

pull parser の next (ないしは nextToken) を lexer として、 yacc の類に接続すればそれで終わりで、作るまでもないか?

いや、yacc だと RHS が固定的なのが少々問題か? XDuce みたいなパターンを書けるほうがいいか? あるいはどうせ action からアクセスする時に面倒なんだから、 固定的なままで分割してかいたほうがいいか?

#3

yacc の類はどこをどういじろうがあまり普通の人むけにはならないか?

SAX で end tag に対する action だけを書いたようなものだとかいえばごまかせるだろうか?

#4

RelaxNGCC is a tool for generating Java source code from a given RELAX NG grammar.

#5

Using Parser-Generators to Convert Legacy Data Formats to XML, Alexander Nakhimovsky

#6

Flea is a small utility which allows you to write a Yacc-like grammar for parsing XML documents.

#7

Functional API for XML --- xFAX

2002/06/30

#1

Tutorial: XML schema languages

#2

Webcpp (Web C Plus Plus) is a command line utility that takes your source code and converts it into an HTML file, using a fully customizable syntax highlighting engine.


[latest]


田中哲