From c22ab6347993c35b33097e2f98450c389af1e7f6 Mon Sep 17 00:00:00 2001 From: tiago Date: Sat, 6 May 2023 16:34:05 +0100 Subject: [PATCH] [PARSER] Grammar done and some note. --- src/grammar | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/notes.md | 14 +++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/grammar create mode 100644 src/notes.md diff --git a/src/grammar b/src/grammar new file mode 100644 index 0000000..cef1038 --- /dev/null +++ b/src/grammar @@ -0,0 +1,55 @@ + __________ __ _____ ____ ___ ____ _____ __________ + /_ __/ __ \/ |/ / / / __ \/ | / __ \/ ___// ____/ __ \ + / / / / / / /|_/ / / / /_/ / /| | / /_/ /\__ \/ __/ / /_/ / + / / / /_/ / / / / /___/ ____/ ___ |/ _, _/___/ / /___/ _, _/ +/_/ \____/_/ /_/_____/_/ /_/ |_/_/ |_|/____/_____/_/ |_| + +toml : content + +content : content tomlEntries + | tomlEntries + +tomlEntries : table + | object + +table : '[' ID ']' + | '[' '[' ID ']' ']' + +object : key '=' value + | key '=' array -- + | key '=' dict -- talvez coloque isto numa regra separada chamada inlinetable + +array : '[' aCont ']' + | '[' ']' + +aCont : aCont ',' aElem + | aElem + +aElem : value + | dict + | array + +dict : '{' dictCont '}' + | '{' '}' + +dictCont : dictCont ',' dictElem + | dictElem + +dictElem : object + +key : ID + | STR + | FLOAT + | INT + +value : STR + | DATE + | DATETIME + | INT + | FLOAT + | HEX + | BIN + | OCT + | INF + | NAN + diff --git a/src/notes.md b/src/notes.md new file mode 100644 index 0000000..626dd87 --- /dev/null +++ b/src/notes.md @@ -0,0 +1,14 @@ + +# LEXER + TODO: + - multiline strings + - exponent floats and ints + - tirar as aspas das strings, com o match object (4.18 Internal lexer state https://www.dabeaz.com/ply/ply.html#ply_nn20) + - mudar ids para poderem existir keys com o formato yessir."olympus".2 + - inlinetables nao podem ter espacos no meio a menos que um dos values o permita (exemplo : multiline strings) + + +# PARSER +## GRAMMAR + - por agora esta tudo porreiro +