From 3093a74d57470cdada357b3f1dd2b0db1ba398c0 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 21 Jul 2019 10:01:03 +0900 Subject: [PATCH] Test for number of parens --- desktop/sources/scripts/commander.js | 4 ++++ desktop/sources/scripts/lisp.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/desktop/sources/scripts/commander.js b/desktop/sources/scripts/commander.js index fa74696..852b2b9 100644 --- a/desktop/sources/scripts/commander.js +++ b/desktop/sources/scripts/commander.js @@ -46,6 +46,10 @@ function Commander (ronin) { this.reindent = function () { let val = this._input.value.replace(/\n/g, '').replace(/ +(?= )/g, '').replace(/\( \(/g, '((').replace(/\) \)/g, '))').trim() let depth = 0 + if (val.split('(').length !== val.split(')').length) { + ronin.log('Uneven number of parens.') + return + } for (let i = 0; i < val.length; i++) { const c = val.charAt(i) if (c === '(') { depth++ } else if (c === ')') { depth-- } diff --git a/desktop/sources/scripts/lisp.js b/desktop/sources/scripts/lisp.js index e13eb79..1eebdd8 100644 --- a/desktop/sources/scripts/lisp.js +++ b/desktop/sources/scripts/lisp.js @@ -153,7 +153,7 @@ function Lisp (lib = {}, includes = []) { } const tokenize = function (input) { - const i = input.replace(/^\;.*\n?/gm, '').replace('λ','lambda ').split('"') + const i = input.replace(/^\;.*\n?/gm, '').replace('λ', 'lambda ').split('"') return i.map(function (x, i) { return i % 2 === 0 ? x.replace(/\(/g, ' ( ')