page 1  (15 pages)
2to next section

Lua|an extensible extension language

Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes Filho

roberto,lhf,celes@icad.puc-rio.br

MCC 12/95 | Departamento de Inform?atica | PUC-Rio

May 15, 1995

Abstract

This paper describes Lua, a language for extending applications. Lua combines procedural features with powerful data description facilities, by using a simple, yet powerful, mechanism of tables. This mechanism implements the concepts of records, arrays, and recursive data types (pointers), and adds some object-oriented facilities, such as methods with dynamic dispatching.

Lua presents a mechanism of fallbacks that allows programmers to extend the semantics of the language in some unconventional ways. As a noteworthy example, fallbacks allow the user to add different kinds of inheritance to the language.

Currently, Lua is being extensively used in production for several tasks, including user configuration, general-purpose data-entry, description of user interfaces, and storage of structured graphical metafiles.

Sum?ario

Este artigo descreve Lua, uma linguagem para extens~ao de aplica?c~oes. Lua combina programa?c~ao procedural com fortes facilidades para descri?c~ao de dados, usando um simples, por?em poderoso, mecanismo de tabelas. Este mecanismo implementa os conceitos de registros, arrays, e tipos de dados recursivos (ponteiros), al?em de adicionar algumas facilidades de orienta?c~ao a objetos, como m?etodos e chamadas din^amicas.

Lua apresenta um mecanismo de fallbacks que permite que programadores estendam a sem^antica da linguagem de maneiras n~ao convencionais. Um exemplo digno de nota ?e o uso de fallbacks para acrescentar diferentes tipos de heran?ca ?a linguagem.

Atualmente, Lua ?e usada estensivamente em produ?c~ao para diversas tarefas, incluindo configura?c~ao pelo usu?ario, entrada de dados de prop?osito geral, descri?c~ao de interfaces com o usu?ario, e armazenamento de arquivos gr?aficos estruturados.