Lua Balanced

lua-users home
wiki

LuaBalanced 提供函數,可搭配字串中分隔的 Lua 程式碼片段。

首頁: https://lua-users.dev.org.tw/wiki/LuaBalanced (此頁面)

說明

此模組可以搭配 Lua 字串、Lua 註解或 Lua 運算式等。它特別適用於來源濾波或剖析內嵌於其他語言中的 Lua 程式碼片段。它的靈感來自於 Damian Conway 的 Perl 中的 Text::Balanced [1]。此實現的獨特特點在於它並未嚴格依循 Lua 語法進行詞彙分析和剖析。它沒有必要這麼做。它假設剖析期間 Lua 程式碼正確符合語法(可使用 loadstring 在稍後驗證)。藉由這樣的假設,雖然能簡化分隔順序的萃取,卻仍能保有穩健性,且它支援 Lua 語法的超集。這段完全以 Lua 編寫的程式碼,不到 200 行的 Lua 程式碼(可拿來與 MetaLua 中使用的 Yueliang 相較,單是詞彙分析器就需要數百行)。

使用這個模組的計畫: ListComprehensions

範例

local lb = require "luabalanced"

-- Extract Lua expression starting at position 4.
print(lb.match_expression("if x^2 + x > 5 then print(x) end", 4))
--> x^2 + x > 5     16

-- Extract Lua string starting at (default) position 1.
print(lb.match_string([["test\"123" .. "more"]]))
--> "test\"123"     12

-- Break Lua code into code types.
lb.gsub([[
  local x = 1  -- test
  print("x=", x)
]], function(u, s)
  print(u .. '[' .. s .. ']')
end)
--[[output:
e[  local x = 1  ]
c[-- test
]
e[  print(]
s["x="]
e[, x)
]
]]

來源

可從 [github] 下載。

作者

DavidManura

狀態

此模組很新,可能仍然有些 bug。


RecentChanges · 偏好設定
編輯 · 歷程
最後編輯於 2010 年 9 月 11 日格林威治標準時間下午 6:11 (diff)