From 8b159084183ac2177bb614fcfd5d10ab065207c2 Mon Sep 17 00:00:00 2001 From: overflowerror Date: Thu, 20 May 2021 17:18:27 +0200 Subject: [PATCH] basic parser --- src/parser.y | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/parser.y diff --git a/src/parser.y b/src/parser.y new file mode 100644 index 0000000..2a0fd71 --- /dev/null +++ b/src/parser.y @@ -0,0 +1,49 @@ + +%token SECTION TEXT COMMA END +%token PARAMS_BEGIN PARAMS_END +%token STATEMENT_BEGIN STATEMENT_END +%token OUTPUT_BEGIN OUTPUT_END + +%start file + +%% + +file: metaSection SECTION mainSection +; + +metaSection: PARAMS_BEGIN parameters PARAMS_END + | STATEMENT_BEGIN metaStatement STATEMENT_END +; + +parameters: /* empty */ + | parameter moreParameters +; + +parameter: /* empty */ + | TEXT parameter +; + +moreParameters: /* empty */ + | COMMA /* allow trailing commas */ + | COMMA parameter moreParameters +; + +metaStatement: statement +; + +mainSection: /* empty */ + | TEXT mainSection + | STATEMENT_BEGIN blockStatement STATEMENT_END mainSection + | OUTPUT_BEGIN output OUTPUT_END mainSection +; + +blockStatement: statement +; + +statement: TEXT /* statement can't be empty */ + | TEXT statement +; + +output: TEXT /* output can't be empty */ + | TEXT output +;