|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://angg.twu.net/LATEX/2021lean.lua.html
-- http://angg.twu.net/LATEX/2021lean.lua
-- (find-angg "LATEX/2021lean.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e () (interactive) (find-angg "LATEX/2021lean-nng.tex"))
-- (defun l () (interactive) (find-angg "LATEX/2021lean.lua"))
-- «.lean_translate» (to "lean_translate")
-- «.lean_translate-tests» (to "lean_translate-tests")
-- «.lean_tactranslate» (to "lean_tactranslate")
-- «.lean_tactranslate-tests» (to "lean_tactranslate-tests")
-- «.use_proofsty_lean» (to "use_proofsty_lean")
re = require "re" -- (find-angg "LUA/Re.lua")
-- _ _ _ _
-- | | ___ __ _ _ __ | |_ _ __ __ _ _ __ ___| | __ _| |_ ___
-- | |/ _ \/ _` | '_ \ | __| '__/ _` | '_ \/ __| |/ _` | __/ _ \
-- | | __/ (_| | | | | | |_| | | (_| | | | \__ \ | (_| | || __/
-- |_|\___|\__,_|_| |_|___\__|_| \__,_|_| |_|___/_|\__,_|\__\___|
-- |_____|
--
-- «lean_translate» (to ".lean_translate")
lean_specials = {
["["] = "⟦",
["]"] = "⟧",
[":"] = "{:}",
["..."] = "\\ldots ",
[".."] = ".\\;",
["."] = "\\,",
[" "] = "\\,",
}
lean_gram = [=[
sfword <- {~ ("" -> "\textsf{") sfchars ("" -> "}")~}
sfchars <- sfchar+
sfchar <- ([A-Za-z0-9]+ / ('_' -> '\_'))
leansspecial <- ( '[' / ']' / ':' / '...' / ' ' ) -> specials
leanspecial <- ( '[' / ']' / ':' / '...' / '..' / '.' ) -> specials
leanchar <- [^\{}]
leansstr <- {~ (sfword / leansspecial / leanchar)* ~}
leanstr <- {~ (sfword / leanspecial / leanchar)* ~}
]=]
lean_Re0 = Re { grammar = lean_gram, defs = {specials = lean_specials} }
lean_stranslate = lean_Re0:cc 'top <- leansstr'
lean_translate = lean_Re0:cc 'top <- leanstr'
lean_trimtranslate = function (str) return lean_stranslate(bitrim(str)) end
-- «lean_translate-tests» (to ".lean_translate-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "2021lean.lua"
= lean_translate [=[ foo_bar+add0 ]=]
= lean_stranslate [=[ foo_bar+add0 ]=]
= lean_stranslate [=[ (h n):mynat ]=]
= lean_trimtranslate [=[ (h n):mynat ]=]
--]==]
-- _ _ _ _ _
-- | | ___ __ _ _ __ | |_ __ _ ___| |_ _ __ __ _ _ __ ___| | __ _| |_ ___
-- | |/ _ \/ _` | '_ \ | __/ _` |/ __| __| '__/ _` | '_ \/ __| |/ _` | __/ _ \
-- | | __/ (_| | | | | | || (_| | (__| |_| | | (_| | | | \__ \ | (_| | || __/
-- |_|\___|\__,_|_| |_|___\__\__,_|\___|\__|_| \__,_|_| |_|___/_|\__,_|\__\___|
-- |_____|
--
-- «lean_tactranslate» (to ".lean_tactranslate")
lean_tacgram = [=[
inner <- [^{}] / ('{' inner* '}')
arg <- { '{' inner* '}' }
argt <- {~'{' { inner* } -> translate '}'~}
lean <- {~ '\Lean' argt ~}
tac <- {~ '\Tac' argt arg ~}
by <- {~ '\By' arg ~}
]=]
lean_tacdefs = { translate = lean_trimtranslate }
lean_tacRe0 = Re { grammar = lean_tacgram, defs = lean_tacdefs }
lean_tactranslate0 = lean_tacRe0:cc 'top <- lean / tac / by / {.*}'
lean_tactranslate = function (str) return lean_tactranslate0(bitrim(str)) end
-- «lean_tactranslate-tests» (to ".lean_tactranslate-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "2021lean.lua"
= lean_trimtranslate 'foo'
= lean_tacRe0:cc 'top <- argt' [=[{foo}]=]
= lean_tacRe0:cc 'top <- lean' [=[\Lean{foo}]=]
= lean_tactranslate [=[ foo bar ]=]
= lean_tactranslate [=[ \By{foo bar} ]=]
= lean_tactranslate [=[ \Lean{foo bar} ]=]
= lean_tactranslate [=[ \Tac{foo bar}{plic} ]=]
= lean_tactranslate [=[ \tac{foo bar}{plic} ]=]
--]==]
-- ____ __ ____ _
-- | _ \ _ __ ___ ___ / _/ ___|| |_ _ _
-- | |_) | '__/ _ \ / _ \| |_\___ \| __| | | |
-- | __/| | | (_) | (_) | _|___) | |_| |_| |
-- |_| |_| \___/ \___/|_| |____/ \__|\__, |
-- |___/
--
-- «use_proofsty_lean» (to ".use_proofsty_lean")
-- (find-dn6 "heads6.lua" "tree-head")
-- (find-dn6 "treetex.lua" "ProofSty")
-- (find-dn6 "treetex.lua" "TreeNode")
-- (find-dn6 "treetex.lua" "TreeNode" "TeX_deftree =")
--
use_proofsty_lean = function ()
--
proofsty = ProofSty.new()
proofsty.unabbrev = function (ps, str)
return lean_translate(str)
end
TreeNode.__index.TeX_deftree = function (tn, name, link)
return proofsty:todefded(tn, name, link)
end
--
end
-- Old tests:
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "2021lean.lua"
lean_translate 'foo_bar0plic.[bletch]'
PP(lean_translate 'foo_bar0plic.[bletch]')
loaddednat6()
output = print
require "block" -- (find-dn6 "block.lua")
-- (find-LATEX "2021lean-nng.tex" "tree")
texfile0("~/LATEX/2021lean-nng.tex")
= tf
tf:processuntil(tf.j)
= tf
-- (find-dn6 "treesegs.lua" "allsegments")
-- (find-dn6 "heads6.lua" "tree-head")
-- (find-dn6 "treetex.lua" "TreeNode")
-- (find-dn6 "treetex.lua" "TreeNode" "TeX_deftree =")
--
= allsegments:last(2000)
= allsegments:last(2000):rootnode()
= allsegments:last(2000):rootnode():totreenode()
= allsegments:last(2000):rootnode():totreenode():TeX_deftree("FOO")
tn = allsegments:last(2000):rootnode():totreenode()
--]]
-- Local Variables:
-- coding: utf-8-unix
-- End: