diff options
Diffstat (limited to 'src/parser.js')
-rw-r--r-- | src/parser.js | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/parser.js b/src/parser.js index acae9ad..3cf6d55 100644 --- a/src/parser.js +++ b/src/parser.js @@ -44,6 +44,16 @@ newSymbol('constant', function() { return { type: 'constant', value: this.value } }) +const newBrackets = (openSymbol, closeSymbol, valueWrapper) => { + newSymbol(openSymbol, function(parser) { + const value = parser.expression(1) + parser.match(closeSymbol) + return valueWrapper(value) + }) + + newSymbol(closeSymbol) +} + newSymbol('(', function(parser) { const value = parser.expression(1) parser.match(')') @@ -52,6 +62,8 @@ newSymbol('(', function(parser) { newSymbol(')') +newBrackets('[', ']', value => ({ type: 'collect', value: value })) + newDieOperation('d') newSymbol('d', (parser) => { return { |