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))
+ )