Fixed parser not handling whitespace

This commit is contained in:
Stefan Zermatten
2020-11-12 21:44:08 +02:00
parent 827430c987
commit fde2f821e7
2 changed files with 5 additions and 1 deletions

View File

@@ -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 };

View File

@@ -61,6 +61,9 @@
# Use the Moo lexer
@lexer lexer
spacedExpression ->
_ expression _ {% d => d[1] %}
expression ->
ifStatement {% id %}