Delphi language features

From LibreDevelop
Revision as of 10:36, 24 March 2016 by Chronos (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Here is incomplete Delphi/Object Pascal feature tree. Some features are dependent on others so some have precedence during compiler development.

Name Description Level
Statements 0
Variables var keyword, global 0
Variables - Local Inside function and procedures
Constants const keyword, global 0
Name spaces Not directly supported Future
Memory access Direct access to memory (pointers, directive absolute)
Compiler directives
Compiler directives - Conditionals $IFDEF, $ENDIF, $DEFINE, ...)
Compiler directives - Region code hiding using $REGION
Compiler directives - Options ($M+/-, ...)
Operators and, or, xor, not, +, -, /, *, div, mod 0
Operators - Shifting shl, shr
Operators - Type as, in
Expressions operator priority, infix notation 0
Expressions - Parentheses 1
Assignment := symbol 0
Integrated assembler asm-end
Comments One line // or Block level {}, (* *)
Functions Functions and procedures 0
Functions - Overloading Function overloading, overload keyword
Functions - Nested Local functions inside function
Functions - Parameters
Functions - Parameters - Reference var keyword for references
Functions - Parameters - Default value parameters with default value
Functions - Inlined Inlining code using inline keyword
Types type keyword 0
Types - Enumeration (Boolean, ...)
Types - Subrange (0..100, ...)
Types - Ordinals SmallInt, Byte, Integer, Word, Cardinal, Int64, ... 0
Types - Floating numbers Real, Single, Double, Extended, ...
Types - Characters Char, WideChar, AnsiChar, ...
Types - Strings String, ShortString, AnsiString, WideString, PChar, ...
Types - Pointers Pointer, @, ^
Types - Variant
Types - Procedural types
Types - Composed
Types - Array static/dynamic
Types - Record
Types - Record - Variant Překrývání proměnných (variant records): case Integer of...
Types - Record - Packed
Types - Record - Operator redefinition
Types - Record - Advanced with constants,types,variables,procedure/functions
Types - Set set of, in operator, [] as set initializer
Types - Class class keyword
Types - Class - Visibility published, public, private, protected
Types - Class - Methods Methods (procedure, function)
Types - Class - Virtual methods (virtual, override)
Types - Class - Inlining inline
Types - Class - Inheritance inherited
Types - Class - Properties (property, read, write, default, indexed)
Types - Class - Nested definitions
Types - Class - Constructors and destructors constructor, destructor
Types - Interface interface keyword
Globals (variables, constants, types, functions)
Units Modularity using unit keyword, interface and implementation sections
Units - Types program, unit, package, library
Units - Initialization/Finalization (initialization, finalization)
Controls structures
Condition (if-then-else)
Loop with known cycle count for-to-do
Repeat loop repeat-until
While loop while-do
Loop exit break
Loops - Continue Jump to next iteration (continue)
Compound statement begin-end
Multiple branching case-of
Context change with-do
Exceptions raise (raise)
Exceptions - handling try-except
Exceptions - Finalization try-finally
Loop with enumerators for-in-do
Generics Parametric types
Generics - Constraints Limit generics parameters to class, record, ordinal, float, ...
Translation strings resourcestring keyword
Multi-threading - Thread local variables threadvar keyword
Interfaces like abstract classes, multiple inheritance
Interfaces - Reference counting
Memory manager Automatic memory management
File types file, text Obsolete
Direct jump goto, label keywords Obsolete