mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
68 lines
No EOL
1.8 KiB
Modula-2
68 lines
No EOL
1.8 KiB
Modula-2
MODULE HashMap;
|
|
IMPORT Logger, CharacterStack, Strings;
|
|
CONST
|
|
ArrayMaxNumber = 5000;
|
|
TYPE
|
|
TString = ARRAY ArrayMaxNumber OF CHAR;
|
|
|
|
JsonTypePointer* = POINTER TO JsonType;
|
|
|
|
|
|
|
|
JsonType* = RECORD
|
|
GetTerminal* : PROCEDURE(self : JsonTypePointer; string : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
|
GetNonTerminal* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): JsonTypePointer;
|
|
HasKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): BOOLEAN;
|
|
TypeOfTheKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
|
|
|
TerminalsValues : ARRAY ArrayMaxNumber OF TString;
|
|
TerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
|
|
|
NonTerminalValues : POINTER TO ARRAY OF JsonTypePointer;
|
|
NonTerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
|
END;
|
|
|
|
VAR
|
|
jsonRecord :JsonTypePointer;
|
|
|
|
|
|
PROCEDURE Create*(text: ARRAY OF CHAR): JsonTypePointer;
|
|
VAR
|
|
jsonRecord: JsonTypePointer;
|
|
everethingIsOK: BOOLEAN;
|
|
i,j: INTEGER;
|
|
characterStack: CharacterStack.CharacterStackType;
|
|
key, val: ARRAY ArrayMaxNumber OF CHAR;
|
|
symbol: CHAR;
|
|
symbolBracketStart, symbolBracketEnd, symbolStart: CHAR;
|
|
BEGIN
|
|
NEW(jsonRecord);
|
|
NEW(characterStack);
|
|
characterStack := CharacterStack.Create();
|
|
|
|
symbolBracketStart := "{";
|
|
symbolBracketEnd := "}";
|
|
|
|
i := 0;
|
|
j := 0;
|
|
|
|
REPEAT
|
|
symbol := text[i];
|
|
INC(i);
|
|
|
|
IF symbol = symbolBracketStart THEN
|
|
Logger.Log("Starting Parse Json");
|
|
END;
|
|
|
|
IF symbol = symbolBracketStart THEN
|
|
Logger.Log("End Parsing Json");
|
|
END;
|
|
UNTIL text[i] = 0AX;
|
|
|
|
RETURN jsonRecord;
|
|
END Create;
|
|
|
|
BEGIN
|
|
NEW(jsonRecord);
|
|
jsonRecord := Create('{"asdasd": "test"}');
|
|
END HashMap. |