lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



On 21-Oct-04, at 10:22 PM, Mike Crowe wrote:

I see I have to declare function before using.

No you don't, unless you are writing mutually recursive local functions.

However, it appears that the function executes once as the system runs. I had to put in the statement below "if tab[1] then" to catch the first run with a nil. Shouldn't the function only been called when I call it below?

Yes, so I have no idea what you are doing to cause it to run.

I can only imagine what you are doing, but here's an easy sample:

local function printTable(tab)
  for i, val in ipairs(tab) do
    print("  Token "..i..": "..val)
  end
end

-- This just splits the line on whitespace --
local function parseLine(line)
  local t = {}
  for w in string.gfind(line, "([%S]+)") do
    table.insert(t, w)
  end
  return t
end

-- Test run on this very program
local lineno = 1
for line in io.lines("test.lua") do
  local t = parseLine(line)
  print("Line "..lineno)
  printTable(t)
  lineno = lineno + 1
end


-- Partial output (try it yourself): rlake@freeb:~$ lua test.lua Line 1 Token 1: local Token 2: function Token 3: printTable(tab) Line 2 Token 1: for Token 2: i, Token 3: val Token 4: in Token 5: ipairs(tab) Token 6: do Line 3 Token 1: print(" Token 2: Token Token 3: "..i..": Token 4: "..val) Line 4 Token 1: end Line 5 Token 1: end