From b9c25435aed1ee5e24db3e3b198112aaf1bcf987 Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 9 Nov 2023 11:04:41 +0100 Subject: [PATCH] init --- Makefile | 3 ++ draft.csml | 11 ++++++ main.l | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 Makefile create mode 100644 draft.csml create mode 100644 main.l diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9eb31f4 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +main: + flex -o main.cpp main.l + g++ main.cpp diff --git a/draft.csml b/draft.csml new file mode 100644 index 0000000..270fbd0 --- /dev/null +++ b/draft.csml @@ -0,0 +1,11 @@ +// DOCTYPE HTML +html { + head { + + } + body { + div { + + } + } +} diff --git a/main.l b/main.l new file mode 100644 index 0000000..2a31f24 --- /dev/null +++ b/main.l @@ -0,0 +1,98 @@ +%{ +#include +#include + +#define ECHOS(s) fwrite(s, strlen(s), 1, yyout) + +std::stack tag_stack; +std::string tag_candidate = ""; + +bool push_tag() { + if (tag_candidate == "") { + return false; + } + tag_stack.push(tag_candidate); + ECHOS("<" + tag_stack.top() + ">"); + tag_candidate = ""; +} + +bool pop_tag() { + ECHOS(""); + tag_stack.pop(); +} + +/* + q0(.) -> q1 + q0(\d) -> q2 + q1(\d) -> qe + q2(\d) -> q2 + q2(.) -> qe + qe(\d) -> qe +*/ +%} + +%x HEAD STRING COMMENT COMMENT_MULTILINE +%s BODY + +ws [ \t\r\v\f] +wsnl [ \t\r\v\f\n] + +%% + +{ +\/\/ { + BEGIN COMMENT; + ECHOS(""); + BEGIN BODY; +} +} + +{ +\n { + ECHO; +} +\*\/ { + ECHOS("-->"); + BEGIN BODY; +} +} + + { +.* { + ECHO; +} +)[wsnl]{ { + BEGIN BODY; +} +} + +%%