Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/LUA/Lisp1.lua.html -- http://angg.twu.net/LUA/Lisp1.lua -- (find-angg "LUA/Lisp1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Parse Lisp with Lpeg, and draw the result as a tree. -- -- (defun e () (interactive) (find-angg "LUA/Lisp1.lua")) -- (find-es "lpeg" "globals") -- (find-es "lpeg" "lpeg-quickref") require "Tree1" -- (find-anggfile "LUA/Tree1.lua") require "lpeg" B,C,P,R,S,V = lpeg.B,lpeg.C,lpeg.P,lpeg.R,lpeg.S,lpeg.V Cb,Cc,Cf,Cg = lpeg.Cb,lpeg.Cc,lpeg.Cf,lpeg.Cg Cp,Cs,Ct = lpeg.Cp,lpeg.Cs,lpeg.Ct Carg,Cmt = lpeg.Carg,lpeg.Cmt packlist = function (a, ...) if type(a) == "string" then return Tree {[0]=a, ...} end return Tree {a, ...} end sexp = P({ "ssexp", spaces = S(" \t\n")^1, optspaces = S(" \t\n")^0, symbolchar = R("!~") - S([[()"\]]), symbol = V"symbolchar" ^ 1, sexp = C(V"symbol") + V"list", list = ("(" * V"optspaces" * (V"sexp" * V"optspaces")^0 * ")") / packlist, ssexp = V"optspaces" * V"sexp", }) str = " ((MLIST SIMP) $X $Y $Z)" str = [[ ((MEQUAL SIMP) ((%INTEGRATE SIMP) ((MTIMES SIMP) (($GP SIMP) $X) (($FP SIMP) (($G SIMP) $X))) $X $A $B) ((%INTEGRATE SIMP) (($FP SIMP) $U) $U (($G SIMP) $A) (($G SIMP) $B))) ]] --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Lisp1.lua" = sexp:match(str) --]==] -- Local Variables: -- coding: utf-8-unix -- End: