Skip to content

Commit

Permalink
Iteration24 (#659)
Browse files Browse the repository at this point in the history
* #590 : implementing functional test
* #620 : introducing out ref variable
* refactoring code - using out ref parameters
* warn if out variable is not assigned in the method
* [FIXED] ?. operator
* working on ide for linux
* [ADDED] #655 : new option to keep output terminal after the program ends
* [FIXED] retrieving a source for the reference modules
* [ADDED] auto-recompile option
* [FIXED] MTA : critical exception handler
* [FIXED] recent list - only 9 elements must be in the list
* [ADDED]#69 : GC statistics
* [ADDED] support project collection file
* [FIXED] nil cannot be returned for nil object - use default instead
* #650 : Calling a named constructor from an implicit default one

---------

Co-authored-by: Alex <alex@Ubuntu.myguest.virtualbox.org>
  • Loading branch information
arakov and Alex authored May 31, 2024
1 parent 17ce51f commit ac00167
Show file tree
Hide file tree
Showing 137 changed files with 2,210 additions and 969 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/msbuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ env:
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
BUILD_CONFIGURATION: Release

BUILD_TAG: 6.1.0
BUILD_TAG: 6.1.1

permissions:
contents: read
Expand Down
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
## ELENA 6.2.0

- ELENA

- ELC
- [ADDED] optimized ternary expressions
- [FIXED] declaring a field with a type of template based array
- [ADDED] unit-test for declaring a field with a type of template based array

- VM
- [ADDED] #590 : creating a dynamic interface wrapper

- RT
- [ADDED] #590 : creating a dynamic interface wrapper

- API
- [ADDED] #89 : new functionality - MemoryStream, BitArray, SortedList, SortedArrayList
- [ADDED] #95 : LiteralBuffer, WideBuffer

- SAMPLES

- Tools

- IDE

- Misc

## ELENA 6.0.10
*07.05.2024*

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.1.0
6.1.1
10 changes: 5 additions & 5 deletions asm/x32/core60_lnx.asm
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// ; --- Predefined References --
define INVOKER 10001h
define VEH_HANDLER 10003h
define PREPARE 10006h
define INVOKER 10001h
define VEH_HANDLER 10003h
define PREPARE 10006h

define CORE_ET_TABLE 2000Bh
define CORE_SINGLE_CONTENT 2000Bh

// ; ==== System commands ===

Expand Down Expand Up @@ -44,7 +44,7 @@ procedure % VEH_HANDLER

mov esi, edx
mov edx, eax // ; set exception code
mov eax, [data : % CORE_ET_TABLE]
mov eax, [data : % CORE_SINGLE_CONTENT]
jmp eax

end
Expand Down
12 changes: 6 additions & 6 deletions asm/x32/core60_win.asm
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// ; --- Predefined References --
define INVOKER 10001h
define VEH_HANDLER 10003h
define INVOKER 10001h
define VEH_HANDLER 10003h

define CORE_TOC 20001h
define SYSTEM_ENV 20002h
define CORE_ET_TABLE 2000Bh
define CORE_TOC 20001h
define SYSTEM_ENV 20002h
define CORE_SINGLE_CONTENT 2000Bh

// ; ==== System commands ===

Expand Down Expand Up @@ -45,7 +45,7 @@ procedure % VEH_HANDLER

mov esi, edx
mov edx, eax // ; set exception code
mov eax, [data : % CORE_ET_TABLE]
mov eax, [data : % CORE_SINGLE_CONTENT]
jmp eax

end
19 changes: 19 additions & 0 deletions asm/x32/corex60_win.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// ; --- Predefined References --
define VEH_HANDLER 10003h

define CORE_TLS_INDEX 20004h

// ; ==== System commands ===

// VEH_HANDLER()
procedure % VEH_HANDLER

mov esi, edx
mov edx, eax // ; set exception code

mov ecx, fs:[2Ch]
mov eax, [data : %CORE_TLS_INDEX]
mov ecx, [ecx+eax*4]
jmp [ecx]

end
1 change: 1 addition & 0 deletions bin/templates/mt_win_console60.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<platform key="Win_x86">
<primitives>
<primitive key="core">..\x32\corex60.bin</primitive>
<primitive key="core">..\x32\corex60_win.bin</primitive>
</primitives>
<externals>
<external key="$rt">elenart60</external>
Expand Down
2 changes: 1 addition & 1 deletion build/aarch64/build_package_arm64.script
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
RELEASE=elena-6.1.0.aarch64-linux
RELEASE=elena-6.1.1.aarch64-linux

mkdir -p /usr/share/elena
mkdir -p /etc/elena/
Expand Down
2 changes: 1 addition & 1 deletion build/aarch64/control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: elena-lang
Version: 6.1.0
Version: 6.1.1
Architecture: aarch64
Maintainer: Alex Rakov <arakov@yandex.ru>
Depends: libc6 (>= 2.1)
Expand Down
2 changes: 1 addition & 1 deletion build/amd64/build_package_amd64.script
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
RELEASE=elena-6.1.0.amd64-linux
RELEASE=elena-6.1.1.amd64-linux

mkdir -p /usr/share/elena
mkdir -p /etc/elena/
Expand Down
2 changes: 1 addition & 1 deletion build/amd64/control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: elena-lang
Version: 6.1.0
Version: 6.1.1
Architecture: amd64
Maintainer: Alex Rakov <arakov@yandex.ru>
Depends: libc6 (>= 2.1)
Expand Down
7 changes: 6 additions & 1 deletion build/create_package_x86.bat
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ copy %~dp0\..\bin\command60.es %~dp0\x86\bin

copy %~dp0\..\bin\x86\core60.bin %~dp0\x86\bin\x86\
copy %~dp0\..\bin\x86\core60_win.bin %~dp0\x86\bin\x86\
copy %~dp0\..\bin\x86\core60_win.bin %~dp0\x86\bin\x86\
copy %~dp0\..\bin\x86\core60_win_client.bin %~dp0\x86\bin\x86\
copy %~dp0\..\bin\x86\corex60.bin %~dp0\x86\bin\x86\
copy %~dp0\..\bin\x86\corex60_win.bin %~dp0\x86\bin\x86\

copy %~dp0\..\bin\templates\*.cfg %~dp0\x86\bin\templates\
copy %~dp0\..\bin\scripts\*.es %~dp0\x86\bin\scripts\
Expand Down Expand Up @@ -222,6 +222,11 @@ if %ERRORLEVEL% EQU -2 GOTO CompilerError
if %ERRORLEVEL% EQU -2 GOTO CompilerError
@echo on

%~dp0\..\bin\asm-cli -x86 %~dp0\..\asm\x32\corex60_win.asm %~dp0\x86\bin\x32
@echo off
if %ERRORLEVEL% EQU -2 GOTO CompilerError
@echo on

%~dp0\..\bin\asm-cli -x86 %~dp0\..\asm\x32\corex60.asm %~dp0\x86\bin\x32
@echo off
if %ERRORLEVEL% EQU -2 GOTO CompilerError
Expand Down
4 changes: 2 additions & 2 deletions build/elena_inno.iss
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{3CAA69D3-0F98-44B1-A73E-E864BA51D5BD}
AppName=ELENA Programming Language
AppVersion=6.1.0
AppVersion=6.1.1
;AppVerName=ELENA Programming Language 6.0.10
AppPublisher=Alexey Rakov
AppPublisherURL=http://github.com/ELENA-LANG/elena-lang
Expand All @@ -18,7 +18,7 @@ DefaultGroupName=ELENA Programming Language
AllowNoIcons=yes
LicenseFile=..\doc\license
InfoAfterFile=..\CHANGELOG.md
OutputBaseFilename=elena-lang-6.1.0.x86-setup
OutputBaseFilename=elena-lang-6.1.1.x86-setup
Compression=lzma
SolidCompression=yes
ChangesEnvironment=yes
Expand Down
2 changes: 1 addition & 1 deletion build/i386/build_package_i386.script
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
RELEASE=elena-6.1.0.i386-linux
RELEASE=elena-6.1.1.i386-linux

mkdir -p /usr/share/elena
mkdir -p /etc/elena/
Expand Down
2 changes: 1 addition & 1 deletion build/i386/control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: elena-lang
Version: 6.1.0
Version: 6.1.1
Architecture: i386
Maintainer: Alex Rakov <arakov@yandex.ru>
Depends: libc6 (>= 2.1)
Expand Down
2 changes: 1 addition & 1 deletion build/ppc64le/build_package_ppc64le.script
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
RELEASE=elena-6.1.0.ppc64le-linux
RELEASE=elena-6.1.1.ppc64le-linux

mkdir -p /usr/share/elena
mkdir -p /etc/elena/
Expand Down
2 changes: 1 addition & 1 deletion build/ppc64le/control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: elena-lang
Version: 6.1.0
Version: 6.1.1
Architecture: ppc64le
Maintainer: Alex Rakov <arakov@yandex.ru>
Depends: libc6 (>= 2.1)
Expand Down
5 changes: 5 additions & 0 deletions build/rebuild_lib60_x86.bat
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ bin\asm-cli -x86 asm\x32\core60_win.asm bin\x32
if %ERRORLEVEL% EQU -1 GOTO Asm2BinError
@echo on

bin\asm-cli -x86 asm\x32\corex60_win.asm bin\x32
@echo off
if %ERRORLEVEL% EQU -1 GOTO Asm2BinError
@echo on

bin\asm-cli -x86 asm\x32\core60_win_client.asm bin\x32
@echo off
if %ERRORLEVEL% EQU -1 GOTO Asm2BinError
Expand Down
65 changes: 36 additions & 29 deletions dat/sg/syntax60.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ __define FINALLY 7385;
__define PARAMETER_BLOCK 4336;
__define TUPLE_TYPE 4341;

__define BLOCK_CLOSING_EXPECTED 16386;

START ::=
{ DECLARATION | META_DECLARATION }+ eof
| eof;
Expand Down Expand Up @@ -289,9 +291,9 @@ ROOT_EXPRESSION ::=
| ")" { RI_F | eps ^MESSAGE_OPERATION }
}
| DOT ^OBJECT MESSAGE { L3_F | eps ^PROPERTY_OPERATION }
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE OL_F
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| L4_OOP L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L5_OOP L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L6_OOP L7_OP* L8_OP? L9_OP?
Expand Down Expand Up @@ -393,9 +395,9 @@ NESTED_ROOT_EXPRESSION ::=
| eps ^MESSAGE_OPERATION
}
| DOT ^OBJECT MESSAGE { L3_F | eps ^PROPERTY_OPERATION }
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE OL_F
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| L4_OOP L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L5_OOP L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L6_OOP L7_OP* L8_OP? L9_OP?
Expand Down Expand Up @@ -489,9 +491,9 @@ EXPRESSION ::=
| ASSIGN ^OBJECT ASSIGN_R
| BRACKET ^OBJECT FUNCTION_R L2_F
| DOT ^OBJECT MESSAGE { L3_F | eps ^PROPERTY_OPERATION }
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE OL_F
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F
| L4_OOP L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L5_OOP L5_OP* L6_OP? L7_OP* L8_OP? L9_OP?
| L6_OOP L7_OP* L8_OP? L9_OP?
Expand Down Expand Up @@ -553,7 +555,7 @@ SUB_EXPRESSION ::=
identifier ")" "{" ^ PARAMETER_BLOCK BLOCK ^CLOSURE ^EXPRESSION
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP* L6_OP? L7_OP*
| "{" ^OBJECT COLLECTION "}" ^ COLLECTION_EXPRESSION L3_OP* } ")"
| ":" ^OBJECT ^EXPRESSION identifier TEMPLATE_ARG ^ TEMPLATE_EXPR_BLOCK ")"
| ":" ^OBJECT ^EXPRESSION identifier TEMPLATE_ARG ^ TEMPLATE_EXPR_BLOCK ^EXPRESSION ")"
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
| L3_OOP L3_OP* {
":" identifier TEMPLATE_ARG ^ TEMPLATE_EXPR_BLOCK ^EXPRESSION
Expand Down Expand Up @@ -607,6 +609,7 @@ SUB_EXPRESSION ::=
| TUPLE_OR ")"
| ")" ^OBJECT
}
| ":" ^OBJECT ^EXPRESSION identifier TEMPLATE_ARG ^ TEMPLATE_EXPR_BLOCK ^EXPRESSION ")"
| SBRACKET ^OBJECT INDEXER_R L2_OP* L3_OP* L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
| L3_OOP L3_OP* {
Expand All @@ -618,9 +621,9 @@ SUB_EXPRESSION ::=
| L8_OP L9_OP?
| L9_OP
| eps } TUPLE_R? ")"
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE OL_F TUPLE_R? ")"
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE OL_F TUPLE_R? ")"
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE OL_F TUPLE_R? ")"
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F TUPLE_R? ")"
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F TUPLE_R? ")"
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F TUPLE_R? ")"
| L4_OOP L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
| L5_OOP L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
| L6_OOP L7_OP* L8_OP? L9_OP? TUPLE_R? ")"
Expand Down Expand Up @@ -686,9 +689,9 @@ SUB_SINGLE_EXPRESSION ::=
}
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? ")"
| L3_OOP L3_OP* L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? ")"
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE OL_F ")"
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE OL_F ")"
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE OL_F ")"
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F ")"
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F ")"
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION OL_F ")"
| L4_OOP L4_OP* L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? ")"
| L5_OOP L5_OP* L6_OP? L7_OP* L8_OP? L9_OP? ")"
| L6_OOP L7_OP* L8_OP? L9_OP? ")"
Expand Down Expand Up @@ -722,9 +725,9 @@ L4_EXPRESSION ::=
| SBRACKET ^OBJECT INDEXER_R L0_OP* L2_OP* L3_OP*
| L2_OOP L2_OP* L3_OP*
| L3_OOP L3_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE L3_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE L3_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE L3_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP*
| "{" NESTED_EXPRESSION ^NESTED L2_OP* L3_OP*
| eps ^OBJECT
}
Expand Down Expand Up @@ -752,9 +755,9 @@ L5_EXPRESSION ::=
| SBRACKET ^OBJECT INDEXER_R L0_OP* L2_OP* L3_OP* L4_OP*
| L2_OOP L2_OP* L3_OP* L4_OP*
| L3_OOP L3_OP* L4_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP*
| L4_OOP L4_OP*
| "{" NESTED_EXPRESSION ^NESTED L2_OP* L3_OP* L4_OP*
| eps ^OBJECT
Expand Down Expand Up @@ -784,9 +787,9 @@ L6_EXPRESSION ::=
| SBRACKET ^OBJECT INDEXER_R L0_OP* L2_OP* L3_OP* L4_OP* L5_OP*
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP*
| L3_OOP L3_OP* L4_OP* L5_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP*
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP*
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP*
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP*
| L4_OOP L4_OP* L5_OP*
| L5_OOP L5_OP*
| "{" NESTED_EXPRESSION ^NESTED L2_OP* L3_OP* L4_OP* L5_OP*
Expand Down Expand Up @@ -818,9 +821,9 @@ L7_EXPRESSION ::=
| SBRACKET ^OBJECT INDEXER_R L0_OP* L2_OP* L3_OP* L4_OP* L5_OP* L6_OP?
| L2_OOP L2_OP* L3_OP* L4_OP* L5_OP* L6_OP?
| L3_OOP L3_OP* L4_OP* L5_OP* L6_OP?
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP* L6_OP?
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP* L6_OP?
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE L3_OP* L4_OP* L5_OP* L6_OP?
| IF_DOT ^OBJECT MESSAGE? CALL_R ^IF_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP* L6_OP?
| ELSE_DOT ^OBJECT MESSAGE? CALL_R ^ELSE_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP* L6_OP?
| ALT_DOT ^OBJECT MESSAGE? CALL_R ^ALT_OPERATION ^OPERATION_TEMPLATE ^EXPRESSION L3_OP* L4_OP* L5_OP* L6_OP?
| L4_OOP L4_OP* L5_OP* L6_OP?
| L5_OOP L5_OP* L6_OP?
| L6_OOP
Expand Down Expand Up @@ -1279,4 +1282,8 @@ DECLARATION_END ::=
";";

END_OF_BLOCK ::=
"}";
"}"
| BLOCK_CLOSING_EXPECTED;

BLOCK_CLOSING_EXPECTED ::=
eof;
9 changes: 9 additions & 0 deletions doc/api/extensions-summary.html
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,15 @@ <H1>
public class <SPAN CLASS="typeNameLabel">Object</SPAN></DIV>
</TD>
</TR>
<TR CLASS="rowColor">
<TD CLASS="colFirst">
<A HREF="extensions.html#String">String</A>
</TD>
<TD CLASS="colLast">
<DIV CLASS="block">
public class <SPAN CLASS="typeNameLabel">String</SPAN></DIV>
</TD>
</TR>
</TABLE>
</LI>
</UL>
Expand Down
Loading

0 comments on commit ac00167

Please sign in to comment.