Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This is a "shadow file" (like in Forth) for dednat5.lua... -- Note that it contains not only comments but also tests -- (mostly in eepitch blocks). -- «.expansion» (to "expansion") -- «.heads» (to "heads") -- «expansion» (to ".expansion") -- (find-dn4 "dednat5.lua" "prefixes-and-ptables") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) ee_dofile "~/dednat4/dednat5.lua" ptable_adds(expansion_table, "->", "\\to ", "|->", "\\mto ", "|-", "\\vdash ") PP(expansion_table) PP(expand("foo|->bar |- plic->naw", 1, expansion_table, {})) PP(expand_all("foo|->bar |- plic->naw", 1, expansion_table, {})) PP(expand_all("foo|->bar |- plic->|naw|", 1, expansion_table, {})) head_add("%:", "tree") head_add("%:*", "abbrev") PP(head_for("% foo")) PP(head_for("%: foo")) PP(head_for("%:*foo*bar*")) -- «heads» (to ".heads") -- (find-dn4 "dednat5.lua" "heads") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) ee_dofile "~/dednat4/dednat5.lua" head_table = {} head_add("", {aftereach = PP}) head_add("%L", { beforefirst = function () PP("beforefirst") end, aftereach = function (str) PP("aftereach:", str) end, afterlast = function () PP("afterlast") end, }) head_add("%L", { beforefirst = function () lua_lines = {} end, aftereach = function (str) tinsert(lua_lines, str) end, afterlast = function () eval(table.concat(lua_lines, "\n")) end, }) flines = { "bar", "%L PP('hello',", "%L 'world')", "foo", } linen = 1 for _,li in ipairs(flines) do PP(head_for(li)) end process_blocks() * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) ee_dofile "~/dednat4/dednat5.lua" ptable_adds(expansion_table, "->", "\\to ", "|->", "\\mto ", "|-", "\\vdash ") -- (find-LATEXfile "2009unilog-dnc.tex" "\\TeX{}") -- (fooi "«" "<<" "»" ">>") -- <<\pi>> = function (pair) return pair[1] end -- <<\pi'>> = function (pair) return pair[2] end -- local a = <<\pi>>(<<a,b>>) -- local b = <<\pi'>>(<<a,b>>) S = [[ pi1 = function (pair) return pair[1] end pi2 = function (pair) return pair[2] end <<b|->c>> = function (b) return b+2 end <<a,b|->a,c>> = function (<<a,b>>) local a = pi1(<<a,b>>) local b = pi2(<<a,b>>) local c = <<b|->c>>(b) local <<a,c>> = {a, c} return <<a,c>> end ]] S = [[ <<a,b|->a,c>> = function (<<a,b>>) local a = pi1(<<a,b>>) local b = pi2(<<a,b>>) local c = <<b|->c>>(b) local <<a,c>> = {a, c} return <<a,c>> end ]] width = "2cm" boxname = "myboxa" pre = function () print("\\setbox0=\\hbox{%") print("\\begin{minipage}[c]{"..width.."}") end post = function () print("\\end{minipage}%") print("}") print("\\savebox{\\"..boxname.."}{\\copy0}\n") end c = "!" LATEX = { vfun = function (v) return "\\verb"..c..v..c end, dfun = function (d) return "$\\angg{"..expand(d).."}$" end, pfun = function (L) print("\\par "..table.concat(L)) end, } SOURCE = { vfun = function (v) return v end, dfun = function (d) return "\171"..d.."\187" end, pfun = function (L) print("\\par \\verb"..c..table.concat(L)..c) end, prep = function () print("\\myttchars") end, } dnctable = {n=0} DNC = { vfun = function (v) return v end, dfun = function (d) if dnctable[d] then return dnctable[d] end dnctable[d] = format("dnc%02d", dnctable.n) dnctable.n = dnctable.n + 1 return dnctable[d] end, pfun = function (L) print("\\par \\verb"..c..table.concat(L)..c) end, } dncto = function (ops, S) pre() if ops.prep then ops.prep() end for _,li in ipairs(splitlines(S)) do local L = {} local replfun = function (v, d) if v ~= "" then tinsert(L, ops.vfun(v)) end tinsert(L, ops.dfun(d)) return "" end local rest = string.gsub(li, "(.-)<<(.-)>>", replfun) if rest ~= "" then tinsert(L, ops.vfun(rest)) end ops.pfun(L) end post() end do width = "5.5cm"; boxname = "myboxsrc"; dncto(SOURCE, S) width = "5.5cm"; boxname = "myboxltx"; dncto(LATEX, S) width = "4.4cm"; boxname = "myboxdnc"; dncto(DNC, S) end -- S = [[ -- «» = function (pair) return pair[1] end -- «'» = function (pair) return pair[2] end -- «b|->c» = function (b) return b+2 end -- «a,b|->a,c» = function («a,b») -- local a = «»(«a,b») -- local b = «'»(«a,b») -- local c = «b|->c»(b) -- local «a,c» = {a, c} -- return «a,c» -- end -- ]] %: %: [a,b]^1 %: ------- %: [a,b]^1 b b|->c %: ------- --------- %: a c %: --------------- %: a,c %: -------1 %: a,b|->a,c %: %: ^bar1 %: pi1 = function (pair) return pair[1] end pi2 = function (pair) return pair[2] end f = function (b) return b+2 end Axf = function (ab) local a = pi1(ab) local b = pi2(ab) local c = f(b) local ac = {a, c} return ac end -- Local Variables: -- coding: raw-text-unix -- End: