forked from KolibriOS/kolibrios
Oberon07: v1.53
git-svn-id: svn://kolibrios.org@9177 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e861f97224
commit
ce8fecbc6b
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -24,6 +24,8 @@ UTF-8 с BOM-сигнатурой.
|
||||
(соответствует типу исполняемого файла)
|
||||
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб,
|
||||
допустимо от 1 до 32 Мб)
|
||||
-tab <width> размер табуляции (используется для вычисления координат в
|
||||
исходном коде), по умолчанию - 4
|
||||
-nochk <"ptibcwra"> отключить проверки при выполнении (см. ниже)
|
||||
-lower разрешить ключевые слова и встроенные идентификаторы в
|
||||
нижнем регистре
|
||||
|
@ -22,6 +22,8 @@ UTF-8 с BOM-сигнатурой.
|
||||
(соответствует типу исполняемого файла)
|
||||
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб,
|
||||
допустимо от 1 до 32 Мб)
|
||||
-tab <width> размер табуляции (используется для вычисления координат в
|
||||
исходном коде), по умолчанию - 4
|
||||
-nochk <"ptibcwra"> отключить проверки при выполнении
|
||||
-lower разрешить ключевые слова и встроенные идентификаторы в
|
||||
нижнем регистре
|
||||
|
@ -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);
|
||||
|
@ -71,7 +71,7 @@ TYPE
|
||||
|
||||
OPTIONS* = RECORD
|
||||
|
||||
version*, stack*, ram*, rom*: INTEGER;
|
||||
version*, stack*, ram*, rom*, tab*: INTEGER;
|
||||
pic*, lower*: BOOLEAN;
|
||||
checking*: SET
|
||||
|
||||
|
@ -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
|
||||
ELSE
|
||||
ELSIF c = HT THEN
|
||||
text.col := text.col + TabSize - text.col MOD TabSize;
|
||||
text.eol := FALSE;
|
||||
text.CR := FALSE
|
||||
ELSE
|
||||
IF text.utf8 THEN
|
||||
IF ORD(c) DIV 64 # 2 THEN
|
||||
INC(text.col)
|
||||
@ -100,6 +106,7 @@ BEGIN
|
||||
ELSE
|
||||
INC(text.col)
|
||||
END;
|
||||
text.eol := FALSE;
|
||||
text.CR := FALSE
|
||||
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.
|
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user