Fixed parser not handling whitespace
This commit is contained in:
@@ -60,6 +60,7 @@ function id(x) { return x[0]; }
|
|||||||
}
|
}
|
||||||
let Lexer = lexer;
|
let Lexer = lexer;
|
||||||
let ParserRules = [
|
let ParserRules = [
|
||||||
|
{"name": "spacedExpression", "symbols": ["_", "expression", "_"], "postprocess": d => d[1]},
|
||||||
{"name": "expression", "symbols": ["ifStatement"], "postprocess": id},
|
{"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":
|
{"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]})
|
d => new IfNode({condition: d[0], consequent: d[4], alternative: d[8]})
|
||||||
@@ -132,5 +133,5 @@ let ParserRules = [
|
|||||||
{"name": "_", "symbols": []},
|
{"name": "_", "symbols": []},
|
||||||
{"name": "_", "symbols": [(lexer.has("space") ? {type: "space"} : space)], "postprocess": nuller}
|
{"name": "_", "symbols": [(lexer.has("space") ? {type: "space"} : space)], "postprocess": nuller}
|
||||||
];
|
];
|
||||||
let ParserStart = "expression";
|
let ParserStart = "spacedExpression";
|
||||||
export default { Lexer, ParserRules, ParserStart };
|
export default { Lexer, ParserRules, ParserStart };
|
||||||
|
|||||||
@@ -61,6 +61,9 @@
|
|||||||
# Use the Moo lexer
|
# Use the Moo lexer
|
||||||
@lexer lexer
|
@lexer lexer
|
||||||
|
|
||||||
|
spacedExpression ->
|
||||||
|
_ expression _ {% d => d[1] %}
|
||||||
|
|
||||||
expression ->
|
expression ->
|
||||||
ifStatement {% id %}
|
ifStatement {% id %}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user