diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-05-09 13:34:33 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-05-09 13:35:04 -0700 |
| commit | 1a755ddee807fe4e1b683f32b21d710dc78600a2 (patch) | |
| tree | 004709fed6704e50b099430945a9adc66ce16e01 /core/operators.nom | |
| parent | 126f51f955351a4ce85f3f1e6da6e9219ec7e23a (diff) | |
Added tentative support for luajit (depends on pure-lua LPEG
implementation).
Diffstat (limited to 'core/operators.nom')
| -rw-r--r-- | core/operators.nom | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/operators.nom b/core/operators.nom index 88b0374..fca56d5 100644 --- a/core/operators.nom +++ b/core/operators.nom @@ -163,7 +163,14 @@ immediately # Unary operators compile [- %] to: Lua value "(- \(% as lua expr))" compile [not %] to: Lua value "(not \(% as lua expr))" - compile [length of %list] to: Lua value "(#\(%list as lua expr))" + compile [length of %list] to + # A bit of a hack so that luajit works properly. + Lua value ".." + (function(l) + local mt = getmetatable(l); + if mt and mt.__len then return mt.__len(l) end + return #l + end)(\(%list as lua expr)) # Update operators immediately |
