Skip to content

Instantly share code, notes, and snippets.

@wecing
Created February 23, 2013 06:07
Show Gist options
  • Save wecing/5018649 to your computer and use it in GitHub Desktop.
Save wecing/5018649 to your computer and use it in GitHub Desktop.
The whole parsed data structure, without pretty-printing...
-- compiler-in-haskell $ ./dlc examples/oop/
[PRootClassDef ("Pos",Nothing,[Right (Nothing,False,(PInt,[("x",Nothing)])),Right (Just PProtected,Fal
se,(PBool,[("b",Nothing)])),Left (Nothing,False,(PVoid,"init",[],[Right (PNull,PExprAssign (PNull,PExp
rDotAccess (PNull,PExprVar "self") "x") (PNull,PExprInt 42)),Right (PNull,PExprAssign (PNull,PExprDotA
ccess (PNull,PExprVar "self") "b") (PNull,PExprBool True))])),Left (Nothing,False,(PVoid,"dumpX",[],[L
eft (PStmtPrint [(PNull,PExprDotAccess (PNull,PExprVar "this") "x")]),Left (PStmtPrint [(PNull,PExprCh
ar 10)])])),Left (Nothing,False,(PVoid,"dumpB",[],[Left (PStmtPrint [(PNull,PExprStr "b is "),(PNull,P
ExprDotAccess (PNull,PExprVar "self") "b"),(PNull,PExprChar 10)])])),Left (Nothing,False,(PVoid,"setX"
,[(PInt,"x")],[Right (PNull,PExprAssign (PNull,PExprDotAccess (PNull,PExprVar "this") "x") (PNull,PExp
rVar "x"))])),Left (Nothing,False,(PVoid,"setB",[(PBool,"b")],[Right (PNull,PExprAssign (PNull,PExprDo
tAccess (PNull,PExprVar "this") "b") (PNull,PExprVar "b"))]))]),PRootClassDef ("Point",Just "Pos",[Rig
ht (Nothing,False,(PInt,[("y",Nothing)])),Left (Nothing,False,(PVoid,"init",[],[Right (PNull,PExprFunC
all (Just (PNull,PExprVar "super")) "init" []),Right (PNull,PExprFunCall (Just (PNull,PExprVar "this")
) "setY" [(PNull,PExprInt 0)])])),Left (Nothing,False,(PVoid,"dumpY",[],[Left (PStmtPrint [(PNull,PExp
rDotAccess (PNull,PExprVar "self") "y")]),Left (PStmtPrint [(PNull,PExprChar 10)])])),Left (Nothing,Fa
lse,(PVoid,"dumpPoint",[],[Left (PStmtPrint [(PNull,PExprChar 40),(PNull,PExprDotAccess (PNull,PExprVa
r "self") "x"),(PNull,PExprStr ", "),(PNull,PExprDotAccess (PNull,PExprVar "self") "y"),(PNull,PExprSt
r ")\n")])])),Left (Nothing,False,(PVoid,"setY",[(PInt,"y")],[Right (PNull,PExprAssign (PNull,PExprDot
Access (PNull,PExprVar "this") "y") (PNull,PExprVar "y"))])),Left (Nothing,False,(PVoid,"setP",[(PInt,
"x"),(PInt,"y")],[Right (PNull,PExprFunCall (Just (PNull,PExprVar "this")) "setX" [(PNull,PExprVar "x"
)]),Right (PNull,PExprFunCall (Just (PNull,PExprVar "this")) "setY" [(PNull,PExprVar "y")])]))]),PRoot
MethodDef (PInt,"main",[],[Left (PStmtVarDef (PObjClass "Point",[("p",Just (PNull,PExprNewObj "Point")
)])),Right (PNull,PExprFunCall (Just (PNull,PExprVar "p")) "dumpPoint" []),Right (PNull,PExprFunCall (
Just (PNull,PExprVar "p")) "setP" [(PNull,PExprInt 1),(PNull,PExprInt 2)]),Right (PNull,PExprFunCall (
Just (PNull,PExprVar "p")) "dumpPoint" []),Left (PStmtVarDef (PArray (PObjClass "Point"),[("parr",Just
(PNull,PExprNewArr (PObjClass "Point") [(PNull,PExprInt 10)]))])),Left (PStmtFor (Left (PStmtVarDef (
PInt,[("i",Just (PNull,PExprInt 0))]))) (PNull,PExprLe (PNull,PExprVar "i") (PNull,PExprFunCall (Just
(PNull,PExprVar "parr")) "length" [])) (PNull,PExprVInc (PNull,PExprVar "i")) [Right (PNull,PExprAssig
n (PNull,PExprArrAccess (PNull,PExprVar "parr") [(PNull,PExprVar "i")]) (PNull,PExprNewObj "Point"))])
,Left (PStmtFor (Left (PStmtVarDef (PInt,[("i",Just (PNull,PExprInt 0))]))) (PNull,PExprLe (PNull,PExp
rVar "i") (PNull,PExprFunCall (Just (PNull,PExprVar "parr")) "length" [])) (PNull,PExprVInc (PNull,PEx
prVar "i")) [Right (PNull,PExprFunCall (Just (PNull,PExprArrAccess (PNull,PExprVar "parr") [(PNull,PEx
prVar "i")])) "setP" [(PNull,PExprVar "i"),(PNull,PExprVar "i")]),Right (PNull,PExprFunCall (Just (PNu
ll,PExprArrAccess (PNull,PExprVar "parr") [(PNull,PExprVar "i")])) "dumpPoint" [])]),Left (PStmtReturn
(PNull,PExprInt 0))]),PRootClassDef ("__DL_Array",Nothing,[Right (Just PProtected,False,(PInt,[("__dl
_bufptr",Nothing)])),Right (Just PProtected,False,(PInt,[("__dl_length",Nothing)])),Right (Just PProte
cted,False,(PInt,[("__dl_bsize",Nothing)])),Left (Just PProtected,False,(PVoid,"init",[],[])),Left (No
thing,True,(PObjClass "__DL_Array","__dl_create",[(PInt,"len"),(PInt,"bsize")],[Left (PStmtVarDef (POb
jClass "__DL_Array",[("a",Just (PNull,PExprNewObj "__DL_Array"))])),Right (PNull,PExprAssign (PNull,PE
xprDotAccess (PNull,PExprVar "a") "__dl_bufptr") (PNull,PExprFunCall Nothing "__dlib_malloc" [(PNull,P
ExprMul (PNull,PExprVar "len") (PNull,PExprVar "bsize"))])),Right (PNull,PExprAssign (PNull,PExprDotAc
cess (PNull,PExprVar "a") "__dl_length") (PNull,PExprVar "len")),Right (PNull,PExprAssign (PNull,PExpr
DotAccess (PNull,PExprVar "a") "__dl_bsize") (PNull,PExprVar "bsize")),Left (PStmtReturn (PNull,PExprV
ar "a"))])),Left (Nothing,True,(PObjClass "__DL_Array","__dl_copyFromCBytes",[(PInt,"ptr"),(PInt,"len"
),(PInt,"bsize")],[Left (PStmtVarDef (PObjClass "__DL_Array",[("a",Just (PNull,PExprFunCall (Just (PNu
ll,PExprVar "__DL_Array")) "__dl_create" [(PNull,PExprVar "len"),(PNull,PExprVar "bsize")]))])),Right
(PNull,PExprFunCall Nothing "__dlib_memcpy" [(PNull,PExprDotAccess (PNull,PExprVar "a") "__dl_bufptr")
,(PNull,PExprVar "ptr"),(PNull,PExprMul (PNull,PExprVar "len") (PNull,PExprVar "bsize"))]),Left (PStmt
Return (PNull,PExprVar "a"))])),Left (Just PProtected,False,(PVoid,"__dl_decref",[],[Left (PStmtIf (PN
ull,PExprEq (PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_ref") (PNull,PExprInt 0)) [Right (PNul
l,PExprFunCall Nothing "__dlib_free" [(PNull,PExprVar "__dl_bufptr")])] []),Right (PNull,PExprFunCall
(Just (PNull,PExprVar "super")) "__dl_decref" [])])),Left (Nothing,False,(PInt,"__dl_get",[(PInt,"idx"
)],[Left (PStmtReturn (PNull,PExprFunCall Nothing "__dlib_arr_get" [(PNull,PExprDotAccess (PNull,PExpr
Var "self") "__dl_bufptr"),(PNull,PExprVar "idx"),(PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_
bsize")]))])),Left (Nothing,False,(PVoid,"__dl_set",[(PInt,"idx"),(PInt,"d")],[Right (PNull,PExprFunCa
ll Nothing "__dlib_arr_set" [(PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_bufptr"),(PNull,PExpr
Var "d"),(PNull,PExprVar "idx"),(PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_bsize")])])),Left
(Nothing,False,(PInt,"length",[],[Left (PStmtReturn (PNull,PExprDotAccess (PNull,PExprVar "self") "__d
l_length"))]))]),PRootClassDef ("__DL_RefArray",Just "__DL_Array",[Left (Just PProtected,False,(PVoid,
"__dl_decref",[],[Left (PStmtIf (PNull,PExprEq (PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_ref
") (PNull,PExprInt 0)) [Left (PStmtFor (Left (PStmtVarDef (PInt,[("i",Just (PNull,PExprInt 0))]))) (PN
ull,PExprLe (PNull,PExprVar "i") (PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_length")) (PNull,
PExprVInc (PNull,PExprVar "i")) [Right (PNull,PExprFunCall (Just (PNull,PExprConvType (PObjClass "Obje
ct") (PNull,PExprFunCall (Just (PNull,PExprVar "self")) "__dl_get" [(PNull,PExprVar "i")]))) "__dl_dec
ref" [])])] []),Right (PNull,PExprFunCall (Just (PNull,PExprVar "super")) "__dl_decref" [])]))]),PRoot
ClassDef ("Object",Nothing,[Right (Just PProtected,False,(PInt,[("__dl_cid",Nothing)])),Right (Just PP
rotected,False,(PInt,[("__dl_ref",Nothing)])),Left (Nothing,False,(PVoid,"init",[],[Right (PNull,PExpr
Assign (PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_ref") (PNull,PExprInt 0))])),Left (Just PPr
otected,False,(PVoid,"__dl_incref",[],[Right (PNull,PExprVInc (PNull,PExprDotAccess (PNull,PExprVar "s
elf") "__dl_ref"))])),Left (Just PProtected,False,(PVoid,"__dl_decref",[],[Left (PStmtIf (PNull,PExprL
eq (PNull,PExprDecV (PNull,PExprDotAccess (PNull,PExprVar "self") "__dl_ref")) (PNull,PExprInt 0)) [Ri
ght (PNull,PExprFunCall Nothing "__dlib_free" [(PNull,PExprVar "self")])] [])]))])]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment