lean2/tests/lua/token_table.lua
Leonardo de Moura 546f9dc00b chore(frontends/lean): use consistent name conventions, rename token_set to token_table
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-06-10 09:18:57 -07:00

45 lines
1.2 KiB
Lua

function display_token_table(s)
s:for_each(function(k, cmd, val, prec)
io.write(k)
if cmd then
io.write(" [command]")
end
print(" => " .. tostring(val) .. " " .. tostring(prec))
end)
end
function token_table_size(s)
local r = 0
s:for_each(function() r = r + 1 end)
return r
end
local s = token_table()
assert(is_token_table(s))
assert(token_table_size(s) == 0)
s = s:add_command_token("test", "tst1")
s = s:add_command_token("tast", "tst2")
s = s:add_command_token("tests", "tst3")
s = s:add_command_token("fests", "tst4")
s = s:add_command_token("tes", "tst5")
s = s:add_token("++", "++", 65)
s = s:add_token("++-", "plusminus")
assert(token_table_size(s) == 7)
display_token_table(s)
print("========")
local s2 = default_token_table()
display_token_table(s2)
assert(token_table_size(s2) > 0)
local sz1 = token_table_size(s)
local sz2 = token_table_size(s2)
s2 = s2:merge(s)
assert(token_table_size(s2) == sz1 + sz2)
s2 = s2:find("t"):find("e")
print("========")
display_token_table(s2)
assert(token_table_size(s2) == 3)
s2 = s2:find("s")
local cmd, val, prec = s2:value_of()
assert(val == name("tst5"))