/programs/develop/oberon07/Compiler.kex |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/develop/oberon07/Compiler |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/develop/oberon07/Compiler.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/develop/oberon07/doc/x86.txt |
---|
24,8 → 24,6 |
(соответствует типу исполняемого файла) |
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб, |
допустимо от 1 до 32 Мб) |
-tab <width> размер табуляции (используется для вычисления координат в |
исходном коде), по умолчанию - 4 |
-nochk <"ptibcwra"> отключить проверки при выполнении (см. ниже) |
-lower разрешить ключевые слова и встроенные идентификаторы в |
нижнем регистре |
/programs/develop/oberon07/doc/x86_64.txt |
---|
22,8 → 22,6 |
(соответствует типу исполняемого файла) |
-stk <size> размер стэка в мегабайтах (по умолчанию 2 Мб, |
допустимо от 1 до 32 Мб) |
-tab <width> размер табуляции (используется для вычисления координат в |
исходном коде), по умолчанию - 4 |
-nochk <"ptibcwra"> отключить проверки при выполнении |
-lower разрешить ключевые слова и встроенные идентификаторы в |
нижнем регистре |
/programs/develop/oberon07/source/Compiler.ob07 |
---|
8,7 → 8,7 |
MODULE Compiler; |
IMPORT ST := STATEMENTS, PARS, UTILS, PATHS, PROG, C := CONSOLE, |
ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN, TEXTDRV; |
ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN; |
CONST |
30,24 → 30,7 |
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; |
_end := FALSE; |
74,14 → 57,25 |
out := param |
END |
ELSIF param = "-tab" THEN |
getVal(i, options.tab) |
ELSIF param = "-ram" THEN |
getVal(i, options.ram) |
INC(i); |
UTILS.GetArg(i, param); |
IF STRINGS.StrToInt(param, value) THEN |
options.ram := value |
END; |
IF param[0] = "-" THEN |
DEC(i) |
END |
ELSIF param = "-rom" THEN |
getVal(i, options.rom) |
INC(i); |
UTILS.GetArg(i, param); |
IF STRINGS.StrToInt(param, value) THEN |
options.rom := value |
END; |
IF param[0] = "-" THEN |
DEC(i) |
END |
ELSIF param = "-nochk" THEN |
INC(i); |
188,7 → 182,6 |
BEGIN |
options.stack := 2; |
options.tab := TEXTDRV.defTabSize; |
options.version := 65536; |
options.pic := FALSE; |
options.lower := FALSE; |
244,7 → 237,6 |
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; |
293,7 → 285,6 |
STRINGS.append(lib_path, UTILS.slash); |
keys(options, outname); |
TEXTDRV.setTabSize(options.tab); |
IF outname = "" THEN |
outname := path; |
STRINGS.append(outname, modname); |
/programs/develop/oberon07/source/PROG.ob07 |
---|
71,7 → 71,7 |
OPTIONS* = RECORD |
version*, stack*, ram*, rom*, tab*: INTEGER; |
version*, stack*, ram*, rom*: INTEGER; |
pic*, lower*: BOOLEAN; |
checking*: SET |
/programs/develop/oberon07/source/UTILS.ob07 |
---|
23,8 → 23,8 |
max32* = 2147483647; |
vMajor* = 1; |
vMinor* = 53; |
Date* = "26-aug-2021"; |
vMinor* = 52; |
Date* = "07-may-2021"; |
FILE_EXT* = ".ob07"; |
RTL_NAME* = "RTL"; |
/programs/develop/oberon07/source/TEXTDRV.ob07 |
---|
1,7 → 1,7 |
(* |
BSD 2-Clause License |
Copyright (c) 2018-2021, Anton Krotov |
Copyright (c) 2018-2020, Anton Krotov |
All rights reserved. |
*) |
12,13 → 12,11 |
CONST |
CR = 0DX; LF = 0AX; HT = 9X; |
CR = 0DX; LF = 0AX; |
CHUNK = 1024 * 256; |
defTabSize* = 4; |
TYPE |
TEXT* = POINTER TO RECORD (C.ITEM) |
47,7 → 45,6 |
VAR |
texts: C.COLLECTION; |
TabSize: INTEGER; |
PROCEDURE load (text: TEXT); |
94,11 → 91,8 |
text.eol := FALSE |
END; |
text.CR := FALSE |
ELSIF c = HT THEN |
text.col := text.col + TabSize - text.col MOD TabSize; |
ELSE |
text.eol := FALSE; |
text.CR := FALSE |
ELSE |
IF text.utf8 THEN |
IF ORD(c) DIV 64 # 2 THEN |
INC(text.col) |
106,7 → 100,6 |
ELSE |
INC(text.col) |
END; |
text.eol := FALSE; |
text.CR := FALSE |
END |
194,17 → 187,6 |
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. |