Merge branch 'version-2' of https://github.com/ThaumRystra/DiceCloud into version-2
This commit is contained in:
@@ -24,15 +24,16 @@ function id(x) { return x[0]; }
|
||||
value: s => s.slice(1, -1),
|
||||
},
|
||||
name: {
|
||||
match: /[a-zA-Z_]+/,
|
||||
match: /[a-zA-Z_]*[a-ce-zA-Z_][a-zA-Z0-9_]*/,
|
||||
type: moo.keywords({
|
||||
'keywords': ['d', 'true', 'false'],
|
||||
'keywords': ['true', 'false'],
|
||||
}),
|
||||
},
|
||||
space: {
|
||||
match: /\s+/,
|
||||
lineBreaks: true,
|
||||
},
|
||||
diceOperator: ['d'],
|
||||
separator: [',', ';'],
|
||||
period: ['.'],
|
||||
ifOperator: ['?'],
|
||||
@@ -78,9 +79,9 @@ let ParserRules = [
|
||||
{"name": "additiveExpression", "symbols": ["multiplicativeExpression"], "postprocess": id},
|
||||
{"name": "multiplicativeExpression", "symbols": ["multiplicativeExpression", "_", (lexer.has("multiplicativeOperator") ? {type: "multiplicativeOperator"} : multiplicativeOperator), "_", "rollExpression"], "postprocess": d => operator(d, 'multiply')},
|
||||
{"name": "multiplicativeExpression", "symbols": ["rollExpression"], "postprocess": id},
|
||||
{"name": "rollExpression", "symbols": ["rollExpression", "_", {"literal":"d"}, "_", "exponentExpression"], "postprocess": d => new RollNode({left: d[0], right: d[4]})},
|
||||
{"name": "rollExpression", "symbols": ["rollExpression", "_", (lexer.has("diceOperator") ? {type: "diceOperator"} : diceOperator), "_", "exponentExpression"], "postprocess": d => new RollNode({left: d[0], right: d[4]})},
|
||||
{"name": "rollExpression", "symbols": ["singleRollExpression"], "postprocess": id},
|
||||
{"name": "singleRollExpression", "symbols": [{"literal":"d"}, "_", "exponentExpression"], "postprocess": d => new RollNode({left: new ConstantNode({value: 1, type: 'number'}), right: d[2]})},
|
||||
{"name": "singleRollExpression", "symbols": [{"literal":"d"}, "_", "singleRollExpression"], "postprocess": d => new RollNode({left: new ConstantNode({value: 1, type: 'number'}), right: d[2]})},
|
||||
{"name": "singleRollExpression", "symbols": ["exponentExpression"], "postprocess": id},
|
||||
{"name": "exponentExpression", "symbols": ["callExpression", "_", (lexer.has("exponentOperator") ? {type: "exponentOperator"} : exponentOperator), "_", "exponentExpression"], "postprocess": d => operator(d, 'exponent')},
|
||||
{"name": "exponentExpression", "symbols": ["unaryExpression"], "postprocess": id},
|
||||
|
||||
@@ -22,15 +22,16 @@
|
||||
value: s => s.slice(1, -1),
|
||||
},
|
||||
name: {
|
||||
match: /[a-zA-Z_]+/,
|
||||
match: /[a-zA-Z_]*[a-ce-zA-Z_][a-zA-Z0-9_]*/,
|
||||
type: moo.keywords({
|
||||
'keywords': ['d', 'true', 'false'],
|
||||
'keywords': ['true', 'false'],
|
||||
}),
|
||||
},
|
||||
space: {
|
||||
match: /\s+/,
|
||||
lineBreaks: true,
|
||||
},
|
||||
diceOperator: ['d'],
|
||||
separator: [',', ';'],
|
||||
period: ['.'],
|
||||
ifOperator: ['?'],
|
||||
@@ -98,11 +99,11 @@ multiplicativeExpression ->
|
||||
| rollExpression {% id %}
|
||||
|
||||
rollExpression ->
|
||||
rollExpression _ "d" _ exponentExpression {% d => new RollNode({left: d[0], right: d[4]}) %}
|
||||
rollExpression _ %diceOperator _ exponentExpression {% d => new RollNode({left: d[0], right: d[4]}) %}
|
||||
| singleRollExpression {% id %}
|
||||
|
||||
singleRollExpression ->
|
||||
"d" _ exponentExpression {% d => new RollNode({left: new ConstantNode({value: 1, type: 'number'}), right: d[2]}) %}
|
||||
"d" _ singleRollExpression {% d => new RollNode({left: new ConstantNode({value: 1, type: 'number'}), right: d[2]}) %}
|
||||
| exponentExpression {% id %}
|
||||
|
||||
exponentExpression ->
|
||||
|
||||
Reference in New Issue
Block a user