Browse Source

check for NaN in tokenization functions

pull/3/head
nisstyre56 11 years ago
parent
commit
be1996a1d9
  1. 9
      tokenize.js
  2. 3
      treegen.js

9
tokenize.js

@ -10,6 +10,9 @@ function isDigit(a) {
if (!a) if (!a)
return false; return false;
var code = a.charCodeAt(); var code = a.charCodeAt();
if (isNaN(code)) {
return false;
}
return (46 < code && return (46 < code &&
code < 58 || code < 58 ||
code < 58 && code < 58 &&
@ -21,6 +24,9 @@ function isWhitespace(a) {
return true; return true;
var code = a.charCodeAt(); var code = a.charCodeAt();
if (isNaN(code)) {
return false;
}
return (code === 9 || return (code === 9 ||
code === 32 || code === 32 ||
code === 10 || code === 10 ||
@ -30,7 +36,8 @@ function isWhitespace(a) {
function isIdentifier(a) { function isIdentifier(a) {
var code = a.charCodeAt(); var code = a.charCodeAt();
return (code !== 41 && return (!isNaN(code) &&
code !== 41 &&
code !== 40 && code !== 40 &&
code !== 125 && code !== 125 &&
code !== 123 && code !== 123 &&

3
treegen.js

@ -10,10 +10,11 @@ var qc = require("quickcheck");
function arbIdentifier() { function arbIdentifier() {
var st = qc.arbString() var st = qc.arbString()
if (lex.isIdentifier(st)) { if (lex.isIdentifier(st)) {
return st; return new repr.Name(st);
} }
else { else {
return arbIdentifier(); return arbIdentifier();
} }
} }
console.log(arbIdentifier());

Loading…
Cancel
Save