546f9dc00b
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
45 lines
1.2 KiB
Lua
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"))
|