From 7cfadc190c06ff6b042b4a8173437e7f3d30f485 Mon Sep 17 00:00:00 2001 From: tki Date: Tue, 14 Aug 2018 00:12:21 +0200 Subject: [PATCH] initial --- .gitignore | 4 ++++ rmlp/.editorconfig | 23 +++++++++++++++++++++++ rmlp/.env.example | 1 + rmlp/Makefile | 14 ++++++++++++++ rmlp/README.md | 5 +++++ rmlp/examples/example.html | 5 +++++ rmlp/src/dom.c | 13 +++++++++++++ rmlp/src/include/macros.h | 14 ++++++++++++++ rmlp/src/include/nodes_t.h | 8 ++++++++ rmlp/src/include/tokenizer.h | 10 ++++++++++ rmlp/src/main.c | 9 +++++++++ rmlp/src/tokenizer.c | 6 ++++++ 12 files changed, 112 insertions(+) create mode 100644 .gitignore create mode 100644 rmlp/.editorconfig create mode 100644 rmlp/.env.example create mode 100644 rmlp/Makefile create mode 100644 rmlp/README.md create mode 100644 rmlp/examples/example.html create mode 100644 rmlp/src/dom.c create mode 100644 rmlp/src/include/macros.h create mode 100644 rmlp/src/include/nodes_t.h create mode 100644 rmlp/src/include/tokenizer.h create mode 100644 rmlp/src/main.c create mode 100644 rmlp/src/tokenizer.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a9b286 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.out +*.o +.#* +.env diff --git a/rmlp/.editorconfig b/rmlp/.editorconfig new file mode 100644 index 0000000..1675dda --- /dev/null +++ b/rmlp/.editorconfig @@ -0,0 +1,23 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_size = 2 +indent_style = space + +[*.py] +indent_style = space +indent_size = 4 + +[*.imba] +indent_style = tab +indent_size = 4 + +[Makefile] +indent_style = tab + +[*.c] +indent_style = tab +indent_size = 4 diff --git a/rmlp/.env.example b/rmlp/.env.example new file mode 100644 index 0000000..535e374 --- /dev/null +++ b/rmlp/.env.example @@ -0,0 +1 @@ +export RML_DEBUG:=0 diff --git a/rmlp/Makefile b/rmlp/Makefile new file mode 100644 index 0000000..cecdaa9 --- /dev/null +++ b/rmlp/Makefile @@ -0,0 +1,14 @@ +include .env + +CC=gcc +CFLAGS=-Wall -C -I. -Isrc/include +DEPS = dom.h tokenizer.h nodes_t.h + +%.o: %.c $(DEPS) + (CC) -c -o $@ $< $(CFLAGS) -D DEBUG=$(RML_DEBUG) + +rmlp: src/main.o src/dom.o src/tokenizer.o + $(CC) -o rmlp.out src/main.o src/dom.o src/tokenizer.o + +clean: + rm src/*.o diff --git a/rmlp/README.md b/rmlp/README.md new file mode 100644 index 0000000..94cf691 --- /dev/null +++ b/rmlp/README.md @@ -0,0 +1,5 @@ +Reduced Markup Language Parser + +#### NAME + +*rmlp* --- It slurps reduced html and barfs out DOM tree. diff --git a/rmlp/examples/example.html b/rmlp/examples/example.html new file mode 100644 index 0000000..bba240f --- /dev/null +++ b/rmlp/examples/example.html @@ -0,0 +1,5 @@ + +
+
This is colorful
+
+Imba language diff --git a/rmlp/src/dom.c b/rmlp/src/dom.c new file mode 100644 index 0000000..2f51443 --- /dev/null +++ b/rmlp/src/dom.c @@ -0,0 +1,13 @@ +#include "nodes_t.h" + +node current_node(void) { + return NULL; +} + +tree add_child(node *child) { + return NULL; +} + +tree add_sibling(node *sibling) { + return NULL; +} diff --git a/rmlp/src/include/macros.h b/rmlp/src/include/macros.h new file mode 100644 index 0000000..70550c4 --- /dev/null +++ b/rmlp/src/include/macros.h @@ -0,0 +1,14 @@ +#ifndef __MACROS__ +#define __MACROS__ + +#if DEBUG == 0 +#define DEBUG_MODE 0 +#else +#define DEBUG_MODE 1 +#endif /*debug*/ + +#define log(fmt, ...) \ + do { if (DEBUG_MODE) fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \ + __LINE__, __func__, __VA_ARGS__); } while (0) + +#endif //macros diff --git a/rmlp/src/include/nodes_t.h b/rmlp/src/include/nodes_t.h new file mode 100644 index 0000000..8ce6b90 --- /dev/null +++ b/rmlp/src/include/nodes_t.h @@ -0,0 +1,8 @@ +#ifndef __NODES_T__ +#define __NODES_T__ + +typedef struct node { + char *element; +} node; + +#endif //nodes diff --git a/rmlp/src/include/tokenizer.h b/rmlp/src/include/tokenizer.h new file mode 100644 index 0000000..71fbd68 --- /dev/null +++ b/rmlp/src/include/tokenizer.h @@ -0,0 +1,10 @@ +#ifndef __TOKENIZER__ +#define __TOKENIZER__ + +typedef struct node { + char *element; +} node; + +node slurp_whitespace(char*); + +#endif //tokenizer diff --git a/rmlp/src/main.c b/rmlp/src/main.c new file mode 100644 index 0000000..e8da18c --- /dev/null +++ b/rmlp/src/main.c @@ -0,0 +1,9 @@ +#include +#include "macros.h" +#include "tokenizer.h" + +int main(int argc, char **argv) { + char *input = argv[1]; + log("Got: %s\n", input); + return 0; +} diff --git a/rmlp/src/tokenizer.c b/rmlp/src/tokenizer.c new file mode 100644 index 0000000..795b001 --- /dev/null +++ b/rmlp/src/tokenizer.c @@ -0,0 +1,6 @@ +#include "nodes_t.h" +#include "tokenizer.h" + +node slurp_whitespace(char* input_line) { + return NULL; +}