From ee9a05d3c4fbdcb34777ae75a9ae1499b1098add Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Tue, 22 Aug 2017 15:15:07 -0400 Subject: Change arithmetic lexing - Rename tokens from symbols ('+', '-'), to words - Differentiate between symbols with and without surrounding whitespace - Update parser to work with new token names --- __tests__/lexer.test.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to '__tests__/lexer.test.js') diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js index 04a95e1..76cb421 100644 --- a/__tests__/lexer.test.js +++ b/__tests__/lexer.test.js @@ -55,7 +55,7 @@ describe('lex', () => { { type: 'constant', value: 1 }, { type: 'd' }, { type: 'constant', value: 6 }, - { type: '+' }, + { type: 'bigPlus' }, { type: 'constant', value: 1 }, { type: 'd' }, { type: 'constant', value: 4 } @@ -67,7 +67,7 @@ describe('lex', () => { { type: 'constant', value: 2 }, { type: 'd' }, { type: 'constant', value: 17 }, - { type: '+' }, + { type: 'bigPlus' }, { type: 'constant', value: 4 } ]) }) @@ -79,7 +79,7 @@ describe('lex', () => { { type: 'constant', value: 1 }, { type: 'd' }, { type: 'constant', value: 6 }, - { type: '-' }, + { type: 'bigMinus' }, { type: 'constant', value: 1 }, { type: 'd' }, { type: 'constant', value: 4 } @@ -91,7 +91,7 @@ describe('lex', () => { { type: 'constant', value: 2 }, { type: 'd' }, { type: 'constant', value: 17 }, - { type: '-' }, + { type: 'bigMinus' }, { type: 'constant', value: 4 } ]) }) @@ -110,13 +110,13 @@ describe('lex', () => { ]) }) - it('2d(6+3)d4', () => { - expect(lex('2d(6+3)d4')).toEqual([ + it('2d(6 + 3)d4', () => { + expect(lex('2d(6 + 3)d4')).toEqual([ { type: 'constant', value: 2 }, { type: 'd' }, { type: '(' }, { type: 'constant', value: 6 }, - { type: '+' }, + { type: 'bigPlus' }, { type: 'constant', value: 3 }, { type: ')' }, { type: 'd' }, -- cgit v1.2.3 From b84fe7672ad62a7e507b10704fbbd216afaaff44 Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Tue, 22 Aug 2017 15:19:12 -0400 Subject: Stop ignoring whitespace --- __tests__/lexer.test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to '__tests__/lexer.test.js') diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js index 76cb421..12835df 100644 --- a/__tests__/lexer.test.js +++ b/__tests__/lexer.test.js @@ -10,24 +10,24 @@ describe('lex', () => { }) it('throws on unexpected input at the end', () => { - expect(() => { lex('1d6 `') }).toThrow(/Syntax error/) + expect(() => { lex('1d6`') }).toThrow(/Syntax error/) }) it('throws on unexpected input in the middle', () => { - expect(() => { lex('2d3 + b 3d4') }).toThrow(/Syntax error/) + expect(() => { lex('2d3 + b3d4') }).toThrow(/Syntax error/) }) - describe('ignores whitespace', () => { + describe('throws on unexpected whitespace', () => { it('2 d 4', () => { - expect(lex('2 d 4')).not.toBe('error') + expect(() => { lex('2 d 4') }).toThrow(/Syntax error/) }) it(' 1d8', () => { - expect(lex(' 1d8')).not.toBe('error') + expect(() => { lex(' 1d8') }).toThrow(/Syntax error/) }) it('3d4 ', () => { - expect(lex('3d4 ')).not.toBe('error') + expect(() => { lex('3d4 ') }).toThrow(/Syntax error/) }) }) -- cgit v1.2.3 From 034d62f90d9c748f38209991c812692e5a99bbd9 Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Tue, 22 Aug 2017 15:19:32 -0400 Subject: Add test for lexing negatives --- __tests__/lexer.test.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to '__tests__/lexer.test.js') diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js index 12835df..6900764 100644 --- a/__tests__/lexer.test.js +++ b/__tests__/lexer.test.js @@ -125,6 +125,19 @@ describe('lex', () => { }) }) + describe('lexes negatives', () => { + it('-(1d6)', () => { + expect(lex('-(1d6)')).toEqual([ + { type: 'minus' }, + { type: '(' }, + { type: 'constant', value: 1 }, + { type: 'd' }, + { type: 'constant', value: 6 }, + { type: ')' } + ]) + }) + }) + describe('exploding dice', () => { test('1E1d6', () => { expect(lex('1E1d6')).toEqual([ -- cgit v1.2.3