[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: RE: faster way of transfering Lua src code to AST
- From: Dan Tull <dtull@...>
- Date: Fri, 7 Jun 2013 15:18:45 -0700
> ...I find the performance of metalua is not that great.
> ... la loadstring is x100 faster than metalua lua
The static analyzer we use for live linting feedback in our Lua
IDE is based (roughly) on loadstring/file and a routine that
turns a proto structure into a Lua table structure (with all the
actual analysis logic written in Lua).
I've considered switching to metalua, but was suspicious that
it's performance would be insufficient for our needs. It sounds
like those concerns were warranted.
I also wanted to be sure the linter's definition of valid Lua
source was guaranteed to match that of Lua itself. It's all too
easy to have a small discrepancy in the parser and end up with
an interpretation that doesn't match the "real" one. A number
of supposed Lua parsers out there miss corner cases* and fail
to parse source that's valid, mis-interpret its structure, or fail
to notice mistakes that should be compilation errors.
> ...if it is easy to transfer Lua compiler into AST with line info?
I've seriously considered doing this, in order to retain _character_
level info about the elements within a single line and retain a few
other pieces of information about the source structure that are
lost in the translation of source into bytecode.
I even wrote all the unit tests for the linter in terms of mappings
from Lua source to structured results so that if I ever decided to
go make such a change, it'd be easy to rewrite the analysis logic
and be pretty sure I didn't change its outward behavior.
So far, I've found the existing method sufficient (and the speed is
a nice perk, too), but every once in a while I run into something
that gets me thinking about having a proper AST.
Lua Tools Dev
* the equals signs in block comments/quotes are one forgotten
detail, but there are others