No more packing in the parser.
authorEric S. Raymond <esr@thyrsus.com>
Thu, 20 Jul 2017 14:15:39 +0000 (10:15 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 20 Jul 2017 14:17:56 +0000 (10:17 -0400)
As a side effect, ill-formed input consisting of "_\n" gives
a slighty better error message.

main.c
misc.c
tests/illformed.chk

diff --git a/main.c b/main.c
index fd8a29817a63a8b4d81a04163b259718fb5d6735..17f2643c901f66a8313cf29bdfb7d162cc519d25 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1012,10 +1012,8 @@ static bool get_command_input(struct command_t *command)
 
     tokenize(inputbuf, command);
 
-    packed_to_token(command->wd1, word1);
-    packed_to_token(command->wd2, word2);
-    get_vocab_metadata(word1, &(command->id1), &(command->type1));
-    get_vocab_metadata(word2, &(command->id2), &(command->type2));
+    get_vocab_metadata(command->raw1, &(command->id1), &(command->type1));
+    get_vocab_metadata(command->raw2, &(command->id2), &(command->type2));
 
     return true;
 }
@@ -1135,14 +1133,12 @@ Lclearobj:
                     command.id2 = POUR;
                     command.type2 = ACTION;
                     strncpy(command.raw2, "POUR", LINESIZE - 1);
-                    command.wd2 = token_to_packed("POUR");
                 }
             }
             if (command.id1 == CAGE && command.id2 == BIRD && HERE(CAGE) && HERE(BIRD)) {
                 command.id1 = CARRY;
                 command.type1 = ACTION;
                 strncpy(command.raw2, "CATCH", LINESIZE - 1);
-                command.wd1 = token_to_packed("CATCH");
             }
         }
 
@@ -1195,7 +1191,6 @@ Lookup:
             command.id1 = command.id2;
             command.type1 = command.type2;
             strncpy(command.raw1, command.raw2, LINESIZE - 1);
-            command.wd1 = command.wd2;
             command.id2 = WORD_EMPTY;
             command.type2 = NO_WORD_TYPE;
             command.raw2[0] = '\0';
diff --git a/misc.c b/misc.c
index ae5048d9a92825b948f770c4b218f9f83559abc8..340aa3de906dd860764a0934769ff011c519be28 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -99,10 +99,6 @@ void tokenize(char* raw, struct command_t *cmd)
      * raw-input buffer as long as the enrire inout buffer. */
     sscanf(raw, "%s%s", cmd->raw1, cmd->raw2);
 
-    // pack the substrings
-    cmd->wd1  = token_to_packed(cmd->raw1);
-    cmd->wd2  = token_to_packed(cmd->raw2);
-
     /* (ESR) In oldstyle mode, simulate the uppercasing and truncating
      * effect on raw tokens of packing them into sixbit characters, 5
      * to a 32-bit word.  This is something the FORTRAN version did
index 13eb9b4e3cc535b5d12449fc9d248d6cc4d735cd..f777412cd57f52e886061170afa6f4b84ccb624f 100644 (file)
@@ -106,9 +106,7 @@ full description of a place unless you explicitly ask me to.
 
 > _
 
-I don't know how to apply that word here.
-
-You're in front of building.
+Sorry, I don't know the word "_".
 
 > back
 
@@ -259,9 +257,7 @@ There is a bottle of water here.
 
 > out
 
-You are standing at the end of a road before a small brick building.
-Around you is a forest.  A small stream flows out of the building and
-down a gully.
+You're in front of building.
 
 > stream
 
@@ -282,7 +278,9 @@ Blasting requires dynamite.
 
 > building
 
-You're in front of building.
+You are standing at the end of a road before a small brick building.
+Around you is a forest.  A small stream flows out of the building and
+down a gully.
 
 > cave