|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/ELpeg3.lua.html
-- http://anggtwu.net/LUA/ELpeg3.lua
-- (find-angg "LUA/ELpeg3.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- This is just a test for ELPeg1.lua (the name is bad).
--
-- (defun e1 () (interactive) (find-angg "LUA/ELpeg1.lua"))
-- (defun e2 () (interactive) (find-angg "LUA/ELpeg2.lua"))
-- (defun e3 () (interactive) (find-angg "LUA/ELpeg3.lua"))
--
-- «.Vlast» (to "Vlast")
-- «.paren» (to "paren")
require "ELpeg1" -- (find-angg "LUA/ELpeg1.lua")
gr,V,VA,VE,PE = Gram.new()
_ = S(" ")^0
-- «Vlast» (to ".Vlast")
-- (find-angg "LUA/ELpeg1.lua" "Gram" "local V =")
setmetatable(V, {
__call = function (_,name) return lpeg.V(name) end,
__index = function (_,name) return lpeg.V(name) end,
__newindex = function (_,name,pat) Vlast = pat; gr.entries[name] = pat end,
})
-- «paren» (to ".paren")
paren = function (o,c,pat) return Cast(o..c, P(o)*_* pat *_*P(c)) end
plus = function (...) return mkast("+", ...) end
word = function (s) return mkast("word", s) end
und = function (o,s) return mkast("und", o, word(s)) end
-- E[ "g(x)" ] = ap("g", "x")
-- E[ "f(g(x))" ] = ap("f", E"g(x)")
-- E[".(f(g(x)))" ] =
-- E[".(f(g(x))) [f(y):=e^y;;g(x):=4x]"] =
VA.word = Cs(R("AZ","az","09","__")^1)
V.opadd = Cs"+"
V.opund = P"." * Cc"und"
V.exprbasic = paren("{", "}", V.expr) + V.word
V.exprund = assocl(Vlast, V.opund)
V.expradd = assocl(Vlast, V.opadd)
V.expr = Vlast
fmts = VTable {}
totex00 = ToTeX0 {fmts=fmts}
fmts.word = "<1>"
fmts.und = "\\underbrace{<1>}_{<2>}"
fmts["+"] = "<1> + <2>"
--[[
* (code-etv2 "SHOW2DIR" "~/LUA/" "Show2-outer")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "ELpeg3.lua"
AST.alttags = {add="*"}
-- (find-angg "LUA/ELpeg1.lua" "E-tests")
= grcm("expr", "{T_1.4 + {T_2.5 + T_3.5}.10}.14")
= E["{T_1.4 + {T_2.5 + T_3.5}.10}.14"]
= E["{T_1.4 + {T_2.5 + T_3.5}.10}.14"]:totex()
E["{T_1.4 + {T_2.5 + T_3.5}.10}.14"]:totex():show()
E["{T_1.4 + {T_2.5 + T_3.5}.10}.14"]:show()
E["{T_1.4 + {T_2.5 + T_3.5}.10}.14"]:show(2)
* (etv)
--]]
-- Local Variables:
-- coding: utf-8-unix
-- End: