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