Programming in Lua
This is an online version of the book
Programming in
Lua
by Roberto Ierusalimschy
Lua.org, December 2003
ISBN 85-903798-1-7
Contents
- Preface
- Audience
- Other Resources
- A Few Typographical Conventions
- About the Book
- Acknowledgments
- Part I. The Language
- 1 Getting Started
- 1.1 Chunks
- 1.2 Global Variables
- 1.3 Some Lexical Conventions
- 1.4 The Stand-Alone Interpreter
- 2 Types and Values
- 2.1 Nil
- 2.2 Booleans
- 2.3 Numbers
- 2.4 Strings
- 2.5 Tables
- 2.6 Functions
- 2.7 Userdata and Threads
- 3 Expressions
- 3.1 Arithmetic Operators
- 3.2 Relational Operators
- 3.3 Logical Operators
- 3.4 Concatenation
- 3.5 Precedence
- 3.6 Table Constructors
- 4 Statements
- 4.1 Assignment
- 4.2 Local Variables and Blocks
- 4.3 Control Structures
- 4.3.1 if then else
- 4.3.2 while
- 4.3.3 repeat
- 4.3.4 Numeric for
- 4.3.5 Generic for
- 4.4 break and return
- 5 Functions
- 5.1 Multiple Results
- 5.2 Variable Number of Arguments
- 5.3 Named Arguments
- 6 More about Functions
- 6.1 Closures
- 6.2 Non-Global Functions
- 6.3 Proper Tail Calls
- 7 Iterators and the Generic for
- 7.1 Iterators and Closures
- 7.2 The Semantics of the Generic for
- 7.3 Stateless Iterators
- 7.4 Iterators with Complex State
- 7.5 True Iterators
- 8 Compilation, Execution, and Errors
- 8.1 The
require Function
- 8.2 C Packages
- 8.3 Errors
- 8.4 Error Handling and Exceptions
- 8.5 Error Messages and Tracebacks
- 8.1 The
- 9 Coroutines
- 9.1 Coroutine Basics
- 9.2 Pipes and Filters
- 9.3 Coroutines as Iterators
- 9.4 Non-Preemptive Multithreading
- 10 Complete Examples
- 10.1 Data Description
- 10.2 Markov Chain Algorithm
- Part II. Tables and Objects
- 11 Data Structures
- 11.1 Arrays
- 11.2 Matrices and Multi-Dimensional Arrays
- 11.3 Linked Lists
- 11.4 Queues and Double Queues
- 11.5 Sets and Bags
- 11.6 String Buffers
- 12 Data Files and Persistence
- 12.1 Serialization
- 12.1.1 Saving Tables without Cycles
- 12.1.2 Saving Tables with Cycles
- 13 Metatables and Metamethods
- 13.1 Arithmetic Metamethods
- 13.2 Relational Metamethods
- 13.3 Library-Defined Metamethods
- 13.4 Table-Access Metamethods
- 13.4.1 The
__index Metamethod
- 13.4.2 The
__newindex Metamethod
- 13.4.3 Tables with Default Values
- 13.4.4 Tracking Table Accesses
- 13.4.5 Read-Only Tables
- 13.4.1 The
- 14 The Environment
- 14.1 Accessing Global Variables with Dynamic Names
- 14.2 Declaring Global Variables
- 14.3 Non-Global Environments
- 15 Packages
- 15.1 The Basic Approach
- 15.2 Privacy
- 15.3 Packages and Files
- 15.4 Using the Global Table
- 15.5 Other Facilities
- 16 Object-Oriented Programming
- 16.1 Classes
- 16.2 Inheritance
- 16.3 Multiple Inheritance
- 16.4 Privacy
- 16.5 The Single-Method Approach
- 17 Weak Tables
- 17.1 Memoize Functions
- 17.2 Object Attributes
- 17.3 Revisiting Tables with Default Values
- Part III. The Standard Libraries
- 18 The Mathematical Library
- 19 The Table Library
- 19.1 Array Size
- 19.2 Insert and Remove
- 19.3 Sort
- 20 The String Library
- 20.1 Pattern-Matching Functions
- 20.2 Patterns
- 20.3 Captures
- 20.4 Tricks of the Trade
- 21 The I/O Library
- 21.1 The Simple I/O Model
- 21.2 The Complete I/O Model
- 21.2.1 A Small Performance Trick
- 21.2.2 Binary Files
- 21.3 Other Operations on Files
- 22 The Operating System Library
- 22.1 Date and Time
- 22.2 Other System Calls
- 23 The Debug Library
- 23.1 Introspective Facilities
- 23.1.1 Accessing Local Variables
- 23.1.2 Accessing Upvalues
- 23.2 Hooks
- 23.3 Profiles
- Part IV. The C API
- 24 An Overview of the C API
- 24.1 A First Example
- 24.2 The Stack
- 24.2.1 Pushing Elements
- 24.2.2 Querying Elements
- 24.2.3 Other Stack Operations
- 24.3 Error Handling with the C API
- 24.3.1 Error Handling in Application Code
- 24.3.2 Error Handling in Library Code
- 25 Extending your Application
- 25.1 Table Manipulation
- 25.2 Calling Lua Functions
- 25.3 A Generic Call Function
- 26 Calling C from Lua
- 26.1 C Functions
- 26.2 C Libraries
- 27 Techniques for Writing C Functions
- 27.1 Array Manipulation
- 27.2 String Manipulation
- 27.3 Storing State in C Functions
- 27.3.1 The Registry
- 27.3.2 References
- 27.3.3 Upvalues
- 28 User-Defined Types in C
- 28.1 Userdata
- 28.2 Metatables
- 28.3 Object-Oriented Access
- 28.4 Array Access
- 28.5 Light Userdata
- 29 Managing Resources
- 29.1 A Directory Iterator
- 29.2 An XML Parser
Last update:
Tue Jul 6 19:23:30 BRT 2004
No comments:
Post a Comment