Oberon07: v1.53

git-svn-id: svn://kolibrios.org@9177 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Anton Krotov 2021-09-03 17:21:37 +00:00
parent e861f97224
commit ce8fecbc6b
16 changed files with 8639 additions and 8608 deletions

Binary file not shown.

View File

@ -24,6 +24,8 @@ UTF-8 с BOM-сигнатурой.
(соответствует типу исполняемого файла)
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб,
допустимо от 1 до 32 Мб)
-tab <width> размер табуляции (используется для вычисления координат в
исходном коде), по умолчанию - 4
-nochk <"ptibcwra"> отключить проверки при выполнении (см. ниже)
-lower разрешить ключевые слова и встроенные идентификаторы в
нижнем регистре

View File

@ -22,6 +22,8 @@ UTF-8 с BOM-сигнатурой.
(соответствует типу исполняемого файла)
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб,
допустимо от 1 до 32 Мб)
-tab <width> размер табуляции (используется для вычисления координат в
исходном коде), по умолчанию - 4
-nochk <"ptibcwra"> отключить проверки при выполнении
-lower разрешить ключевые слова и встроенные идентификаторы в
нижнем регистре

View File

@ -8,7 +8,7 @@
MODULE Compiler;
IMPORT ST := STATEMENTS, PARS, UTILS, PATHS, PROG, C := CONSOLE,
ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN;
ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN, TEXTDRV;
CONST
@ -30,6 +30,23 @@ VAR
major: INTEGER;
checking: SET;
PROCEDURE getVal (VAR i: INTEGER; VAR value: INTEGER);
VAR
param: PARS.PATH;
val: INTEGER;
BEGIN
INC(i);
UTILS.GetArg(i, param);
IF STRINGS.StrToInt(param, val) THEN
value := val
END;
IF param[0] = "-" THEN
DEC(i)
END
END getVal;
BEGIN
out := "";
checking := options.checking;
@ -57,25 +74,14 @@ BEGIN
out := param
END
ELSIF param = "-tab" THEN
getVal(i, options.tab)
ELSIF param = "-ram" THEN
INC(i);
UTILS.GetArg(i, param);
IF STRINGS.StrToInt(param, value) THEN
options.ram := value
END;
IF param[0] = "-" THEN
DEC(i)
END
getVal(i, options.ram)
ELSIF param = "-rom" THEN
INC(i);
UTILS.GetArg(i, param);
IF STRINGS.StrToInt(param, value) THEN
options.rom := value
END;
IF param[0] = "-" THEN
DEC(i)
END
getVal(i, options.rom)
ELSIF param = "-nochk" THEN
INC(i);
@ -182,6 +188,7 @@ VAR
BEGIN
options.stack := 2;
options.tab := TEXTDRV.defTabSize;
options.version := 65536;
options.pic := FALSE;
options.lower := FALSE;
@ -237,6 +244,7 @@ BEGIN
C.StringLn(" -ver <major.minor> set version of program (KolibriOS DLL)"); C.Ln;
C.StringLn(" -ram <size> set size of RAM in bytes (MSP430) or Kbytes (STM32)"); C.Ln;
C.StringLn(" -rom <size> set size of ROM in bytes (MSP430) or Kbytes (STM32)"); C.Ln;
C.StringLn(" -tab <width> set width for tabs"); C.Ln;
UTILS.Exit(0)
END;
@ -285,6 +293,7 @@ BEGIN
STRINGS.append(lib_path, UTILS.slash);
keys(options, outname);
TEXTDRV.setTabSize(options.tab);
IF outname = "" THEN
outname := path;
STRINGS.append(outname, modname);

View File

@ -71,7 +71,7 @@ TYPE
OPTIONS* = RECORD
version*, stack*, ram*, rom*: INTEGER;
version*, stack*, ram*, rom*, tab*: INTEGER;
pic*, lower*: BOOLEAN;
checking*: SET

View File

@ -1,7 +1,7 @@
(*
BSD 2-Clause License
Copyright (c) 2018-2020, Anton Krotov
Copyright (c) 2018-2021, Anton Krotov
All rights reserved.
*)
@ -12,10 +12,12 @@ IMPORT FILES, C := COLLECTIONS;
CONST
CR = 0DX; LF = 0AX;
CR = 0DX; LF = 0AX; HT = 9X;
CHUNK = 1024 * 256;
defTabSize* = 4;
TYPE
@ -45,6 +47,7 @@ TYPE
VAR
texts: C.COLLECTION;
TabSize: INTEGER;
PROCEDURE load (text: TEXT);
@ -91,8 +94,11 @@ BEGIN
text.eol := FALSE
END;
text.CR := FALSE
ELSIF c = HT THEN
text.col := text.col + TabSize - text.col MOD TabSize;
text.eol := FALSE;
text.CR := FALSE
ELSE
text.eol := FALSE;
IF text.utf8 THEN
IF ORD(c) DIV 64 # 2 THEN
INC(text.col)
@ -100,7 +106,8 @@ BEGIN
ELSE
INC(text.col)
END;
text.CR := FALSE
text.eol := FALSE;
text.CR := FALSE
END
END
@ -187,6 +194,17 @@ BEGIN
END open;
PROCEDURE setTabSize* (n: INTEGER);
BEGIN
IF (0 < n) & (n <= 64) THEN
TabSize := n
ELSE
TabSize := defTabSize
END
END setTabSize;
BEGIN
TabSize := defTabSize;
texts := C.create()
END TEXTDRV.

View File

@ -23,8 +23,8 @@ CONST
max32* = 2147483647;
vMajor* = 1;
vMinor* = 52;
Date* = "07-may-2021";
vMinor* = 53;
Date* = "26-aug-2021";
FILE_EXT* = ".ob07";
RTL_NAME* = "RTL";