/* Semantic Operations */ typedef enum { oCall = 0, /* 0 */ oReturn, /* 1 */ oRuleEnd, /* 2 */ oJump, /* 3 */ oInput, /* 4 */ oInputAny, /* 5 */ oInputChoice, /* 6 */ oEmit, /* 7 */ oError, /* 8 */ oChoice, /* 9 */ oChoiceEnd, /* 10 */ oSetParameter, /* 11 */ oSetResult, /* 12 */ oSetResultFromInput, /* 13 */ oIdentWord, /* 14 */ oIdentifyKeyword, /* 15 */ oUngetKeyword, /* 16 */ oBufferClear, /* 17 */ oBufferAppend, /* 18 */ oBufferAppendCaret, /* 19 */ oBufferAppendDollar, /* 20 */ oBufferTerminate, /* 21 */ oBufferEmit, /* 22 */ oBufferEmitPattern, /* 23 */ oBufferUsed, /* 24 */ oBranchPushNullOrigin, /* 25 */ oBranchPushOrigin, /* 26 */ oBranchPatch, /* 27 */ oBranchPatchBack, /* 28 */ oBranchPopOrigin, /* 29 */ oBranchSwapTop, /* 30 */ oEmitBranchOrigin, /* 31 */ oHereSaveStop, /* 32 */ oHereCompareStop, /* 33 */ oHereCutBuffer, /* 34 */ oFlagsPush, /* 35 */ oFlagsPop, /* 36 */ oFlagsSet, /* 37 */ oFlagsTest, /* 38 */ oCounterIncrement, /* 39 */ oCounterDecrement, /* 40 */ oCounterClear, /* 41 */ oCounterTest, /* 42 */ lastOfTableOperation } TableOperation; /* Input Tokens */ typedef enum { tSyntaxError = -1, /* -1 */ tAmpersand, /* 0 */ tAnd, /* 1 */ tAngleLeft, /* 2 */ tAngleRight, /* 3 */ tAppendLeft, /* 4 */ tAppendRight, /* 5 */ tAt, /* 6 */ tBackQuote, /* 7 */ tBackQuoteLeft, /* 8 */ tBackSlash, /* 9 */ tBraceLeft, /* 10 */ tBraceRight, /* 11 */ tCaret, /* 12 */ tComma, /* 13 */ tColon, /* 14 */ tDash, /* 15 */ tDigit, /* 16 */ tDollar, /* 17 */ tDoubleQuote, /* 18 */ tEndOfFile, /* 19 */ tEqual, /* 20 */ tExclamation, /* 21 */ tLabelEnd, /* 22 */ tLetter, /* 23 */ tNewLine, /* 24 */ tOr, /* 25 */ tParenLeft, /* 26 */ tParenRight, /* 27 */ tPercent, /* 28 */ tPeriod, /* 29 */ tPlus, /* 30 */ tPipe, /* 31 */ tSemicolon, /* 32 */ tSharp, /* 33 */ tSingleQuote, /* 34 */ tSlash, /* 35 */ tSquareLeft, /* 36 */ tSquareRight, /* 37 */ tStar, /* 38 */ tTilde, /* 39 */ tQuestionMark, /* 40 */ tUnderscore, /* 41 */ tWhiteSpace, /* 42 */ lastOfInputTokens } InputTokens; /* Output Tokens */ typedef enum { sBufferSet = 0, /* 0 */ sBufferAppend, /* 1 */ sBufferExpand, /* 2 */ sBufferQuote, /* 3 */ sBufferSetFromArgV, /* 4 */ sArgVpush, /* 5 */ sArgList, /* 6 */ sVariablePush, /* 7 */ sVariablePop, /* 8 */ sVariableCdr, /* 9 */ sVariableBuffer, /* 10 */ sVariableAppend, /* 11 */ sVariableLoopAttach, /* 12 */ sCommandPush, /* 13 */ sCommandPop, /* 14 */ sCommandCarryBuffer, /* 15 */ sIOopen, /* 16 */ sIOopenString, /* 17 */ sIOopenPortal, /* 18 */ sIOopenPipe, /* 19 */ sIOintoBuffer, /* 20 */ sIOclose, /* 21 */ sIOdup, /* 22 */ sIOsetIn, /* 23 */ sIOsetInOut, /* 24 */ sIOsetOut, /* 25 */ sIOsetAppend, /* 26 */ sIOsetDesc, /* 27 */ sIObufIn, /* 28 */ sIObufOut, /* 29 */ sIObufFree, /* 30 */ sIObufString, /* 31 */ sAssign, /* 32 */ sAssignTemporary, /* 33 */ sFunction, /* 34 */ sParameter, /* 35 */ sJump, /* 36 */ sBranchOrigin, /* 37 */ sJumpFork, /* 38 */ sJumpIfFailure, /* 39 */ sJumpIfSuccess, /* 40 */ sJumpIfNilVariable, /* 41 */ sJumpIfMatch, /* 42 */ sJumpIfFindVarNil, /* 43 */ sJumpIfOrValueNil, /* 44 */ sJumpLoopBreak, /* 45 */ sJumpLoopContinue, /* 46 */ sLoopEnter, /* 47 */ sLoopExit, /* 48 */ sLocalVariable, /* 49 */ sScopePush, /* 50 */ sScopePop, /* 51 */ sDollarExpand, /* 52 */ sNoOp, /* 53 */ sPrintAndExit, /* 54 */ sBackground, /* 55 */ sSiftPush, /* 56 */ sSiftBody, /* 57 */ sSiftCompileRegexp, /* 58 */ sSiftReevaluate, /* 59 */ sSiftPop, /* 60 */ sSiftBufferAppend, /* 61 */ sJumpIfRegmatch, /* 62 */ sTSiftPush, /* 63 */ sTSiftBody, /* 64 */ sTSiftCompileRegexp, /* 65 */ sTSiftReevaluate, /* 66 */ sTSiftPop, /* 67 */ sTJumpIfRegmatch, /* 68 */ lastOfOutputTokens } OutputTokens; /* Input/Output Tokens */ /* Error Codes */ typedef enum { eNoError = 0, /* 0 */ eSyntaxError, /* 1 */ ePrematureEndOfFile, /* 2 */ eExtraneousProgramText, /* 3 */ eFirstUserError = 10, /* 10 */ eIllegalArgumentSeparator = 10, /* 10 */ eMissingDo, /* 11 */ eMissingDoOrIn, /* 12 */ eMissingDone, /* 13 */ eMissingEndOfPattern, /* 14 */ eMissingEsac, /* 15 */ eMissingFi, /* 16 */ eMissingIOopTarget, /* 17 */ eMissingKeywordIn, /* 18 */ eMissingThen, /* 19 */ eMissingRightBrace, /* 20 */ eUnknownDollarOperand, /* 21 */ eUnmatchedEndOfGroup, /* 22 */ eIllegalLeftParen, /* 23 */ eIllegalConnector, /* 24 */ eIllegalTokenUnbalancedList, /* 25 */ eObsoleteSift, /* 26 */ eObsoleteTfis, /* 27 */ eTfissMisparity, /* 28 */ eTfistMisparity, /* 29 */ eSslStackOverflow = 40, /* 40 */ lastOfErrorCodes } ErrorCodes; /* Type Values */ typedef enum { sDoubleQuote = 0, /* 0 */ sSingleQuote, /* 1 */ sBackQuote, /* 2 */ lastOfStringTerminator } StringTerminator; typedef enum { sName = 0, /* 0 */ sWord, /* 1 */ lastOfWordKind } WordKind; typedef enum { kCase = 0, /* 0 */ kDo, /* 1 */ kDone, /* 2 */ kElif, /* 3 */ kElse, /* 4 */ kEsac, /* 5 */ kFi, /* 6 */ kFor, /* 7 */ kIf, /* 8 */ kIn, /* 9 */ kLocalVariable, /* 10 */ kNull, /* 11 */ kTSift, /* 12 */ kTfisT, /* 13 */ kSSift, /* 14 */ kTfisS, /* 15 */ kSift, /* 16 */ kTfis, /* 17 */ kThen, /* 18 */ kUntil, /* 19 */ kWhile, /* 20 */ lastOfKeyword } Keyword; typedef enum { off = 0, /* 0 */ on, /* 1 */ lastOfFlag } Flag; typedef enum { bitHereData = 0, /* 0 */ bitQuotingHereData, /* 1 */ bitStripTabs, /* 2 */ bitTwoJumps, /* 3 */ bitInQuotes, /* 4 */ bitEmittedBuffer, /* 5 */ lastOfFlagBit } FlagBit; typedef enum { countDoubleQuoteNestingLevel = 0, /* 0 */ countBackQuoteNestingLevel, /* 1 */ countDollarInSiftLabel, /* 2 */ lastOfCounter } Counter; typedef enum { same = 0, /* 0 */ different, /* 1 */ lastOfHereCompare } HereCompare; typedef enum { empty = 0, /* 0 */ used, /* 1 */ lastOfBufferState } BufferState; typedef enum { noIO = 0, /* 0 */ yesIO, /* 1 */ lastOfIOop } IOop;