From fde2f821e739c0756ef0afb035f077d2e6e76597 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Thu, 12 Nov 2020 21:44:08 +0200 Subject: [PATCH] Fixed parser not handling whitespace --- app/imports/parser/grammar.js | 3 ++- app/imports/parser/grammar.ne | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/imports/parser/grammar.js b/app/imports/parser/grammar.js index 3991e606..27669cea 100644 --- a/app/imports/parser/grammar.js +++ b/app/imports/parser/grammar.js @@ -60,6 +60,7 @@ function id(x) { return x[0]; } } let Lexer = lexer; let ParserRules = [ + {"name": "spacedExpression", "symbols": ["_", "expression", "_"], "postprocess": d => d[1]}, {"name": "expression", "symbols": ["ifStatement"], "postprocess": id}, {"name": "ifStatement", "symbols": ["orExpression", "_", (lexer.has("ifOperator") ? {type: "ifOperator"} : ifOperator), "_", "orExpression", "_", (lexer.has("elseOperator") ? {type: "elseOperator"} : elseOperator), "_", "ifStatement"], "postprocess": d => new IfNode({condition: d[0], consequent: d[4], alternative: d[8]}) @@ -132,5 +133,5 @@ let ParserRules = [ {"name": "_", "symbols": []}, {"name": "_", "symbols": [(lexer.has("space") ? {type: "space"} : space)], "postprocess": nuller} ]; -let ParserStart = "expression"; +let ParserStart = "spacedExpression"; export default { Lexer, ParserRules, ParserStart }; diff --git a/app/imports/parser/grammar.ne b/app/imports/parser/grammar.ne index 9c336d5c..6035bf5b 100644 --- a/app/imports/parser/grammar.ne +++ b/app/imports/parser/grammar.ne @@ -61,6 +61,9 @@ # Use the Moo lexer @lexer lexer +spacedExpression -> + _ expression _ {% d => d[1] %} + expression -> ifStatement {% id %}