P´
os gradua¸c˜
ao em Telem´
atica
-Desenvolvimento de Aplica¸c˜
oes Interativas para o
Sistema Brasileiro de TV Digital (SBTVD)
Manoel Campos da Silva Filho
Mestre em Engenharia El´
etrica / UnB
http://manoelcampos.com
Instituto Federal de Educa¸c˜ao, Ciˆencia e Tecnologia do Tocantins (IFTO/Palmas)
Roteiro
1
Introdu¸
c˜
ao `
a Linguagem Lua
Hist´
orico
Utiliza¸c˜
ao
Caracter´ısticas
Interpretador/Compilador Lua
Plugin LuaEclipse
Vis˜
ao Geral da Linguagem
Escrevendo no Terminal
Vari´
aveis e Coment´
arios
if/else
Concatena¸
c˜
ao e Inicializa¸
c˜
ao de diversas vari´
aveis
Operadores
Operadores
Operadores
New
New
2 / 38Introdu¸c˜
ao `
a Linguagem Lua: Hist´
orico [?] [?] [?]
Nascida em 1993 na PUC-Rio, no laborat´
orio Tecgraf
Projetada para ser simples, pequena, r´
apida, port´
avel e f´
acil
de embutir em outras aplica¸
c˜
oes
Projetada para permitir a personaliza¸
c˜
ao de aplica¸
c˜
oes em
outras linguagens
Projeto iniciado por Roberto Ierusalimschy, Waldemar Celes e
Luiz Henrique de Figueiredo
Introdu¸c˜
ao `
a Linguagem Lua: Utiliza¸c˜
ao [?] [?]
Atualmente utilizada nas mais diversas ´
areas como:
simuladores de voo
jogos
IDE’s, editores de texto
processamento de imagens
Equipamentos de rede
rob´
otica, etc
Linguagem procedural padr˜
ao do subsistema Ginga-NCL do
middleware Ginga do SBTVD
Introdu¸c˜
ao `
a Linguagem Lua: Caracter´ısticas
Linguagem de script (interpretada/dinˆ
amica) estruturada
Possui recursos que possibilitam definir um modelo para
desenvolvimento Orientado a Objetos (mas n˜
ao ´
e o objetivo
da mesma)
R´
apida, leve, port´
avel, simples, pequena (c´
odigo e
documenta¸
c˜
ao: 214KB compactado)
Embut´ıvel
Multiplataforma
Baseada em maquina virtual
Fracamente tipada
Possui Garbage Collection (Coleta de Lixo)
OpenSource (Licen¸ca MIT)
´
Introdu¸c˜
ao `
a Linguagem Lua: Interpretador/Compilador
Interpretador
Respons´
avel por interpretar c´
odigos lua e converter para
bytecodes para ser executado pela M´
aquina Virtual Lua (cerca
de 167KB em Linux)
Compilador
Uso opcional, quando se deseja gerar um arquivo com o
bytecode Lua e assim n˜
ao distribuir o c´
odigo fonte da
aplica¸
c˜
ao (apesar de poder-se descompilar o bytecode)
Introdu¸c˜
ao `
a Linguagem Lua: Plugin LuaEclipse
Plugin para o IDE Eclipse para desenvolvimento em Lua
Incorpora a documenta¸c˜
ao (LuaDoc) dos m´
odulos padr˜
oes de
Lua
Possui auto-completar, sintaxe colorida, debugger e exibi¸
c˜
ao
de erros
Introdu¸c˜
ao `
a Linguagem Lua: Vis˜
ao Geral
As vari´
aveis n˜
ao declaradas explicitamente como locais, por
padr˜
ao s˜
ao globais
Toda passagem de parˆ
ametro ´
e por referˆ
encia
O delimitador de strings pode ser ’ (ap´
ostrofo) ou ”(aspas)
O uso de ponto-e-v´ırgula (;) ao final de cada instru¸
c˜
ao ´
e
opcional e normalmente n˜
ao utilizado por programadores Lua
Pode-se usar ponto-e-v´ırgula (;) quando deseja-se escrever
v´
arias instru¸c˜
oes em uma mesma linha
Todos os blocos de c´
odigo envolvidos em estruturas de sele¸
c˜
ao
ou la¸
cos de repeti¸
c˜
ao sempre tem um terminador end,
independente de quantas linhas de c´
odigo tenham
Introdu¸c˜
ao `
a Linguagem Lua: Escrevendo no Terminal
C´
odigo Fonte 1:
Hello World
1 o s . e x e c u t e (” c l e a r ”)
2
3 p r i n t(”Meu p r i m e i r o p r o g r a m a em Lua ”)
4 p r i n t(” I n i c i a n d o o d e s e n v o l v i m e n t o de a p l i c a c o e s ”)
5
6 i o . w r i t e (” Nunca e s c r e v a LUA e s i m Lua , \ n ”)
7 i o . w r i t e (” p o r q u e n i n g u e m e s c r e v e JAVA e s i m J a v a . \ n ”) 8 i o . w r i t e (”O a u t o r da l i n g u a g e m a g r a d e c e : ) \ n \ n ”)
Introdu¸c˜
ao `
a Linguagem Lua: Vari´
aveis, Tipos e
Coment´
arios
Os tipos b´
asicos da linguagem Lua s˜
ao number, string, boolean,
table, function, nil, userdata e thread.
C´
odigo Fonte 2:
Vari´
aveis/Tipos e Coment´
arios
1 −−C o m e n t a r i o de uma l i n h a 2 3 −−[[ C o m e n t a r i o de 4 v a r i a s l i n h a s 5 −−]] 6 7 −− V a r i a v e i s l o c a i s n u m e r i c a s 8 l o c a l n1 = 10 9 l o c a l n2 = 5 . 3 10 11 −− V a r i a v e l g l o b a l s t r i n g
12 nome = ” Manoel Campos ”
13 −−A f u n c a o p r i n t p o d e r e c e b e r q u a n t o s p a r a m e t r o s d e s e j a r
14 p r i n t ” E x i b i n d o v a l o r e s de v a r i a v e i s ”
15 p r i n t ( ” n1 = ” , n1 , ” n2 = ” , n2 , ”\ n ” )
16 p r i n t ( ” nome = ” , nome )
Introdu¸c˜
ao `
a Linguagem Lua: Estrutura de Sele¸c˜
ao if
Os parˆ
entereses s˜
ao opcionais
C´
odigo Fonte 3:
if/else
1 −−G e r a um numero a l e a t o r i o e n t r e 1 e 100
2 math . r a n d o m s e e d ( o s . t i m e ( ) )
3 l o c a l x = math . f l o o r ( ( math . random ( ) ∗ 1 0 0 ) +1)
4 5 p r i n t(” x = ”, x ) 6 i f ( x < 5 0 ) t h e n 7 p r i n t(” x eh menor que 50 ”) 8 p r i n t(” nao ha um e l s e n e s t e i f \ n ”) 9 end 10 11 i f x < 10 t h e n 12 p r i n t(” x eh menor que 10 ”) 13 e l s e 14 p r i n t(” x eh m a i o r ou i g u a l a 10 ”) 15 end
Introdu¸c˜
ao `
a Linguagem Lua: Concatena¸c˜
ao e Inicializa¸c˜
ao
C´
odigo Fonte 4:
Concatena¸
c˜
ao/Inicializa¸
c˜
ao de diversas vari´
aveis
1 −− I n i c i a l i z a n d o d i v e r s a s v a r i a v e i s 2 −−A v a r i a v e l x3 nao t e r a um v a l o r e s e r a n i l 3 l o c a l x1 , x2 , x3 = 1 0 , 20 4 5 −−Q u a l q u e r v a r i a v e l eh c o n v e r t i d a p a r a s t r i n g 6 −−a u t o m a t i c a m e n t e numa c o n c a t e n a c a o .
7 −−Nao s e pode c o n c a t e n a r uma s t r i n g a um v a l o r n i l , 8 −−da pau : (
9 p r i n t(” x1 = ” . . x1 . . ” x2 = ” . . x2 , ” x3 = ”, x3 )
Introdu¸c˜
ao `
a Linguagem Lua: Operadores Aritim´
eticos
N˜
ao h´
a operadores un´
arios ++ e –
C´
odigo Fonte 5:
Operadores
1 l o c a l x , y = 2 0 , 3 2 l o c a l soma = x+y 3 l o c a l s u b = x−y 4 l o c a l m u l t = x ∗ y 5 l o c a l d i v = x / y 6 l o c a l r e s t o = x%y 7 8 −−Quando d e s e j a −s e i m p r i m i r d i v e r s o s v a l o r e s , 9 −−pode−s e s e p a r a r c a d a v a l o r p o r v i r g u l a 10 −−ou c o n c a t e n a r ( t a n t o f a z ) 11 p r i n t(” x = ”. . x , ” y = ”. . y ) 12 p r i n t(” x + y = ” . . soma , ” x − y = ” . . s u b ) 13 p r i n t(” x ∗ y = ”. . mult , ” x / y = ” . . d i v ) 14 p r i n t(” x % y = ”. . r e s t o )
Introdu¸c˜
ao `
a Linguagem Lua: Operadores de Atribui¸c˜
ao e
Relacionais
= atribui¸c˜
ao
== igualdade
= diferen¸ca
¿, ¿=, ¡, ¡=
14 / 38Introdu¸c˜
ao `
a Linguagem Lua: Operadores L´
ogicos
and (e)
or (ou)
not (n˜
ao)
Introdu¸c˜
ao `
a Linguagem Lua: Valores L´
ogicos
true (verdade) e false (falso)
Qualquer valor diferente de false e nil s˜
ao considerados
verdade (nil ´
e como null do Java)
At´
e 0 ´
e verdade em Lua
Introdu¸c˜
ao `
a Linguagem Lua: Valores L´
ogicos
C´
odigo Fonte 6:
Valores L´
ogicos
1 l o c a l s = ” ” 2 −−T r a t a o v a l o r de s como b o o l e a n o 3 i f s t h e n 4 p r i n t(” s eh c o n s i d e r a d a t r u e ”) 5 e l s e 6 p r i n t(” s eh c o n s i d e r a d a f a l s e ”) 7 end 8 9 l o c a l v a l = n i l 10 −−T r a t a o v a l o r de v a l como b o o l e a n o 11 i f v a l t h e n 12 p r i n t(” v a l eh c o n s i d e r a d a t r u e ”) 13 e l s e 14 p r i n t(” v a l eh c o n s i d e r a d a f a l s e ”) 15 end
Introdu¸c˜
ao `
a Linguagem Lua: Valores L´
ogicos
C´
odigo Fonte 7:
Valores L´
ogicos
1 l o c a l ok = 0 2 −−T r a t a o v a l o r de ok como b o o l e a n o 3 −−At´e o z e r o ´e c o n s i d e r a d o t r u e em Lua 4 i f ok t h e n 5 p r i n t(” ok eh c o n s i d e r a d a t r u e ”) 6 e l s e 7 p r i n t(” ok eh c o n s i d e r a d a f a l s e ”) 8 end 18 / 38
Introdu¸c˜
ao `
a Linguagem Lua: For
C´
odigo Fonte 8:
For
1 −− f o r de 1 a 5 2 f o r i =1 , 5 do 3 i o . w r i t e ( i . .” ”) 4 end 5 p r i n t(” ”) 6 7 −− f o r de 5 a 1 8 f o r i =5 , 1 , −1 do 9 i o . w r i t e ( i . .” ”) 10 end 11 12 p r i n t(” ”)
New
Tabelas com ´ındices n˜
ao sequenciais
Metatabelas: tostring, index(key), newindex(key,value)
Fun¸c˜
oes
Carregando arquivos de texto
Gravar arquivos de texto
Carregar c´
odigo lua a partir de strings/arquivos de texto
Gerar c´
odigo lua dinamicamente e salvar em arquivo
Carregar arquivos Lua com dofile
Introdu¸c˜
ao `
a Linguagem Lua: Criando M´
odulos I
C´
odigo Fonte 9:
Criando m´
odulos
1 −−A v a r i ´a v e l G ´e uma v a r i ´a v e l
2 −− g l o b a l i m p l i c i t a m e n t e d e c l a r a d a 3 −−em t o d o s c r i p t l u a .
4 −−Por meio d e l a tem−s e a c e s s o
5 −−a q u a l q u e r f u n ¸c ˜a o ou o u t r a s v a r i ´a v e i s 6 −− g l o b a i s 7 8 −−As l i n h a s a b a i x o , c r i a m v a r i ´a v e i s 9 −− l o c a i s , a n t e s de d e f i n i r o s c r i p t 10 −−como um m´odulo ,
11 −−p a r a que a s mesmas possam
12 −−s e r a c e s s a d a s d e n t r o do m´odulo , 13 l o c a l G, p r i n t , i p a i r s =
14 G, p r i n t , i p a i r s
15
16 −−−Exemplo de m´odulo .
17 −−O nome do m´odulo ´e o nome do a r q u i v o .
Introdu¸c˜
ao `
a Linguagem Lua: Criando M´
odulos II
19
20 −−A b a i x o da l i n h a module , s ´o s e tem
21 −−a c e s s o , p o r p a d r˜a o , `a s v a r i ´a v e i s l o c a i s .
22 −−Nem a s f u n ¸c ˜o e s g l o b a i s como p r i n t 23 −−s e tem a c e s s o .
24
25 −−− R e a l i z a uma o p e r a ¸c ˜a o no f o r m a t o num1 op num2
26 −−s e n d o que o o p e r a d o r pode s e r +, −, ∗ ou /
27 −−@param num1 P r i m e i r o v a l o r da o p e r a ¸c ˜a o
28 −−@param op O p e r a d o r da e x p r e s s ˜a o (+ , −, ∗ ou / )
29 −−@param num2 Segundo v a l o r da o p e r a ¸c ˜a o
30 −−@ r e t u r n R e t o r n a o r e s u l t a d o da e x p r e s s ˜a o a r i t m ´e t i c a 31 f u n c t i o n c a l c u l a r ( num1 , op , num2 ) 32 i f op == ”+” t h e n 33 r e t u r n num1 + num2 34 e l s e i f op == ”−” t h e n 35 r e t u r n num1 − num2 36 e l s e i f op == ” ∗ ” t h e n 37 r e t u r n num1 ∗ num2 38 e l s e i f op == ” / ” t h e n 39 r e t u r n num1 / num2 22 / 38
Introdu¸c˜
ao `
a Linguagem Lua: Criando M´
odulos III
40 e l s e 41 p r i n t(” O p e r a d o r i n v ´a l i d o ”) 42 r e t u r n n i l 43 end 44 end 45 46 −−−C a l c u l a uma e x p r e s s ˜a o a r i t m ´e t i c a com 47 −−q u a n t i d a d e i n d e t e r m i n a d a de v a l o r e s 48 −−@param . . . L i s t a de v a l o r e s no f o r m a t o 49 −−num1 op num2 op numN50 −−@ r e t u r n R e t o r n a o r e s u l t a d o da e x p r e s s ˜a o 51 f u n c t i o n c a l c E x p r e s s a o ( . . . ) 52 −−Pega t o d o s o s p a r ˆa m e t r o s e c r i a um v e t o r ( t a b e l a ) 53 l o c a l p a r a m s = { . . . } 54 −−P e r c o r r e o v e t o r de p a r ˆa m e t r o s . 55 −−A c a d a i t e r a ¸c ˜a o , a r m a z e n a o v a l o r 56 −−da p o s i ¸c ˜a o a t u a l do v e t o r em v a l 57 58 l o c a l i , r e s = 1 , 0 59 l o c a l num1 , num2 , op = 0 , 0 , ” ” 60
Introdu¸c˜
ao `
a Linguagem Lua: Criando M´
odulos IV
61 f o r , v a l i n i p a i r s( p a r a m s ) do 62 i f i == 1 t h e n 63 num1 = v a l 64 e l s e i f i == 2 t h e n 65 op = v a l 66 e l s e i f i == 3 t h e n 67 num2 = v a l 68 r e s = c a l c u l a r ( num1 , op , num2 ) 69 num1 = r e s 70 i = 1 71 end 72 i = i +1 73 end 74 r e t u r n r e s 75 end 24 / 38Introdu¸c˜
ao `
a Linguagem Lua: Usando M´
odulos I
C´
odigo Fonte 10:
Usando m´
odulo criado
1 −−Se o a r q u i v o do m´odulo e s t i v e r 2 −−no mesmo d i r e t ´o r i o da a p l i c a ¸c ˜a o , 3 −− e l e ´e e n c o n t r a d o sem p r o b l e m a s . 4 −−Nos c a s o s de a p p s de TVD, 5 −−o s m ´o d u l o s l u a e s t a r ˜a o 6 −−j u n t o com a app 7 −−p a r a s e r e m e n v i a d o s v i a b r o a c a s t ( p o r e x e m p l o ) 8 −−A l i n h a a b a i x o u s a o meumodulo . l u a 9 −−que o b r i g a t o r i a m e n t e d e v e t e r s i d o 10 −− d e f i n i d o com a i n s t r u ¸c ˜a o m o d u l e 11 −− l ´a no a r q u i v o meumodulo . l u a 12 −−Se o a r q u i v o n˜ao ´e um m´odulo , 13 −−usa−s e d o f i l e ( ” n o m e d o a r q u i v o . l u a ” ) 14 r e q u i r e ” meumodulo ” 15 16 17 l o c a l num1 , op , num2 = 1 0 , ” $ ”, ” 5 ”
Introdu¸c˜
ao `
a Linguagem Lua: Usando M´
odulos II
19 −−a mesma d e v e s e r p r e c e d i d a p e l o
20 −−nome do mesmo ( f u n c i o n a n d o como um n a m e s p a c e ) 21 l o c a l r e s = meumodulo . c a l c u l a r ( num1 , op , num2 )
22 p r i n t( num1 , op , num2 , ”=”, r e s ) 23 24 l o c a l r e s = meumodulo . c a l c E x p r e s s a o ( 1 0 , ”−”, 3 , ”+”, 6 ) 25 p r i n t(” R e s u l t a d o =”, r e s ) 26 27 −−O c ´o d i g o d a q u i p r a b a i x o c a l c u l a o 28 −− r e s u l t a d o de uma e x p r e s s ˜a o , 29 −−mas u s a n d o a s f a c i l i d a d e s de l u a , 30 −−p o r meio da f u n ¸c ˜a o l o a d s t r i n g 31 l o c a l c o d i g o = ” r e s 1 = 10 − 3 ∗ 2 ” 32 −− U t i l i z a o s r e c u r s o s de l u a 33 −−p a r a a v a l i a r uma e x p r e s s ˜a o 34 −−ou q u a l q u e r c ´o d i g o l u a c o n t i d o 35 −−numa s t r i n g e e x e c u t a r . 36 −−N e s t e c a s o , c o n s i d e r a a t ´e 37 −−a p r e c e d ˆe n c i a d o s o p e r a d o r e s 38 l o c a l e x e c u t a , e r r o = l o a d s t r i n g( c o d i g o ) 39 −−Se o c ´o d i g o na s t r i n g do l o a d s t r i n g 26 / 38
Introdu¸c˜
ao `
a Linguagem Lua: Usando M´
odulos III
40 −− f o r c o m p i l a d o com s u c e s s o , 41 −− l o a d s t r i n g r e t o r n a uma f u n ¸c ˜a o . 42 −−Se r e t o r n o u uma f u n ¸c ˜a o , 43 −−o c ´o d i g o f o i c o m p i l a d o , 44 −−a s s i m , b a s t a chamar a f u n ¸c ˜a o 45 −−r e t o r n a d a 46 i f e x e c u t a ˜= n i l t h e n 47 −−chama a f u n ¸c ˜a o que e x e c u t a r ´a 48 −−o c ´o d i g o c o m p i l a d o p e l a l o a d s t r i n g 49 e x e c u t a ( ) 50 p r i n t( c o d i g o ,”=”, r e s 1 ) 51 e l s e 52 p r i n t( e r r o ) 53 endIntrodu¸c˜
ao `
a Linguagem Lua: Tratamento de exce¸c˜
oes I
C´
odigo Fonte 11:
Tratamento de Exce¸
c˜
oes com pcall
1 −−Se o a r q u i v o do m´odulo e s t i v e r 2 −−no mesmo d i r e t ´o r i o da a p l i c a ¸c ˜a o , 3 −− e l e ´e e n c o n t r a d o sem p r o b l e m a s . 4 −−Nos c a s o s de a p p s de TVD, 5 −−o s m ´o d u l o s l u a e s t a r ˜a o 6 −−j u n t o com a app 7 −−p a r a s e r e m e n v i a d o s v i a b r o a c a s t ( p o r e x e m p l o ) 8 −−A l i n h a a b a i x o u s a o meumodulo . l u a 9 −−que o b r i g a t o r i a m e n t e d e v e t e r s i d o 10 −− d e f i n i d o com a i n s t r u ¸c ˜a o m o d u l e 11 −− l ´a no a r q u i v o meumodulo . l u a 12 −−Se o a r q u i v o n˜ao ´e um m´odulo , 13 −−usa−s e d o f i l e ( ” n o m e d o a r q u i v o . l u a ” ) 14 r e q u i r e ” meumodulo ” 15 16 17 l o c a l num1 , op , num2 = 1 0 , ” $ ”, ” 5 ”
18 −−Ao chamar uma f u n ¸c ˜a o de um m´odulo ,
Introdu¸c˜
ao `
a Linguagem Lua: Tratamento de exce¸c˜
oes II
19 −−a mesma d e v e s e r p r e c e d i d a p e l o
20 −−nome do mesmo ( f u n c i o n a n d o como um n a m e s p a c e ) 21 l o c a l r e s = meumodulo . c a l c u l a r ( num1 , op , num2 )
22 p r i n t( num1 , op , num2 , ”=”, r e s ) 23 24 l o c a l r e s = meumodulo . c a l c E x p r e s s a o ( 1 0 , ”−”, 3 , ”+”, 6 ) 25 p r i n t(” R e s u l t a d o =”, r e s ) 26 27 −−O c ´o d i g o d a q u i p r a b a i x o c a l c u l a o 28 −− r e s u l t a d o de uma e x p r e s s ˜a o , 29 −−mas u s a n d o a s f a c i l i d a d e s de l u a , 30 −−p o r meio da f u n ¸c ˜a o l o a d s t r i n g 31 l o c a l c o d i g o = ” r e s 1 = 10 − 3 ∗ 2 ” 32 −− U t i l i z a o s r e c u r s o s de l u a 33 −−p a r a a v a l i a r uma e x p r e s s ˜a o 34 −−ou q u a l q u e r c ´o d i g o l u a c o n t i d o 35 −−numa s t r i n g e e x e c u t a r . 36 −−N e s t e c a s o , c o n s i d e r a a t ´e 37 −−a p r e c e d ˆe n c i a d o s o p e r a d o r e s 38 l o c a l e x e c u t a , e r r o = l o a d s t r i n g( c o d i g o ) 39 −−Se o c ´o d i g o na s t r i n g do l o a d s t r i n g
Introdu¸c˜
ao `
a Linguagem Lua: Tratamento de exce¸c˜
oes III
40 −− f o r c o m p i l a d o com s u c e s s o , 41 −− l o a d s t r i n g r e t o r n a uma f u n ¸c ˜a o . 42 −−Se r e t o r n o u uma f u n ¸c ˜a o , 43 −−o c ´o d i g o f o i c o m p i l a d o , 44 −−a s s i m , b a s t a chamar a f u n ¸c ˜a o 45 −−r e t o r n a d a 46 i f e x e c u t a ˜= n i l t h e n 47 −−chama a f u n ¸c ˜a o que e x e c u t a r ´a 48 −−o c ´o d i g o c o m p i l a d o p e l a l o a d s t r i n g 49 e x e c u t a ( ) 50 p r i n t( c o d i g o ,”=”, r e s 1 ) 51 e l s e 52 p r i n t( e r r o ) 53 end 30 / 38Introdu¸c˜
ao `
a Linguagem Lua: Shell Script I
Da mesma forma que pode-se criar arquivos *.sh para
executar comandos do shell e automatizar tarefas em sistemas
operacional da fam´ılia UNIX, pode-se usar lua para isto.
A grande vantagem ´
e que lua ´
e bem mais simples que as
linguagens tradicionais de Shell Script, al´
em do que, se vocˆ
e
j´
a conhece Lua, ´
e menos trabalho.
Para um script lua executar como um shell script, basta incluir
a marca¸c˜
ao conhecida como shebang ou hashbang
(http://wiki.linuxquestions.org/wiki/Shebang), um
coment´
ario na primeira linha do arquivo que indica qual o
programa que deve interpretar o mesmo quando este for
executado.
Introdu¸c˜
ao `
a Linguagem Lua: Shell Script II
C´
odigo Fonte 12:
Lua como Shell Script
1 #!/ u s r / b i n / l u a 2 −−O c ´o d i g o a c i m a p e r m i t e e x e c u t a r 3 −−o s c r i p t l u a com . / n o m e d o s c r i p t . l u a 4 −−( sem p r e c i s a r u s a r o comando l u a a n t e s ) 5 −−d e s d e que o a r q u i v o t e n h a p e r m i s s ˜a o 6 −−de e x e c u ¸c ˜a o em l i n u x 7 −−( chmod a+x n o m e d o s c r i p t . l u a p r a d a r p e r m i s s ˜a o ) 8 9 −−−Usando l u a como s h e l l s c r i p t 10 11 −−Pega p a r ˆa m e t r o s de l i n h a de comando 12 l o c a l a r g s = { . . . } 13 14 o s . e x e c u t e (” c l e a r ”) 15 16 −−D´a um p i n g no e n d e r e ¸c o r e c e b i d o p o r p a r ˆa m e t r o 17 −−Se r e t o r n a r z e r o , ´e p o r q u e e x e c u t o u o p i n g e 18 −−o h o s t r e s p o n d e u , 32 / 38
Introdu¸c˜
ao `
a Linguagem Lua: Shell Script III
19 −−c a s o c o n t ´a r i o , r e t o r n a um v a l o r d i f e r e n t e de z e r o 20 i f o s . e x e c u t e (” p i n g ”. . a r g s [ 1 ] . .” −c 3 ”)==0 t h e n 21 p r i n t(” p i n g o u ”) 22 e l s e 23 p r i n t(”N˜AO PINGOU”) 24 endIntrodu¸c˜
ao `
a Linguagem Lua: LuaRocks
O luarocks ´
e uma ferramenta, que como o apt-get, permite
baixar pacotes lua.
Para baix´
a-lo execute sudo apt-get install luarocks
Baixando alguns m´
odulos
sudo luarocks install luasocket
sudo luarocks install luadoc
sudo luarocks install luasec
Introdu¸c˜
ao `
a Linguagem Lua: LuaDoc I
O LuaDoc ´
e uma ferramenta de documenta¸c˜
ao de c´
odigos
lua, assim como o JavaDoc.
Para baix´
a-lo execute sudo luarocks install luadoc ou sudo
apt-get install luadoc
C´
odigo Fonte 13:
Exemplo de m´
odulo documentado com LuaDoc
1 l o c a l G, p r i n t , l o a d s t r i n g = G, p r i n t , l o a d s t r i n g
2
3 −−−Exemplo de m´odulo ( Documentando um m´odulo ) .
4 −−Os c o m e n t ´a r i o s i n i c i a d o s com −−−
5 −−s ˜a o i n t e r p r e t a d o s p e l o l u a d o c p a r a
6 −−g e r a r a d o c u m e n t a ¸c˜a o do c ´o d i g o f o n t e do p r o j e t o .
7 −−O nome do m´odulo ´e o nome do a r q u i v o .
8 module ” meumodulo ”
9
10 −−−C a l c u l a uma e x p r e s s ˜a o a r i t m ´e t i c a com
Introdu¸c˜
ao `
a Linguagem Lua: LuaDoc II
13 −−@ r e t u r n R e t o r n a o r e s u l t a d o da e x p r e s s ˜a o 14 f u n c t i o n c a l c u l a r ( e x p ) 15 l o c a l e x e c u t a , e r r o = l o a d s t r i n g(” r e t u r n ”. . e x p ) 16 i f e x e c u t a ˜= n i l t h e n 17 r e t u r n e x e c u t a ( ) 18 e l s e 19 p r i n t( e r r o ) 20 r e t u r n n i l 21 end 22 endC´
odigo Fonte 14:
Exemplo de app documentada com LuaDoc
1 −−−Exemplo de u s o do m´odulo c r i a d o 2 r e q u i r e ” meumodulo ” 3 4 5 l o c a l e x p = ” 10 − 3 ∗ 2 ” 6 l o c a l r e s = meumodulo . c a l c u l a r ( e x p ) 7 p r i n t( exp , ” = ”, r e s ) 36 / 38