diff --git a/CharacterStack.Mod b/CharacterStack.Mod index a67a4b5..6f3a66b 100644 --- a/CharacterStack.Mod +++ b/CharacterStack.Mod @@ -1,4 +1,4 @@ -MODULE CharaterStack; +MODULE CharacterStack; IMPORT List, Out, Sys; TYPE @@ -16,9 +16,9 @@ TYPE string = Sys.string; - CharacterStackType = POINTER TO CharacterStackTypeDesc; + CharacterStackType* = POINTER TO CharacterStackTypeDesc; - CharacterStackTypeDesc = RECORD (List.TListDesc) + CharacterStackTypeDesc* = RECORD (List.TListDesc) pop: PROCEDURE(self: CharacterStackType): CHAR; push: PROCEDURE(self: CharacterStackType; char: CHAR); top: PROCEDURE(self: CharacterStackType) : CHAR; @@ -118,4 +118,4 @@ BEGIN Out.Ln(); Out.Char(characterStack.pop(characterStack)); Out.Ln(); -END CharaterStack. \ No newline at end of file +END CharacterStack. \ No newline at end of file diff --git a/CharaterStack b/CharaterStack deleted file mode 100755 index 9cd02b2..0000000 Binary files a/CharaterStack and /dev/null differ diff --git a/HashMap b/HashMap new file mode 100755 index 0000000..2d122ed Binary files /dev/null and b/HashMap differ diff --git a/HashMapString.Mod b/HashMapString.Mod index cf3848d..5cf3772 100644 --- a/HashMapString.Mod +++ b/HashMapString.Mod @@ -1,59 +1,68 @@ MODULE HashMap; -IMPORT Logger; +IMPORT Logger, CharacterStack, Strings; +CONST + ArrayMaxNumber = 5000; TYPE + TString = ARRAY ArrayMaxNumber OF CHAR; + JsonTypePointer* = POINTER TO JsonType; + + + JsonType* = RECORD - GetTerminal* : PROCEDURE(self : JsonTypePointer, string : STRING): STRING; - GetNonTerminal* : PROCEDURE(self : JsonTypePointer, key : STRING): JsonTypePointer; - HasKey* : PROCEDURE(self : JsonTypePointer, key : STRING): BOOLEAN; - TypeOfTheKey* : PROCEDURE(self : JsonTypePointer, key : STRING): STRING; - Create* : PROCEDURE(self : JsonTypePointer, key : STRING): BOOLEAN; + 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 OF STRING; - TerminalKeys : ARRAY OF STRING; + TerminalsValues : ARRAY ArrayMaxNumber OF TString; + TerminalKeys : ARRAY ArrayMaxNumber OF TString; - NonTerminalValues : ARRAY OF JsonTypePointer; - NonTerminalKeys : ARRAY OF STRING; + NonTerminalValues : POINTER TO ARRAY OF JsonTypePointer; + NonTerminalKeys : ARRAY ArrayMaxNumber OF TString; END; - PROCEDURE makeACopy(VAR STR1, STR2: ARRAY OF CHAR): - BEGIN - (* TODO *) - END; +VAR + jsonRecord :JsonTypePointer; - 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; - REPEAT - - symbol := text[i]; - INC(i); +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(); - IF symbol = symbolBracketStart THEN - Logger.out("Starting Parse Json") - END; + symbolBracketStart := "{"; + symbolBracketEnd := "}"; + + i := 0; + j := 0; - IF symbol = symbolBracketStart THEN - Logger.out("End Parsing Json") - END; + REPEAT + symbol := text[i]; + INC(i); - makeACopy(key, self.TerminalKeys[j]); - makeACopy(value, self.TerminalsValues[j]); + IF symbol = symbolBracketStart THEN + 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; - END; + RETURN jsonRecord; +END Create; -END; +BEGIN + NEW(jsonRecord); + jsonRecord := Create('{"asdasd": "test"}'); END HashMap. \ No newline at end of file diff --git a/JsonParser.Mod b/JsonParser.Mod index c733d88..693977d 100644 --- a/JsonParser.Mod +++ b/JsonParser.Mod @@ -1,3 +1,4 @@ MODULE JsonParser; + PROCEDURE END JsonParser. \ No newline at end of file diff --git a/build.sh b/build.sh index e39bcb2..f9383ae 100644 --- a/build.sh +++ b/build.sh @@ -1,6 +1,9 @@ #/bin/bash voc -s \ + ./time.Mod \ + ./logger.Mod \ ./diaspora2hugo/src/lists/Sys.Mod \ ./diaspora2hugo/src/lists/List.Mod \ - ./CharacterStack.Mod -m \ No newline at end of file + ./CharacterStack.Mod \ + ./HashMapString.Mod -m \ No newline at end of file diff --git a/makefile b/makefile index 32755ac..99f5d4e 100644 --- a/makefile +++ b/makefile @@ -13,6 +13,8 @@ clean: rm *.o & rm *.sym & rm http & + rm CharaterStack & test: clean http - ./http \ No newline at end of file + ./http + \ No newline at end of file