This is a preliminary version of TNT, the Lua Visual Linter, which probably should be called LVL. It includes Blex, a general purpose pure-Lua lexer, and lparse, a pure-Lua Lua parser, as well as a variety of utility functions and a prototype package management system. Inadequate documentation is included in each file. I'd like to find a better format but I haven't gotten around to it yet. The intent of the packaging system is to provide the ability to sandbox, but there are still a couple of missing pieces. It might be obvious where they would go ;) Meanwhile, the intention is that you set LUA_PATH (either the global or the environment variable) and then execute import.lua prior to the main program. However, that is not always convenient, particularly for CGIs, so the package includes the "combine" utility which creates a single file out of a main file and a bunch of libraries. The illustrative executable, tnt.lua, is both a command-line tool and a CGI tool; it will execute as a CGI in the unlikely case that the environment variable GATEWAY_PROTOCOL is defined. Really, it should be separated into two executables but, like many things, I haven't gotten around to it. To create a single-file executable, run the following command: ./combine -o tnt tnt.lua lib/*.lua chmod a+x tnt You could then put tnt into your cgi-bin folder and see if it works. To use tnt to highlight itself (my usual test), try this: mkdir html mkdir html/lib ./tnt -o html/?.html -v combine *.lua lib/*.lua The -v should give you an indication of how long it takes. It seems to run at about 1000 lines per second on one of my machines, which is not awful given that it is pure Lua. Suggestions, bug reports, bug fixes, and new stylesheets are all welcome. Rici rici@ricilake.net