Added support for alphanumeric and underscore for type name

pull/36/head
Rhythm 8 years ago
parent 47d0f2bd59
commit 47bd1ce4b8

@ -446,13 +446,15 @@ function tokenizer(input) {
// ^^^ // ^^^
// Name token // Name token
// //
var LETTERS = /[a-zA-Z_0-9]/; var validIdentifierStart = /[a-zA-Z_]/;
if (LETTERS.test(char)) { var validIdentifierChar = /[a-zA-Z_0-9]/;
if (validIdentifierStart.test(char)) {
var value = ''; var value = '';
// Again we're just going to loop through all the letters pushing them to // Again we're just going to loop through all the letters pushing them to
// a value. // a value.
while (LETTERS.test(char)) { while (validIdentifierChar.test(char)) {
value += char; value += char;
char = input[++current]; char = input[++current];
} }
@ -465,7 +467,7 @@ function tokenizer(input) {
continue; continue;
} }
// Finally if we have not matched a character by now, we're going to throw // Finally if we have not matched a character by now, we're going to throw
// an error and completely exit. // an error and completely exit.
throw new TypeError('I dont know what this character is: ' + char); throw new TypeError('I dont know what this character is: ' + char);

@ -81,4 +81,10 @@ assert.deepStrictEqual(transformer(ast), newAst, 'Transformer should turn `ast`
assert.deepStrictEqual(codeGenerator(newAst), output, 'Code Generator should turn `newAst` into `output` string'); assert.deepStrictEqual(codeGenerator(newAst), output, 'Code Generator should turn `newAst` into `output` string');
assert.deepStrictEqual(compiler(input), output, 'Compiler should turn `input` into `output`'); assert.deepStrictEqual(compiler(input), output, 'Compiler should turn `input` into `output`');
//Identifier Test
input = '(_add 2 (subtract 4 2))';
output = '_add(2, subtract(4, 2));';
assert.deepStrictEqual(compiler(input), output, 'Compiler should turn `input` into `output`');
console.log('All Passed!'); console.log('All Passed!');

Loading…
Cancel
Save