chunk
stat list
stat list
stat list
stat list
stat list
stat list
stat list
stat list
stat list
stat
keyword function
function
funcname
dotted name
Name
fib
optional colon name element
funcbody
(
optional parlist
namelist
Name
n
)
block
chunk
stat list
stat list
stat
varlist
var
Name
N
=
explist
exp
exp
var
Name
N
+
exp
Number
1
stat
keyword if
if
exp
exp
var
Name
n
<
exp
Number
2
keyword then
then
block
chunk
laststat
keyword return
return
optional explist
explist
exp
var
Name
n
elseif sequence
optional else block
keyword else
else
block
chunk
laststat
keyword return
return
optional explist
explist
exp
exp
exp
var
Name
fib
args
(
optional explist
explist
exp
exp
var
Name
n
-
exp
Number
1
)
+
exp
exp
var
Name
fib
args
(
optional explist
explist
exp
exp
var
Name
n
-
exp
Number
2
)
keyword end
end
keyword end
end
stat
keyword function
function
funcname
dotted name
Name
cache
optional colon name element
funcbody
(
optional parlist
namelist
Name
f
)
block
chunk
stat list
stat
keyword local
local
namelist
Name
c
optional namelist initialization
=
explist
exp
tableconstructor
{
}
laststat
keyword return
return
optional explist
explist
exp
function
keyword function
function
funcbody
(
optional parlist
namelist
Name
x
)
block
chunk
stat list
stat list
stat
keyword local
local
namelist
Name
y
optional namelist initialization
=
explist
exp
var
prefixexp
var
Name
c
[
exp
var
Name
x
]
stat
keyword if
if
exp
keyword not
not
exp
var
Name
y
keyword then
then
block
chunk
stat list
stat list
stat
varlist
var
Name
y
=
explist
exp
exp
var
Name
f
args
(
optional explist
explist
exp
var
Name
x
)
stat
varlist
var
prefixexp
var
Name
c
[
exp
var
Name
x
]
=
explist
exp
var
Name
y
elseif sequence
optional else block
keyword end
end
laststat
keyword return
return
optional explist
explist
exp
var
Name
y
keyword end
end
keyword end
end
stat
keyword function
function
funcname
dotted name
Name
test
optional colon name element
funcbody
(
optional parlist
namelist
Name
s
Name
f
)
block
chunk
stat list
stat list
stat list
stat list
stat list
stat
varlist
var
Name
N
=
explist
exp
Number
0
stat
keyword local
local
namelist
Name
c
optional namelist initialization
=
explist
exp
exp
var
prefixexp
var
Name
os
.
Name
clock
args
(
optional explist
)
stat
keyword local
local
namelist
Name
v
optional namelist initialization
=
explist
exp
exp
var
Name
f
args
(
optional explist
explist
exp
var
Name
n
)
stat
keyword local
local
namelist
Name
t
optional namelist initialization
=
explist
exp
exp
exp
var
prefixexp
var
Name
os
.
Name
clock
args
(
optional explist
)
-
exp
var
Name
c
stat
functioncall
prefixexp
var
Name
print
args
(
optional explist
explist
exp
var
Name
s
exp
var
Name
n
exp
var
Name
v
exp
var
Name
t
exp
var
Name
N
)
keyword end
end
stat
varlist
var
Name
n
=
explist
exp
exp
var
prefixexp
var
Name
arg
[
exp
Number
1
]
keyword or
or
exp
Number
24
stat
varlist
var
Name
n
=
explist
exp
exp
var
Name
tonumber
args
(
optional explist
explist
exp
var
Name
n
)
stat
functioncall
prefixexp
var
Name
print
args
(
optional explist
explist
exp
String
double quoted string
""
exp
String
double quoted string
"n"
exp
String
double quoted string
"value"
exp
String
double quoted string
"time"
exp
String
double quoted string
"evals"
)
stat
functioncall
prefixexp
var
Name
test
args
(
optional explist
explist
exp
String
double quoted string
"plain"
exp
var
Name
fib
)
stat
varlist
var
Name
fib
=
explist
exp
exp
var
Name
cache
args
(
optional explist
explist
exp
var
Name
fib
)
stat
functioncall
prefixexp
var
Name
test
args
(
optional explist
explist
exp
String
double quoted string
"cached"
exp
var
Name
fib
)
