This is a Lua program that can be used to check the indentation of another Lua program. It checks that block beginners and enders, specifically if
/elseif
/else
/end
, repeat
/until
, do
/end
, while
/end
, for
/end
are at the same level of indentation, and reports any violation. This is most useful for finding where the missing end
is in several nested blocks, which Lua tends to report well past where the problem actually is.
For example, if your program looks like:
if a = b then
if c = d then
return x
else
return y
elseif e = f then
return z
end
Lua will typically report an error at the end of the file, while the problem is the missing end
right after return y
. If you follow this kind of rigorous indentation, this program can help you find the point that violates this indentation, which is typically where the problem is.
It accepts code with mixed tab/spaces; the default tab size is 8 but you can change it with option -t
.
Note this program won't check the syntax of the code. The code incorporates a quite complete scanner, but the parser is quite primitive and only looks for specific opening/closing tokens without much regard for proper structure.