Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
start of the common lisp backend
  • Loading branch information
pmurias committed Dec 31, 2010
1 parent 025e408 commit c70d541
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
37 changes: 37 additions & 0 deletions cl-backend/backend.lisp
@@ -0,0 +1,37 @@

(load (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname)))
(ql:quickload "cl-json")
(ql:quickload "fare-matcher")

(defun compile-sub (sub)
(fare-matcher:match sub
((list
sub ; 'sub' literal
name
outer ; raw xref
flags
dunno-what-that-is ; [ map { $_->xref->[1] } @{ $self->zyg } ]
parametric-role-hack
augment-hack
hint-hack
is-phaser
body-of
in-class
cur-pkg
class
ltm
exports
signature-params
lexicals
nam
) (list 'this-is-a-sub nam))
)
)

(defun compile-unit (nam)
(fare-matcher:match nam
((list mainline-xref name log setting bottom-ref filename modtime x-ref t-deps root-stash) (mapcar #'compile-sub x-ref))
)
)
(format t "~a" (compile-unit (json:decode-json (open "test.nam"))))
1 change: 1 addition & 0 deletions cl-backend/test.nam
@@ -0,0 +1 @@
[["MAIN",0,"mainline"],"MAIN",[],"CORE",null,null,null,[["sub","mainline",["CORE",15,"ANON"],1,[1],null,null,null,null,null,null,["GLOBAL"],"Sub",null,null,null,[["&foo","sub","MAIN",1,"foo"]],["ann","foo.p6",5,["prog",["sink",["ann","foo.p6",3,["scopedlex","&foo"]]],["sink",["ann","foo.p6",4,["subcall","\u0000",["fetch",["scopedlex","&say"]],["ann","foo.p6",4,["const",["box","Num",["double",1]]]]]]],["ann","foo.p6",5,["subcall","",["fetch",["scopedlex","&foo"]]]]]]],["sub","foo",["MAIN",0,"mainline"],16,[],null,null,null,null,null,null,["GLOBAL"],"Sub",null,[],[["$_",48,"$_",[],null]],[["$_","simple",4]],["ann","foo.p6",3,["prog",["ann","foo.p6",2,["subcall","\u0000",["fetch",["scopedlex","&say"]],["ann","foo.p6",2,["const",["box","Num",["double",2]]]]]]]]]],[["CORE","/home/pawel/new_order/niecza/lib/CORE.setting",1293709786],["SAFE","/home/pawel/new_order/niecza/lib/SAFE.setting",1293709786]],[["CORE:0","var",["CORE",1,"CORE"],[]],["CORE:1","var",["CORE",5,"IO"],[]],["CORE:2","var",["CORE",7,"TextReader"],[]],["GLOBAL","var",null,[]],["PROCESS","var",null,[["$IN","var",["",0],null],["@ARGS","var",["",0],null]]],["SAFE:0","var",["SAFE",1,"SAFE"],[]],["SAFE:1","var",["SAFE",3,"Mu"],[]],["SAFE:10","var",["SAFE",98,"Scalar"],[]],["SAFE:11","var",["SAFE",100,"Sub"],[]],["SAFE:12","var",["SAFE",105,"ClassHOW"],[]],["SAFE:13","var",["SAFE",109,"EnumType"],[]],["SAFE:14","var",["SAFE",111,"Bool"],[["False","var",["",0],null],["True","var",["",0],null]]],["SAFE:15","var",["SAFE",172,"CallFrame"],[]],["SAFE:16","var",["SAFE",194,"Iterator"],[]],["SAFE:17","var",["SAFE",198,"IterCursor"],[]],["SAFE:18","var",["SAFE",201,"Whatever"],[]],["SAFE:19","var",["SAFE",203,"EMPTY"],[]],["SAFE:2","var",["SAFE",20,"Any"],[]],["SAFE:20","var",null,[]],["SAFE:21","var",null,[]],["SAFE:22","var",["SAFE",205,"Parcel"],[]],["SAFE:23","var",["SAFE",214,"List"],[]],["SAFE:24","var",["SAFE",253,"Array"],[]],["SAFE:25","var",["SAFE",258,"Hash"],[]],["SAFE:26","var",["SAFE",286,"Enum"],[]],["SAFE:27","var",["SAFE",294,"Pair"],[]],["SAFE:28","var",["SAFE",300,"GatherIterator"],[]],["SAFE:29","var",["SAFE",323,"Cursor"],[]],["SAFE:3","var",null,[]],["SAFE:30","var",["SAFE",345,"Match"],[]],["SAFE:31","var",["SAFE",369,"Regex"],[]],["SAFE:32","var",["SAFE",375,"Grammar"],[]],["SAFE:4","var",null,[]],["SAFE:5","var",null,[]],["SAFE:6","var",["SAFE",29,"Cool"],[]],["SAFE:7","var",["SAFE",72,"Capture"],[]],["SAFE:8","var",["SAFE",80,"Num"],[]],["SAFE:9","var",["SAFE",89,"Str"],[]]]]

0 comments on commit c70d541

Please sign in to comment.