diff --git a/Compiler.exe b/Compiler.exe index 8816c58..ef91386 100644 Binary files a/Compiler.exe and b/Compiler.exe differ diff --git a/Compiler.kex b/Compiler.kex index f857764..0aec6ad 100644 Binary files a/Compiler.kex and b/Compiler.kex differ diff --git a/compiler b/compiler index cbe3b53..19eeeeb 100755 Binary files a/compiler and b/compiler differ diff --git a/doc/MSP430.txt b/doc/MSP430.txt index 8f8cf39..19051ec 100644 --- a/doc/MSP430.txt +++ b/doc/MSP430.txt @@ -104,7 +104,7 @@ UTF-8 с BOM-сигнатурой. PROCEDURE SADR(x: строковая константа): INTEGER возвращает адрес x - PROCEDURE VAL(v: любой тип; T): T + PROCEDURE VAL(T; v: любой тип): T v - переменная; интерпретирует v, как переменную типа T diff --git a/doc/STM32.txt b/doc/STM32.txt index 615ba20..5ec4e95 100644 --- a/doc/STM32.txt +++ b/doc/STM32.txt @@ -110,7 +110,7 @@ UTF-8 с BOM-сигнатурой. PROCEDURE WSADR(x: строковая константа (WCHAR)): INTEGER возвращает адрес x - PROCEDURE VAL(v: любой тип; T): T + PROCEDURE VAL(T; v: любой тип): T v - переменная; интерпретирует v, как переменную типа T diff --git a/doc/x86.txt b/doc/x86.txt index 76c454c..9579320 100644 --- a/doc/x86.txt +++ b/doc/x86.txt @@ -142,7 +142,7 @@ UTF-8 с BOM-сигнатурой. PROCEDURE WSADR(x: строковая константа (WCHAR)): INTEGER возвращает адрес x - PROCEDURE VAL(v: любой тип; T): T + PROCEDURE VAL(T; v: любой тип): T v - переменная; интерпретирует v, как переменную типа T diff --git a/doc/x86_64.txt b/doc/x86_64.txt index 0f6385f..c11569d 100644 --- a/doc/x86_64.txt +++ b/doc/x86_64.txt @@ -134,7 +134,7 @@ UTF-8 с BOM-сигнатурой. PROCEDURE WSADR(x: строковая константа (WCHAR)): INTEGER возвращает адрес x - PROCEDURE VAL(v: любой тип; T): T + PROCEDURE VAL(T; v: любой тип): T v - переменная; интерпретирует v, как переменную типа T diff --git a/lib/Linux/Out.ob07 b/lib/Linux/Out.ob07 index 51a4d2b..2d7da30 100644 --- a/lib/Linux/Out.ob07 +++ b/lib/Linux/Out.ob07 @@ -1,7 +1,7 @@ (* BSD 2-Clause License - Copyright (c) 2020-2022, Anton Krotov + Copyright (c) 2020-2022, 2025 Anton Krotov All rights reserved. *) @@ -54,7 +54,7 @@ BEGIN IF bit_depth = 32 THEN printf3(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), x) ELSE - printf4(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), SYSTEM.VAL(x, INTEGER)) + printf4(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), SYSTEM.VAL(INTEGER, x)) END END Real; @@ -64,7 +64,7 @@ BEGIN IF bit_depth = 32 THEN printf3(SYSTEM.SADR("%*.*f"), width, precision, x) ELSE - printf4(SYSTEM.SADR("%*.*f"), width, precision, SYSTEM.VAL(x, INTEGER)) + printf4(SYSTEM.SADR("%*.*f"), width, precision, SYSTEM.VAL(INTEGER, x)) END END FixReal; diff --git a/lib/Windows/Out.ob07 b/lib/Windows/Out.ob07 index cc70a1a..05cb984 100644 --- a/lib/Windows/Out.ob07 +++ b/lib/Windows/Out.ob07 @@ -1,7 +1,7 @@ (* BSD 2-Clause License - Copyright (c) 2020-2022, Anton Krotov + Copyright (c) 2020-2022, 2025 Anton Krotov All rights reserved. *) @@ -74,7 +74,7 @@ BEGIN IF bit_depth = 32 THEN printf3(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), x) ELSE - printf4(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), SYSTEM.VAL(x, INTEGER)) + printf4(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), SYSTEM.VAL(INTEGER, x)) END END Real; @@ -84,7 +84,7 @@ BEGIN IF bit_depth = 32 THEN printf3(SYSTEM.SADR("%*.*f"), width, precision, x) ELSE - printf4(SYSTEM.SADR("%*.*f"), width, precision, SYSTEM.VAL(x, INTEGER)) + printf4(SYSTEM.SADR("%*.*f"), width, precision, SYSTEM.VAL(INTEGER, x)) END END FixReal; diff --git a/source/STATEMENTS.ob07 b/source/STATEMENTS.ob07 index d7b1d3b..12cb8d3 100644 --- a/source/STATEMENTS.ob07 +++ b/source/STATEMENTS.ob07 @@ -1,7 +1,7 @@ (* BSD 2-Clause License - Copyright (c) 2018-2023, Anton Krotov + Copyright (c) 2018-2023, 2025 Anton Krotov All rights reserved. *) @@ -1483,6 +1483,11 @@ BEGIN PARS.checklex(parser, SCAN.lxLROUND); PARS.Next(parser); getpos(parser, pos); + qualident(parser, t); + PARS.check(t.obj = eTYPE, pos, 79); + PARS.checklex(parser, SCAN.lxCOMMA); + PARS.Next(parser); + getpos(parser, pos); designator(parser, e); PARS.check(isVar(e), pos, 93); IF PROG.isOpenArray(e._type) THEN @@ -1492,11 +1497,6 @@ BEGIN DEC(n) END END; - PARS.checklex(parser, SCAN.lxCOMMA); - PARS.Next(parser); - getpos(parser, pos); - qualident(parser, t); - PARS.check(t.obj = eTYPE, pos, 79); e._type := t._type; PARS.checklex(parser, SCAN.lxRROUND); PARS.Next(parser) diff --git a/source/UTILS.ob07 b/source/UTILS.ob07 index b56cb7a..3a2b9cb 100644 --- a/source/UTILS.ob07 +++ b/source/UTILS.ob07 @@ -23,8 +23,8 @@ CONST max32* = 2147483647; vMajor* = 1; - vMinor* = 67; - Date* = "04-jun-2025"; + vMinor* = 68; + Date* = "05-jun-2025"; FILE_EXT* = ".ob07"; RTL_NAME* = "RTL";