From d3132a5463908bcabd0578ad48a457b2bec30a9a Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com>
Date: Fri, 14 Jul 2017 18:14:14 -0400
Subject: Lex and parse subtraction

---
 src/lexer.js  | 1 +
 src/parser.js | 8 ++++++++
 2 files changed, 9 insertions(+)

(limited to 'src')

diff --git a/src/lexer.js b/src/lexer.js
index 97130d8..fd347c6 100644
--- a/src/lexer.js
+++ b/src/lexer.js
@@ -21,6 +21,7 @@ const newSkippableLexeme = (type, regex) => {
 newValueLexeme('constant', '\\d+', Number)
 newLexemeType('d', 'd')
 newLexemeType('+', '\\+')
+newLexemeType('-', '-')
 newSkippableLexeme('whitespace', '\\s+')
 
 const lex = (expressionString) => {
diff --git a/src/parser.js b/src/parser.js
index c7d91c3..6c39c77 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -32,6 +32,14 @@ newSymbol('+', null, 20, (left, parser) => {
   }
 })
 
+newSymbol('-', null, 20, (left, parser) => {
+  return {
+    type: 'subtract',
+    left: left,
+    right: parser.expression(20)
+  }
+})
+
 newSymbol('end', null, -1)
 
 const newParser = (tokens) => {
-- 
cgit v1.2.3