diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index e9553e1..44f8ba2 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -19153,8 +19153,41 @@ Stack of results of reduced productions.
\end{chunk}
-\chapter{Comment handlers}
+\chapter{Comment Recording}
+
+\begin{chunk}{v9CommentRecording.dot}
+digraph pic {
+ fontsize=10;
+ bgcolor="#ECEA81";
+ node [shape=box, color=white, style=filled];
+
+"postDef" [color="#FFFFFF"]
+"PARSE-Category" [color="#FFFFFF"]
+
+"recordAttributeDocumentation" [color="#FF6600"]
+"recordSignatureDocumentation" [color="#FF6600"]
+"recordDocumentation" [color="#2222DD"]
+"collectComBlock" [color="#22EE22"]
+"recordHeaderDocumentation" [color="#FFFF66"]
+"collectAndDeleteAssoc" [color="#FFFF66"]
+
+"postDef" -> "recordHeaderDocumentation"
+"PARSE-Category" -> "recordSignatureDocumentation"
+"PARSE-Category" -> "recordAttributeDocumentation"
+
+"recordAttributeDocumentation" -> "recordDocumentation"
+"recordSignatureDocumentation" -> "recordDocumentation"
+"recordDocumentation" -> "recordHeaderDocumentation"
+"recordDocumentation" -> "collectComBlock"
+"collectComBlock" -> "collectAndDeleteAssoc"
+}
+
+\end{chunk}
+
+\section{Comment Recording Layer 0 -- API}
+
\defun{recordSignatureDocumentation}{recordSignatureDocumentation}
+This function is called externally by PARSE-Category.
\calls{recordSignatureDocumentation}{recordDocumentation}
\calls{recordSignatureDocumentation}{postTransform}
\begin{chunk}{defun recordSignatureDocumentation}
@@ -19163,8 +19196,8 @@ Stack of results of reduced productions.
\end{chunk}
-
\defun{recordAttributeDocumentation}{recordAttributeDocumentation}
+This function is called externally by PARSE-Category.
\calls{recordAttributeDocumentation}{opOf}
\calls{recordAttributeDocumentation}{pname}
\calls{recordAttributeDocumentation}{upper-case-p}
@@ -19184,6 +19217,8 @@ Stack of results of reduced productions.
\end{chunk}
+\section{Comment Recording Layer 1}
+
\defun{recordDocumentation}{recordDocumentation}
\calls{recordDocumentation}{recordHeaderDocumentation}
\calls{recordDocumentation}{collectComBlock}
@@ -19200,7 +19235,31 @@ Stack of results of reduced productions.
\end{chunk}
+\section{Comment Recording Layer 2}
+
+\defun{collectComBlock}{collectComBlock}
+\calls{collectComBlock}{collectAndDeleteAssoc}
+\defsdollar{collectComBlock}{comblocklist}
+\begin{chunk}{defun collectComBlock}
+(defun |collectComBlock| (x)
+ (let (val u)
+ (declare (special $comblocklist))
+ (cond
+ ((and (consp $comblocklist)
+ (consp (qcar $comblocklist))
+ (equal (qcaar $comblocklist) x))
+ (setq val (qcdar $comblocklist))
+ (setq u (append val (|collectAndDeleteAssoc| x)))
+ (setq $comblocklist (cdr $comblocklist))
+ u)
+ (t (|collectAndDeleteAssoc| x)))))
+
+\end{chunk}
+
+\section{Comment Recording Layer 3}
+
\defun{recordHeaderDocumentation}{recordHeaderDocumentation}
+This function is called externally by postDef.
\calls{recordHeaderDocumentation}{assocright}
\refsdollar{recordHeaderDocumentation}{maxSignatureLineNumber}
\refsdollar{recordHeaderDocumentation}{comblocklist}
@@ -19224,25 +19283,6 @@ Stack of results of reduced productions.
\end{chunk}
-\defun{collectComBlock}{collectComBlock}
-\calls{collectComBlock}{collectAndDeleteAssoc}
-\defsdollar{collectComBlock}{comblocklist}
-\begin{chunk}{defun collectComBlock}
-(defun |collectComBlock| (x)
- (let (val u)
- (declare (special $comblocklist))
- (cond
- ((and (consp $comblocklist)
- (consp (qcar $comblocklist))
- (equal (qcaar $comblocklist) x))
- (setq val (qcdar $comblocklist))
- (setq u (append val (|collectAndDeleteAssoc| x)))
- (setq $comblocklist (cdr $comblocklist))
- u)
- (t (|collectAndDeleteAssoc| x)))))
-
-\end{chunk}
-
\defun{collectAndDeleteAssoc}{collectAndDeleteAssoc}
\begin{verbatim}
u is (.. (x . a) .. (x . b) .. ) ==> (a b ..)
@@ -19267,6 +19307,257 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
+\chapter{Comment Syntax Checking}
+
+\begin{chunk}{v9CommentSyntaxChecking.dot}
+digraph hierarchy {
+ fontsize=10;
+ bgcolor="#ECEA81";
+ node [shape=box, color=white, style=filled];
+
+"compileDocumentation" [color="#FFFFFF"]
+"finalizeLisplib" [color="#FFFFFF"]
+
+{rank=same; "compileDocumentation" "finalizeLisplib"}
+
+"checkAddBackSlashes" [color="#FFFF66"]
+"checkAddMacros" [color="#FFFF66"]
+"checkAddPeriod" [color="#FFFF66"]
+"checkAddSpaceSegments" [color="#FFFF66"]
+"checkAddSpaces" [color="#FFFF66"]
+"checkAlphabetic" [color="#FFFF66"]
+"checkIeEgfun" [color="#FFFF66"]
+"checkIsValidType" [color="#FFFF66"]
+"checkLookForLeftBrace" [color="#FFFF66"]
+"checkLookForRightBrace" [color="#FFFF66"]
+"checkNumOfArgs" [color="#FFFF66"]
+"checkSayBracket" [color="#FFFF66"]
+"checkSkipBlanks" [color="#FFFF66"]
+"checkSplitBackslash" [color="#FFFF66"]
+"checkSplitOn" [color="#FFFF66"]
+"checkSplitPunctuation" [color="#FFFF66"]
+"firstNonBlankPosition" [color="#FFFF66"]
+"getMatchingRightPren" [color="#FFFF66"]
+"hasNoVowels" [color="#FFFF66"]
+"htcharPosition" [color="#FFFF66"]
+"newWordFrom" [color="#FFFF66"]
+"removeBackslashes" [color="#FFFF66"]
+"whoOwns" [color="#FFFF66"]
+
+{rank=same;
+ "checkAddBackSlashes"
+ "checkAddMacros"
+ "checkAddPeriod"
+ "checkAddSpaceSegments"
+ "checkAddSpaces"
+ "checkAlphabetic"
+ "checkIeEgfun"
+ "checkIsValidType"
+ "checkLookForLeftBrace"
+ "checkLookForRightBrace"
+ "checkNumOfArgs"
+ "checkSayBracket"
+ "checkSkipBlanks"
+ "checkSplitBackslash"
+ "checkSplitOn"
+ "checkSplitPunctuation"
+ "firstNonBlankPosition"
+ "getMatchingRightPren"
+ "hasNoVowels"
+ "htcharPosition"
+ "newWordFrom"
+ "removeBackslashes"
+ "whoOwns"
+}
+
+"checkAddIndented" [color="#22EE22"]
+"checkDocMessage" [color="#22EE22"]
+"checkExtract" [color="#22EE22"]
+"checkGetArgs" [color="#22EE22"]
+"checkGetMargin" [color="#22EE22"]
+"checkGetParse" [color="#22EE22"]
+"checkGetStringBeforeRightBrace" [color="#22EE22"]
+"checkIeEg" [color="#22EE22"]
+"checkIndentedLines" [color="#22EE22"]
+"checkSkipIdentifierToken" [color="#22EE22"]
+"checkSkipOpToken" [color="#22EE22"]
+"checkSplitBrace" [color="#22EE22"]
+"checkTrimCommented" [color="#22EE22"]
+"newString2Words" [color="#22EE22"]
+
+{rank=same;
+ "checkAddIndented"
+ "checkDocMessage"
+ "checkExtract"
+ "checkGetArgs"
+ "checkGetMargin"
+ "checkGetParse"
+ "checkGetStringBeforeRightBrace"
+ "checkIeEg"
+ "checkIndentedLines"
+ "checkSkipIdentifierToken"
+ "checkSkipOpToken"
+ "checkSplitBrace"
+ "checkTrimCommented"
+ "newString2Words"
+}
+
+"checkDocError" [color="#2222DD"]
+"checkRemoveComments" [color="#2222DD"]
+"checkSkipToken" [color="#2222DD"]
+"checkSplit2Words" [color="#2222DD"]
+
+{rank=same;
+ "checkDocError"
+ "checkRemoveComments"
+ "checkSkipToken"
+ "checkSplit2Words"
+}
+
+"checkBeginEnd" [color="#FF6600"]
+"checkDecorate" [color="#FF6600"]
+"checkDecorateForHt" [color="#FF6600"]
+"checkDocError1" [color="#FF6600"]
+"checkFixCommonProblem" [color="#FF6600"]
+"checkGetLispFunctionName" [color="#FF6600"]
+"checkHTargs" [color="#FF6600"]
+"checkRecordHash" [color="#FF6600"]
+"checkTexht" [color="#FF6600"]
+"checkTransformFirsts" [color="#FF6600"]
+"checkTrim" [color="#FF6600"]
+
+{rank=same;
+ "checkBeginEnd"
+ "checkDecorate"
+ "checkDecorateForHt"
+ "checkDocError1"
+ "checkFixCommonProblem"
+ "checkGetLispFunctionName"
+ "checkHTargs"
+ "checkRecordHash"
+ "checkTexht"
+ "checkTransformFirsts"
+ "checkTrim"
+}
+
+"checkArguments" [color="#0066FF"]
+"checkBalance" [color="#0066FF"]
+
+{rank=same;
+ "checkArguments"
+ "checkBalance"
+}
+
+"checkComments" [color="#006600"]
+"checkRewrite" [color="#006600"]
+
+{rank=same;
+ "checkComments"
+ "checkRewrite"
+}
+
+"transformAndRecheckComments" [color="#448822"]
+
+"transDoc" [color="#448822"]
+
+"transDocList" [color="#448822"]
+
+"finalizeDocumentation" [color="#448822"]
+
+"checkAddIndented" -> "firstNonBlankPosition"
+"checkAddIndented" -> "checkAddSpaceSegments"
+"checkArguments" -> "checkHTargs"
+"checkBalance" -> "checkBeginEnd"
+"checkBalance" -> "checkDocError"
+"checkBalance" -> "checkSayBracket"
+"checkBeginEnd" -> "checkDocError"
+"checkComments" -> "checkGetMargin"
+"checkComments" -> "checkTransformFirsts"
+"checkComments" -> "checkIndentedLines"
+"checkComments" -> "checkGetArgs"
+"checkComments" -> "newString2Words"
+"checkComments" -> "checkAddSpaces"
+"checkComments" -> "checkIeEg"
+"checkComments" -> "checkSplit2Words"
+"checkComments" -> "checkBalance"
+"checkComments" -> "checkArguments"
+"checkComments" -> "checkFixCommonProblem"
+"checkComments" -> "checkDecorate"
+"checkComments" -> "checkAddPeriod"
+"checkDecorate" -> "checkDocError"
+"checkDecorate" -> "checkAddBackSlashes"
+"checkDecorate" -> "hasNoVowels"
+"checkDecorateForHt" -> "checkDocError"
+"checkDocError" -> "checkDocMessage"
+"checkDocError1" -> "checkDocError"
+"checkDocMessage" -> "whoOwns"
+"checkExtract" -> "firstNonBlankPosition"
+"checkFixCommonProblem" -> "checkDocError"
+"checkGetArgs" -> "firstNonBlankPosition"
+"checkGetArgs" -> "getMatchingRightPren"
+"checkGetLispFunctionName" -> "checkDocError"
+"checkGetMargin" -> "firstNonBlankPosition"
+"checkGetParse" -> "removeBackslashes"
+"checkHTargs" -> "checkLookForLeftBrace"
+"checkHTargs" -> "checkLookForRightBrace"
+"checkHTargs" -> "checkDocError"
+"checkIeEg" -> "checkIeEgfun"
+"checkIndentedLines" -> "firstNonBlankPosition"
+"checkIndentedLines" -> "checkAddSpaceSegments"
+"checkRecordHash" -> "checkLookForLeftBrace"
+"checkRecordHash" -> "checkLookForRightBrace"
+"checkRecordHash" -> "checkGetLispFunctionName"
+"checkRecordHash" -> "checkGetStringBeforeRightBrace"
+"checkRecordHash" -> "checkGetParse"
+"checkRecordHash" -> "checkDocError"
+"checkRecordHash" -> "checkNumOfArgs"
+"checkRecordHash" -> "checkIsValidType"
+"checkRemoveComments" -> "checkTrimCommented"
+"checkRewrite" -> "checkRemoveComments"
+"checkRewrite" -> "checkAddIndented"
+"checkRewrite" -> "checkGetArgs"
+"checkRewrite" -> "newString2Words"
+"checkRewrite" -> "checkAddSpaces"
+"checkRewrite" -> "checkSplit2Words"
+"checkRewrite" -> "checkAddMacros"
+"checkRewrite" -> "checkTexht"
+"checkRewrite" -> "checkArguments"
+"checkRewrite" -> "checkFixCommonProblem"
+"checkRewrite" -> "checkRecordHash"
+"checkRewrite" -> "checkDecorateForHt"
+"checkSkipIdentifierToken" -> "checkAlphabetic"
+"checkSkipOpToken" -> "checkAlphabetic"
+"checkSkipToken" -> "checkSkipIdentifierToken"
+"checkSkipToken" -> "checkSkipOpToken"
+"checkSplit2Words" -> "checkSplitBrace"
+"checkSplitBrace" -> "checkSplitBackslash"
+"checkSplitBrace" -> "checkSplitOn"
+"checkSplitBrace" -> "checkSplitPunctuation"
+"checkTexht" -> "checkDocError"
+"checkTransformFirsts" -> "checkSkipToken"
+"checkTransformFirsts" -> "checkSkipBlanks"
+"checkTransformFirsts" -> "getMatchingRightPren"
+"checkTransformFirsts" -> "checkDocError"
+"checkTrim" -> "checkDocError"
+"checkTrimCommented" -> "htcharPosition"
+"finalizeDocumentation" -> "transDocList"
+"newString2Words" -> "newWordFrom"
+"transDoc" -> "checkDocError1"
+"transDoc" -> "checkTrim"
+"transDoc" -> "checkExtract"
+"transDoc" -> "transformAndRecheckComments"
+"transDocList" -> "transDoc"
+"transDocList" -> "checkDocError"
+"transDocList" -> "checkDocError1"
+"transformAndRecheckComments" -> "checkComments"
+"transformAndRecheckComments" -> "checkRewrite"
+
+"compileDocumentation" -> "finalizeDocumentation"
+"finalizeLisplib" -> "finalizeDocumentation"
+}
+\end{chunk}
+
+\section{Comment Checking Layer 0 -- API}
\defun{finalizeDocumentation}{finalizeDocumentation}
\calls{finalizeDocumentation}{bright}
\calls{finalizeDocumentation}{sayMSG}
@@ -19391,7 +19682,8 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
-\section{Transformation of ++ comments}
+\section{Comment Checking Layer 1}
+
\defun{transDocList}{transDocList}
\calls{transDocList}{sayBrightly}
\calls{transDocList}{transDoc}
@@ -19423,6 +19715,8 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
+\section{Comment Checking Layer 2}
+
\defun{transDoc}{transDoc}
\calls{transDoc}{checkDocError1}
\calls{transDoc}{checkTrim}
@@ -19475,8 +19769,12 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
+\section{Comment Checking Layer 3}
+
\defun{transformAndRecheckComments}{transformAndRecheckComments}
\calls{transformAndRecheckComments}{sayBrightly}
+\calls{transformAndRecheckComments}{checkComments}
+\calls{transformAndRecheckComments}{checkRewrite}
\refsdollar{transformAndRecheckComments}{exposeFlagHeading}
\defsdollar{transformAndRecheckComments}{checkingXmptex?}
\defsdollar{transformAndRecheckComments}{x}
@@ -19504,429 +19802,7 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
-\defun{checkRewrite}{checkRewrite}
-\calls{checkRewrite}{checkRemoveComments}
-\calls{checkRewrite}{checkAddIndented}
-\calls{checkRewrite}{checkGetArgs}
-\calls{checkRewrite}{newString2Words}
-\calls{checkRewrite}{checkAddSpaces}
-\calls{checkRewrite}{checkSplit2Words}
-\calls{checkRewrite}{checkAddMacros}
-\calls{checkRewrite}{checkTexht}
-\calls{checkRewrite}{checkArguments}
-\calls{checkRewrite}{checkFixCommonProblem}
-\calls{checkRewrite}{checkRecordHash}
-\calls{checkRewrite}{checkDecorateForHt}
-\refsdollar{checkRewrite}{checkErrorFlag}
-\refsdollar{checkRewrite}{argl}
-\refsdollar{checkRewrite}{checkingXmptex?}
-\begin{chunk}{defun checkRewrite}
-(defun |checkRewrite| (name lines)
- (declare (ignore name))
- (prog (|$checkErrorFlag| margin w verbatim u2 okBefore u)
- (declare (special |$checkErrorFlag| |$argl| |$checkingXmptex?|))
- (setq |$checkErrorFlag| t)
- (setq margin 0)
- (setq lines (|checkRemoveComments| lines))
- (setq u lines)
- (when |$checkingXmptex?|
- (setq u
- (loop for x in u
- collect (|checkAddIndented| x margin))))
- (setq |$argl| (|checkGetArgs| (car u)))
- (setq u2 nil)
- (setq verbatim nil)
- (loop for x in u
- do
- (setq w (|newString2Words| x))
- (cond
- (verbatim
- (cond
- ((and w (equal (car w) "\\end{verbatim}"))
- (setq verbatim nil)
- (setq u2 (append u2 w)))
- (t
- (setq u2 (append u2 (list x))))))
- ((and w (equal (car w) "\\begin{verbatim}"))
- (setq verbatim t)
- (setq u2 (append u2 w)))
- (t (setq u2 (append u2 w)))))
- (setq u u2)
- (setq u (|checkAddSpaces| u))
- (setq u (|checkSplit2Words| u))
- (setq u (|checkAddMacros| u))
- (setq u (|checkTexht| u))
- (setq okBefore (null |$checkErrorFlag|))
- (|checkArguments| u)
- (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
- (|checkRecordHash| u)
- (|checkDecorateForHt| u)))
-
-\end{chunk}
-
-\defun{checkAddIndented}{checkAddIndented}
-\calls{checkAddIndented}{firstNonBlankPosition}
-\calls{checkAddIndented}{strconc}
-\calls{checkAddIndented}{stringimage}
-\calls{checkAddIndented}{checkAddSpaceSegments}
-\tpdhere{Note that this function was missing without error, so may be junk}
-\begin{chunk}{defun checkAddIndented}
-(defun |checkAddIndented| (x margin)
- (let (k)
- (setq k (|firstNonBlankPosition| x))
- (cond
- ((eql k -1) "\\blankline ")
- ((eql margin k) x)
- (t
- (strconc "\\indented{" (stringimage (- k margin)) "}{"
- (|checkAddSpaceSegments| (substring x k nil) 0) "}")))))
-
-\end{chunk}
-
-\defun{checkRecordHash}{checkRecordHash}
-\calls{checkRecordHash}{member}
-\calls{checkRecordHash}{checkLookForLeftBrace}
-\calls{checkRecordHash}{checkLookForRightBrace}
-\calls{checkRecordHash}{ifcdr}
-\calls{checkRecordHash}{intern}
-\calls{checkRecordHash}{hget}
-\calls{checkRecordHash}{hput}
-\calls{checkRecordHash}{checkGetLispFunctionName}
-\calls{checkRecordHash}{checkGetStringBeforeRightBrace}
-\calls{checkRecordHash}{checkGetParse}
-\calls{checkRecordHash}{checkDocError}
-\calls{checkRecordHash}{opOf}
-\calls{checkRecordHash}{spadSysChoose}
-\calls{checkRecordHash}{checkNumOfArgs}
-\calls{checkRecordHash}{checkIsValidType}
-\calls{checkRecordHash}{form2HtString}
-\calls{checkRecordHash}{getl}
-\refsdollar{checkRecordHash}{charBack}
-\refsdollar{checkRecordHash}{HTlinks}
-\refsdollar{checkRecordHash}{htHash}
-\refsdollar{checkRecordHash}{HTlisplinks}
-\refsdollar{checkRecordHash}{lispHash}
-\refsdollar{checkRecordHash}{glossHash}
-\refsdollar{checkRecordHash}{currentSysList}
-\refsdollar{checkRecordHash}{setOptions}
-\refsdollar{checkRecordHash}{sysHash}
-\refsdollar{checkRecordHash}{name}
-\refsdollar{checkRecordHash}{origin}
-\defsdollar{checkRecordHash}{sysHash}
-\defsdollar{checkRecordHash}{glossHash}
-\defsdollar{checkRecordHash}{lispHash}
-\defsdollar{checkRecordHash}{htHash}
-\begin{chunk}{defun checkRecordHash}
-(defun |checkRecordHash| (u)
- (let (p q htname entry s parse n key x)
- (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
- |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
- |$HTlinks| |$charBack|))
- (loop while u
- do
- (setq x (car u))
- (when (and (stringp x) (equal (elt x 0) |$charBack|))
- (cond
- ((and (|member| x |$HTlinks|)
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (|checkLookForRightBrace| (ifcdr u)))
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq htname (|intern| (ifcar u)))
- (setq entry (or (hget |$htHash| htname) (list nil)))
- (hput |$htHash| htname
- (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
- ((and (|member| x |$HTlisplinks|)
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (|checkLookForRightBrace| (ifcdr u)))
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq htname
- (|intern|
- (|checkGetLispFunctionName|
- (|checkGetStringBeforeRightBrace| u))))
- (setq entry (or (hget |$lispHash| htname) (list nil)))
- (hput |$lispHash| htname
- (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
- ((and (or (setq p (|member| x '("\\gloss" "\\spadglos")))
- (setq q (|member| x '("\\glossSee" "\\spadglosSee"))))
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (when q
- (setq u (|checkLookForRightBrace| u))
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq htname (|intern| (|checkGetStringBeforeRightBrace| u)))
- (setq entry
- (or (hget |$glossHash| htname) (list nil)))
- (hput |$glossHash| htname
- (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
- ((and (boot-equal x "\\spadsys")
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq s (|checkGetStringBeforeRightBrace| u))
- (when (char= (elt s 0) #\)) (setq s (substring s 1 nil)))
- (setq parse (|checkGetParse| s))
- (cond
- ((null parse)
- (|checkDocError| (list "Unparseable \\spadtype: " s)))
- ((null (|member| (|opOf| parse) |$currentSysList|))
- (|checkDocError| (list "Bad system command: " s)))
- ((or (atom parse)
- (null (and (consp parse) (eq (qcar parse) '|set|)
- (consp (qcdr parse))
- (eq (qcddr parse) nil))))
- '|ok|)
- ((null (|spadSysChoose| |$setOptions| (qcadr parse)))
- (progn
- (|checkDocError| (list "Incorrect \\spadsys: " s))
- (setq entry (or (hget |$sysHash| htname) (list nil)))
- (hput |$sysHash| htname
- (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry))))))))
- ((and (boot-equal x "\\spadtype")
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq s (|checkGetStringBeforeRightBrace| u))
- (setq parse (|checkGetParse| s))
- (cond
- ((null parse)
- (|checkDocError| (list "Unparseable \\spadtype: " s)))
- (t
- (setq n (|checkNumOfArgs| parse))
- (cond
- ((null n)
- (|checkDocError| (list "Unknown \\spadtype: " s)))
- ((and (atom parse) (> n 0))
- '|skip|)
- ((null (setq key (|checkIsValidType| parse)))
- (|checkDocError| (list "Unknown \\spadtype: " s)))
- ((atom key) '|ok|)
- (t
- (|checkDocError|
- (list "Wrong number of arguments: " (|form2HtString| key))))))))
- ((and (|member| x '("\\spadop" "\\keyword"))
- (setq u (|checkLookForLeftBrace| (ifcdr u)))
- (setq u (ifcdr u)))
- (setq x (|intern| (|checkGetStringBeforeRightBrace| u)))
- (when (null (or (getl x '|Led|) (getl x '|Nud|)))
- (|checkDocError| (list "Unknown \\spadop: " x))))))
- (pop u))
- '|done|))
-
-\end{chunk}
-
-\defun{checkGetParse}{checkGetParse}
-\calls{checkGetParse}{ncParseFromString}
-\calls{checkGetParse}{removeBackslashes}
-\begin{chunk}{defun checkGetParse}
-(defun |checkGetParse| (s)
- (|ncParseFromString| (|removeBackslashes| s)))
-
-\end{chunk}
-
-\defun{removeBackslashes}{removeBackslashes}
-\calls{removeBackslashes}{charPosition}
-\calls{removeBackslashes}{removeBackslashes}
-\calls{removeBackslashes}{strconc}
-\calls{removeBackslashes}{length}
-\refsdollar{removeBackslashes}{charBack}
-\begin{chunk}{defun removeBackslashes}
-(defun |removeBackslashes| (s)
- (let (k)
- (declare (special |$charBack|))
- (cond
- ((string= s "") "")
- ((> (|#| s) (setq k (|charPosition| |$charBack| s 0)))
- (if (eql k 0)
- (|removeBackslashes| (substring s 1 nil))
- (strconc (substring s 0 k)
- (|removeBackslashes| (substring s (1+ k) nil)))))
- (t s))))
-
-\end{chunk}
-
-\defun{checkTexht}{checkTexht}
-\calls{checkTexht}{ifcar}
-\calls{checkTexht}{checkDocError}
-\calls{checkTexht}{nequal}
-\refsdollar{checkTexht}{charRbrace}
-\refsdollar{checkTexht}{charLbrace}
-\begin{chunk}{defun checkTexht}
-(defun |checkTexht| (u)
- (let (count y x acc)
- (declare (special |$charRbrace| |$charLbrace|))
- (setq count 0)
- (loop while u
- do
- (setq x (car u))
- (when (and (string= x "\\texht") (setq u (ifcdr u)))
- (when (null (equal (ifcar u) |$charLbrace|))
- (|checkDocError| "First left brace after \\texht missing"))
- ; drop first argument including braces of texht
- (setq count 1)
- (do ()
- ((null (or (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
- (> count 1)))
- nil)
- (when (equal y |$charLbrace|) (setq count (1+ count)))
- (when (equal y |$charRbrace|) (setq count (1- count))))
- ; drop first right brace of 1st arg
- (setq x (ifcar (setq u (cdr u)))))
- (when (and (string= x "\\httex") (setq u (ifcdr u))
- (equal (ifcar u) |$charLbrace|))
- (setq acc (cons (ifcar u) acc))
- (do ()
- ((null (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|))
- nil)
- (setq acc (cons y acc)))
- (setq acc (cons (ifcar u) acc)) ; left brace: add it
- (setq x (ifcar (setq u (cdr u)))) ; left brace: forget it
- (do ()
- ((null (nequal (ifcar (setq u (cdr u))) |$charRbrace|))
- nil)
- '|skip|)
- ; forget right brace; move to next character
- (setq x (ifcar (setq u (cdr u)))))
- (setq acc (cons x acc))
- (pop u))
- (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkDecorateForHt}{checkDecorateForHt}
-\calls{checkDecorateForHt}{checkDocError}
-\calls{checkDecorateForHt}{member}
-\refsdollar{checkDecorateForHt}{checkingXmptex?}
-\refsdollar{checkDecorateForHt}{charRbrace}
-\refsdollar{checkDecorateForHt}{charLbrace}
-\begin{chunk}{defun checkDecorateForHt}
-(defun |checkDecorateForHt| (u)
- (let (x count spadflag)
- (declare (special |$checkingXmptex?| |$charRbrace| |$charLbrace|))
- (setq count 0)
- (setq spadflag nil)
- (loop while u
- do
- (setq x (car u))
- (when (equal x "\\em")
- (if (> count 0)
- (setq spadflag (1- count))
- (|checkDocError| (list "\\em must be enclosed in braces"))))
- (cond
- ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
- "\\spadcommand" "\\footnote"))
- (setq spadflag count))
- ((equal x |$charLbrace|)
- (setq count (1+ count)))
- ((equal x |$charRbrace|)
- (setq count (1- count))
- (when (equal spadflag count) (setq spadflag nil)))
- ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
- (when |$checkingXmptex?|
- (|checkDocError| (list '|Symbol | x " appearing outside \\spad{}"))))
- (t nil))
- (when (or (equal x "$") (equal x "%"))
- (|checkDocError| (list "Unescaped " x)))
- (pop u))
- u))
-
-\end{chunk}
-
-\defun{checkDocError1}{checkDocError1}
-\calls{checkDocError1}{checkDocError}
-\refsdollar{checkDocError1}{compileDocumentation}
-\begin{chunk}{defun checkDocError1}
-(defun |checkDocError1| (u)
- (declare (special |$compileDocumentation|))
- (if (and (boundp '|$compileDocumentation|) |$compileDocumentation|)
- nil
- (|checkDocError| u)))
-
-\end{chunk}
-
-\defun{checkDocError}{checkDocError}
-\calls{checkDocError}{checkDocMessage}
-\calls{checkDocError}{concat}
-\calls{checkDocError}{saybrightly1}
-\calls{checkDocError}{sayBrightly}
-\refsdollar{checkDocError}{checkErrorFlag}
-\refsdollar{checkDocError}{recheckingFlag}
-\refsdollar{checkDocError}{constructorName}
-\refsdollar{checkDocError}{exposeFlag}
-\refsdollar{checkDocError}{exposeFlagHeading}
-\refsdollar{checkDocError}{outStream}
-\defsdollar{checkDocError}{checkErrorFlag}
-\defsdollar{checkDocError}{exposeFlagHeading}
-\begin{chunk}{defun checkDocError}
-(defun |checkDocError| (u)
- (let (msg)
- (declare (special |$outStream| |$exposeFlag| |$exposeFlagHeading|
- |$constructorName| |$recheckingFlag| |$checkErrorFlag|))
- (setq |$checkErrorFlag| t)
- (setq msg
- (cond
- (|$recheckingFlag|
- (if |$constructorName|
- (|checkDocMessage| u)
- (|concat| "> " u)))
- (|$constructorName| (|checkDocMessage| u))
- (t u)))
- (when (and |$exposeFlag| |$exposeFlagHeading|)
- (saybrightly1 |$exposeFlagHeading| |$outStream|)
- (|sayBrightly| |$exposeFlagHeading|)
- (setq |$exposeFlagHeading| nil))
- (|sayBrightly| msg)
- (when |$exposeFlag| (saybrightly1 msg |$outStream|))))
-
-\end{chunk}
-
-\defun{checkDocMessage}{checkDocMessage}
-\calls{checkDocMessage}{getdatabase}
-\calls{checkDocMessage}{whoOwns}
-\calls{checkDocMessage}{concat}
-\refsdollar{checkDocMessage}{x}
-\refsdollar{checkDocMessage}{constructorName}
-\begin{chunk}{defun checkDocMessage}
-(defun |checkDocMessage| (u)
- (let (sourcefile person middle)
- (declare (special |$constructorName| |$x|))
- (setq sourcefile (getdatabase |$constructorName| 'sourcefile))
- (setq person (or (|whoOwns| |$constructorName|) "---"))
- (setq middle
- (if (boundp '|$x|)
- (list "(" |$x| "): ")
- (list ": ")))
- (|concat| person ">" sourcefile "-->" |$constructorName| middle u)))
-
-\end{chunk}
-
-\defun{whoOwns}{whoOwns}
-This function always returns nil in the current system.
-Since it has no side effects we define it to return nil.
-\calls{whoOwns}{getdatabase}
-\calls{whoOwns}{strconc}
-\calls{whoOwns}{awk}
-\calls{whoOwns}{shut}
-\refsdollar{whoOwns}{exposeFlag}
-\begin{chunk}{defun whoOwns}
-(defun |whoOwns| (con)
- (declare (ignore con))
- nil)
-; (let (filename quoteChar instream value)
-; (declare (special |$exposeFlag|))
-; (cond
-; ((null |$exposeFlag|) nil)
-; (t
-; (setq filename (getdatabase con 'sourcefile))
-; (setq quoteChar #\")
-; (obey (strconc "awk '$2 == " quoteChar filename quoteChar
-; " {print $1}' whofiles > /tmp/temp"))
-; (setq instream (make-instream "/tmp/temp"))
-; (setq value (unless (eofp instream) (readline instream)))
-; (shut instream)
-; value))))
-
-\end{chunk}
+\section{Comment Checking Layer 4}
\defun{checkComments}{checkComments}
\calls{checkComments}{checkGetMargin}
@@ -20000,57 +19876,96 @@ Since it has no side effects we define it to return nil.
\end{chunk}
-\defun{checkSplit2Words}{checkSplit2Words}
-\calls{checkSplit2Words}{checkSplitBrace}
-\begin{chunk}{defun checkSplit2Words}
-(defun |checkSplit2Words| (u)
- (let (x verbatim z acc)
- (setq acc nil)
- (loop while u
+\defun{checkRewrite}{checkRewrite}
+\calls{checkRewrite}{checkRemoveComments}
+\calls{checkRewrite}{checkAddIndented}
+\calls{checkRewrite}{checkGetArgs}
+\calls{checkRewrite}{newString2Words}
+\calls{checkRewrite}{checkAddSpaces}
+\calls{checkRewrite}{checkSplit2Words}
+\calls{checkRewrite}{checkAddMacros}
+\calls{checkRewrite}{checkTexht}
+\calls{checkRewrite}{checkArguments}
+\calls{checkRewrite}{checkFixCommonProblem}
+\calls{checkRewrite}{checkRecordHash}
+\calls{checkRewrite}{checkDecorateForHt}
+\refsdollar{checkRewrite}{checkErrorFlag}
+\refsdollar{checkRewrite}{argl}
+\refsdollar{checkRewrite}{checkingXmptex?}
+\begin{chunk}{defun checkRewrite}
+(defun |checkRewrite| (name lines)
+ (declare (ignore name))
+ (prog (|$checkErrorFlag| margin w verbatim u2 okBefore u)
+ (declare (special |$checkErrorFlag| |$argl| |$checkingXmptex?|))
+ (setq |$checkErrorFlag| t)
+ (setq margin 0)
+ (setq lines (|checkRemoveComments| lines))
+ (setq u lines)
+ (when |$checkingXmptex?|
+ (setq u
+ (loop for x in u
+ collect (|checkAddIndented| x margin))))
+ (setq |$argl| (|checkGetArgs| (car u)))
+ (setq u2 nil)
+ (setq verbatim nil)
+ (loop for x in u
do
- (setq x (car u))
- (setq acc
- (cond
- ((string= x "\\end{verbatim}")
- (setq verbatim nil)
- (cons x acc))
- (verbatim (cons x acc))
- ((string= x "\\begin{verbatim}")
- (setq verbatim t)
- (cons x acc))
- ((setq z (|checkSplitBrace| x))
- (append (nreverse z) acc))
- (t (cons x acc))))
- (pop u))
- (nreverse acc)))
+ (setq w (|newString2Words| x))
+ (cond
+ (verbatim
+ (cond
+ ((and w (equal (car w) "\\end{verbatim}"))
+ (setq verbatim nil)
+ (setq u2 (append u2 w)))
+ (t
+ (setq u2 (append u2 (list x))))))
+ ((and w (equal (car w) "\\begin{verbatim}"))
+ (setq verbatim t)
+ (setq u2 (append u2 w)))
+ (t (setq u2 (append u2 w)))))
+ (setq u u2)
+ (setq u (|checkAddSpaces| u))
+ (setq u (|checkSplit2Words| u))
+ (setq u (|checkAddMacros| u))
+ (setq u (|checkTexht| u))
+ (setq okBefore (null |$checkErrorFlag|))
+ (|checkArguments| u)
+ (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
+ (|checkRecordHash| u)
+ (|checkDecorateForHt| u)))
\end{chunk}
-\defun{checkAddPeriod}{checkAddPeriod}
-\calls{checkAddPeriod}{setelt}
-\calls{checkAddPeriod}{maxindex}
-\begin{chunk}{defun checkAddPeriod}
-(defun |checkAddPeriod| (s)
- (let (m lastChar)
- (setq m (maxindex s))
- (setq lastChar (elt s m))
- (cond
- ((or (char= lastChar #\!) (char= lastChar #\?) (char= lastChar #\.)) s)
- ((or (char= lastChar #\,) (char= lastChar #\;))
- (setelt s m #\.)
- s)
- (t s))))
+\section{Comment Checking Layer 5}
+
+\defun{checkArguments}{checkArguments}
+\calls{checkArguments}{hget}
+\calls{checkArguments}{checkHTargs}
+\refsdollar{checkArguments}{htMacroTable}
+\begin{chunk}{defun checkArguments}
+(defun |checkArguments| (u)
+ (let (x k)
+ (declare (special |$htMacroTable|))
+ (loop while u
+ do (setq x (car u))
+ (cond
+ ((null (setq k (hget |$htMacroTable| x))) '|skip|)
+ ((eql k 0) '|skip|)
+ ((> k 0) (|checkHTargs| x (cdr u) k nil))
+ (t (|checkHTargs| x (cdr u) (- k) t)))
+ (pop u))
+ u))
\end{chunk}
\defun{checkBalance}{checkBalance}
-\calls{checkPrenAlist}{checkBeginEnd}
-\calls{checkPrenAlist}{assoc}
-\calls{checkPrenAlist}{rassoc}
-\calls{checkPrenAlist}{nequal}
-\calls{checkPrenAlist}{checkDocError}
-\calls{checkPrenAlist}{checkSayBracket}
-\calls{checkPrenAlist}{nreverse}
+\calls{checkBalance}{checkBeginEnd}
+\calls{checkBalance}{assoc}
+\calls{checkBalance}{rassoc}
+\calls{checkBalance}{nequal}
+\calls{checkBalance}{checkDocError}
+\calls{checkBalance}{checkSayBracket}
+\calls{checkBalance}{nreverse}
\refsdollar{checkBalance}{checkPrenAlist}
\begin{chunk}{defun checkBalance}
(defun |checkBalance| (u)
@@ -20086,6 +20001,8 @@ Since it has no side effects we define it to return nil.
\end{chunk}
+\section{Comment Checking Layer 6}
+
\defun{checkBeginEnd}{checkBeginEnd}
\calls{checkBeginEnd}{length}
\calls{checkBeginEnd}{hget}
@@ -20159,36 +20076,226 @@ Since it has no side effects we define it to return nil.
\end{chunk}
-\defun{checkSayBracket}{checkSayBracket}
-\begin{chunk}{defun checkSayBracket}
-(defun |checkSayBracket| (x)
- (cond
- ((or (char= x #\() (char= x #\))) "pren")
- ((or (char= x #\{) (char= x #\})) "brace")
- (t "bracket")))
+\defun{checkDecorate}{checkDecorate}
+\calls{checkDecorate}{checkDocError}
+\calls{checkDecorate}{member}
+\calls{checkDecorate}{checkAddBackSlashes}
+\calls{checkDecorate}{hasNoVowels}
+\refsdollar{checkDecorate}{checkingXmptex?}
+\refsdollar{checkDecorate}{charExclusions}
+\refsdollar{checkDecorate}{argl}
+\refsdollar{checkDecorate}{charBack}
+\refsdollar{checkDecorate}{charRbrace}
+\refsdollar{checkDecorate}{charLbrace}
+\begin{chunk}{defun checkDecorate}
+(defun |checkDecorate| (u)
+ (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
+ (declare (special |$charLbrace| |$charRbrace| |$charBack| |$argl|
+ |$charExclusions| |$checkingXmptex?|))
+ (setq count 0)
+ (loop while u
+ do
+ (setq x (car u))
+ (cond
+ ((null verbatim)
+ (cond
+ ((string= x "\\em")
+ (cond
+ ((> count 0)
+ (setq mathSymbolsOk (1- count))
+ (setq spadflag (1- count)))
+ (t
+ (|checkDocError| (list "\\em must be enclosed in braces"))))))
+ (when (|member| x '("\\spadpaste" "\\spad" "\\spadop"))
+ (setq mathSymbolsOk count))
+ (cond
+ ((|member| x '("\\s" "\\spadtype" "\\spadsys" "\\example" "\\andexample"
+ "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
+ "\\spadcommand" "\\footnote"))
+ (setq spadflag count))
+ ((equal x |$charLbrace|)
+ (setq count (1+ count)))
+ ((equal x |$charRbrace|)
+ (setq count (1- count))
+ (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
+ (when (eql spadflag count) (setq spadflag nil)))
+ ((and (null mathSymbolsOk)
+ (|member| x '("+" "*" "=" "==" "->")))
+ (when |$checkingXmptex?|
+ (|checkDocError|
+ (list '|Symbol | x " appearing outside \\spad{}")))))))
+ (setq acc
+ (cond
+ ((string= x "\\end{verbatim}")
+ (setq verbatim nil)
+ (cons x acc))
+ (verbatim (cons x acc))
+ ((string= x "\\begin{verbatim}")
+ (setq verbatim t)
+ (cons x acc))
+ ((and (string= x "\\begin")
+ (equal (car (setq v (ifcdr u))) |$charLbrace|)
+ (string= (car (setq v (ifcdr v))) "detail")
+ (equal (car (setq v (ifcdr v))) |$charRbrace|))
+ (setq u v)
+ (cons "\\blankline " acc))
+ ((and (string= x "\\end")
+ (equal (car (setq v (ifcdr u))) |$charLbrace|)
+ (string= (car (setq v (ifcdr v))) "detail")
+ (equal (car (setq v (ifcdr v))) |$charRbrace|))
+ (setq u v)
+ acc)
+ ((or (char= x #\$) (string= x "$"))
+ (cons "\\$" acc))
+ ((or (char= x #\%) (string= x "%"))
+ (cons "\\%" acc))
+ ((or (char= x #\,) (string= x ","))
+ (cons ",{}" acc))
+ ((string= x "\\spad")
+ (cons "\\spad" acc))
+ ((and (stringp x) (digitp (elt x 0)))
+ (cons x acc))
+ ((and (null spadflag)
+ (or (and (charp x)
+ (alpha-char-p x)
+ (null (member x |$charExclusions|)))
+ (|member| x |$argl|)))
+ (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+ ((and (null spadflag)
+ (or (and (stringp x)
+ (null (equal (elt x 0) |$charBack|))
+ (digitp (elt x (maxindex x))))
+ (|member| x '("true" "false"))))
+ (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+ (t
+ (setq xcount (|#| x))
+ (cond
+ ((and (eql xcount 3)
+ (char= (elt x 1) #\t)
+ (char= (elt x 2) #\h))
+ (cons "th" (cons |$charRbrace|
+ (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+ ((and (eql xcount 4)
+ (char= (elt x 1) #\-)
+ (char= (elt x 2) #\t)
+ (char= (elt x 3) #\h))
+ (cons "-th" (cons |$charRbrace|
+ (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+ ((or (and (eql xcount 2)
+ (char= (elt x 1) #\i))
+ (and (null spadflag)
+ (> xcount 0)
+ (> 4 xcount)
+ (null (|member| x '("th" "rd" "st")))
+ (|hasNoVowels| x)))
+ (cons |$charRbrace|
+ (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+ (t
+ (cons (|checkAddBackSlashes| x) acc))))))
+ (setq u (cdr u)))
+ (nreverse acc)))
\end{chunk}
-\defun{checkArguments}{checkArguments}
-\calls{checkArguments}{hget}
-\calls{checkArguments}{checkHTargs}
-\refsdollar{checkArguments}{htMacroTable}
-\begin{chunk}{defun checkArguments}
-(defun |checkArguments| (u)
- (let (x k)
- (declare (special |$htMacroTable|))
+\defun{checkDecorateForHt}{checkDecorateForHt}
+\calls{checkDecorateForHt}{checkDocError}
+\calls{checkDecorateForHt}{member}
+\refsdollar{checkDecorateForHt}{checkingXmptex?}
+\refsdollar{checkDecorateForHt}{charRbrace}
+\refsdollar{checkDecorateForHt}{charLbrace}
+\begin{chunk}{defun checkDecorateForHt}
+(defun |checkDecorateForHt| (u)
+ (let (x count spadflag)
+ (declare (special |$checkingXmptex?| |$charRbrace| |$charLbrace|))
+ (setq count 0)
+ (setq spadflag nil)
(loop while u
- do (setq x (car u))
- (cond
- ((null (setq k (hget |$htMacroTable| x))) '|skip|)
- ((eql k 0) '|skip|)
- ((> k 0) (|checkHTargs| x (cdr u) k nil))
- (t (|checkHTargs| x (cdr u) (- k) t)))
- (pop u))
+ do
+ (setq x (car u))
+ (when (equal x "\\em")
+ (if (> count 0)
+ (setq spadflag (1- count))
+ (|checkDocError| (list "\\em must be enclosed in braces"))))
+ (cond
+ ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
+ "\\spadcommand" "\\footnote"))
+ (setq spadflag count))
+ ((equal x |$charLbrace|)
+ (setq count (1+ count)))
+ ((equal x |$charRbrace|)
+ (setq count (1- count))
+ (when (equal spadflag count) (setq spadflag nil)))
+ ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
+ (when |$checkingXmptex?|
+ (|checkDocError| (list '|Symbol | x " appearing outside \\spad{}"))))
+ (t nil))
+ (when (or (equal x "$") (equal x "%"))
+ (|checkDocError| (list "Unescaped " x)))
+ (pop u))
u))
\end{chunk}
+\defun{checkDocError1}{checkDocError1}
+\calls{checkDocError1}{checkDocError}
+\refsdollar{checkDocError1}{compileDocumentation}
+\begin{chunk}{defun checkDocError1}
+(defun |checkDocError1| (u)
+ (declare (special |$compileDocumentation|))
+ (if (and (boundp '|$compileDocumentation|) |$compileDocumentation|)
+ nil
+ (|checkDocError| u)))
+
+\end{chunk}
+
+\defun{checkFixCommonProblem}{checkFixCommonProblem}
+\calls{checkFixCommonProblem}{member}
+\calls{checkFixCommonProblem}{ifcar}
+\calls{checkFixCommonProblem}{ifcdr}
+\calls{checkFixCommonProblem}{nequal}
+\calls{checkFixCommonProblem}{checkDocError}
+\refsdollar{checkFixCommonProblem}{charLbrace}
+\refsdollar{checkFixCommonProblem}{HTspadmacros}
+\begin{chunk}{defun checkFixCommonProblem}
+(defun |checkFixCommonProblem| (u)
+ (let (x next acc)
+ (declare (special |$charLbrace| |$HTspadmacros|))
+ (loop while u
+ do
+ (setq x (car u))
+ (cond
+ ((and (equal x |$charLbrace|)
+ (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
+ (nequal (ifcar (ifcdr (cdr u))) |$charLbrace|))
+ (|checkDocError| (list "Reversing " next " and left brace"))
+ (setq acc (cons |$charLbrace| (cons next acc)))
+ (setq u (cddr u)))
+ (t
+ (setq acc (cons x acc))
+ (setq u (cdr u)))))
+ (nreverse acc)))
+
+\end{chunk}
+
+\defun{checkGetLispFunctionName}{checkGetLispFunctionName}
+\calls{checkGetLispFunctionName}{charPosition}
+\calls{checkGetLispFunctionName}{checkDocError}
+\begin{chunk}{defun checkGetLispFunctionName}
+(defun |checkGetLispFunctionName| (s)
+ (let (n k j)
+ (setq n (|#| s))
+ (cond
+ ((and (setq k (|charPosition| #\| s 1))
+ (> n k)
+ (setq j (|charPosition| #\| s (1+ k)))
+ (> n j))
+ (substring s (1+ k) (1- (- j k))))
+ (t
+ (|checkDocError| (cons "Ill-formed lisp expression : " (list s)))
+ '|illformed|))))
+
+\end{chunk}
+
\defun{checkHTargs}{checkHTargs}
Note that {\tt u} should start with an open brace.
\calls{checkHTargs}{checkLookForLeftBrace}
@@ -20209,43 +20316,183 @@ Note that {\tt u} should start with an open brace.
\end{chunk}
-\defun{checkLookForLeftBrace}{checkLookForLeftBrace}
-\calls{checkLookForLeftBrace}{nequal}
-\refsdollar{checkLookForLeftBrace}{charBlank}
-\refsdollar{checkLookForLeftBrace}{charLbrace}
-\begin{chunk}{defun checkLookForLeftBrace}
-(defun |checkLookForLeftBrace| (u)
- (declare (special |$charBlank| |$charLbrace|))
+\defun{checkRecordHash}{checkRecordHash}
+\calls{checkRecordHash}{member}
+\calls{checkRecordHash}{checkLookForLeftBrace}
+\calls{checkRecordHash}{checkLookForRightBrace}
+\calls{checkRecordHash}{ifcdr}
+\calls{checkRecordHash}{intern}
+\calls{checkRecordHash}{hget}
+\calls{checkRecordHash}{hput}
+\calls{checkRecordHash}{checkGetLispFunctionName}
+\calls{checkRecordHash}{checkGetStringBeforeRightBrace}
+\calls{checkRecordHash}{checkGetParse}
+\calls{checkRecordHash}{checkDocError}
+\calls{checkRecordHash}{opOf}
+\calls{checkRecordHash}{spadSysChoose}
+\calls{checkRecordHash}{checkNumOfArgs}
+\calls{checkRecordHash}{checkIsValidType}
+\calls{checkRecordHash}{form2HtString}
+\calls{checkRecordHash}{getl}
+\refsdollar{checkRecordHash}{charBack}
+\refsdollar{checkRecordHash}{HTlinks}
+\refsdollar{checkRecordHash}{htHash}
+\refsdollar{checkRecordHash}{HTlisplinks}
+\refsdollar{checkRecordHash}{lispHash}
+\refsdollar{checkRecordHash}{glossHash}
+\refsdollar{checkRecordHash}{currentSysList}
+\refsdollar{checkRecordHash}{setOptions}
+\refsdollar{checkRecordHash}{sysHash}
+\refsdollar{checkRecordHash}{name}
+\refsdollar{checkRecordHash}{origin}
+\defsdollar{checkRecordHash}{sysHash}
+\defsdollar{checkRecordHash}{glossHash}
+\defsdollar{checkRecordHash}{lispHash}
+\defsdollar{checkRecordHash}{htHash}
+\begin{chunk}{defun checkRecordHash}
+(defun |checkRecordHash| (u)
+ (let (p q htname entry s parse n key x)
+ (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
+ |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
+ |$HTlinks| |$charBack|))
(loop while u
do
+ (setq x (car u))
+ (when (and (stringp x) (equal (elt x 0) |$charBack|))
(cond
- ((equal (car u) |$charLbrace|) (return (car u)))
- ((nequal (car u) |$charBlank|) (return nil))
- (t (pop u))))
- u)
+ ((and (|member| x |$HTlinks|)
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (|checkLookForRightBrace| (ifcdr u)))
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq htname (|intern| (ifcar u)))
+ (setq entry (or (hget |$htHash| htname) (list nil)))
+ (hput |$htHash| htname
+ (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+ ((and (|member| x |$HTlisplinks|)
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (|checkLookForRightBrace| (ifcdr u)))
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq htname
+ (|intern|
+ (|checkGetLispFunctionName|
+ (|checkGetStringBeforeRightBrace| u))))
+ (setq entry (or (hget |$lispHash| htname) (list nil)))
+ (hput |$lispHash| htname
+ (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+ ((and (or (setq p (|member| x '("\\gloss" "\\spadglos")))
+ (setq q (|member| x '("\\glossSee" "\\spadglosSee"))))
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (when q
+ (setq u (|checkLookForRightBrace| u))
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq htname (|intern| (|checkGetStringBeforeRightBrace| u)))
+ (setq entry
+ (or (hget |$glossHash| htname) (list nil)))
+ (hput |$glossHash| htname
+ (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+ ((and (boot-equal x "\\spadsys")
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq s (|checkGetStringBeforeRightBrace| u))
+ (when (char= (elt s 0) #\)) (setq s (substring s 1 nil)))
+ (setq parse (|checkGetParse| s))
+ (cond
+ ((null parse)
+ (|checkDocError| (list "Unparseable \\spadtype: " s)))
+ ((null (|member| (|opOf| parse) |$currentSysList|))
+ (|checkDocError| (list "Bad system command: " s)))
+ ((or (atom parse)
+ (null (and (consp parse) (eq (qcar parse) '|set|)
+ (consp (qcdr parse))
+ (eq (qcddr parse) nil))))
+ '|ok|)
+ ((null (|spadSysChoose| |$setOptions| (qcadr parse)))
+ (progn
+ (|checkDocError| (list "Incorrect \\spadsys: " s))
+ (setq entry (or (hget |$sysHash| htname) (list nil)))
+ (hput |$sysHash| htname
+ (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry))))))))
+ ((and (boot-equal x "\\spadtype")
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq s (|checkGetStringBeforeRightBrace| u))
+ (setq parse (|checkGetParse| s))
+ (cond
+ ((null parse)
+ (|checkDocError| (list "Unparseable \\spadtype: " s)))
+ (t
+ (setq n (|checkNumOfArgs| parse))
+ (cond
+ ((null n)
+ (|checkDocError| (list "Unknown \\spadtype: " s)))
+ ((and (atom parse) (> n 0))
+ '|skip|)
+ ((null (setq key (|checkIsValidType| parse)))
+ (|checkDocError| (list "Unknown \\spadtype: " s)))
+ ((atom key) '|ok|)
+ (t
+ (|checkDocError|
+ (list "Wrong number of arguments: " (|form2HtString| key))))))))
+ ((and (|member| x '("\\spadop" "\\keyword"))
+ (setq u (|checkLookForLeftBrace| (ifcdr u)))
+ (setq u (ifcdr u)))
+ (setq x (|intern| (|checkGetStringBeforeRightBrace| u)))
+ (when (null (or (getl x '|Led|) (getl x '|Nud|)))
+ (|checkDocError| (list "Unknown \\spadop: " x))))))
+ (pop u))
+ '|done|))
\end{chunk}
-\defun{checkLookForRightBrace}{checkLookForRightBrace}
-This returns a line beginning with right brace
-\refsdollar{checkLookForRightBrace}{charLbrace}
-\refsdollar{checkLookForRightBrace}{charRbrace}
-\begin{chunk}{defun checkLookForRightBrace}
-(defun |checkLookForRightBrace| (u)
- (let (found count)
- (declare (special |$charLbrace| |$charRbrace|))
+\defun{checkTexht}{checkTexht}
+\calls{checkTexht}{ifcdr}
+\calls{checkTexht}{ifcar}
+\calls{checkTexht}{checkDocError}
+\calls{checkTexht}{nequal}
+\refsdollar{checkTexht}{charRbrace}
+\refsdollar{checkTexht}{charLbrace}
+\begin{chunk}{defun checkTexht}
+(defun |checkTexht| (u)
+ (let (count y x acc)
+ (declare (special |$charRbrace| |$charLbrace|))
(setq count 0)
(loop while u
do
- (cond
- ((equal (car u) |$charRbrace|)
- (if (eql count 0)
- (return (setq found u))
- (setq count (1- count))))
- ((equal (car u) |$charLbrace|)
- (setq count (1+ count))))
- (pop u))
- found))
+ (setq x (car u))
+ (when (and (string= x "\\texht") (setq u (ifcdr u)))
+ (unless (equal (ifcar u) |$charLbrace|)
+ (|checkDocError| "First left brace after \\texht missing"))
+ ; drop first argument including braces of \texht
+ (setq count 1)
+ (loop while (or (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
+ (> count 1))
+ do
+ (when (equal y |$charLbrace|) (setq count (1+ count)))
+ (when (equal y |$charRbrace|) (setq count (1- count))))
+ ; drop first right brace of 1st arg
+ (setq x (ifcar (setq u (cdr u)))))
+ (when (and (string= x "\\httex")
+ (setq u (ifcdr u))
+ (equal (ifcar u) |$charLbrace|))
+ ; left brace: add it
+ (setq acc (cons (ifcar u) acc))
+ (loop while (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
+ do (setq acc (cons y acc)))
+ ; right brace: add it
+ (setq acc (cons (ifcar u) acc))
+ ; left brace: forget it
+ (setq x (ifcar (setq u (cdr u))))
+ (loop while (nequal (ifcar (setq u (cdr u))) |$charRbrace|)
+ do '|skip|)
+ ; forget right brace: move to next char
+ (setq x (ifcar (setq u (cdr u)))))
+ (setq acc (cons x acc))
+ (setq u (cdr u)))
+ (nreverse acc)))
\end{chunk}
@@ -20381,35 +20628,93 @@ This returns a line beginning with right brace
\end{chunk}
-\defun{checkSkipBlanks}{checkSkipBlanks}
-\refsdollar{checkSkipBlanks}{charBlank}
-\begin{chunk}{defun checkSkipBlanks}
-(defun |checkSkipBlanks| (u i m)
- (declare (special |$charBlank|))
- (do ()
- ((null (and (> m i) (equal (elt u i) |$charBlank|))) nil)
- (setq i (1+ i)))
- (unless (= i m) i))
+\defun{checkTrim}{checkTrim}
+\calls{checkTrim}{charPosition}
+\calls{checkTrim}{nequal}
+\calls{checkTrim}{systemError}
+\calls{checkTrim}{checkDocError}
+\refsdollar{checkTrim}{charBlank}
+\refsdollar{checkTrim}{x}
+\refsdollar{checkTrim}{charPlus}
+\begin{chunk}{defun checkTrim}
+(defun |checkTrim| (|$x| lines)
+ (declare (special |$x|))
+ (labels (
+ (trim (s)
+ (let (k)
+ (declare (special |$charBlank|))
+ (setq k (wherePP s))
+ (substring s (+ k 2) nil)))
+ (wherePP (u)
+ (let (k)
+ (declare (special |$charPlus|))
+ (setq k (|charPosition| |$charPlus| u 0))
+ (if (or (eql k (|#| u))
+ (nequal (|charPosition| |$charPlus| u (1+ k)) (1+ k)))
+ (|systemError| " Improper comment found")
+ k))))
+ (let (j s)
+ (setq s (list (wherePP (car lines))))
+ (loop for x in (rest lines)
+ do
+ (setq j (wherePP x))
+ (unless (member j s)
+ (|checkDocError| (list |$x| " has varying indentation levels"))
+ (setq s (cons j s))))
+ (loop for y in lines
+ collect (trim y)))))
\end{chunk}
-\defun{checkSkipIdentifierToken}{checkSkipIdentifierToken}
-\calls{checkSkipIdentifierToken}{checkAlphabetic}
-\begin{chunk}{defun checkSkipIdentifierToken}
-(defun |checkSkipIdentifierToken| (u i m)
- (do ()
- ((null (and (> m i) (|checkAlphabetic| (elt u i)))) nil)
- (setq i (1+ i)))
- (unless (= i m) i))
+\section{Comment Checking Layer 7}
+
+\defun{checkDocError}{checkDocError}
+\calls{checkDocError}{checkDocMessage}
+\calls{checkDocError}{concat}
+\calls{checkDocError}{saybrightly1}
+\calls{checkDocError}{sayBrightly}
+\refsdollar{checkDocError}{checkErrorFlag}
+\refsdollar{checkDocError}{recheckingFlag}
+\refsdollar{checkDocError}{constructorName}
+\refsdollar{checkDocError}{exposeFlag}
+\refsdollar{checkDocError}{exposeFlagHeading}
+\refsdollar{checkDocError}{outStream}
+\defsdollar{checkDocError}{checkErrorFlag}
+\defsdollar{checkDocError}{exposeFlagHeading}
+\begin{chunk}{defun checkDocError}
+(defun |checkDocError| (u)
+ (let (msg)
+ (declare (special |$outStream| |$exposeFlag| |$exposeFlagHeading|
+ |$constructorName| |$recheckingFlag| |$checkErrorFlag|))
+ (setq |$checkErrorFlag| t)
+ (setq msg
+ (cond
+ (|$recheckingFlag|
+ (if |$constructorName|
+ (|checkDocMessage| u)
+ (|concat| "> " u)))
+ (|$constructorName| (|checkDocMessage| u))
+ (t u)))
+ (when (and |$exposeFlag| |$exposeFlagHeading|)
+ (saybrightly1 |$exposeFlagHeading| |$outStream|)
+ (|sayBrightly| |$exposeFlagHeading|)
+ (setq |$exposeFlagHeading| nil))
+ (|sayBrightly| msg)
+ (when |$exposeFlag| (saybrightly1 msg |$outStream|))))
\end{chunk}
-\defun{checkAlphabetic}{checkAlphabetic}
-\refsdollar{checkAlphabetic}{charIdentifierEndings}
-\begin{chunk}{defun checkAlphabetic}
-(defun |checkAlphabetic| (c)
- (declare (special |$charIdentifierEndings|))
- (or (alpha-char-p c) (digitp c) (member c |$charIdentifierEndings|)))
+\defun{checkRemoveComments}{checkRemoveComments}
+\calls{checkRemoveComments}{checkTrimCommented}
+\begin{chunk}{defun checkRemoveComments}
+(defun |checkRemoveComments| (lines)
+ (let (line acc)
+ (loop while lines
+ do
+ (setq line (|checkTrimCommented| (car lines)))
+ (when (>= (|firstNonBlankPosition| line) 0) (push line acc))
+ (pop lines))
+ (nreverse acc)))
\end{chunk}
@@ -20424,41 +20729,151 @@ This returns a line beginning with right brace
\end{chunk}
-\defun{checkSkipOpToken}{checkSkipOpToken}
-\calls{checkSkipOpToken}{checkAlphabetic}
-\calls{checkSkipOpToken}{member}
-\refsdollar{checkSkipOpToken}{charDelimiters}
-\begin{chunk}{defun checkSkipOpToken}
-(defun |checkSkipOpToken| (u i m)
- (declare (special |$charDelimiters|))
- (do ()
- ((null (and (> m i)
- (null (|checkAlphabetic| (elt u i)))
- (null (|member| (elt u i) |$charDelimiters|))))
- nil)
- (setq i (1+ i)))
- (unless (= i m) i))
+\defun{checkSplit2Words}{checkSplit2Words}
+\calls{checkSplit2Words}{checkSplitBrace}
+\begin{chunk}{defun checkSplit2Words}
+(defun |checkSplit2Words| (u)
+ (let (x verbatim z acc)
+ (setq acc nil)
+ (loop while u
+ do
+ (setq x (car u))
+ (setq acc
+ (cond
+ ((string= x "\\end{verbatim}")
+ (setq verbatim nil)
+ (cons x acc))
+ (verbatim (cons x acc))
+ ((string= x "\\begin{verbatim}")
+ (setq verbatim t)
+ (cons x acc))
+ ((setq z (|checkSplitBrace| x))
+ (append (nreverse z) acc))
+ (t (cons x acc))))
+ (pop u))
+ (nreverse acc)))
\end{chunk}
-\defun{getMatchingRightPren}{getMatchingRightPren}
-\calls{getMatchingRightPren}{maxindex}
-\begin{chunk}{defun getMatchingRightPren}
-(defun |getMatchingRightPren| (u j open close)
- (let (m c found count)
- (setq count 0)
- (setq m (maxindex u))
- (loop for i from j to m
+\section{Comment Checking Layer 8}
+
+\defun{checkAddIndented}{checkAddIndented}
+\calls{checkAddIndented}{firstNonBlankPosition}
+\calls{checkAddIndented}{strconc}
+\calls{checkAddIndented}{stringimage}
+\calls{checkAddIndented}{checkAddSpaceSegments}
+\tpdhere{Note that this function was missing without error, so may be junk}
+\begin{chunk}{defun checkAddIndented}
+(defun |checkAddIndented| (x margin)
+ (let (k)
+ (setq k (|firstNonBlankPosition| x))
+ (cond
+ ((eql k -1) "\\blankline ")
+ ((eql margin k) x)
+ (t
+ (strconc "\\indented{" (stringimage (- k margin)) "}{"
+ (|checkAddSpaceSegments| (substring x k nil) 0) "}")))))
+
+\end{chunk}
+
+\defun{checkDocMessage}{checkDocMessage}
+\calls{checkDocMessage}{getdatabase}
+\calls{checkDocMessage}{whoOwns}
+\calls{checkDocMessage}{concat}
+\refsdollar{checkDocMessage}{x}
+\refsdollar{checkDocMessage}{constructorName}
+\begin{chunk}{defun checkDocMessage}
+(defun |checkDocMessage| (u)
+ (let (sourcefile person middle)
+ (declare (special |$constructorName| |$x|))
+ (setq sourcefile (getdatabase |$constructorName| 'sourcefile))
+ (setq person (or (|whoOwns| |$constructorName|) "---"))
+ (setq middle
+ (if (boundp '|$x|)
+ (list "(" |$x| "): ")
+ (list ": ")))
+ (|concat| person ">" sourcefile "-->" |$constructorName| middle u)))
+
+\end{chunk}
+
+\defun{checkExtract}{checkExtract}
+\calls{checkExtract}{firstNonBlankPosition}
+\calls{checkExtract}{substring?}
+\calls{checkExtract}{charPosition}
+\calls{checkExtract}{length}
+\begin{chunk}{defun checkExtract}
+(defun |checkExtract| (header lines)
+ (let (line u margin firstLines m k j i acc)
+ (loop while lines
do
- (setq c (elt u i))
+ (setq line (car lines))
+ (setq k (|firstNonBlankPosition| line)) ; gives margin of description
+ (if (|substring?| header line k)
+ (return nil)
+ (setq lines (cdr lines))))
+ (cond
+ ((null lines) nil)
+ (t
+ (setq u (car lines))
+ (setq j (|charPosition| #\: u k))
+ (setq margin k)
+ (setq firstLines
+ (if (nequal (setq k (|firstNonBlankPosition| u (1+ j))) -1)
+ (cons (substring u (1+ j) nil) (cdr lines))
+ (cdr lines)))
+ ; now look for another header; if found skip all rest of these lines
+ (setq acc nil)
+ (loop for line in firstLines
+ do
+ (setq m (|#| line))
+ (cond
+ ((eql (setq k (|firstNonBlankPosition| line)) -1) '|skip|)
+ ((> k margin) '|skip|)
+ ((null (upper-case-p (elt line k))) '|skip|)
+ ((equal (setq j (|charPosition| #\: line k)) m) '|skip|)
+ ((> j (setq i (|charPosition| #\space line (1+ k)))) '|skip|)
+ (t (return nil)))
+ (setq acc (cons line acc)))
+ (nreverse acc)))))
+
+\end{chunk}
+
+\defun{checkGetArgs}{checkGetArgs}
+\calls{checkGetArgs}{maxindex}
+\calls{checkGetArgs}{firstNonBlankPosition}
+\calls{checkGetArgs}{checkGetArgs}
+\calls{checkGetArgs}{stringPrefix?}
+\calls{checkGetArgs}{getMatchingRightPren}
+\calls{checkGetArgs}{charPosition}
+\calls{checkGetArgs}{nequal}
+\calls{checkGetArgs}{trimString}
+\refsdollar{checkGetArgs}{charComma}
+\begin{chunk}{defun checkGetArgs}
+(defun |checkGetArgs| (u)
+ (let (m k acc i)
+ (declare (special |$charComma|))
+ (cond
+ ((null (stringp u)) nil)
+ (t
+ (setq m (maxindex u))
+ (setq k (|firstNonBlankPosition| u))
(cond
- ((equal c close)
- (if (eql count 0)
- (return (setq found i))
- (setq count (1- count))))
- ((equal c open)
- (setq count (1+ count)))))
- found))
+ ((> k 0)
+ (|checkGetArgs| (substring u k nil)))
+ ((|stringPrefix?| "\\spad{" u)
+ (setq k (or (|getMatchingRightPren| u 6 #\{ #\}) m))
+ (|checkGetArgs| (substring u 6 (- k 6))))
+ ((> (setq i (|charPosition| #\( u 0)) m)
+ nil)
+ ((nequal (elt u m) #\))
+ nil)
+ (t
+ (do ()
+ ((null (> m (setq k (|charPosition| |$charComma| u (1+ i))))) nil)
+ (setq acc
+ (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
+ (setq i k))
+ (nreverse (cons (substring u (1+ i) (1- (- m i))) acc))))))))
\end{chunk}
@@ -20477,18 +20892,32 @@ This returns a line beginning with right brace
\end{chunk}
-\defun{firstNonBlankPosition}{firstNonBlankPosition}
-\calls{firstNonBlankPosition}{nequal}
-\calls{firstNonBlankPosition}{maxindex}
-\begin{chunk}{defun firstNonBlankPosition}
-(defun |firstNonBlankPosition| (&rest therest)
- (let ((x (car therest)) (options (cdr therest)) start k)
- (declare (special |$charBlank|))
- (setq start (or (ifcar options) 0))
- (setq k -1)
- (loop for i from start to (maxindex x)
- do (when (nequal (elt x i) |$charBlank|) (return (setq k i))))
- k))
+\defun{checkGetParse}{checkGetParse}
+\calls{checkGetParse}{ncParseFromString}
+\calls{checkGetParse}{removeBackslashes}
+\begin{chunk}{defun checkGetParse}
+(defun |checkGetParse| (s)
+ (|ncParseFromString| (|removeBackslashes| s)))
+
+\end{chunk}
+
+\defun{checkGetStringBeforeRightBrace}{checkGetStringBeforeRightBrace}
+\begin{chunk}{defun checkGetStringBeforeRightBrace}
+(defun |checkGetStringBeforeRightBrace| (u)
+ (prog (x acc)
+ (return
+ (loop while u
+ do
+ (setq x (car u))
+ (cond
+ ((equal x |$charRbrace|)
+ (let ((result ""))
+ (loop for item in acc
+ do (setq result (concatenate 'string item result)))
+ (return result)))
+ (t
+ (setq acc (cons x acc))
+ (setq u (cdr u))))))))
\end{chunk}
@@ -20520,6 +20949,299 @@ This returns a line beginning with right brace
\end{chunk}
+\defun{checkIndentedLines}{checkIndentedLines}
+\calls{checkIndentedLines}{firstNonBlankPosition}
+\calls{checkIndentedLines}{strconc}
+\calls{checkIndentedLines}{checkAddSpaceSegments}
+\refsdollar{checkIndentedLines}{charFauxNewline}
+\begin{chunk}{defun checkIndentedLines}
+(defun |checkIndentedLines| (u margin)
+ (let (k s verbatim u2)
+ (declare (special |$charFauxNewline|))
+ (loop for x in u
+ do
+ (setq k (|firstNonBlankPosition| x))
+ (cond
+ ((eql k -1)
+ (if verbatim
+ (setq u2 (append u2 (list |$charFauxNewline|)))
+ (setq u2 (append u2 (list "\\blankline ")))))
+ (t
+ (setq s (substring x k nil))
+ (cond
+ ((string= s "\\begin{verbatim}")
+ (setq verbatim t)
+ (setq u2 (append u2 (list s))))
+ ((string= s "\\end{verbatim}")
+ (setq verbatim nil)
+ (setq u2 (append u2 (list s))))
+ (verbatim
+ (setq u2 (append u2 (list (substring x margin nil)))))
+ ((eql margin k)
+ (setq u2 (append u2 (list s))))
+ (t
+ (setq u2
+ (append u2
+ (list (strconc "\\indented{" (stringimage (- k margin))
+ "}{" (|checkAddSpaceSegments| s 0) "}")))))))))
+ u2))
+
+\end{chunk}
+
+\defun{checkSkipIdentifierToken}{checkSkipIdentifierToken}
+\calls{checkSkipIdentifierToken}{checkAlphabetic}
+\begin{chunk}{defun checkSkipIdentifierToken}
+(defun |checkSkipIdentifierToken| (u i m)
+ (do ()
+ ((null (and (> m i) (|checkAlphabetic| (elt u i)))) nil)
+ (setq i (1+ i)))
+ (unless (= i m) i))
+
+\end{chunk}
+
+\defun{checkSkipOpToken}{checkSkipOpToken}
+\calls{checkSkipOpToken}{checkAlphabetic}
+\calls{checkSkipOpToken}{member}
+\refsdollar{checkSkipOpToken}{charDelimiters}
+\begin{chunk}{defun checkSkipOpToken}
+(defun |checkSkipOpToken| (u i m)
+ (declare (special |$charDelimiters|))
+ (do ()
+ ((null (and (> m i)
+ (null (|checkAlphabetic| (elt u i)))
+ (null (|member| (elt u i) |$charDelimiters|))))
+ nil)
+ (setq i (1+ i)))
+ (unless (= i m) i))
+
+\end{chunk}
+
+\defun{checkSplitBrace}{checkSplitBrace}
+\calls{checkSplitBrace}{charp}
+\calls{checkSplitBrace}{length}
+\calls{checkSplitBrace}{checkSplitBackslash}
+\calls{checkSplitBrace}{checkSplitBrace}
+\calls{checkSplitBrace}{checkSplitOn}
+\calls{checkSplitBrace}{checkSplitPunctuation}
+\begin{chunk}{defun checkSplitBrace}
+(defun |checkSplitBrace| (x)
+ (let (m u)
+ (cond
+ ((charp x) (list x))
+ ((eql (|#| x) 1) (list (elt x 0)))
+ ((and (setq u (|checkSplitBackslash| x)) (cdr u))
+ (let (result)
+ (loop for y in u do (append result (|checkSplitBrace| y)))
+ result))
+ (t
+ (setq m (maxindex x))
+ (cond
+ ((and (setq u (|checkSplitOn| x)) (cdr u))
+ (let (result)
+ (loop for y in u do (append result (|checkSplitBrace| y)))
+ result))
+ ((and (setq u (|checkSplitPunctuation| x)) (cdr u))
+ (let (result)
+ (loop for y in u do (append result (|checkSplitBrace| y)))
+ result))
+ (t (list x)))))))
+
+\end{chunk}
+
+\defun{checkTrimCommented}{checkTrimCommented}
+\calls{checkTrimCommented}{length}
+\calls{checkTrimCommented}{htcharPosition}
+\calls{checkTrimCommented}{nequal}
+\begin{chunk}{defun checkTrimCommented}
+(defun |checkTrimCommented| (line)
+ (let (n k)
+ (setq n (|#| line))
+ (setq k (|htcharPosition| (|char| '%) line 0))
+ (cond
+ ((eql k 0) "")
+ ((or (>= k (1- n)) (nequal (elt line (1+ k)) #\%)) line)
+ ((> (|#| line) k) (substring line 0 k))
+ (t line))))
+
+\end{chunk}
+
+\defun{newString2Words}{newString2Words}
+\calls{newString2Words}{newWordFrom}
+\calls{newString2Words}{nreverse0}
+\begin{chunk}{defun newString2Words}
+(defun |newString2Words| (z)
+ (let (m tmp1 w i result)
+ (cond
+ ((null (stringp z)) (list z))
+ (t
+ (setq m (maxindex z))
+ (cond
+ ((eql m -1) nil)
+ (t
+ (setq i 0)
+ (do () ; [w while newWordFrom(l,i,m) is [w,i]]
+ ((null (progn
+ (setq tmp1 (|newWordFrom| z i m))
+ (and (consp tmp1)
+ (progn
+ (setq w (qcar tmp1))
+ (and (consp (qcdr tmp1))
+ (eq (qcddr tmp1) nil)
+ (progn
+ (setq i (qcadr tmp1))
+ t))))))
+ (nreverse0 result))
+ (setq result (cons (qcar tmp1) result)))))))))
+
+\end{chunk}
+
+\section{Comment Checking Layer 9}
+
+\defun{checkAddBackSlashes}{checkAddBackSlashes}
+\calls{checkAddBackSlashes}{strconc}
+\calls{checkAddBackSlashes}{maxindex}
+\calls{checkAddBackSlashes}{checkAddBackSlashes}
+\refsdollar{checkAddBackSlashes}{charBack}
+\refsdollar{checkAddBackSlashes}{charEscapeList}
+\begin{chunk}{defun checkAddBackSlashes}
+(defun |checkAddBackSlashes| (s)
+ (let (c m char insertIndex k)
+ (declare (special |$charBack| |$charEscapeList|))
+ (cond
+ ((or (and (charp s) (setq c s))
+ (and (eql (|#| s) 1) (setq c (elt s 0))))
+ (if (member s |$charEscapeList|)
+ (strconc |$charBack| c)
+ s))
+ (t
+ (setq k 0)
+ (setq m (maxindex s))
+ (setq insertIndex nil)
+ (loop while (< k m)
+ do
+ (setq char (elt s k))
+ (cond
+ ((char= char |$charBack|) (setq k (+ k 2)))
+ ((member char |$charEscapeList|) (return (setq insertIndex k))))
+ (setq k (1+ k)))
+ (cond
+ (insertIndex
+ (|checkAddBackSlashes|
+ (strconc (substring s 0 insertIndex) |$charBack| (elt s k)
+ (substring s (1+ insertIndex) nil))))
+ (T s))))))
+
+\end{chunk}
+
+\defun{checkAddMacros}{checkAddMacros}
+\calls{checkAddMacros}{lassoc}
+\calls{checkAddMacros}{nreverse}
+\refsdollar{checkAddMacros}{HTmacs}
+\begin{chunk}{defun checkAddMacros}
+(defun |checkAddMacros| (u)
+ (let (x verbatim y acc)
+ (declare (special |$HTmacs|))
+ (loop while u
+ do
+ (setq x (car u))
+ (setq acc
+ (cond
+ ((string= x "\\end{verbatim}")
+ (setq verbatim nil)
+ (cons x acc))
+ (verbatim
+ (cons x acc))
+ ((string= x "\\begin{verbatim}")
+ (setq verbatim t)
+ (cons x acc))
+ ((setq y (lassoc x |$HTmacs|))
+ (append y acc))
+ (t (cons x acc))))
+ (pop u))
+ (nreverse acc)))
+
+\end{chunk}
+
+\defun{checkAddPeriod}{checkAddPeriod}
+\calls{checkAddPeriod}{setelt}
+\calls{checkAddPeriod}{maxindex}
+\begin{chunk}{defun checkAddPeriod}
+(defun |checkAddPeriod| (s)
+ (let (m lastChar)
+ (setq m (maxindex s))
+ (setq lastChar (elt s m))
+ (cond
+ ((or (char= lastChar #\!) (char= lastChar #\?) (char= lastChar #\.)) s)
+ ((or (char= lastChar #\,) (char= lastChar #\;))
+ (setelt s m #\.)
+ s)
+ (t s))))
+
+\end{chunk}
+
+\defun{checkAddSpaceSegments}{checkAddSpaceSegments}
+\calls{checkAddSpaceSegments}{checkAddSpaceSegments}
+\calls{checkAddSpaceSegments}{maxindex}
+\calls{checkAddSpaceSegments}{charPosition}
+\calls{checkAddSpaceSegments}{strconc}
+\refsdollar{checkAddSpaceSegments}{charBlank}
+\begin{chunk}{defun checkAddSpaceSegments}
+(defun |checkAddSpaceSegments| (u k)
+ (let (m i j n)
+ (declare (special |$charBlank|))
+ (setq m (maxindex u))
+ (setq i (|charPosition| |$charBlank| u k))
+ (cond
+ ((> i m) u)
+ (t
+ (setq j i)
+ (loop while (and (incf j) (char= (elt u j) #\space)))
+ (setq n (- j i)) ; number of blanks
+ (if (> n 1)
+ (strconc (substring u 0 i) "\\space{" (stringimage n) "}"
+ (|checkAddSpaceSegments| (substring u (+ i n) nil) 0))
+ (|checkAddSpaceSegments| u j))))))
+
+\end{chunk}
+
+\defun{checkAddSpaces}{checkAddSpaces}
+\refsdollar{checkAddSpaces}{charBlank}
+\refsdollar{checkAddSpaces}{charFauxNewline}
+\begin{chunk}{defun checkAddSpaces}
+(defun |checkAddSpaces| (u)
+ (let (u2 space i)
+ (declare (special |$charBlank| |$charFauxNewline|))
+ (cond
+ ((null u) nil)
+ ((null (cdr u)) u)
+ (t
+ (setq space |$charBlank|)
+ (setq i 0)
+ (loop for f in u
+ do
+ (incf i)
+ (when (string= f "\\begin{verbatim}")
+ (setq space |$charFauxNewline|)
+ (unless u2 (setq u2 (list space))))
+ (if (> i 1)
+ (setq u2 (append u2 (list space f)))
+ (setq u2 (append u2 (list f))))
+ (when (string= f "\\end{verbatim}")
+ (setq u2 (append u2 (list space)))
+ (setq space |$charBlank|)))
+ u2))))
+
+\end{chunk}
+
+\defun{checkAlphabetic}{checkAlphabetic}
+\refsdollar{checkAlphabetic}{charIdentifierEndings}
+\begin{chunk}{defun checkAlphabetic}
+(defun |checkAlphabetic| (c)
+ (declare (special |$charIdentifierEndings|))
+ (or (alpha-char-p c) (digitp c) (member c |$charIdentifierEndings|)))
+
+\end{chunk}
+
\defun{checkIeEgfun}{checkIeEgfun}
\calls{checkIeEgfun}{maxindex}
\calls{checkIeEgfun}{checkIeEgFun}
@@ -20560,35 +21282,116 @@ This returns a line beginning with right brace
\end{chunk}
-\defun{checkSplitBrace}{checkSplitBrace}
-\calls{checkSplitBrace}{charp}
-\calls{checkSplitBrace}{length}
-\calls{checkSplitBrace}{checkSplitBackslash}
-\calls{checkSplitBrace}{checkSplitBrace}
-\calls{checkSplitBrace}{checkSplitOn}
-\calls{checkSplitBrace}{checkSplitPunctuation}
-\begin{chunk}{defun checkSplitBrace}
-(defun |checkSplitBrace| (x)
- (let (m u)
+\defun{checkIsValidType}{checkIsValidType}
+This function returns ok if correct,
+form is wrong number of arguments, nil if unknown
+\calls{checkIsValidType}{nequal}
+\calls{checkIsValidType}{length}
+\calls{checkIsValidType}{checkIsValidType}
+\calls{checkIsValidType}{constructor?}
+\calls{checkIsValidType}{abbreviation?}
+\calls{checkIsValidType}{getdatabase}
+\begin{chunk}{defun checkIsValidType}
+(defun |checkIsValidType| (form)
+ (labels (
+ (fn (form coSig)
+ (cond
+ ((nequal (|#| form) (|#| coSig)) form)
+ ((let (result)
+ (loop for x in (rest form)
+ for flag in (rest coSig)
+ do (when flag (setq result (or result (null (|checkIsValidType| x))))))
+ result)
+ nil)
+ (t '|ok|))))
+ (let (op args conname)
(cond
- ((charp x) (list x))
- ((eql (|#| x) 1) (list (elt x 0)))
- ((and (setq u (|checkSplitBackslash| x)) (cdr u))
- (let (result)
- (loop for y in u do (append result (|checkSplitBrace| y)))
- result))
- (t
- (setq m (maxindex x))
- (cond
- ((and (setq u (|checkSplitOn| x)) (cdr u))
- (let (result)
- (loop for y in u do (append result (|checkSplitBrace| y)))
- result))
- ((and (setq u (|checkSplitPunctuation| x)) (cdr u))
- (let (result)
- (loop for y in u do (append result (|checkSplitBrace| y)))
- result))
- (t (list x)))))))
+ ((atom form) '|ok|)
+ (t
+ (setq op (car form))
+ (setq args (cdr form))
+ (setq conname
+ (if (|constructor?| op)
+ op
+ (|abbreviation?| op)))
+ (when conname (fn form (getdatabase conname 'cosig))))))))
+
+\end{chunk}
+
+\defun{checkLookForLeftBrace}{checkLookForLeftBrace}
+\calls{checkLookForLeftBrace}{nequal}
+\refsdollar{checkLookForLeftBrace}{charBlank}
+\refsdollar{checkLookForLeftBrace}{charLbrace}
+\begin{chunk}{defun checkLookForLeftBrace}
+(defun |checkLookForLeftBrace| (u)
+ (declare (special |$charBlank| |$charLbrace|))
+ (loop while u
+ do
+ (cond
+ ((equal (car u) |$charLbrace|) (return (car u)))
+ ((nequal (car u) |$charBlank|) (return nil))
+ (t (pop u))))
+ u)
+
+\end{chunk}
+
+\defun{checkLookForRightBrace}{checkLookForRightBrace}
+This returns a line beginning with right brace
+\refsdollar{checkLookForRightBrace}{charLbrace}
+\refsdollar{checkLookForRightBrace}{charRbrace}
+\begin{chunk}{defun checkLookForRightBrace}
+(defun |checkLookForRightBrace| (u)
+ (let (found count)
+ (declare (special |$charLbrace| |$charRbrace|))
+ (setq count 0)
+ (loop while u
+ do
+ (cond
+ ((equal (car u) |$charRbrace|)
+ (if (eql count 0)
+ (return (setq found u))
+ (setq count (1- count))))
+ ((equal (car u) |$charLbrace|)
+ (setq count (1+ count))))
+ (pop u))
+ found))
+
+\end{chunk}
+
+\defun{checkNumOfArgs}{checkNumOfArgs}
+A nil return implies that the argument list length does not match
+\calls{checkNumOfArgs}{opOf}
+\calls{checkNumOfArgs}{constructor?}
+\calls{checkNumOfArgs}{abbreviation?}
+\calls{checkNumOfArgs}{getdatabase}
+\begin{chunk}{defun checkNumOfArgs}
+(defun |checkNumOfArgs| (conform)
+ (let (conname)
+ (setq conname (|opOf| conform))
+ (when (or (|constructor?| conname) (setq conname (|abbreviation?| conname)))
+ (|#| (getdatabase conname 'constructorargs)))))
+
+\end{chunk}
+
+\defun{checkSayBracket}{checkSayBracket}
+\begin{chunk}{defun checkSayBracket}
+(defun |checkSayBracket| (x)
+ (cond
+ ((or (char= x #\() (char= x #\))) "pren")
+ ((or (char= x #\{) (char= x #\})) "brace")
+ (t "bracket")))
+
+\end{chunk}
+
+\defun{checkSkipBlanks}{checkSkipBlanks}
+\refsdollar{checkSkipBlanks}{charBlank}
+\begin{chunk}{defun checkSkipBlanks}
+(defun |checkSkipBlanks| (u i m)
+ (declare (special |$charBlank|))
+ (do ()
+ ((null (and (> m i) (equal (elt u i) |$charBlank|))) nil)
+ (setq i (1+ i)))
+ (unless (= i m) i))
\end{chunk}
@@ -20631,6 +21434,45 @@ This returns a line beginning with right brace
\end{chunk}
+\defun{checkSplitOn}{checkSplitOn}
+\calls{checkSplitOn}{checkSplitOn}
+\calls{checkSplitOn}{charp}
+\calls{checkSplitOn}{maxindex}
+\calls{checkSplitOn}{charPosition}
+\refsdollar{checkSplitOn}{charBack}
+\refsdollar{checkSplitOn}{charSplitList}
+\begin{chunk}{defun checkSplitOn}
+(defun |checkSplitOn| (x)
+ (let (m char k z)
+ (declare (special |$charBack| |$charSplitList|))
+ (cond
+ ((charp x) (list x))
+ (t
+ (setq z |$charSplitList|)
+ (setq m (maxindex x))
+ (loop while z
+ do
+ (setq char (car z))
+ (cond
+ ((and (eql m 0) (equal (elt x 0) char))
+ (return (setq k -1)))
+ (t
+ (setq k (|charPosition| char x 0))
+ (cond
+ ((and (> k 0) (equal (elt x (1- k)) |$charBack|)) (list x))
+ ((<= k m) (return k)))))
+ (pop z))
+ (cond
+ ((null z) (list x))
+ ((eql k -1) (list char))
+ ((eql k 0) (list char (substring x 1 nil)))
+ ((eql k (maxindex x)) (list (substring x 0 k) char))
+ (t
+ (cons (substring x 0 k)
+ (cons char (|checkSplitOn| (substring x (1+ k) nil))))))))))
+
+\end{chunk}
+
\defun{checkSplitPunctuation}{checkSplitPunctuation}
\calls{checkSplitPunctuation}{charp}
\calls{checkSplitPunctuation}{maxindex}
@@ -20697,88 +21539,59 @@ This returns a line beginning with right brace
\end{chunk}
-\defun{checkSplitOn}{checkSplitOn}
-\calls{checkSplitOn}{checkSplitOn}
-\calls{checkSplitOn}{charp}
-\calls{checkSplitOn}{maxindex}
-\calls{checkSplitOn}{charPosition}
-\refsdollar{checkSplitOn}{charBack}
-\refsdollar{checkSplitOn}{charSplitList}
-\begin{chunk}{defun checkSplitOn}
-(defun |checkSplitOn| (x)
- (let (m char k z)
- (declare (special |$charBack| |$charSplitList|))
- (cond
- ((charp x) (list x))
- (t
- (setq z |$charSplitList|)
- (setq m (maxindex x))
- (loop while z
- do
- (setq char (car z))
- (cond
- ((and (eql m 0) (equal (elt x 0) char))
- (return (setq k -1)))
- (t
- (setq k (|charPosition| char x 0))
- (cond
- ((and (> k 0) (equal (elt x (1- k)) |$charBack|)) (list x))
- ((<= k m) (return k)))))
- (pop z))
- (cond
- ((null z) (list x))
- ((eql k -1) (list char))
- ((eql k 0) (list char (substring x 1 nil)))
- ((eql k (maxindex x)) (list (substring x 0 k) char))
- (t
- (cons (substring x 0 k)
- (cons char (|checkSplitOn| (substring x (1+ k) nil))))))))))
-
-\end{chunk}
-
-\defun{checkNumOfArgs}{checkNumOfArgs}
-A nil return implies that the argument list length does not match
-\calls{checkNumOfArgs}{opOf}
-\calls{checkNumOfArgs}{constructor?}
-\calls{checkNumOfArgs}{abbreviation?}
-\calls{checkNumOfArgs}{getdatabase}
-\begin{chunk}{defun checkNumOfArgs}
-(defun |checkNumOfArgs| (conform)
- (let (conname)
- (setq conname (|opOf| conform))
- (when (or (|constructor?| conname) (setq conname (|abbreviation?| conname)))
- (|#| (getdatabase conname 'constructorargs)))))
+\defun{firstNonBlankPosition}{firstNonBlankPosition}
+\calls{firstNonBlankPosition}{nequal}
+\calls{firstNonBlankPosition}{maxindex}
+\begin{chunk}{defun firstNonBlankPosition}
+(defun |firstNonBlankPosition| (&rest therest)
+ (let ((x (car therest)) (options (cdr therest)) start k)
+ (declare (special |$charBlank|))
+ (setq start (or (ifcar options) 0))
+ (setq k -1)
+ (loop for i from start to (maxindex x)
+ do (when (nequal (elt x i) |$charBlank|) (return (setq k i))))
+ k))
\end{chunk}
-\defun{checkRemoveComments}{checkRemoveComments}
-\calls{checkRemoveComments}{checkTrimCommented}
-\begin{chunk}{defun checkRemoveComments}
-(defun |checkRemoveComments| (lines)
- (let (line acc)
- (loop while lines
+\defun{getMatchingRightPren}{getMatchingRightPren}
+\calls{getMatchingRightPren}{maxindex}
+\begin{chunk}{defun getMatchingRightPren}
+(defun |getMatchingRightPren| (u j open close)
+ (let (m c found count)
+ (setq count 0)
+ (setq m (maxindex u))
+ (loop for i from j to m
do
- (setq line (|checkTrimCommented| (car lines)))
- (when (>= (|firstNonBlankPosition| line) 0) (push line acc))
- (pop lines))
- (nreverse acc)))
+ (setq c (elt u i))
+ (cond
+ ((equal c close)
+ (if (eql count 0)
+ (return (setq found i))
+ (setq count (1- count))))
+ ((equal c open)
+ (setq count (1+ count)))))
+ found))
\end{chunk}
-\defun{checkTrimCommented}{checkTrimCommented}
-\calls{checkTrimCommented}{length}
-\calls{checkTrimCommented}{htcharPosition}
-\calls{checkTrimCommented}{nequal}
-\begin{chunk}{defun checkTrimCommented}
-(defun |checkTrimCommented| (line)
- (let (n k)
- (setq n (|#| line))
- (setq k (|htcharPosition| (|char| '%) line 0))
+\defun{hasNoVowels}{hasNoVowels}
+\calls{hasNoVowels}{maxindex}
+\begin{chunk}{defun hasNoVowels}
+(defun |hasNoVowels| (x)
+ (labels (
+ (isVowel (c)
+ (or (eq c #\a) (eq c #\e) (eq c #\i) (eq c #\o) (eq c #\u)
+ (eq c #\A) (eq c #\E) (eq c #\I) (eq c #\O) (eq c #\U))))
+ (let (max)
+ (setq max (maxindex x))
(cond
- ((eql k 0) "")
- ((or (>= k (1- n)) (nequal (elt line (1+ k)) #\%)) line)
- ((> (|#| line) k) (substring line 0 k))
- (t line))))
+ ((char= (elt x max) #\y) nil)
+ (t
+ (let ((result t))
+ (loop for i from 0 to max
+ do (setq result (and result (null (isVowel (elt x i))))))
+ result))))))
\end{chunk}
@@ -20804,104 +21617,6 @@ A nil return implies that the argument list length does not match
\end{chunk}
-\defun{checkAddMacros}{checkAddMacros}
-\calls{checkAddMacros}{lassoc}
-\calls{checkAddMacros}{nreverse}
-\refsdollar{checkAddMacros}{HTmacs}
-\begin{chunk}{defun checkAddMacros}
-(defun |checkAddMacros| (u)
- (let (x verbatim y acc)
- (declare (special |$HTmacs|))
- (loop while u
- do
- (setq x (car u))
- (setq acc
- (cond
- ((string= x "\\end{verbatim}")
- (setq verbatim nil)
- (cons x acc))
- (verbatim
- (cons x acc))
- ((string= x "\\begin{verbatim}")
- (setq verbatim t)
- (cons x acc))
- ((setq y (lassoc x |$HTmacs|))
- (append y acc))
- (t (cons x acc))))
- (pop u))
- (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkIndentedLines}{checkIndentedLines}
-\calls{checkIndentedLines}{firstNonBlankPosition}
-\calls{checkIndentedLines}{strconc}
-\calls{checkIndentedLines}{checkAddSpaceSegments}
-\refsdollar{checkIndentedLines}{charFauxNewline}
-\begin{chunk}{defun checkIndentedLines}
-(defun |checkIndentedLines| (u margin)
- (let (k s verbatim u2)
- (declare (special |$charFauxNewline|))
- (loop for x in u
- do
- (setq k (|firstNonBlankPosition| x))
- (cond
- ((eql k -1)
- (if verbatim
- (setq u2 (append u2 (list |$charFauxNewline|)))
- (setq u2 (append u2 (list "\\blankline ")))))
- (t
- (setq s (substring x k nil))
- (cond
- ((string= s "\\begin{verbatim}")
- (setq verbatim t)
- (setq u2 (append u2 (list s))))
- ((string= s "\\end{verbatim}")
- (setq verbatim nil)
- (setq u2 (append u2 (list s))))
- (verbatim
- (setq u2 (append u2 (list (substring x margin nil)))))
- ((eql margin k)
- (setq u2 (append u2 (list s))))
- (t
- (setq u2
- (append u2
- (list (strconc "\\indented{" (stringimage (- k margin))
- "}{" (|checkAddSpaceSegments| s 0) "}")))))))))
- u2))
-
-\end{chunk}
-
-\defun{newString2Words}{newString2Words}
-\calls{newString2Words}{newWordFrom}
-\calls{newString2Words}{nreverse0}
-\begin{chunk}{defun newString2Words}
-(defun |newString2Words| (z)
- (let (m tmp1 w i result)
- (cond
- ((null (stringp z)) (list z))
- (t
- (setq m (maxindex z))
- (cond
- ((eql m -1) nil)
- (t
- (setq i 0)
- (do () ; [w while newWordFrom(l,i,m) is [w,i]]
- ((null (progn
- (setq tmp1 (|newWordFrom| z i m))
- (and (consp tmp1)
- (progn
- (setq w (qcar tmp1))
- (and (consp (qcdr tmp1))
- (eq (qcddr tmp1) nil)
- (progn
- (setq i (qcadr tmp1))
- t))))))
- (nreverse0 result))
- (setq result (cons (qcar tmp1) result)))))))))
-
-\end{chunk}
-
\defun{newWordFrom}{newWordFrom}
\refsdollar{newWordFrom}{stringFauxNewline}
\refsdollar{newWordFrom}{charBlank}
@@ -20934,382 +21649,52 @@ A nil return implies that the argument list length does not match
\end{chunk}
-\defun{checkGetArgs}{checkGetArgs}
-\calls{checkGetArgs}{maxindex}
-\calls{checkGetArgs}{firstNonBlankPosition}
-\calls{checkGetArgs}{checkGetArgs}
-\calls{checkGetArgs}{stringPrefix?}
-\calls{checkGetArgs}{getMatchingRightPren}
-\calls{checkGetArgs}{charPosition}
-\calls{checkGetArgs}{nequal}
-\calls{checkGetArgs}{trimString}
-\refsdollar{checkGetArgs}{charComma}
-\begin{chunk}{defun checkGetArgs}
-(defun |checkGetArgs| (u)
- (let (m k acc i)
- (declare (special |$charComma|))
- (cond
- ((null (stringp u)) nil)
- (t
- (setq m (maxindex u))
- (setq k (|firstNonBlankPosition| u))
- (cond
- ((> k 0)
- (|checkGetArgs| (substring u k nil)))
- ((|stringPrefix?| "\\spad{" u)
- (setq k (or (|getMatchingRightPren| u 6 #\{ #\}) m))
- (|checkGetArgs| (substring u 6 (- k 6))))
- ((> (setq i (|charPosition| #\( u 0)) m)
- nil)
- ((nequal (elt u m) #\))
- nil)
- (t
- (do ()
- ((null (> m (setq k (|charPosition| |$charComma| u (1+ i))))) nil)
- (setq acc
- (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
- (setq i k))
- (nreverse (cons (substring u (1+ i) (1- (- m i))) acc))))))))
-
-\end{chunk}
-
-\defun{checkAddSpaceSegments}{checkAddSpaceSegments}
-\calls{checkAddSpaceSegments}{checkAddSpaceSegments}
-\calls{checkAddSpaceSegments}{maxindex}
-\calls{checkAddSpaceSegments}{charPosition}
-\calls{checkAddSpaceSegments}{strconc}
-\refsdollar{checkAddSpaceSegments}{charBlank}
-\begin{chunk}{defun checkAddSpaceSegments}
-(defun |checkAddSpaceSegments| (u k)
- (let (m i j n)
- (declare (special |$charBlank|))
- (setq m (maxindex u))
- (setq i (|charPosition| |$charBlank| u k))
- (cond
- ((> i m) u)
- (t
- (setq j i)
- (loop while (and (incf j) (char= (elt u j) #\space)))
- (setq n (- j i)) ; number of blanks
- (if (> n 1)
- (strconc (substring u 0 i) "\\space{" (stringimage n) "}"
- (|checkAddSpaceSegments| (substring u (+ i n) nil) 0))
- (|checkAddSpaceSegments| u j))))))
-
-\end{chunk}
-
-\defun{checkTrim}{checkTrim}
-\calls{checkTrim}{charPosition}
-\calls{checkTrim}{nequal}
-\calls{checkTrim}{systemError}
-\calls{checkTrim}{checkDocError}
-\refsdollar{checkTrim}{charBlank}
-\refsdollar{checkTrim}{x}
-\refsdollar{checkTrim}{charPlus}
-\begin{chunk}{defun checkTrim}
-(defun |checkTrim| (|$x| lines)
- (declare (special |$x|))
- (labels (
- (trim (s)
- (let (k)
- (declare (special |$charBlank|))
- (setq k (wherePP s))
- (substring s (+ k 2) nil)))
- (wherePP (u)
- (let (k)
- (declare (special |$charPlus|))
- (setq k (|charPosition| |$charPlus| u 0))
- (if (or (eql k (|#| u))
- (nequal (|charPosition| |$charPlus| u (1+ k)) (1+ k)))
- (|systemError| " Improper comment found")
- k))))
- (let (j s)
- (setq s (list (wherePP (car lines))))
- (loop for x in (rest lines)
- do
- (setq j (wherePP x))
- (unless (member j s)
- (|checkDocError| (list |$x| " has varying indentation levels"))
- (setq s (cons j s))))
- (loop for y in lines
- collect (trim y)))))
-
-\end{chunk}
-
-\defun{checkExtract}{checkExtract}
-\calls{checkExtract}{firstNonBlankPosition}
-\calls{checkExtract}{substring?}
-\calls{checkExtract}{charPosition}
-\calls{checkExtract}{length}
-\begin{chunk}{defun checkExtract}
-(defun |checkExtract| (header lines)
- (let (line u margin firstLines m k j i acc)
- (loop while lines
- do
- (setq line (car lines))
- (setq k (|firstNonBlankPosition| line)) ; gives margin of description
- (if (|substring?| header line k)
- (return nil)
- (setq lines (cdr lines))))
- (cond
- ((null lines) nil)
- (t
- (setq u (car lines))
- (setq j (|charPosition| #\: u k))
- (setq margin k)
- (setq firstLines
- (if (nequal (setq k (|firstNonBlankPosition| u (1+ j))) -1)
- (cons (substring u (1+ j) nil) (cdr lines))
- (cdr lines)))
- ; now look for another header; if found skip all rest of these lines
- (setq acc nil)
- (loop for line in firstLines
- do
- (setq m (|#| line))
- (cond
- ((eql (setq k (|firstNonBlankPosition| line)) -1) '|skip|)
- ((> k margin) '|skip|)
- ((null (upper-case-p (elt line k))) '|skip|)
- ((equal (setq j (|charPosition| #\: line k)) m) '|skip|)
- ((> j (setq i (|charPosition| #\space line (1+ k)))) '|skip|)
- (t (return nil)))
- (setq acc (cons line acc)))
- (nreverse acc)))))
-
-\end{chunk}
-
-\defun{checkFixCommonProblem}{checkFixCommonProblem}
-\calls{checkFixCommonProblem}{member}
-\calls{checkFixCommonProblem}{ifcar}
-\calls{checkFixCommonProblem}{ifcdr}
-\calls{checkFixCommonProblem}{nequal}
-\calls{checkFixCommonProblem}{checkDocError}
-\refsdollar{checkFixCommonProblem}{charLbrace}
-\refsdollar{checkFixCommonProblem}{HTspadmacros}
-\begin{chunk}{defun checkFixCommonProblem}
-(defun |checkFixCommonProblem| (u)
- (let (x next acc)
- (declare (special |$charLbrace| |$HTspadmacros|))
- (loop while u
- do
- (setq x (car u))
- (cond
- ((and (equal x |$charLbrace|)
- (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
- (nequal (ifcar (ifcdr (cdr u))) |$charLbrace|))
- (|checkDocError| (list "Reversing " next " and left brace"))
- (setq acc (cons |$charLbrace| (cons next acc)))
- (setq u (cddr u)))
- (t
- (setq acc (cons x acc))
- (setq u (cdr u)))))
- (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkDecorate}{checkDecorate}
-\calls{checkDecorate}{checkDocError}
-\calls{checkDecorate}{member}
-\calls{checkDecorate}{checkAddBackSlashes}
-\calls{checkDecorate}{hasNoVowels}
-\refsdollar{checkDecorate}{checkingXmptex?}
-\refsdollar{checkDecorate}{charExclusions}
-\refsdollar{checkDecorate}{argl}
-\refsdollar{checkDecorate}{charBack}
-\refsdollar{checkDecorate}{charRbrace}
-\refsdollar{checkDecorate}{charLbrace}
-\begin{chunk}{defun checkDecorate}
-(defun |checkDecorate| (u)
- (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
- (declare (special |$charLbrace| |$charRbrace| |$charBack| |$argl|
- |$charExclusions| |$checkingXmptex?|))
- (setq count 0)
- (loop while u
- do
- (setq x (car u))
- (cond
- ((null verbatim)
- (cond
- ((string= x "\\em")
- (cond
- ((> count 0)
- (setq mathSymbolsOk (1- count))
- (setq spadflag (1- count)))
- (t
- (|checkDocError| (list "\\em must be enclosed in braces"))))))
- (when (|member| x '("\\spadpaste" "\\spad" "\\spadop"))
- (setq mathSymbolsOk count))
- (cond
- ((|member| x '("\\s" "\\spadtype" "\\spadsys" "\\example" "\\andexample"
- "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
- "\\spadcommand" "\\footnote"))
- (setq spadflag count))
- ((equal x |$charLbrace|)
- (setq count (1+ count)))
- ((equal x |$charRbrace|)
- (setq count (1- count))
- (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
- (when (eql spadflag count) (setq spadflag nil)))
- ((and (null mathSymbolsOk)
- (|member| x '("+" "*" "=" "==" "->")))
- (when |$checkingXmptex?|
- (|checkDocError|
- (list '|Symbol | x " appearing outside \\spad{}")))))))
- (setq acc
- (cond
- ((string= x "\\end{verbatim}")
- (setq verbatim nil)
- (cons x acc))
- (verbatim (cons x acc))
- ((string= x "\\begin{verbatim}")
- (setq verbatim t)
- (cons x acc))
- ((and (string= x "\\begin")
- (equal (car (setq v (ifcdr u))) |$charLbrace|)
- (string= (car (setq v (ifcdr v))) "detail")
- (equal (car (setq v (ifcdr v))) |$charRbrace|))
- (setq u v)
- (cons "\\blankline " acc))
- ((and (string= x "\\end")
- (equal (car (setq v (ifcdr u))) |$charLbrace|)
- (string= (car (setq v (ifcdr v))) "detail")
- (equal (car (setq v (ifcdr v))) |$charRbrace|))
- (setq u v)
- acc)
- ((or (char= x #\$) (string= x "$"))
- (cons "\\$" acc))
- ((or (char= x #\%) (string= x "%"))
- (cons "\\%" acc))
- ((or (char= x #\,) (string= x ","))
- (cons ",{}" acc))
- ((string= x "\\spad")
- (cons "\\spad" acc))
- ((and (stringp x) (digitp (elt x 0)))
- (cons x acc))
- ((and (null spadflag)
- (or (and (charp x)
- (alpha-char-p x)
- (null (member x |$charExclusions|)))
- (|member| x |$argl|)))
- (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
- ((and (null spadflag)
- (or (and (stringp x)
- (null (equal (elt x 0) |$charBack|))
- (digitp (elt x (maxindex x))))
- (|member| x '("true" "false"))))
- (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
- (t
- (setq xcount (|#| x))
- (cond
- ((and (eql xcount 3)
- (char= (elt x 1) #\t)
- (char= (elt x 2) #\h))
- (cons "th" (cons |$charRbrace|
- (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
- ((and (eql xcount 4)
- (char= (elt x 1) #\-)
- (char= (elt x 2) #\t)
- (char= (elt x 3) #\h))
- (cons "-th" (cons |$charRbrace|
- (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
- ((or (and (eql xcount 2)
- (char= (elt x 1) #\i))
- (and (null spadflag)
- (> xcount 0)
- (> 4 xcount)
- (null (|member| x '("th" "rd" "st")))
- (|hasNoVowels| x)))
- (cons |$charRbrace|
- (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
- (t
- (cons (|checkAddBackSlashes| x) acc))))))
- (setq u (cdr u)))
- (nreverse acc)))
-
-\end{chunk}
-
-\defun{hasNoVowels}{hasNoVowels}
-\calls{hasNoVowels}{maxindex}
-\begin{chunk}{defun hasNoVowels}
-(defun |hasNoVowels| (x)
- (labels (
- (isVowel (c)
- (or (eq c #\a) (eq c #\e) (eq c #\i) (eq c #\o) (eq c #\u)
- (eq c #\A) (eq c #\E) (eq c #\I) (eq c #\O) (eq c #\U))))
- (let (max)
- (setq max (maxindex x))
- (cond
- ((char= (elt x max) #\y) nil)
- (t
- (let ((result t))
- (loop for i from 0 to max
- do (setq result (and result (null (isVowel (elt x i))))))
- result))))))
-
-\end{chunk}
-
-\defun{checkAddBackSlashes}{checkAddBackSlashes}
-\calls{checkAddBackSlashes}{strconc}
-\calls{checkAddBackSlashes}{maxindex}
-\calls{checkAddBackSlashes}{checkAddBackSlashes}
-\refsdollar{checkAddBackSlashes}{charBack}
-\refsdollar{checkAddBackSlashes}{charEscapeList}
-\begin{chunk}{defun checkAddBackSlashes}
-(defun |checkAddBackSlashes| (s)
- (let (c m char insertIndex k)
- (declare (special |$charBack| |$charEscapeList|))
+\defun{removeBackslashes}{removeBackslashes}
+\calls{removeBackslashes}{charPosition}
+\calls{removeBackslashes}{removeBackslashes}
+\calls{removeBackslashes}{strconc}
+\calls{removeBackslashes}{length}
+\refsdollar{removeBackslashes}{charBack}
+\begin{chunk}{defun removeBackslashes}
+(defun |removeBackslashes| (s)
+ (let (k)
+ (declare (special |$charBack|))
(cond
- ((or (and (charp s) (setq c s))
- (and (eql (|#| s) 1) (setq c (elt s 0))))
- (if (member s |$charEscapeList|)
- (strconc |$charBack| c)
- s))
- (t
- (setq k 0)
- (setq m (maxindex s))
- (setq insertIndex nil)
- (loop while (< k m)
- do
- (setq char (elt s k))
- (cond
- ((char= char |$charBack|) (setq k (+ k 2)))
- ((member char |$charEscapeList|) (return (setq insertIndex k))))
- (setq k (1+ k)))
- (cond
- (insertIndex
- (|checkAddBackSlashes|
- (strconc (substring s 0 insertIndex) |$charBack| (elt s k)
- (substring s (1+ insertIndex) nil))))
- (T s))))))
+ ((string= s "") "")
+ ((> (|#| s) (setq k (|charPosition| |$charBack| s 0)))
+ (if (eql k 0)
+ (|removeBackslashes| (substring s 1 nil))
+ (strconc (substring s 0 k)
+ (|removeBackslashes| (substring s (1+ k) nil)))))
+ (t s))))
\end{chunk}
-\defun{checkAddSpaces}{checkAddSpaces}
-\refsdollar{checkAddSpaces}{charBlank}
-\refsdollar{checkAddSpaces}{charFauxNewline}
-\begin{chunk}{defun checkAddSpaces}
-(defun |checkAddSpaces| (u)
- (let (u2 space i)
- (declare (special |$charBlank| |$charFauxNewline|))
- (cond
- ((null u) nil)
- ((null (cdr u)) u)
- (t
- (setq space |$charBlank|)
- (setq i 0)
- (loop for f in u
- do
- (incf i)
- (when (string= f "\\begin{verbatim}")
- (setq space |$charFauxNewline|)
- (unless u2 (setq u2 (list space))))
- (if (> i 1)
- (setq u2 (append u2 (list space f)))
- (setq u2 (append u2 (list f))))
- (when (string= f "\\end{verbatim}")
- (setq u2 (append u2 (list space)))
- (setq space |$charBlank|)))
- u2))))
+\defun{whoOwns}{whoOwns}
+This function always returns nil in the current system.
+Since it has no side effects we define it to return nil.
+\calls{whoOwns}{getdatabase}
+\calls{whoOwns}{strconc}
+\calls{whoOwns}{awk}
+\calls{whoOwns}{shut}
+\refsdollar{whoOwns}{exposeFlag}
+\begin{chunk}{defun whoOwns}
+(defun |whoOwns| (con)
+ (declare (ignore con))
+ nil)
+; (let (filename quoteChar instream value)
+; (declare (special |$exposeFlag|))
+; (cond
+; ((null |$exposeFlag|) nil)
+; (t
+; (setq filename (getdatabase con 'sourcefile))
+; (setq quoteChar #\")
+; (obey (strconc "awk '$2 == " quoteChar filename quoteChar
+; " {print $1}' whofiles > /tmp/temp"))
+; (setq instream (make-instream "/tmp/temp"))
+; (setq value (unless (eofp instream) (readline instream)))
+; (shut instream)
+; value))))
\end{chunk}
@@ -25225,8 +25610,10 @@ The current input line.
\getchunk{defun char-eq}
\getchunk{defun char-ne}
\getchunk{defun checkAddBackSlashes}
+\getchunk{defun checkAddIndented}
\getchunk{defun checkAddMacros}
\getchunk{defun checkAddPeriod}
+\getchunk{defun checkAddSpaces}
\getchunk{defun checkAddSpaceSegments}
\getchunk{defun checkAlphabetic}
\getchunk{defun checkAndDeclare}
@@ -25242,12 +25629,15 @@ The current input line.
\getchunk{defun checkExtract}
\getchunk{defun checkFixCommonProblem}
\getchunk{defun checkGetArgs}
+\getchunk{defun checkGetLispFunctionName}
\getchunk{defun checkGetMargin}
\getchunk{defun checkGetParse}
+\getchunk{defun checkGetStringBeforeRightBrace}
\getchunk{defun checkHTargs}
\getchunk{defun checkIeEg}
\getchunk{defun checkIeEgfun}
\getchunk{defun checkIndentedLines}
+\getchunk{defun checkIsValidType}
\getchunk{defun checkLookForLeftBrace}
\getchunk{defun checkLookForRightBrace}
\getchunk{defun checkNumOfArgs}
@@ -25260,13 +25650,12 @@ The current input line.
\getchunk{defun checkSkipIdentifierToken}
\getchunk{defun checkSkipOpToken}
\getchunk{defun checkSkipToken}
-\getchunk{defun checkAddIndented}
-\getchunk{defun checkAddSpaces}
\getchunk{defun checkSplitBackslash}
\getchunk{defun checkSplitBrace}
\getchunk{defun checkSplitOn}
\getchunk{defun checkSplitPunctuation}
\getchunk{defun checkSplit2Words}
+\getchunk{defun checkTexht}
\getchunk{defun checkTransformFirsts}
\getchunk{defun checkTrim}
\getchunk{defun checkTrimCommented}
diff --git a/books/ps/v9CommentRecording.eps b/books/ps/v9CommentRecording.eps
new file mode 100644
index 0000000..a8518ad
--- /dev/null
+++ b/books/ps/v9CommentRecording.eps
@@ -0,0 +1,516 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: pic
+%%Pages: 1
+%%BoundingBox: 36 36 555 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 555 368
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 519 332 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% postDef
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 142 180 moveto
+74 180 lineto
+74 144 lineto
+142 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 142 180 moveto
+74 180 lineto
+74 144 lineto
+142 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+81.5 157.9 moveto 53 (postDef) alignedtext
+grestore
+% recordHeaderDocumentation
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 216 108 moveto
+0 108 lineto
+0 72 lineto
+216 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 216 108 moveto
+0 108 lineto
+0 72 lineto
+216 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 85.9 moveto 200 (recordHeaderDocumentation) alignedtext
+grestore
+% postDef->recordHeaderDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 108 144 moveto
+108 136 108 127 108 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 111.5 118 moveto
+108 108 lineto
+104.5 118 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 111.5 118 moveto
+108 108 lineto
+104.5 118 lineto
+closepath stroke
+grestore
+% PARSE-Category
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 334 324 moveto
+204 324 lineto
+204 288 lineto
+334 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 334 324 moveto
+204 324 lineto
+204 288 lineto
+334 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+212 301.9 moveto 114 (PARSE-Category) alignedtext
+grestore
+% recordAttributeDocumentation
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 259 252 moveto
+31 252 lineto
+31 216 lineto
+259 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 259 252 moveto
+31 252 lineto
+31 216 lineto
+259 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+38.5 229.9 moveto 213 (recordAttributeDocumentation) alignedtext
+grestore
+% PARSE-Category->recordAttributeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 238 288 moveto
+222 279 202 267 185 257 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 186.44 253.8 moveto
+176 252 lineto
+183.04 259.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 186.44 253.8 moveto
+176 252 lineto
+183.04 259.92 lineto
+closepath stroke
+grestore
+% recordSignatureDocumentation
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 511 252 moveto
+277 252 lineto
+277 216 lineto
+511 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 511 252 moveto
+277 252 lineto
+277 216 lineto
+511 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+285 229.9 moveto 218 (recordSignatureDocumentation) alignedtext
+grestore
+% PARSE-Category->recordSignatureDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 301 288 moveto
+317 279 337 267 354 257 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 355.96 259.92 moveto
+363 252 lineto
+352.56 253.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 355.96 259.92 moveto
+363 252 lineto
+352.56 253.8 lineto
+closepath stroke
+grestore
+% recordDocumentation
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 353 180 moveto
+187 180 lineto
+187 144 lineto
+353 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 353 180 moveto
+187 180 lineto
+187 144 lineto
+353 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+195 157.9 moveto 150 (recordDocumentation) alignedtext
+grestore
+% recordAttributeDocumentation->recordDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 177 216 moveto
+193 207 213 195 230 185 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 231.96 187.92 moveto
+239 180 lineto
+228.56 181.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 231.96 187.92 moveto
+239 180 lineto
+228.56 181.8 lineto
+closepath stroke
+grestore
+% recordSignatureDocumentation->recordDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 363 216 moveto
+347 207 327 195 310 185 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 311.44 181.8 moveto
+301 180 lineto
+308.04 187.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 311.44 181.8 moveto
+301 180 lineto
+308.04 187.92 lineto
+closepath stroke
+grestore
+% collectComBlock
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 360 108 moveto
+234 108 lineto
+234 72 lineto
+360 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 360 108 moveto
+234 108 lineto
+234 72 lineto
+360 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+241.5 85.9 moveto 111 (collectComBlock) alignedtext
+grestore
+% recordDocumentation->collectComBlock
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 277 144 moveto
+280 136 283 126 287 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 290.48 118.58 moveto
+290 108 lineto
+283.77 116.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 290.48 118.58 moveto
+290 108 lineto
+283.77 116.57 lineto
+closepath stroke
+grestore
+% recordDocumentation->recordHeaderDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 229 144 moveto
+207 134 180 122 157 112 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 158.56 108.86 moveto
+148 108 lineto
+155.72 115.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 158.56 108.86 moveto
+148 108 lineto
+155.72 115.26 lineto
+closepath stroke
+grestore
+% collectAndDeleteAssoc
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 382 36 moveto
+212 36 lineto
+212 0 lineto
+382 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 382 36 moveto
+212 36 lineto
+212 0 lineto
+382 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+219.5 13.9 moveto 155 (collectAndDeleteAssoc) alignedtext
+grestore
+% collectComBlock->collectAndDeleteAssoc
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 297 72 moveto
+297 64 297 55 297 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 300.5 46 moveto
+297 36 lineto
+293.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 300.5 46 moveto
+297 36 lineto
+293.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/books/ps/v9CommentSyntaxChecking.eps b/books/ps/v9CommentSyntaxChecking.eps
new file mode 100644
index 0000000..9d5c8c7
--- /dev/null
+++ b/books/ps/v9CommentSyntaxChecking.eps
@@ -0,0 +1,3283 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: hierarchy
+%%Pages: 1
+%%BoundingBox: 36 36 3662 800
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 3662 800
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 3626 764 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% compileDocumentation
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 864 756 moveto
+690 756 lineto
+690 720 lineto
+864 720 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 864 756 moveto
+690 756 lineto
+690 720 lineto
+864 720 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+698 733.9 moveto 158 (compileDocumentation) alignedtext
+grestore
+% finalizeDocumentation
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 942 684 moveto
+770 684 lineto
+770 648 lineto
+942 648 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 942 684 moveto
+770 684 lineto
+770 648 lineto
+942 648 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+778 661.9 moveto 156 (finalizeDocumentation) alignedtext
+grestore
+% compileDocumentation->finalizeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 797 720 moveto
+807 711 818 701 828 691 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 830.78 693.22 moveto
+836 684 lineto
+826.17 687.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 830.78 693.22 moveto
+836 684 lineto
+826.17 687.95 lineto
+closepath stroke
+grestore
+% finalizeLisplib
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 990 756 moveto
+882 756 lineto
+882 720 lineto
+990 720 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 990 756 moveto
+882 756 lineto
+882 720 lineto
+990 720 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+890 733.9 moveto 92 (finalizeLisplib) alignedtext
+grestore
+% finalizeLisplib->finalizeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 916 720 moveto
+906 711 894 700 883 691 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 885.55 688.6 moveto
+876 684 lineto
+880.6 693.55 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 885.55 688.6 moveto
+876 684 lineto
+880.6 693.55 lineto
+closepath stroke
+grestore
+% checkAddBackSlashes
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2455 36 moveto
+2289 36 lineto
+2289 0 lineto
+2455 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2455 36 moveto
+2289 36 lineto
+2289 0 lineto
+2455 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2297 13.9 moveto 150 (checkAddBackSlashes) alignedtext
+grestore
+% checkAddMacros
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1869 36 moveto
+1741 36 lineto
+1741 0 lineto
+1869 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1869 36 moveto
+1741 36 lineto
+1741 0 lineto
+1869 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1748.5 13.9 moveto 113 (checkAddMacros) alignedtext
+grestore
+% checkAddPeriod
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3077 36 moveto
+2953 36 lineto
+2953 0 lineto
+3077 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3077 36 moveto
+2953 36 lineto
+2953 0 lineto
+3077 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2961 13.9 moveto 108 (checkAddPeriod) alignedtext
+grestore
+% checkAddSpaceSegments
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3285 36 moveto
+3095 36 lineto
+3095 0 lineto
+3285 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3285 36 moveto
+3095 36 lineto
+3095 0 lineto
+3285 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3103 13.9 moveto 174 (checkAddSpaceSegments) alignedtext
+grestore
+% checkAddSpaces
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3618 36 moveto
+3490 36 lineto
+3490 0 lineto
+3618 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3618 36 moveto
+3490 36 lineto
+3490 0 lineto
+3618 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3497.5 13.9 moveto 113 (checkAddSpaces) alignedtext
+grestore
+% checkAlphabetic
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2599 36 moveto
+2473 36 lineto
+2473 0 lineto
+2599 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2599 36 moveto
+2473 36 lineto
+2473 0 lineto
+2599 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2480.5 13.9 moveto 111 (checkAlphabetic) alignedtext
+grestore
+% checkIeEgfun
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2145 36 moveto
+2037 36 lineto
+2037 0 lineto
+2145 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2145 36 moveto
+2037 36 lineto
+2037 0 lineto
+2145 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2045 13.9 moveto 92 (checkIeEgfun) alignedtext
+grestore
+% checkIsValidType
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 285 36 moveto
+155 36 lineto
+155 0 lineto
+285 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 285 36 moveto
+155 36 lineto
+155 0 lineto
+285 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+162.5 13.9 moveto 115 (checkIsValidType) alignedtext
+grestore
+% checkLookForLeftBrace
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1003 36 moveto
+827 36 lineto
+827 0 lineto
+1003 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1003 36 moveto
+827 36 lineto
+827 0 lineto
+1003 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+835 13.9 moveto 160 (checkLookForLeftBrace) alignedtext
+grestore
+% checkLookForRightBrace
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 641 36 moveto
+455 36 lineto
+455 0 lineto
+641 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 641 36 moveto
+455 36 lineto
+455 0 lineto
+641 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+463 13.9 moveto 170 (checkLookForRightBrace) alignedtext
+grestore
+% checkNumOfArgs
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 437 36 moveto
+303 36 lineto
+303 0 lineto
+437 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 437 36 moveto
+303 36 lineto
+303 0 lineto
+437 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+311 13.9 moveto 118 (checkNumOfArgs) alignedtext
+grestore
+% checkSayBracket
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2019 36 moveto
+1887 36 lineto
+1887 0 lineto
+2019 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2019 36 moveto
+1887 36 lineto
+1887 0 lineto
+2019 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1894.5 13.9 moveto 117 (checkSayBracket) alignedtext
+grestore
+% checkSkipBlanks
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2747 36 moveto
+2617 36 lineto
+2617 0 lineto
+2747 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2747 36 moveto
+2617 36 lineto
+2617 0 lineto
+2747 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2625 13.9 moveto 114 (checkSkipBlanks) alignedtext
+grestore
+% checkSplitBackslash
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1599 36 moveto
+1447 36 lineto
+1447 0 lineto
+1599 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1599 36 moveto
+1447 36 lineto
+1447 0 lineto
+1599 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1454.5 13.9 moveto 137 (checkSplitBackslash) alignedtext
+grestore
+% checkSplitOn
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1723 36 moveto
+1617 36 lineto
+1617 0 lineto
+1723 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1723 36 moveto
+1617 36 lineto
+1617 0 lineto
+1723 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1625 13.9 moveto 90 (checkSplitOn) alignedtext
+grestore
+% checkSplitPunctuation
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1429 36 moveto
+1259 36 lineto
+1259 0 lineto
+1429 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1429 36 moveto
+1259 36 lineto
+1259 0 lineto
+1429 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1267 13.9 moveto 154 (checkSplitPunctuation) alignedtext
+grestore
+% firstNonBlankPosition
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3467 36 moveto
+3303 36 lineto
+3303 0 lineto
+3467 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3467 36 moveto
+3303 36 lineto
+3303 0 lineto
+3467 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3311 13.9 moveto 148 (firstNonBlankPosition) alignedtext
+grestore
+% getMatchingRightPren
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2935 36 moveto
+2765 36 lineto
+2765 0 lineto
+2935 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2935 36 moveto
+2765 36 lineto
+2765 0 lineto
+2935 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2772.5 13.9 moveto 155 (getMatchingRightPren) alignedtext
+grestore
+% hasNoVowels
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2271 36 moveto
+2163 36 lineto
+2163 0 lineto
+2271 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2271 36 moveto
+2163 36 lineto
+2163 0 lineto
+2271 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2171 13.9 moveto 92 (hasNoVowels) alignedtext
+grestore
+% htcharPosition
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 137 36 moveto
+23 36 lineto
+23 0 lineto
+137 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 137 36 moveto
+23 36 lineto
+23 0 lineto
+137 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+30.5 13.9 moveto 99 (htcharPosition) alignedtext
+grestore
+% newWordFrom
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1241 36 moveto
+1125 36 lineto
+1125 0 lineto
+1241 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1241 36 moveto
+1125 36 lineto
+1125 0 lineto
+1241 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1132.5 13.9 moveto 101 (newWordFrom) alignedtext
+grestore
+% removeBackslashes
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 809 36 moveto
+659 36 lineto
+659 0 lineto
+809 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 809 36 moveto
+659 36 lineto
+659 0 lineto
+809 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+667 13.9 moveto 134 (removeBackslashes) alignedtext
+grestore
+% whoOwns
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1107 36 moveto
+1021 36 lineto
+1021 0 lineto
+1107 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1107 36 moveto
+1021 36 lineto
+1021 0 lineto
+1107 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1029 13.9 moveto 70 (whoOwns) alignedtext
+grestore
+% checkAddIndented
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3056 108 moveto
+2914 108 lineto
+2914 72 lineto
+3056 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3056 108 moveto
+2914 108 lineto
+2914 72 lineto
+3056 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2921.5 85.9 moveto 127 (checkAddIndented) alignedtext
+grestore
+% checkAddIndented->checkAddSpaceSegments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3036 72 moveto
+3064 62 3099 50 3129 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3130.43 42.23 moveto
+3139 36 lineto
+3128.42 35.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3130.43 42.23 moveto
+3139 36 lineto
+3128.42 35.52 lineto
+closepath stroke
+grestore
+% checkAddIndented->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3056 74 moveto
+3059 73 3062 72 3065 72 curveto
+3163 53 3190 53 3293 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3293.88 39.39 moveto
+3303 34 lineto
+3292.51 32.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3293.88 39.39 moveto
+3303 34 lineto
+3292.51 32.53 lineto
+closepath stroke
+grestore
+% checkDocMessage
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1217 108 moveto
+1077 108 lineto
+1077 72 lineto
+1217 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1217 108 moveto
+1077 108 lineto
+1077 72 lineto
+1217 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1085 85.9 moveto 124 (checkDocMessage) alignedtext
+grestore
+% checkDocMessage->whoOwns
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1126 72 moveto
+1116 63 1103 52 1092 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1093.83 39.95 moveto
+1084 36 lineto
+1089.22 45.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1093.83 39.95 moveto
+1084 36 lineto
+1089.22 45.22 lineto
+closepath stroke
+grestore
+% checkExtract
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3532 108 moveto
+3428 108 lineto
+3428 72 lineto
+3532 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3532 108 moveto
+3428 108 lineto
+3428 72 lineto
+3532 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3435.5 85.9 moveto 89 (checkExtract) alignedtext
+grestore
+% checkExtract->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3456 72 moveto
+3445 63 3430 52 3417 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3419.1 39.2 moveto
+3409 36 lineto
+3414.9 44.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3419.1 39.2 moveto
+3409 36 lineto
+3414.9 44.8 lineto
+closepath stroke
+grestore
+% checkGetArgs
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2858 108 moveto
+2748 108 lineto
+2748 72 lineto
+2858 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2858 108 moveto
+2748 108 lineto
+2748 72 lineto
+2858 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2755.5 85.9 moveto 95 (checkGetArgs) alignedtext
+grestore
+% checkGetArgs->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2858 79 moveto
+2873 77 2890 74 2905 72 curveto
+3074 48 3120 60 3293 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3293.4 39.48 moveto
+3303 35 lineto
+3292.7 32.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3293.4 39.48 moveto
+3303 35 lineto
+3292.7 32.51 lineto
+closepath stroke
+grestore
+% checkGetArgs->getMatchingRightPren
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2815 72 moveto
+2820 64 2827 54 2833 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2835.67 46.34 moveto
+2838 36 lineto
+2829.73 42.62 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2835.67 46.34 moveto
+2838 36 lineto
+2829.73 42.62 lineto
+closepath stroke
+grestore
+% checkGetMargin
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3372 108 moveto
+3244 108 lineto
+3244 72 lineto
+3372 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3372 108 moveto
+3244 108 lineto
+3244 72 lineto
+3372 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3252 85.9 moveto 112 (checkGetMargin) alignedtext
+grestore
+% checkGetMargin->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3327 72 moveto
+3337 63 3348 53 3358 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3360.78 45.22 moveto
+3366 36 lineto
+3356.17 39.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3360.78 45.22 moveto
+3366 36 lineto
+3356.17 39.95 lineto
+closepath stroke
+grestore
+% checkGetParse
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 706 108 moveto
+588 108 lineto
+588 72 lineto
+706 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 706 108 moveto
+588 108 lineto
+588 72 lineto
+706 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+596 85.9 moveto 102 (checkGetParse) alignedtext
+grestore
+% checkGetParse->removeBackslashes
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 669 72 moveto
+680 63 693 52 704 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 706.1 44.8 moveto
+712 36 lineto
+701.9 39.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 706.1 44.8 moveto
+712 36 lineto
+701.9 39.2 lineto
+closepath stroke
+grestore
+% checkGetStringBeforeRightBrace
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 532 108 moveto
+290 108 lineto
+290 72 lineto
+532 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 532 108 moveto
+290 108 lineto
+290 72 lineto
+532 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+297.5 85.9 moveto 227 (checkGetStringBeforeRightBrace) alignedtext
+grestore
+% checkIeEg
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2212 108 moveto
+2128 108 lineto
+2128 72 lineto
+2212 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2212 108 moveto
+2128 108 lineto
+2128 72 lineto
+2212 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2135.5 85.9 moveto 69 (checkIeEg) alignedtext
+grestore
+% checkIeEg->checkIeEgfun
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2150 72 moveto
+2140 63 2129 53 2119 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2120.83 39.95 moveto
+2111 36 lineto
+2116.22 45.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2120.83 39.95 moveto
+2111 36 lineto
+2116.22 45.22 lineto
+closepath stroke
+grestore
+% checkIndentedLines
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3226 108 moveto
+3074 108 lineto
+3074 72 lineto
+3226 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3226 108 moveto
+3074 108 lineto
+3074 72 lineto
+3226 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3081.5 85.9 moveto 137 (checkIndentedLines) alignedtext
+grestore
+% checkIndentedLines->checkAddSpaceSegments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3160 72 moveto
+3164 64 3170 54 3175 45 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3178.2 46.44 moveto
+3180 36 lineto
+3172.08 43.04 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3178.2 46.44 moveto
+3180 36 lineto
+3172.08 43.04 lineto
+closepath stroke
+grestore
+% checkIndentedLines->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3209 72 moveto
+3242 62 3283 49 3317 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3318.43 42.23 moveto
+3327 36 lineto
+3316.42 35.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3318.43 42.23 moveto
+3327 36 lineto
+3316.42 35.52 lineto
+closepath stroke
+grestore
+% checkSkipIdentifierToken
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2654 108 moveto
+2468 108 lineto
+2468 72 lineto
+2654 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2654 108 moveto
+2468 108 lineto
+2468 72 lineto
+2654 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2476 85.9 moveto 170 (checkSkipIdentifierToken) alignedtext
+grestore
+% checkSkipIdentifierToken->checkAlphabetic
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2555 72 moveto
+2552 64 2549 54 2545 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2548.23 44.57 moveto
+2542 36 lineto
+2541.52 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2548.23 44.57 moveto
+2542 36 lineto
+2541.52 46.58 lineto
+closepath stroke
+grestore
+% checkSkipOpToken
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2450 108 moveto
+2306 108 lineto
+2306 72 lineto
+2450 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2450 108 moveto
+2306 108 lineto
+2306 72 lineto
+2450 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2314 85.9 moveto 128 (checkSkipOpToken) alignedtext
+grestore
+% checkSkipOpToken->checkAlphabetic
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2418 72 moveto
+2439 62 2465 50 2488 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2489.28 43.26 moveto
+2497 36 lineto
+2486.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2489.28 43.26 moveto
+2497 36 lineto
+2486.44 36.86 lineto
+closepath stroke
+grestore
+% checkSplitBrace
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1732 108 moveto
+1608 108 lineto
+1608 72 lineto
+1732 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1732 108 moveto
+1608 108 lineto
+1608 72 lineto
+1732 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1615.5 85.9 moveto 109 (checkSplitBrace) alignedtext
+grestore
+% checkSplitBrace->checkSplitBackslash
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1633 72 moveto
+1613 62 1589 51 1568 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1569.56 36.86 moveto
+1559 36 lineto
+1566.72 43.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1569.56 36.86 moveto
+1559 36 lineto
+1566.72 43.26 lineto
+closepath stroke
+grestore
+% checkSplitBrace->checkSplitOn
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1670 72 moveto
+1670 64 1670 55 1670 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1673.5 46 moveto
+1670 36 lineto
+1666.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1673.5 46 moveto
+1670 36 lineto
+1666.5 46 lineto
+closepath stroke
+grestore
+% checkSplitBrace->checkSplitPunctuation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1608 74 moveto
+1605 73 1602 73 1599 72 curveto
+1547 60 1487 47 1439 37 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1439.49 33.53 moveto
+1429 35 lineto
+1438.12 40.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1439.49 33.53 moveto
+1429 35 lineto
+1438.12 40.39 lineto
+closepath stroke
+grestore
+% checkTrimCommented
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 170 108 moveto
+2 108 lineto
+2 72 lineto
+170 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 170 108 moveto
+2 108 lineto
+2 72 lineto
+170 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+10 85.9 moveto 152 (checkTrimCommented) alignedtext
+grestore
+% checkTrimCommented->htcharPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 84 72 moveto
+83 64 83 55 82 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 85.5 46 moveto
+82 36 lineto
+78.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 85.5 46 moveto
+82 36 lineto
+78.5 46 lineto
+closepath stroke
+grestore
+% newString2Words
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1590 108 moveto
+1450 108 lineto
+1450 72 lineto
+1590 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1590 108 moveto
+1450 108 lineto
+1450 72 lineto
+1590 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1457.5 85.9 moveto 125 (newString2Words) alignedtext
+grestore
+% newString2Words->newWordFrom
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1450 77 moveto
+1397 67 1324 52 1251 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1251.49 32.53 moveto
+1241 34 lineto
+1250.12 39.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1251.49 32.53 moveto
+1241 34 lineto
+1250.12 39.39 lineto
+closepath stroke
+grestore
+% checkDocError
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 1259 180 moveto
+1143 180 lineto
+1143 144 lineto
+1259 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 1259 180 moveto
+1143 180 lineto
+1143 144 lineto
+1259 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1150.5 157.9 moveto 101 (checkDocError) alignedtext
+grestore
+% checkDocError->checkDocMessage
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1187 144 moveto
+1181 136 1173 125 1166 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1168.8 113.9 moveto
+1160 108 lineto
+1163.2 118.1 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1168.8 113.9 moveto
+1160 108 lineto
+1163.2 118.1 lineto
+closepath stroke
+grestore
+% checkRemoveComments
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 182 180 moveto
+0 180 lineto
+0 144 lineto
+182 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 182 180 moveto
+0 180 lineto
+0 144 lineto
+182 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+7.5 157.9 moveto 167 (checkRemoveComments) alignedtext
+grestore
+% checkRemoveComments->checkTrimCommented
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 90 144 moveto
+89 136 89 127 88 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 91.48 117.6 moveto
+87 108 lineto
+84.51 118.3 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 91.48 117.6 moveto
+87 108 lineto
+84.51 118.3 lineto
+closepath stroke
+grestore
+% checkSkipToken
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 2566 180 moveto
+2442 180 lineto
+2442 144 lineto
+2566 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 2566 180 moveto
+2442 180 lineto
+2442 144 lineto
+2566 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2450 157.9 moveto 108 (checkSkipToken) alignedtext
+grestore
+% checkSkipToken->checkSkipIdentifierToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2518 144 moveto
+2525 135 2533 125 2541 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2543.8 118.1 moveto
+2547 108 lineto
+2538.2 113.9 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2543.8 118.1 moveto
+2547 108 lineto
+2538.2 113.9 lineto
+closepath stroke
+grestore
+% checkSkipToken->checkSkipOpToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2472 144 moveto
+2456 135 2436 123 2418 113 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2419.44 109.8 moveto
+2409 108 lineto
+2416.04 115.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2419.44 109.8 moveto
+2409 108 lineto
+2416.04 115.92 lineto
+closepath stroke
+grestore
+% checkSplit2Words
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 1957 180 moveto
+1819 180 lineto
+1819 144 lineto
+1957 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 1957 180 moveto
+1819 180 lineto
+1819 144 lineto
+1957 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1827 157.9 moveto 122 (checkSplit2Words) alignedtext
+grestore
+% checkSplit2Words->checkSplitBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1833 144 moveto
+1803 134 1766 122 1734 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1734.58 107.52 moveto
+1724 108 lineto
+1732.57 114.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1734.58 107.52 moveto
+1724 108 lineto
+1732.57 114.23 lineto
+closepath stroke
+grestore
+% checkBeginEnd
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2074 252 moveto
+1954 252 lineto
+1954 216 lineto
+2074 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2074 252 moveto
+1954 252 lineto
+1954 216 lineto
+2074 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1962 229.9 moveto 104 (checkBeginEnd) alignedtext
+grestore
+% checkBeginEnd->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1954 226 moveto
+1926 223 1893 219 1864 216 curveto
+1646 194 1389 175 1269 167 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 163.51 moveto
+1259 166 lineto
+1268.6 170.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 163.51 moveto
+1259 166 lineto
+1268.6 170.48 lineto
+closepath stroke
+grestore
+% checkDecorate
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2377 252 moveto
+2259 252 lineto
+2259 216 lineto
+2377 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2377 252 moveto
+2259 252 lineto
+2259 216 lineto
+2377 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2267 229.9 moveto 102 (checkDecorate) alignedtext
+grestore
+% checkDecorate->checkAddBackSlashes
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2309 216 moveto
+2295 184 2272 119 2297 72 curveto
+2303 60 2313 50 2324 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2326.62 44.46 moveto
+2333 36 lineto
+2322.74 38.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2326.62 44.46 moveto
+2333 36 lineto
+2322.74 38.63 lineto
+closepath stroke
+grestore
+% checkDecorate->hasNoVowels
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2305 216 moveto
+2297 206 2288 192 2282 180 curveto
+2258 135 2237 79 2226 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2229.23 44.57 moveto
+2223 36 lineto
+2222.52 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2229.23 44.57 moveto
+2223 36 lineto
+2222.52 46.58 lineto
+closepath stroke
+grestore
+% checkDecorate->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2259 229 moveto
+2211 225 2143 220 2083 216 curveto
+1779 195 1417 174 1269 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath stroke
+grestore
+% checkDecorateForHt
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1350 252 moveto
+1194 252 lineto
+1194 216 lineto
+1350 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1350 252 moveto
+1194 252 lineto
+1194 216 lineto
+1350 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1202 229.9 moveto 140 (checkDecorateForHt) alignedtext
+grestore
+% checkDecorateForHt->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1254 216 moveto
+1245 207 1235 197 1226 188 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1228.22 185.22 moveto
+1219 180 lineto
+1222.95 189.83 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1228.22 185.22 moveto
+1219 180 lineto
+1222.95 189.83 lineto
+closepath stroke
+grestore
+% checkDocError1
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 964 252 moveto
+838 252 lineto
+838 216 lineto
+964 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 964 252 moveto
+838 252 lineto
+838 216 lineto
+964 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+846 229.9 moveto 110 (checkDocError1) alignedtext
+grestore
+% checkDocError1->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 964 218 moveto
+967 217 970 217 973 216 curveto
+1027 203 1088 188 1133 177 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.88 180.39 moveto
+1143 175 lineto
+1132.51 173.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.88 180.39 moveto
+1143 175 lineto
+1132.51 173.53 lineto
+closepath stroke
+grestore
+% checkFixCommonProblem
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1784 252 moveto
+1592 252 lineto
+1592 216 lineto
+1784 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1784 252 moveto
+1592 252 lineto
+1592 216 lineto
+1784 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1600 229.9 moveto 176 (checkFixCommonProblem) alignedtext
+grestore
+% checkFixCommonProblem->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1592 217 moveto
+1589 217 1586 216 1583 216 curveto
+1473 199 1345 182 1269 171 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 167.51 moveto
+1259 170 lineto
+1268.6 174.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 167.51 moveto
+1259 170 lineto
+1268.6 174.48 lineto
+closepath stroke
+grestore
+% checkGetLispFunctionName
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1574 252 moveto
+1368 252 lineto
+1368 216 lineto
+1574 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1574 252 moveto
+1368 252 lineto
+1368 216 lineto
+1574 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1375.5 229.9 moveto 191 (checkGetLispFunctionName) alignedtext
+grestore
+% checkGetLispFunctionName->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1403 216 moveto
+1362 205 1310 191 1269 181 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.58 177.52 moveto
+1259 178 lineto
+1267.57 184.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.58 177.52 moveto
+1259 178 lineto
+1267.57 184.23 lineto
+closepath stroke
+grestore
+% checkHTargs
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 782 252 moveto
+680 252 lineto
+680 216 lineto
+782 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 782 252 moveto
+680 252 lineto
+680 216 lineto
+782 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+688 229.9 moveto 86 (checkHTargs) alignedtext
+grestore
+% checkHTargs->checkLookForLeftBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 746 216 moveto
+779 177 855 88 893 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 896.05 45.83 moveto
+900 36 lineto
+890.78 41.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 896.05 45.83 moveto
+900 36 lineto
+890.78 41.22 lineto
+closepath stroke
+grestore
+% checkHTargs->checkLookForRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 735 216 moveto
+741 183 749 114 715 72 curveto
+705 59 675 47 643 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 643.58 35.52 moveto
+633 36 lineto
+641.57 42.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 643.58 35.52 moveto
+633 36 lineto
+641.57 42.23 lineto
+closepath stroke
+grestore
+% checkHTargs->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 782 219 moveto
+787 218 791 217 796 216 curveto
+913 192 1051 176 1133 168 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath stroke
+grestore
+% checkRecordHash
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 662 252 moveto
+526 252 lineto
+526 216 lineto
+662 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 662 252 moveto
+526 252 lineto
+526 216 lineto
+662 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+534 229.9 moveto 120 (checkRecordHash) alignedtext
+grestore
+% checkRecordHash->checkIsValidType
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 526 219 moveto
+521 218 516 217 512 216 curveto
+430 199 399 223 327 180 curveto
+277 148 245 83 230 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 232.96 43.98 moveto
+226 36 lineto
+226.46 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 232.96 43.98 moveto
+226 36 lineto
+226.46 46.58 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkLookForLeftBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 621 216 moveto
+678 177 815 85 880 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 882.1 44.8 moveto
+888 36 lineto
+877.9 39.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 882.1 44.8 moveto
+888 36 lineto
+877.9 39.2 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkLookForRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 526 216 moveto
+443 193 309 150 281 108 curveto
+273 94 271 84 281 72 curveto
+284 68 371 52 445 37 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 445.88 40.39 moveto
+455 35 lineto
+444.51 33.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 445.88 40.39 moveto
+455 35 lineto
+444.51 33.53 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkNumOfArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 593 216 moveto
+591 183 581 112 541 72 curveto
+534 65 489 50 447 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 447.58 35.52 moveto
+437 36 lineto
+445.57 42.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 447.58 35.52 moveto
+437 36 lineto
+445.57 42.23 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetParse
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 601 216 moveto
+610 191 626 147 637 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 640.48 118.58 moveto
+640 108 lineto
+633.77 116.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 640.48 118.58 moveto
+640 108 lineto
+633.77 116.57 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetStringBeforeRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 571 216 moveto
+538 190 478 143 442 114 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 444.1 111.2 moveto
+434 108 lineto
+439.9 116.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 444.1 111.2 moveto
+434 108 lineto
+439.9 116.8 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 662 217 moveto
+665 217 668 216 671 216 curveto
+835 188 1031 173 1133 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 169.48 moveto
+1143 165 lineto
+1132.7 162.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 169.48 moveto
+1143 165 lineto
+1132.7 162.51 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetLispFunctionName
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 630 252 moveto
+645 259 663 266 680 270 curveto
+753 284 1276 280 1350 270 curveto
+1371 267 1392 261 1411 255 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1412.43 258.23 moveto
+1421 252 lineto
+1410.42 251.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1412.43 258.23 moveto
+1421 252 lineto
+1410.42 251.52 lineto
+closepath stroke
+grestore
+% checkTexht
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1176 252 moveto
+1084 252 lineto
+1084 216 lineto
+1176 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1176 252 moveto
+1084 252 lineto
+1084 216 lineto
+1176 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1091.5 229.9 moveto 77 (checkTexht) alignedtext
+grestore
+% checkTexht->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1148 216 moveto
+1157 207 1167 197 1176 188 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1179.05 189.83 moveto
+1183 180 lineto
+1173.78 185.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1179.05 189.83 moveto
+1183 180 lineto
+1173.78 185.22 lineto
+closepath stroke
+grestore
+% checkTransformFirsts
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2584 252 moveto
+2424 252 lineto
+2424 216 lineto
+2584 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2584 252 moveto
+2424 252 lineto
+2424 216 lineto
+2584 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2432 229.9 moveto 144 (checkTransformFirsts) alignedtext
+grestore
+% checkTransformFirsts->checkSkipBlanks
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2539 216 moveto
+2576 195 2633 157 2663 108 curveto
+2674 90 2678 65 2681 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2684.49 46.3 moveto
+2682 36 lineto
+2677.52 45.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2684.49 46.3 moveto
+2682 36 lineto
+2677.52 45.6 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->getMatchingRightPren
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2554 216 moveto
+2577 207 2604 194 2626 180 curveto
+2683 141 2681 111 2739 72 curveto
+2756 60 2777 49 2795 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2796.28 43.26 moveto
+2804 36 lineto
+2793.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2796.28 43.26 moveto
+2804 36 lineto
+2793.44 36.86 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2424 221 moveto
+2411 219 2398 217 2386 216 curveto
+2166 194 1488 171 1269 164 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269 160.5 moveto
+1259 164 lineto
+1269 167.5 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269 160.5 moveto
+1259 164 lineto
+1269 167.5 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->checkSkipToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2504 216 moveto
+2504 208 2504 199 2504 190 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2507.5 190 moveto
+2504 180 lineto
+2500.5 190 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2507.5 190 moveto
+2504 180 lineto
+2500.5 190 lineto
+closepath stroke
+grestore
+% checkTrim
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1066 252 moveto
+982 252 lineto
+982 216 lineto
+1066 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1066 252 moveto
+982 252 lineto
+982 216 lineto
+1066 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+990 229.9 moveto 68 (checkTrim) alignedtext
+grestore
+% checkTrim->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1066 217 moveto
+1090 207 1121 194 1147 184 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1148.28 187.26 moveto
+1156 180 lineto
+1145.44 180.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1148.28 187.26 moveto
+1156 180 lineto
+1145.44 180.86 lineto
+closepath stroke
+grestore
+% checkArguments
+gsave
+0.600 1.000 1.000 nodecolor
+newpath 1670 324 moveto
+1540 324 lineto
+1540 288 lineto
+1670 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.600 1.000 1.000 nodecolor
+newpath 1670 324 moveto
+1540 324 lineto
+1540 288 lineto
+1670 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1547.5 301.9 moveto 115 (checkArguments) alignedtext
+grestore
+% checkArguments->checkHTargs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1540 304 moveto
+1406 299 1091 285 829 252 curveto
+817 250 804 248 792 246 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 792.49 242.53 moveto
+782 244 lineto
+791.12 249.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 792.49 242.53 moveto
+782 244 lineto
+791.12 249.39 lineto
+closepath stroke
+grestore
+% checkBalance
+gsave
+0.600 1.000 1.000 nodecolor
+newpath 2100 324 moveto
+1992 324 lineto
+1992 288 lineto
+2100 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.600 1.000 1.000 nodecolor
+newpath 2100 324 moveto
+1992 324 lineto
+1992 288 lineto
+2100 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1999.5 301.9 moveto 93 (checkBalance) alignedtext
+grestore
+% checkBalance->checkSayBracket
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2062 288 moveto
+2070 278 2079 265 2083 252 curveto
+2087 236 2087 231 2083 216 curveto
+2063 146 2009 79 1978 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1980.22 41.22 moveto
+1971 36 lineto
+1974.95 45.83 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1980.22 41.22 moveto
+1971 36 lineto
+1974.95 45.83 lineto
+closepath stroke
+grestore
+% checkBalance->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2006 288 moveto
+1956 267 1870 233 1793 216 curveto
+1694 194 1402 174 1269 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath stroke
+grestore
+% checkBalance->checkBeginEnd
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2038 288 moveto
+2034 280 2030 270 2026 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2029.26 259.72 moveto
+2022 252 lineto
+2022.86 262.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2029.26 259.72 moveto
+2022 252 lineto
+2022.86 262.56 lineto
+closepath stroke
+grestore
+% checkComments
+gsave
+0.333 1.000 0.400 nodecolor
+newpath 2363 396 moveto
+2235 396 lineto
+2235 360 lineto
+2363 360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 1.000 0.400 nodecolor
+newpath 2363 396 moveto
+2235 396 lineto
+2235 360 lineto
+2363 360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2242.5 373.9 moveto 113 (checkComments) alignedtext
+grestore
+% checkComments->checkAddPeriod
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 376 moveto
+2503 371 2825 355 2862 324 curveto
+2893 297 2886 275 2886 234 curveto
+2886 234 2886 234 2886 162 curveto
+2886 121 2879 104 2905 72 curveto
+2915 59 2930 48 2945 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2946.28 43.26 moveto
+2954 36 lineto
+2943.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2946.28 43.26 moveto
+2954 36 lineto
+2943.44 36.86 lineto
+closepath stroke
+grestore
+% checkComments->checkAddSpaces
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 375 moveto
+2510 369 2869 351 2987 324 curveto
+3244 265 3376 314 3541 108 curveto
+3555 90 3557 65 3557 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3560.48 45.6 moveto
+3556 36 lineto
+3553.51 46.3 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3560.48 45.6 moveto
+3556 36 lineto
+3553.51 46.3 lineto
+closepath stroke
+grestore
+% checkComments->checkGetArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 369 moveto
+2444 354 2586 321 2687 252 curveto
+2737 217 2773 154 2791 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2794.14 118.56 moveto
+2795 108 lineto
+2787.74 115.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2794.14 118.56 moveto
+2795 108 lineto
+2787.74 115.72 lineto
+closepath stroke
+grestore
+% checkComments->checkGetMargin
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 376 moveto
+2503 372 2832 359 2937 324 curveto
+3077 276 3221 165 3279 115 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3281.78 117.22 moveto
+3287 108 lineto
+3277.17 111.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3281.78 117.22 moveto
+3287 108 lineto
+3277.17 111.95 lineto
+closepath stroke
+grestore
+% checkComments->checkIeEg
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2291 360 moveto
+2269 311 2208 176 2182 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2185.26 115.72 moveto
+2178 108 lineto
+2178.86 118.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2185.26 115.72 moveto
+2178 108 lineto
+2178.86 118.56 lineto
+closepath stroke
+grestore
+% checkComments->checkIndentedLines
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 375 moveto
+2508 366 2851 345 2900 324 curveto
+3005 277 3094 167 3131 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3133.8 118.1 moveto
+3137 108 lineto
+3128.2 113.9 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3133.8 118.1 moveto
+3137 108 lineto
+3128.2 113.9 lineto
+closepath stroke
+grestore
+% checkComments->newString2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2269 360 moveto
+2252 350 2231 336 2213 324 curveto
+2168 293 2155 287 2116 252 curveto
+2099 237 2102 226 2083 216 curveto
+1974 159 1928 212 1810 180 curveto
+1770 169 1764 157 1726 144 curveto
+1703 136 1647 121 1600 109 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1600.49 105.53 moveto
+1590 107 lineto
+1599.12 112.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1600.49 105.53 moveto
+1590 107 lineto
+1599.12 112.39 lineto
+closepath stroke
+grestore
+% checkComments->checkSplit2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2284 360 moveto
+2255 326 2188 254 2116 216 curveto
+2070 192 2013 179 1967 171 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1967.49 167.53 moveto
+1957 169 lineto
+1966.12 174.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1967.49 167.53 moveto
+1957 169 lineto
+1966.12 174.39 lineto
+closepath stroke
+grestore
+% checkComments->checkDecorate
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2301 360 moveto
+2305 335 2311 291 2315 262 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2318.49 262.3 moveto
+2316 252 lineto
+2311.52 261.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2318.49 262.3 moveto
+2316 252 lineto
+2311.52 261.6 lineto
+closepath stroke
+grestore
+% checkComments->checkFixCommonProblem
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 369 moveto
+2170 360 2069 344 1983 324 curveto
+1901 304 1808 275 1750 255 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1750.58 251.52 moveto
+1740 252 lineto
+1748.57 258.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1750.58 251.52 moveto
+1740 252 lineto
+1748.57 258.23 lineto
+closepath stroke
+grestore
+% checkComments->checkTransformFirsts
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2325 360 moveto
+2361 334 2429 287 2470 258 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2472.1 260.8 moveto
+2478 252 lineto
+2467.9 255.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2472.1 260.8 moveto
+2478 252 lineto
+2467.9 255.2 lineto
+closepath stroke
+grestore
+% checkComments->checkArguments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 371 moveto
+2106 358 1818 329 1680 314 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1680.3 310.51 moveto
+1670 313 lineto
+1679.6 317.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1680.3 310.51 moveto
+1670 313 lineto
+1679.6 317.48 lineto
+closepath stroke
+grestore
+% checkComments->checkBalance
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 360 moveto
+2197 349 2149 335 2110 325 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2110.58 321.52 moveto
+2100 322 lineto
+2108.57 328.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2110.58 321.52 moveto
+2100 322 lineto
+2108.57 328.23 lineto
+closepath stroke
+grestore
+% checkRewrite
+gsave
+0.333 1.000 0.400 nodecolor
+newpath 1847 396 moveto
+1739 396 lineto
+1739 360 lineto
+1847 360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 1.000 0.400 nodecolor
+newpath 1847 396 moveto
+1739 396 lineto
+1739 360 lineto
+1847 360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1746.5 373.9 moveto 93 (checkRewrite) alignedtext
+grestore
+% checkRewrite->checkAddMacros
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1812 360 moveto
+1853 319 1950 222 1966 180 curveto
+1988 118 1913 68 1858 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1859.56 36.86 moveto
+1849 36 lineto
+1856.72 43.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1859.56 36.86 moveto
+1849 36 lineto
+1856.72 43.26 lineto
+closepath stroke
+grestore
+% checkRewrite->checkAddSpaces
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 376 moveto
+1957 371 2211 357 2424 324 curveto
+2854 257 2996 313 3381 108 curveto
+3401 97 3399 84 3419 72 curveto
+3439 59 3463 48 3486 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3487.28 43.26 moveto
+3495 36 lineto
+3484.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3487.28 43.26 moveto
+3495 36 lineto
+3484.44 36.86 lineto
+closepath stroke
+grestore
+% checkRewrite->checkAddIndented
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 376 moveto
+1983 371 2346 347 2630 252 curveto
+2727 219 2740 185 2834 144 curveto
+2861 132 2892 121 2919 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2919.62 114.48 moveto
+2928 108 lineto
+2917.41 107.84 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2919.62 114.48 moveto
+2928 108 lineto
+2917.41 107.84 lineto
+closepath stroke
+grestore
+% checkRewrite->checkGetArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 371 moveto
+1910 362 2018 345 2109 324 curveto
+2162 311 2173 298 2228 288 curveto
+2387 256 2441 312 2593 252 curveto
+2633 236 2727 156 2774 115 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2776.78 117.22 moveto
+2782 108 lineto
+2772.17 111.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2776.78 117.22 moveto
+2782 108 lineto
+2772.17 111.95 lineto
+closepath stroke
+grestore
+% checkRewrite->newString2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1799 360 moveto
+1808 328 1821 260 1793 216 curveto
+1769 179 1659 136 1587 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1587.58 107.52 moveto
+1577 108 lineto
+1585.57 114.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1587.58 107.52 moveto
+1577 108 lineto
+1585.57 114.23 lineto
+closepath stroke
+grestore
+% checkRewrite->checkRemoveComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1739 376 moveto
+1610 370 1273 354 993 324 curveto
+781 300 728 290 517 252 curveto
+400 231 266 201 180 182 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 180.49 178.53 moveto
+170 180 lineto
+179.12 185.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 180.49 178.53 moveto
+170 180 lineto
+179.12 185.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkSplit2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1805 360 moveto
+1812 350 1820 336 1826 324 curveto
+1849 278 1868 223 1879 190 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1882.48 190.58 moveto
+1882 180 lineto
+1875.77 188.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1882.48 190.58 moveto
+1882 180 lineto
+1875.77 188.57 lineto
+closepath stroke
+grestore
+% checkRewrite->checkDecorateForHt
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1778 360 moveto
+1756 335 1720 292 1712 288 curveto
+1644 253 1451 263 1360 251 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1360.3 247.51 moveto
+1350 250 lineto
+1359.6 254.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1360.3 247.51 moveto
+1350 250 lineto
+1359.6 254.48 lineto
+closepath stroke
+grestore
+% checkRewrite->checkFixCommonProblem
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1787 360 moveto
+1779 341 1767 310 1750 288 curveto
+1741 277 1731 267 1721 259 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1722.83 255.95 moveto
+1713 252 lineto
+1718.22 261.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1722.83 255.95 moveto
+1713 252 lineto
+1718.22 261.22 lineto
+closepath stroke
+grestore
+% checkRewrite->checkRecordHash
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1739 372 moveto
+1535 351 816 274 672 252 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 672.49 248.53 moveto
+662 250 lineto
+671.12 255.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 672.49 248.53 moveto
+662 250 lineto
+671.12 255.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkTexht
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1762 360 moveto
+1746 350 1727 337 1712 324 curveto
+1695 309 1698 297 1679 288 curveto
+1582 241 1308 271 1186 252 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1186.49 248.53 moveto
+1176 250 lineto
+1185.12 255.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1186.49 248.53 moveto
+1176 250 lineto
+1185.12 255.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkArguments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1746 360 moveto
+1720 350 1689 338 1661 328 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1662.56 324.86 moveto
+1652 324 lineto
+1659.72 331.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1662.56 324.86 moveto
+1652 324 lineto
+1659.72 331.26 lineto
+closepath stroke
+grestore
+% transformAndRecheckComments
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 1913 468 moveto
+1673 468 lineto
+1673 432 lineto
+1913 432 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 1913 468 moveto
+1673 468 lineto
+1673 432 lineto
+1913 432 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1681 445.9 moveto 224 (transformAndRecheckComments) alignedtext
+grestore
+% transformAndRecheckComments->checkComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1913 433 moveto
+2010 420 2143 401 2225 388 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2225.4 391.48 moveto
+2235 387 lineto
+2224.7 384.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2225.4 391.48 moveto
+2235 387 lineto
+2224.7 384.51 lineto
+closepath stroke
+grestore
+% transformAndRecheckComments->checkRewrite
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1793 432 moveto
+1793 424 1793 415 1793 406 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1796.5 406 moveto
+1793 396 lineto
+1789.5 406 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1796.5 406 moveto
+1793 396 lineto
+1789.5 406 lineto
+closepath stroke
+grestore
+% transDoc
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 1063 540 moveto
+985 540 lineto
+985 504 lineto
+1063 504 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 1063 540 moveto
+985 540 lineto
+985 504 lineto
+1063 504 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+993 517.9 moveto 62 (transDoc) alignedtext
+grestore
+% transDoc->checkExtract
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1063 522 moveto
+1381 521 3522 507 3522 378 curveto
+3522 378 3522 378 3522 234 curveto
+3522 192 3505 146 3493 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3496.26 115.72 moveto
+3489 108 lineto
+3489.86 118.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3496.26 115.72 moveto
+3489 108 lineto
+3489.86 118.56 lineto
+closepath stroke
+grestore
+% transDoc->checkDocError1
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1016 504 moveto
+995 455 938 320 913 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 916.26 259.72 moveto
+909 252 lineto
+909.86 262.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 916.26 259.72 moveto
+909 252 lineto
+909.86 262.56 lineto
+closepath stroke
+grestore
+% transDoc->checkTrim
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1024 504 moveto
+1024 455 1024 321 1024 262 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1027.5 262 moveto
+1024 252 lineto
+1020.5 262 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1027.5 262 moveto
+1024 252 lineto
+1020.5 262 lineto
+closepath stroke
+grestore
+% transDoc->transformAndRecheckComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1063 518 moveto
+1173 508 1484 479 1663 462 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1663.4 465.48 moveto
+1673 461 lineto
+1662.7 458.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1663.4 465.48 moveto
+1673 461 lineto
+1662.7 458.51 lineto
+closepath stroke
+grestore
+% transDocList
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 907 612 moveto
+805 612 lineto
+805 576 lineto
+907 576 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 907 612 moveto
+805 612 lineto
+805 576 lineto
+907 576 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+812.5 589.9 moveto 87 (transDocList) alignedtext
+grestore
+% transDocList->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 846 576 moveto
+833 549 810 497 810 450 curveto
+810 450 810 450 810 306 curveto
+810 265 800 243 829 216 curveto
+851 196 1031 176 1133 168 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath stroke
+grestore
+% transDocList->checkDocError1
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 856 576 moveto
+856 548 857 495 856 450 curveto
+856 450 856 450 856 378 curveto
+857 335 874 290 887 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 890.14 262.56 moveto
+891 252 lineto
+883.74 259.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 890.14 262.56 moveto
+891 252 lineto
+883.74 259.72 lineto
+closepath stroke
+grestore
+% transDocList->transDoc
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 898 576 moveto
+922 566 951 553 976 543 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 977.28 546.26 moveto
+985 539 lineto
+974.44 539.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 977.28 546.26 moveto
+985 539 lineto
+974.44 539.86 lineto
+closepath stroke
+grestore
+% finalizeDocumentation->transDocList
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 856 648 moveto
+856 640 856 631 856 622 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 859.5 622 moveto
+856 612 lineto
+852.5 622 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 859.5 622 moveto
+856 612 lineto
+852.5 622 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index 6f213a0..a50041b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20111215 tpd src/axiom-website/patches.html 20111215.01.tpd.patch
+20111215 tpd books/ps/v9CommentSyntaxChecking.eps comment syntax chapter
+20111215 tpd books/ps/v9CommentRecording.eps comment recording chapter
+20111215 tpd books/bookvol9 add comment graphs
20111208 tpd src/axiom-website/patches.html 20111208.05.tpd.patch
20111208 tpd books/bookvolbib add additional references
20111208 tpd src/axiom-website/patches.html 20111208.04.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 851ed6f..0011e82 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3735,5 +3735,7 @@ books/bookvol5 treeshake interpreter
books/bookvol9 code cleanup
20111208.05.tpd.patch
books/bookvolbib add additional references
+20111215.01.tpd.patch
+books/bookvol9 add comment graphs