Gauche:lalr
An Efficient and Portable Scheme LALR(1) Parser Generator
バージョン 2.5.0
https://github.com/schemeway/lalr-scm
- skimu (2016/02/16 04:55:23 UTC) 新しいバージョン 2.5.0 を Gauche 対応にしてもらいました。
- ただし、このバージョン、自分的にはちょっと使い勝手が悪い...
バージョン 2.1.0 以前
http://www.iro.umontreal.ca/~boucherd/Lalr/documentation/lalr.html (和訳)
- (2004/07/15 20:43:03 PDT) gcc の 構文と K&R の付録に載っているやつっぽい gram.y というのを Lalr にコンバートしてみました。
もう少しテスト&なんか面白いものを作ってからと思っていたのですが、時間切れ。C のヘッダの解析とかやりたかったんだけどね。ちょい長い週末一回じゃ全然足らんかった。TGZ
- gcc のほうはコンフリクトが山ほどでるので正しくコンバートできてない可能性があります。
- その後、lexer のバグをいくつかとりました。また、近日中に C99 対応にさせます。もし、上記の TGZ を元ネタに何か始めようとしてる人がいらっしゃいましたら skimu までご連絡ください。
lalr-2.0をGaucheで動かすには以下のパッチを当てる。
- hira (2004/03/28 03:53:11 PST):このパッチ、作者に送りました?LALRのアーカイブに反映されていないのですが。
diff -crN Lalr/Makefile Lalr.new/Makefile *** Lalr/Makefile Thu Jun 20 03:25:57 2002 --- Lalr.new/Makefile Fri Dec 13 19:43:38 2002 *************** *** 19,24 **** --- 19,25 ---- @echo " make plt-scheme" @echo " make sisc" @echo " make chicken" + @echo " make gauche" @echo "********************" #; ---------------------------------------------------------------------- ;# *************** *** 54,59 **** --- 55,68 ---- @echo "done." #; ---------------------------------------------------------------------- ;# + #; Gauche build ;# + #; ---------------------------------------------------------------------- ;# + gauche: + @echo "building lalr.scm for gauche..." + @./lalr.skl gauche + @echo "done." + + #; ---------------------------------------------------------------------- ;# #; documentation ;# #; ---------------------------------------------------------------------- ;# doc: diff -crN Lalr/lalr.skl Lalr.new/lalr.skl *** Lalr/lalr.skl Thu Jun 20 03:58:42 2002 --- Lalr.new/lalr.skl Fri Dec 13 19:50:53 2002 *************** *** 9,14 **** --- 9,15 ---- plt-scheme) DECLS=ports/plt-scheme.decls;; sisc) DECLS=ports/sisc.decls;; chicken) DECLS=ports/chicken.decls;; + gauche) DECLS=ports/gauche.decls;; *) echo "invalid Scheme system: $1" ; exit 1;; esac diff -crN Lalr/ports/gauche.decls Lalr.new/ports/gauche.decls *** Lalr/ports/gauche.decls Wed Dec 31 14:00:00 1969 --- Lalr.new/ports/gauche.decls Fri Dec 13 19:49:50 2002 *************** *** 0 **** --- 1,7 ---- + (begin + (define-macro (def-macro form . body) + `(define-macro ,form . ,body)) + + (def-macro (BITS-PER-WORD) 30) ;; different on LP64 processors, but for now. + (def-macro (logical-or x . y) `(logior ,x . ,y)) + )