mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
HashMap String works
This commit is contained in:
parent
740bd75240
commit
3aa2bcec3e
7 changed files with 63 additions and 48 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
MODULE CharaterStack;
|
MODULE CharacterStack;
|
||||||
IMPORT List, Out, Sys;
|
IMPORT List, Out, Sys;
|
||||||
|
|
||||||
TYPE
|
TYPE
|
||||||
|
|
@ -16,9 +16,9 @@ TYPE
|
||||||
|
|
||||||
string = Sys.string;
|
string = Sys.string;
|
||||||
|
|
||||||
CharacterStackType = POINTER TO CharacterStackTypeDesc;
|
CharacterStackType* = POINTER TO CharacterStackTypeDesc;
|
||||||
|
|
||||||
CharacterStackTypeDesc = RECORD (List.TListDesc)
|
CharacterStackTypeDesc* = RECORD (List.TListDesc)
|
||||||
pop: PROCEDURE(self: CharacterStackType): CHAR;
|
pop: PROCEDURE(self: CharacterStackType): CHAR;
|
||||||
push: PROCEDURE(self: CharacterStackType; char: CHAR);
|
push: PROCEDURE(self: CharacterStackType; char: CHAR);
|
||||||
top: PROCEDURE(self: CharacterStackType) : CHAR;
|
top: PROCEDURE(self: CharacterStackType) : CHAR;
|
||||||
|
|
@ -118,4 +118,4 @@ BEGIN
|
||||||
Out.Ln();
|
Out.Ln();
|
||||||
Out.Char(characterStack.pop(characterStack));
|
Out.Char(characterStack.pop(characterStack));
|
||||||
Out.Ln();
|
Out.Ln();
|
||||||
END CharaterStack.
|
END CharacterStack.
|
||||||
BIN
CharaterStack
BIN
CharaterStack
Binary file not shown.
BIN
HashMap
Executable file
BIN
HashMap
Executable file
Binary file not shown.
|
|
@ -1,59 +1,68 @@
|
||||||
MODULE HashMap;
|
MODULE HashMap;
|
||||||
IMPORT Logger;
|
IMPORT Logger, CharacterStack, Strings;
|
||||||
|
CONST
|
||||||
|
ArrayMaxNumber = 5000;
|
||||||
TYPE
|
TYPE
|
||||||
|
TString = ARRAY ArrayMaxNumber OF CHAR;
|
||||||
|
|
||||||
JsonTypePointer* = POINTER TO JsonType;
|
JsonTypePointer* = POINTER TO JsonType;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JsonType* = RECORD
|
JsonType* = RECORD
|
||||||
GetTerminal* : PROCEDURE(self : JsonTypePointer, string : STRING): STRING;
|
GetTerminal* : PROCEDURE(self : JsonTypePointer; string : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
||||||
GetNonTerminal* : PROCEDURE(self : JsonTypePointer, key : STRING): JsonTypePointer;
|
GetNonTerminal* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): JsonTypePointer;
|
||||||
HasKey* : PROCEDURE(self : JsonTypePointer, key : STRING): BOOLEAN;
|
HasKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): BOOLEAN;
|
||||||
TypeOfTheKey* : PROCEDURE(self : JsonTypePointer, key : STRING): STRING;
|
TypeOfTheKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
||||||
Create* : PROCEDURE(self : JsonTypePointer, key : STRING): BOOLEAN;
|
|
||||||
|
|
||||||
TerminalsValues : ARRAY OF STRING;
|
TerminalsValues : ARRAY ArrayMaxNumber OF TString;
|
||||||
TerminalKeys : ARRAY OF STRING;
|
TerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
||||||
|
|
||||||
NonTerminalValues : ARRAY OF JsonTypePointer;
|
NonTerminalValues : POINTER TO ARRAY OF JsonTypePointer;
|
||||||
NonTerminalKeys : ARRAY OF STRING;
|
NonTerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE makeACopy(VAR STR1, STR2: ARRAY OF CHAR):
|
VAR
|
||||||
BEGIN
|
jsonRecord :JsonTypePointer;
|
||||||
(* TODO *)
|
|
||||||
END;
|
|
||||||
|
|
||||||
PROCEDURE Create*(VAR self : JsonTypePointer, text: ARRAY OF CHAR): BOOLEAN;
|
|
||||||
VAR
|
|
||||||
everethingIsOK: BOOLEAN;
|
|
||||||
i,j: INTEGER;
|
|
||||||
stack, key, val: ARRAY OF CHAR;
|
|
||||||
symbolBracketStart, symbolBracketEnd, symbolStart: CHAR;
|
|
||||||
BEGIN
|
|
||||||
symbolBracketStart := "{";
|
|
||||||
symbolBracketEnd := "}";
|
|
||||||
symbol := "\"";
|
|
||||||
j := 0;
|
|
||||||
|
|
||||||
i := 0;
|
PROCEDURE Create*(text: ARRAY OF CHAR): JsonTypePointer;
|
||||||
REPEAT
|
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();
|
||||||
|
|
||||||
symbol := text[i];
|
symbolBracketStart := "{";
|
||||||
INC(i);
|
symbolBracketEnd := "}";
|
||||||
|
|
||||||
IF symbol = symbolBracketStart THEN
|
i := 0;
|
||||||
Logger.out("Starting Parse Json")
|
j := 0;
|
||||||
END;
|
|
||||||
|
|
||||||
IF symbol = symbolBracketStart THEN
|
REPEAT
|
||||||
Logger.out("End Parsing Json")
|
symbol := text[i];
|
||||||
END;
|
INC(i);
|
||||||
|
|
||||||
makeACopy(key, self.TerminalKeys[j]);
|
IF symbol = symbolBracketStart THEN
|
||||||
makeACopy(value, self.TerminalsValues[j]);
|
Logger.Log("Starting Parse Json");
|
||||||
|
END;
|
||||||
|
|
||||||
UNTIL i = LEN(text);
|
IF symbol = symbolBracketStart THEN
|
||||||
|
Logger.Log("End Parsing Json");
|
||||||
|
END;
|
||||||
|
UNTIL text[i] = 0AX;
|
||||||
|
|
||||||
RETURN everethingIsOK;
|
RETURN jsonRecord;
|
||||||
END;
|
END Create;
|
||||||
|
|
||||||
END;
|
BEGIN
|
||||||
|
NEW(jsonRecord);
|
||||||
|
jsonRecord := Create('{"asdasd": "test"}');
|
||||||
END HashMap.
|
END HashMap.
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
MODULE JsonParser;
|
MODULE JsonParser;
|
||||||
|
|
||||||
PROCEDURE
|
PROCEDURE
|
||||||
END JsonParser.
|
END JsonParser.
|
||||||
5
build.sh
5
build.sh
|
|
@ -1,6 +1,9 @@
|
||||||
#/bin/bash
|
#/bin/bash
|
||||||
|
|
||||||
voc -s \
|
voc -s \
|
||||||
|
./time.Mod \
|
||||||
|
./logger.Mod \
|
||||||
./diaspora2hugo/src/lists/Sys.Mod \
|
./diaspora2hugo/src/lists/Sys.Mod \
|
||||||
./diaspora2hugo/src/lists/List.Mod \
|
./diaspora2hugo/src/lists/List.Mod \
|
||||||
./CharacterStack.Mod -m
|
./CharacterStack.Mod \
|
||||||
|
./HashMapString.Mod -m
|
||||||
2
makefile
2
makefile
|
|
@ -13,6 +13,8 @@ clean:
|
||||||
rm *.o &
|
rm *.o &
|
||||||
rm *.sym &
|
rm *.sym &
|
||||||
rm http &
|
rm http &
|
||||||
|
rm CharaterStack &
|
||||||
|
|
||||||
test: clean http
|
test: clean http
|
||||||
./http
|
./http
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue