Vous êtes sur la page 1sur 2

Lua uma linguagem de programao de extenso projetada para dar suporte programao proc

dimental em geral e que oferece facilidades para a descrio de dados. A linguagem t


ambm oferece um bom suporte para programao orientada a objetos, programao funcional e
programao orientada a dados. Lua foi planejada para ser utilizada por qualquer ap
licao que necessite de uma linguagem de script leve e poderosa. Lua implementada c
omo uma biblioteca, escrita em C limpo (isto , no subconjunto comum de ANSI C e C
++).
Por ser uma linguagem de extenso, Lua no possui a noo de um programa principal: ela
somente funciona embarcada em um programa cliente anfitrio, chamado de programa h
ospedeiro ou simplesmente de hospedeiro. Esse programa hospedeiro pode invocar f
unes para executar um pedao de cdigo Lua, pode escrever e ler variveis Lua e pode reg
istrar funes C para serem chamadas pelo cdigo Lua. Atravs do uso de funes C, Lua pode
ser estendida para lidar de maneira apropriada com uma ampla variedade de domnios
, permitindo assim a criao de linguagems de programao personalizadas que compartilha
m um arcabouo sinttico. A distribuio Lua inclui um exemplo de um programa hospedeiro
chamado lua, o qual usa a biblioteca de Lua para oferecer um interpretador de l
inha de comando Lua completo.
Lua um software livre e, como de praxe, fornecido sem garantias, conforme dito n
a sua licena. A implementao descrita neste manual est disponvel no stio web oficial de
Lua, www.lua.org.
Como qualquer outro manual de referncia, este documento rido em algumas partes. Pa
ra uma discusso das decises por trs do projeto de Lua, veja os artigos tcnicos dispo
nveis no stio web oficial de Lua. Para uma introduo detalhada programao em Lua, veja
livro de Roberto Ierusalimschy, Programming in Lua (Segunda Edio).
2 - A Linguagem
Esta seo descreve os aspectos lxicos, sintticos e semnticos de Lua. Em outras palavra
s, esta seo descreve quais itens lxicos so vlidos, como eles so combinados, e qual o s
ignificado da sua combinao.
As construes da linguagem sero explicadas usando a notao BNF estendida usual, na qual
{a} significa 0 ou mais a's e [a] significa um a opcional. No-terminais so mostra
dos como non-terminal, palavras-chave so mostradas como kword e outros smbolos ter
minais so mostrados como `=. A sintaxe completa de Lua pode ser encontrada em 8 no
fim deste manual.
2.1 - Convenes Lxicas

Em Lua, Nomes (tambm chamados de identificadores) podem ser qualquer cadeia de le


tras, dgitos, e sublinhados que no comeam com um dgito. Esta definio est de acordo com
a definio de nomes na maioria das linguagens. (A definio de letras depende de qual o
idioma (locale): qualquer caractere considerado alfabtico pelo idioma corrente p
ode ser usado como um identificador.) Identificadores so usados para nomear varive
is e campos de tabelas.
As seguintes palavras-chave so reservadas e no podem ser utilizadas como nomes:
and
end
in
repeat

break
false
local
return

do
for
nil
then

else
function
not
true

elseif
if
or
until

while

Lua uma linguagem que diferencia minsculas de maisculas: and uma palavra reservada
, mas And e AND so dois nomes vlidos diferentes. Como conveno, nomes que comeam com u
m sublinhado seguido por letras maisculas (tais como _VERSION) so reservados para
variveis globais internas usadas por Lua.

As seguintes cadeias denotam outros itens lxicos:


+
==
(
;

~=
)
:

*
<=
{
,

/
>=
}
.

%
<
[
..

^
>
]
...

#
=

Cadeias de caracteres literais podem ser delimitadas atravs do uso de aspas simpl
es ou aspas duplas, e podem conter as seguintes seqncias de escape no estilo de C:
'\a' (campainha), '\b' (backspace), '\f' (alimentao de formulrio), '\n' (quebra de
linha), '\r' (retorno de carro), '\t' (tabulao horizontal), '\v' (tabulao vertical)
, '\\' (barra invertida), '\"' (citao [aspa dupla]) e '\'' (apstrofo [aspa simples]
). Alm disso, uma barra invertida seguida por uma quebra de linha real resulta em
uma quebra de linha na cadeia de caracteres. Um caractere em uma cadeia de cara
cteres tambm pode ser especificado pelo seu valor numrico usando a seqncia de escape
\ddd, onde ddd uma seqncia de at trs dgitos decimais. (Note que se um caractere numr
co representado como um seqncia de escape for seguido por um dgito, a seqncia de esca
pe deve possuir exatamente trs dgitos.) Cadeias de caracteres em Lua podem conter
qualquer valor de 8 bits, incluindo zeros dentro delas, os quais podem ser espec
ificados como '\0'.
Cadeias literais longas tambm podem ser definidas usando um formato longo delimit
ado por colchetes longos. Definimos uma abertura de colchete longo de nvel n como
um abre colchete seguido por n sinais de igual seguido por outro abre colchete.
Dessa forma, uma abertura de colchete longo de nvel 0 escrita como [[, uma abert
ura de colchete longo de nvel 1 escrita como [=[ e assim por diante. Um fechament
o de colchete longo definido de maneira similar; por exemplo, um fechamento de c
olchete longo de nvel 4 escrito como ]====]. Uma cadeia de caracteres longa comea
com uma abertura de colchete longo de qualquer nvel e termina no primeiro fechame
nto de colchete longo do mesmo nvel. Literais expressos desta forma podem se este
nder por vrias linhas, no interpretam nenhuma seqncia de escape e ignoram colchetes
longos de qualquer outro nvel. Estes literais podem conter qualquer coisa, exceto
um fechamento de colchete longo de nvel igual ao da abertura.

Vous aimerez peut-être aussi