Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
-- Loaded by:
-- (find-dn5 "tests/testpgf.tex")

print("hello")
pgfshapes = {}
pgfbody = function ()
    local outstr = ""
    local printf = function (...) outstr = outstr..format(...) end
    local mark = function (noden) nodes[noden].used = true end
    local gettag = function (node) return node.tag or ":"..node.noden end
    for _,ar in ipairs(arrows) do
      mark(ar.from)
      mark(ar.to)
    end
    for _,node in ipairs(nodes) do
      if node.used then
        local tag, TeX = gettag(node), gettag(node)
        local px, py = (node.x - 100) / 20, (node.y - 100) / -20
        printf("    \\node (%s) at (%s,%s) {%s};\n", tag, px, py, TeX)
      end
    end
    for _,ar in ipairs(arrows) do
      local shape = ar.shape
      local tagfrom, tagto = gettag(nodes[ar.from]), gettag(nodes[ar.to])
      printf("    \\draw [%s] (%s) to node {} (%s);\n", shape, tagfrom, tagto)
    end
    return outstr
  end
pgfdef = function (name, hyperlink)
    name = name or diagramname
    hyperlink = hyperlink or "  % no hyperlink yet"
    return format("\\defpgfdiag{%s}{%s\n%s}", name, hyperlink, pgfbody())
  end
-- (find-dn5 "diagforth.lua" "enddiagram")
forths["endpgfdiagram"] = function ()
    output(pgfdef(getword() or diagramname))
  end

output [[
  \def\defpgfdiag#1#2{\expandafter\def\csname diag-#1\endcsname
    {\begin{tikzpicture}#2\end{tikzpicture}}}
]]