Fixed parser not handling whitespace
This commit is contained in:
@@ -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 };
|
||||
|
||||
@@ -61,6 +61,9 @@
|
||||
# Use the Moo lexer
|
||||
@lexer lexer
|
||||
|
||||
spacedExpression ->
|
||||
_ expression _ {% d => d[1] %}
|
||||
|
||||
expression ->
|
||||
ifStatement {% id %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user