| RUSSIAN(Русский) | ENGLISH |  |
This function requires cookies. If the browser does not accept cookies, the light theme is used always.

## 1. Class

CLASS = '{' Identifier [ '|' Identifier ] '}' { ',' class_attribute ] } ':' { { CR Block_comment } CR Import } [ CR Base_class ] [ CR Block_friends ] { CR class_item } CR 'END' [ CR Block_history ] { CR text } class_attribute = 'ABSTRACT' | 'NATIVE' | 'BAD' | 'BITWISE' | 'BYTES' | 'DESTRUCTORS' | 'GENERIC' | 'INFINITE | 'RECURSIVE' | 'SHORT_STRINGS' | 'STOPPING' | 'SAFE' | tested_class | 'UNTESTED' | deprecated_class | abandoned_class class_item = Enumeration_declaration | Record_declaration | Object_declaration | Table_declaration | Constants_block | Field_declaration | Function_declaration | Operator_definition | Test_block | Native_statement | TODO_statement | Block_comment deprecated_class = 'DEPRECATED' '(' '''' text '''' ')' abandoned_class = 'ABANDONED' '(' '''' text '''' ')' tested_class = 'TESTED' [ '(' Integer ')' ] Block_comment = '-' '-' { '-' } '''' text ''''

## 2. Import block

Import = import-list { CR import-list ] import-list = [ 'DEBUG' ] 'IMPORT' { ',' import-mod } [ ':' ] '{' import-reference '}' { ',' '{' import-reference '}' } (';'|'.') import-mod = ( 'ANYWAY' | 'DEBUG' | 'TEST' | 'FRIENDS' ) import-reference = ( Identifier | '{' Identifier '}' )

## 3. Base class

Base_class = 'BASE' 'CLASS' [ ':' ] '{' Identifier '}' [ ';' | '.' ]

## 4. Enumeration declaration

Enumeration_declaration = 'ENUM' '{' Identifier [ '|' ] Identifier '}' [ deprecated_enum | abandoned_enum ] ':' enumeration_item { ',' enumeration_item } [ CR ] '.' enumeration_item = [ CR ] '''' Identifier [ '|' Identifier ] '''' deprecated_enum = 'DEPRECATED' '(' '''' text '''' ')' abandoned_enum = 'ABANDONED' '(' '''' text '''' ')'

## 5. Structure declaration

Record_declaration = 'STRUCTURE' '{' Identifier [ '|' ] Identifier '}' [ deprecated_record | abandoned_record ] ':' [ Field_declaration ] { 'CR' Field_declaration } [ CR ] '.' deprecated_record = 'DEPRECATED' '(' '''' text '''' ')' abandoned_record = 'ABANDONED' '(' '''' text '''' ')'

## 6. Table declaration

Table_declaration = 'TABLE' Identifier [ '|' Identifier ] ':' [ CR ] '{' Identifier '}' { [ CR ] table_name | counters | notnulls | names } [ CR ] '.' table_name = 'NAME' '''' text '''' counters = 'COUNTER' '(' Identifier { ',' Identifier } ')' notnulls = 'NOTNULL' '(' Identifier { ',' Identifier } ')' names = 'NAMES' '(' Identifier '=' '"' text '"' { ',' Identifier '=' '"' text '"' } ')'

## 7. Constants block

Constants_block = 'CONST' Data_type [ '{' Identifier '}' ] ':' single_const { CR single_const } single_const = Identifier [ '|' Identifier ] '=' Expression

## 8. Field declaration

Field_declaration = Data_type Identifier [ '|' Identifier ] [ array_size ] { ',' field_attr } [ '=' Expression ] array_size = '[' [ ( Integer | '{' Identifier '}' '.' ] '{' Identifier '}' ) ] ']' field_attr = 'READ' | 'INIT' | deparecated_field | abandoned_field deprecated_field = 'DEPRECATED' '(' '''' text '''' ')' abandoned_field = 'ABANDONED' '(' '''' text '''' ')'

## 9. Function / method declaration

Function_declaration = ( function_header | construct_header | destruct_header ) ':' fun_body [ native_code ] '.' function_header = ( 'FUCTION' | 'FUN' | 'METHOD' | 'OVERRIDE' ) Identifier [ '|' Identifier ] [ '(' parameter { ',' parameter ')' ] [ '==>' Data_type [ 'RESULT' [ '|' Identifier ] ] ] { ',' fun_attribute } { ',' param_restriction } parameter = Data_type Identifier [ '|' Identifier ] [ '[' array_size ']' ] construct_header = 'CONSTRUCT' destruct_header = 'DESTRUCT' array_size = [ '{' Identifier '}' ] | [ '*' ] fun_attribute = 'RECURSIVE' | 'NATIVE' | 'NEW' | 'REPLACE' | 'PUBLIC' | 'UNCOOKED' | 'TRAP' | 'FORGET' | deprecated_function | abandoned_function | wait_list | store_value | setter_for | operators_mod deprecated_function = 'DEPRECATED' '(' '''' text '''' ')' abandoned_function = 'ABANDONED' '(' '''' text '''' ')' wait_list = 'WAIT' '(' Identifier { ',' Identifier } ')' store_value = 'STORE' '(' Identifier '=' Integer ')' setter_for = 'SETTER' 'FOR' Identifier param_restriction = unconditional_restriction | conditional_restriction uncoditional_restriction = 'RESTRICT' Identifier restriction_definition conditional_restriction = 'IF' Identifier restriction_definition ',' 'THEN' Identifier restriction_definition restriction_definition = is_constant | in_range | in_list is_constant = 'IS' 'CONSTANT' in_range = 'IN' '[' Expression 'TO' Expression ']' in_list = 'IN' [ 'FLAGS' ] ( list_expressions | set_names | '{' Identifier '}' ) list_expressions = '[' Expression { ',' Expression } ']' set_names = '{' Identifier { ',' Identifier } '}' fun_body = { CR Statement } | [Statement] | [ 'NATIVE' ] String_constant native_code = 'NATIVE' Expression

## 10. Operator definition

Operator_definition = 'OPERATOR' [ data_type ] ( '+' | '-' | '*' | '/' ) data_type '==>' data_type [ ',' operators_mod ] ':' expression '.' operators_mod = 'OPERATORS' '(' '{' identifier '}' { ',' '{' identifier '}' } ')'

## 11. TEST block

Test_block = 'TEST' Identifier [ '|' Identifier ] ':' { CR test_statement } '.' test_statement = Statement | assert_statement assert_statement = 'ASSERT' Expression [ ',' Expression ]

## 12. NATIVE statement

Native_statement = 'NATIVE' ':' String_constant '.'

## 13. TODO statement

TODO_statement = 'TODO' ':' String_constant '.'

## 14. Statement

Statement = ( simple [ '==>' ] | '==>' ) | Block_comment | break | continue | stop | Conditional_statement | Loop_statement | Push_block | Debug_block | Like | Revert | NONE | UNCOOKED simple = Declaration_local_var | Assignment | Send_data Block_comment = '-' '-' { '-' } '''' 'текст' '''' [ ',' 'REUSED' ] break = 'BREAK' Identifier continue = 'CONTINUE' Identifier stop = 'STOP' String_constant

## 15. Conditional statement

Conditional_statement = 'CASE' [ Expression ] '?' case_body [ CR 'ELSE' one_or_more_statements ] ';' case_body = one_or_more_statements | branches branches = branch { branch } branch = '[' Expression { ',' Expression } ']' ( ':' | '?' ) one_or_more_statements one_or_more_statements = [ Statement ] { CR Statement }

## 16. Loop statement

Loop_statement = for_header ':' one_or_more_statements ';' for_header = 'FOR' [ ',' 'INFINITE' ] Identifier [ '|' Identifier ] { for_in | for_enum} for_in = 'IN' for_array for_enum = { 'ENUM' | 'ENUMERATE' } Expression for_array = '[' Expression to_downto Expression } ']' | Expression to_downto = 'TO' | 'DOWNTO'

## 17. PUSH variable block

Push_statement = 'PUSH' Expression [ '=' Expression ] ':' one_or_more_statements ';'

## 18. DEBUG code block

Debug_statement = { 'DEBUG' } ':' one_or_more_statements ';'

## 19. SILENT code block (without warnings from the compiler)

Silent_statement = { 'SILENT' } ':' one_or_more_statements ';'

## 20. Restrict time of running block (LIMIT)

Limit = 'LIMIT' ( 'TIME' | 'FUN' | 'FUNCTIONS' | 'LOOPS' ) '(' Expression ')' [ units ] ':' one_or_more_statements ';' units = 'MSEC' | 'MILLISECONDS' | 'SEC' | 'SECOND' | 'MIN' | 'MINUTES' | 'HOURS' | 'DAYS'

## 21. Code block reuse (LIKE)

Like = { 'LIKE' } [ Identifier ] '.' '.' '.' { '.' } ''' text ''' [ ',' [CR] 'BUT' replacements ] replacements = '(' pattern '==>' [pattern] ')' { ',' '(' pattern '==>' [pattern] ')' } pattern = '''' text '''' | text

## 22. REVERT of a portion of code

Revert = { 'REVERT' } [ Identifier ] '.' '.' '.' { '.' } ''' text '''

## 23. Local variable declaration

Declaration_local_var = [ Date_type ] Identifier [ '|'Identifier ] [ dynamic_array | fixed_array | initialization ] dynamic_array = '[' ']' [ '<<' Expression ] fixed_array = '[' [ '{' Identifier '}' [ '.' '{' Identifier '}' ] ']' initialization = '=' ( Expression | New_object_construction )

## 24. Assignment statement

Assignment = ( repeat_previous_target | Expression ) (logic_arithmetic_assign | '=' New_object_construction) repeat_previous_target = '.' '.' [ Unnaming_chain ] logic_arithmetic_assign = ( '=' | '+=' | '-=' | '&=' | '*=' | '/=' | '^=' | '%=' | '&&=' | '||=' | '|=' ) Expression

## 25. Sending data statement

Send_date = [ ( repeat_previous_target | Expression ) send_left ] [ send_right ] send_left = '<<' ( Expression ( { '<<' Expression } | by_table ) | SQL_insert | SQL_delete | SQL_update | SQL_select ) by_table = ',' 'BY' 'TABLE' Identifier send_right = '>>' ( Expression | Declaration_local_var )

## 26. Data type

Data_type = type_class_or_enum_or_record | 'BOOL' | 'BOOLEAN' | 'BYTE' | 'INT' | 'INTEGER' | 'REAL' | 'STR' | 'STRING' | '{' '?' '}' type_class_or_enum_or_record = '{' Identifier '}' [ '.' '{' Identifier '}' ]

## 27. New object construction

New_object_construction = '{' Identifier '}' [ '.' '{' Identifier '}' ] '(' Field_initialization { ',' Field_initialization ')' [ owned_by | send_to_array ] owned_by = 'OWNED' 'BY' Expression send_to_array = '>>' Expression

## 28. Field initialization

Field_initialization = Identifier [ '[' [ Expression ] ']' ] ( init_assign | init_append ) init_assign = '=' Expression init_append = '<<' Expression

## 29. Expression

Expression = ( named_constant | function_call | enum_item | enclose_in_parentheses | numeric_constant | string_constant ) [ { field_or_function | array_item_or_slice } ] | prefixed_expression | binary_operation | containing_operation | '*' named_constant = [ '{' Identifier '}' '.' ] Identifier function_call = [ '{' Identifier '}' '.' ] Identifier '(' Expression { ',' Expression ')' enum_item = [ '{' Identifier '}' '.' ] [ '{' Identifier '}' '.' ] '''' Identifier '''' enclose_in_parentheses = '(' Expression ')' prefixed_expression = ( '!' | '~' | '+' | '-' ) Expression binary_operation = Expression ( '+' | '-' | '*' | '/' | '%' | '&' | '|' | '^' | '&&' | '||' | '==' | '!=' | '<' | '<=' | '>' | '>=' ) Expression conaining_operation = Expression ( 'IN' | '!IN' ) ( Expression | constant_array ) constant_array = '[' Expression { ',' Expression } ']' concatenation = Expression Expression field_or_function = '.' ( Identifier [ function_params ] | type_cast ) function_params = '(' Expression { ',' Expression } ')' type_cast = '{' Identifier '}' array_item_or_slice = '[' [ Expression [ ( TO | DOWNTO ) Expression ] ']'

## 30. Numeric constant

Numeric_constant = [ '+' | '-' ] ( '0x' hexadecimal | '0b' binary | '0o' octal | decimal ) hexadecimal = ( hex_digit | '_' ) { hex_digit | '_' } hex_digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'A' | 'b' | 'B' | 'c' | 'C' | 'd' | 'D' | 'e' | 'E' | 'f' | 'F' binary = ( '0' | '1' | '_' ) { '0' | '1' | '_' } octal = ( octal_digit | '_' ) { octal_digit | '_' } octal_digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' deciamal = Integer [ '.' Integer ] [ ( 'e' | 'E' ) [ '+ | '-' ] Integer ]

## 31. String constant

String_constant = single_string { single_string | separate_line_string_in_apostrophes } [ '.' '_' Identifier ] single_string = ( string_in_quotas | encoded_char ) [ '@@' ] string_in_quotas = [ CR | '@' ] '"' { Symbol_except_" } '"' encoded_char = '#' ( Integer | special_char_name ) special_char_name = 'NL' | 'CR' | 'LF' | 'BK' | 'TAB' | 'DEL' | 'SP' | 'BELL' | 'ESC' separate_line_string_in_apostrophes = CR '''"' { Symbol_except_"' } '"'''

## 32. Integer

Integer = digit [ { digit | '_' } ] digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

## 33. Name

Name = Identifier { '|' Identifier } { '||' Name }

## 34. Identifier

Identifier = Letter { Letter | '_' | digit }

## 35. Changes history

Changes_history = 'HISTORY' [ ':' ] { CR created_updated } [ CR 'HISTORY' 'ENDED' ] created_updated = ( 'CREATED' | 'UPDATED' ) '(' Integer '-' Integer [ '-' Integer ] ')' [ by_author ] [ version ] ':' single_record { ';' single_record } '.' by_author = ',' 'BY' '"' text '"' version = ',' ( 'VER' | 'VERSION' ) '"' text '"' single_record = CR ( 'ADDED' | 'CHANGED' | 'FIXED' ) ':' item_changed { ',' item_changed } item_changed = '"' text '"' | Identifier

## 36. SQL Insert

SQL_insert = 'INSERT' [ 'INTO' ] Identifier ( ',' 'BY' Expression | fields_insert ) fields_insert = ',' Identifier '=' SQL_operand { ',' Identifier '=' SQL_operand }

## 37. SQL Update

SQL_update = 'UPDATE' Identifier [ Identifier join_tables ',' ] 'SET' fields_update [ [ ',' ] 'WHERE' SQL_expression ] join_tables = ',' 'JOIN' Identifier Identifier 'ON' SQL_expression { ',' 'JOIN' Identifier Identifier 'ON' SQL_expression } fields_update = Identifier '=' SQL_operand { ',' Identifier '=' SQL_operand }

## 38. SQL Delete

SQL_delete = 'DELETE' Identifier [ Identifier join_tables ',' ] [ ',' 'WHERE' SQL_expression ] join_tables = ',' 'JOIN' Identifier Identifier 'ON' SQL_expression { ',' 'JOIN' Identifier Identifier 'ON' SQL_expression }

## 39. SQL Select

SQL_select = 'SELECT' [ 'TOP' Expression ',' ] [ 'DISTINCT' ',' ] 'FROM' Identifier [ Identifier join_select ] '(' sql_fields ')' [ ',' 'WHERE''WHERE' SQL_expression ] [ ',' 'GROUP' 'BY' '(' Identifier { ',' Identifier } ')' ] [ ',' 'ORDER' 'BY' '(' Identifier [ 'DESC' ] { ',' Identifier [ 'DESC' ] ')' ] sql_fields = SQL_operand [ 'AS' Identifier ] { ',' SQL_operand [ 'AS' Identifier ] } join_select = ',' [ 'OUTER' ] [ 'LEFT' ] 'JOIN' Identifier Identifier 'ON' SQL_expression { ',' [ 'OUTER' ] [ 'LEFT' ] 'JOIN' Identifier Identifier 'ON' SQL_expression }

## 40. SQL Expression

SQL_expression = expr_item { ( 'AND' | 'OR' ) expr_item expr_item = ( unary_item | binary_item ) unary_item = [ 'NOT' ] ( SQL_operand | '(' SQL_expression ')' ) binary_item = SQL_operand ( is_null | in_list | between_range | compare_op SQL_operand ) is_null = 'IS' ['NOT' ] 'NULL' in_list = [ 'NOT' ] 'IN' '(' SQL_operand { ',' SQL_operand } ')' between_range = 'BETWEEN' SQL_operand 'AND' SQL_operand compare_op = '<=' | '>=' | '<' | '> | '==' | '<>'

## 41. SQL Operand

SQL_operand = ( [ Identifier '.' ] Identifier | '{' [ '@' ] Expression '}' | Expression | '''' text '''' | 'SQL' '(' Expression ')' | [ 'NOT' ] 'EXISTS' '(' SELECT_operator ')' )

## Content

Introduction

My current plans

My old plans from 2016

What is done already

- Form designer
- Parallel programming
- Android platform support
- RTTI
- The interpreter
- IDE AL-IV
- Debugger embedded into IDE

Content

(C) 2016-2018, Vladimir Kladov

`` Home