From 2b7d53b7d19481fd625962b59b9422d138cbc801 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 25 Apr 2013 15:41:20 -0700 Subject: [PATCH] parser: add invalid-word-name, use it to check for redefining quotes. --- core/parser/parser-tests.factor | 7 +++++++ core/parser/parser.factor | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/parser/parser-tests.factor b/core/parser/parser-tests.factor index 267fcb3eb7..55ea673c3c 100644 --- a/core/parser/parser-tests.factor +++ b/core/parser/parser-tests.factor @@ -35,6 +35,13 @@ unit-test eval( -- ) "USE: parser.tests hello" eval( -- string ) ] unit-test +[ "IN: parser.tests : \" ( -- n ) 123 ;" eval( -- ) ] +[ error>> invalid-word-name? ] must-fail-with +[ "IN: parser.tests : \"asdf ( -- n ) 123 ;" eval( -- ) ] +[ error>> invalid-word-name? ] must-fail-with +[ "IN: parser.tests : 123 ( -- n ) 123 ;" eval( -- ) ] +[ error>> invalid-word-name? ] must-fail-with + [ ] [ "! This is a comment, people." eval( -- ) ] unit-test diff --git a/core/parser/parser.factor b/core/parser/parser.factor index 266f4c77ec..bba9bfe543 100644 --- a/core/parser/parser.factor +++ b/core/parser/parser.factor @@ -71,11 +71,12 @@ ERROR: number-expected ; : scan-number ( -- number ) (scan-token) parse-number ; +ERROR: invalid-word-name string ; + : scan-word-name ( -- string ) scan-token - dup string>number [ - "Word names cannot be numbers" throw - ] when ; + dup "\"" = [ t ] [ dup string>number ] if + [ invalid-word-name ] when ; : scan-new ( -- word ) scan-word-name create-in ;