The XL Language Specification (INCOMPLETE DRAFT)

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

2006


Table of Contents

1. Introduction
1.1. Organization
1.2. Relation to Predefined Classes and Interfaces
2. New Features of the XL Programming Language
2.1. Relational Extensions
2.1.1. Rules
2.1.2. Queries
2.1.3. Quasi-Parallel Assignments
2.2. Imperative Extensions
2.2.1. Expression Lists and the Comma Operator
2.2.2. Instance Scope Expressions
2.2.3. Operator Overloading
2.2.4. Generators, Aggregate Methods, and Filter Methods
3. Data Model Interface
3.1. Compile-Time Model
3.2. Run-Time Model
3.2.1. Current Extent
3.2.2. Current Queue Collection
4. Extended State of the Virtual Machine
5. Lexical Structure
5.1. Identifiers
5.2. Keywords
5.3. Separators and Operators
6. Types
6.1. Type Affixes and Type Letters
6.2. Intersection Types
7. Variables
7.1. Property Variables
8. Conversions and Promotions
8.1. Widening Primitive Conversions
8.2. Binary Floating-Point Promotion
9. Names and Scopes
9.1. Declarations
9.2. Determining the Meaning of a Name
10. Packages and Compilation Units
10.1. Compilation Units
10.2. Import Declarations
11. Classes and Interfaces
11.1. Annotations
11.2. Method Declarations
11.2.1. Generator Method Declarations
11.2.2. Operator Method Declarations
11.2.3. Instancing Method Declarations
12. Class Predicates
13. Signatures
13.1. Argument Transformations
13.2. Applicable Signatures
13.3. Specificity of Signatures
14. Modules
15. Blocks and Statements
15.1. Expression Statements
15.2. Quasi-Parallel Assignment Statements
15.3. The assert Statement
15.4. The Enhanced for Statement
15.5. The yield Statement
16. Expressions
16.1. Generator Expressions and Sequential Evaluation
16.2. Method Invocation Expressions
16.2.1. Argument Transformations
16.2.2. Generator Method Invocations
16.2.3. Aggregate Method Invocations
16.2.4. Filter Method Invocations
16.3. Primary Expressions
16.4. Query Expressions
16.5. Bracket Access Expressions
16.6. Array Generator Expressions
16.7. Instance Scope Expressions
16.8. Exponentiation Operator
16.9. Containment Operator
16.10. Guard Operator
16.11. Range Operator
16.12. Expression Lists
17. Queries
17.1. Query Variables
17.2. Invocation of Queries
17.3. Compound Predicates
17.3.1. Places
17.3.2. Connected Predicates
17.3.3. Connecting Primary Predicates
17.4. Simple Predicates
17.4.1. Predicate Arguments
17.4.2. Label Arguments
17.4.3. Name Predicates
17.4.4. Parametrized Predicates
17.4.5. Type Predicates
17.4.6. Wrapped Type Predicates
17.4.7. Expression Predicates
17.4.8. Method Predicates
17.4.9. Class Predicates
17.4.10. Root Predicate
17.5. Path Predicates
17.5.1. Name Path Predicates
17.5.2. Parametrized Path Predicates
17.5.3. Method Path Predicates
17.5.4. Expression Edge Predicates
17.5.5. Standard Edge Predicates
17.5.6. Constant Edge Predicates
17.6. Control Flow Predicates
17.6.1. First Element Predicate
17.6.2. Transitive Closures
17.6.3. Minimal Elements Predicate
References
A. GNU Free Documentation License

List of Figures

2.1. Koch's construction step
2.2. Sequence of structures

List of Tables

11.1. Names of unary operator methods
11.2. Names of binary operator methods
17.1. Reclassification as constant edge predicate