r1962 + update comments
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 12 Jun 2008 19:41:39 +0000 (19:41 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 12 Jun 2008 19:41:39 +0000 (19:41 +0000)
+ remove debug call
+ check last char of the ID going out from the lexical scanner

inc/code.php

index ca3ccd65ccefbac7a5bad2c443b6b1a3f2498f3a..09aa6bb8992a4b266a4504a2b70031316087b119 100644 (file)
@@ -143,7 +143,10 @@ function getLexemsFromRackCode ($text)
                                switch (TRUE)
                                {
                                        case ($char == '}'):
-                                               $ret[] = array ('type' => 'LEX_TAG', 'load' => rtrim ($buffer));
+                                               $buffer = rtrim ($buffer);
+                                               if (!preg_match ('/^[a-zA-Z0-9]$/', substr ($buffer, -1)))
+                                                       abortLex1 ($state, $text, $i);
+                                               $ret[] = array ('type' => 'LEX_TAG', 'load' => $buffer);
                                                $newstate = 'ESOTSM';
                                                break;
                                        case (preg_match ('/^[a-zA-Z0-9 _-]$/', $char)):
@@ -171,7 +174,10 @@ function getLexemsFromRackCode ($text)
                                switch (TRUE)
                                {
                                        case ($char == ']'):
-                                               $ret[] = array ('type' => 'LEX_PREDICATE', 'load' => rtrim ($buffer));
+                                               $buffer = rtrim ($buffer);
+                                               if (!preg_match ('/^[a-zA-Z0-9]$/', substr ($buffer, -1)))
+                                                       abortLex1 ($state, $text, $i);
+                                               $ret[] = array ('type' => 'LEX_PREDICATE', 'load' => $buffer);
                                                $newstate = 'ESOTSM';
                                                break;
                                        case (preg_match ('/^[a-zA-Z0-9 _-]$/', $char)):
@@ -224,10 +230,11 @@ function syntReduce_BOOLCONST (&$stack)
 // sentence is a syntax tree, suitable for tag sequence evaluation. It will
 // contain all of the input lexems framed into a parse tree built from the
 // following nodes:
-// SYNT_NOT (1 argument, SYNT_EXPR)
-// SYNT_BOOLOP (2 arguments of type SYNT_EXPR)
+// SYNT_NOT (1 argument, holding SYNT_EXPR)
+// SYNT_BOOLOP (2 arguments, each holding SYNT_EXPR)
 // SYNT_EXPR (1 argument, different types)
-// SYNT_DEF (2 arguments: subject and definition)
+// SYNT_DEFINE (keyword with 1 term)
+// SYNT_DEFINITION (2 arguments: term and definition)
 // SYNT_GRANT (2 arguments: decision and condition)
 // SYNT_CODESENTENCE (either a grant or a definition)
 // SYNT_CODETEXT (sequence of sentences)
@@ -259,7 +266,6 @@ function getSentencesFromLexems ($lexems)
                        )
                        {
                                // shift!
-                               echo 'shi[f]t!]';
                                array_push ($stack, $stacktop);
                                array_push ($stack, $lexems[$done++]);
                                continue;