1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
digraph MsgHeaderScannerFSM {
node[shape=record
fontsize=8
fontname="Helvetica"
]
edge [ fontsize=6 fontname="Helvetica"]
graph [ ratio=0.8
fontsize=6 compound=true ] MsgStart [ label = "0|MsgStart" ]
MsgStart -> MsgStart [label="TERM\nSentinel" ]
MsgStart -> ScanStatusLine [label="*\nStartText" ]
MsgStart -> ScanStatusLine [label="FName\nStartText" ]
MsgStart -> ScanStatusLine [label="WS\nStartText" ]
MsgStart -> ScanStatusLine [label="\":\"\nStartText" ]
MsgStart -> ScanStatusLine [label="\"\nStartText" ]
MsgStart -> ScanStatusLine [label="\"<\"\nStartText" ]
MsgStart -> ScanStatusLine [label="\">\"\nStartText" ]
MsgStart -> ScanStatusLine [label="\"\\\"\nStartText" ]
MsgStart -> ScanStatusLine [label="\",\"\nStartText" ]
MsgStart -> HalfLineBreakAtMsgStart [label="CR\nNone" ]
HalfLineBreakAtMsgStart [ label = "1|HalfLineBreakAtMsgStart" ]
HalfLineBreakAtMsgStart -> HalfLineBreakAtMsgStart [label="TERM\nSentinel" ]
HalfLineBreakAtMsgStart -> MsgStart [label="LF\nNone" ]
ScanStatusLine [ label = "2|ScanStatusLine" ]
ScanStatusLine -> ScanStatusLine [label="TERM\nSentinel" ]
ScanStatusLine -> HalfLineBreakAfterStatusLine [label="CR\nTermStatusLine" ]
HalfLineBreakAfterStatusLine [ label = "3|HalfLineBreakAfterStatusLine" ]
HalfLineBreakAfterStatusLine -> HalfLineBreakAfterStatusLine [label="TERM\nSentinel" ]
HalfLineBreakAfterStatusLine -> AfterLineBreakAfterStatusLine [label="LF\nNone" ]
AfterLineBreakAfterStatusLine [ label = "4|AfterLineBreakAfterStatusLine" ]
AfterLineBreakAfterStatusLine -> AfterLineBreakAfterStatusLine [label="TERM\nSentinel" ]
AfterLineBreakAfterStatusLine -> ScanFieldName [label="FName\nStartText" ]
AfterLineBreakAfterStatusLine -> HalfLineBreakAfterLineBreak [label="CR\nNone" ]
ScanFieldName [ label = "5|ScanFieldName" ]
ScanFieldName -> ScanFieldName [label="TERM\nSentinel" ]
ScanFieldName -> ScanWhiteSpaceAfter1FieldName [label="WS\nTermFieldName" ]
ScanFieldName -> ScanWhiteSpaceOr1Value [label="\":\"\nTermFieldName" ]
ScanWhiteSpaceAfter1FieldName [ label = "6|ScanWhiteSpaceAfter1FieldName" ]
ScanWhiteSpaceAfter1FieldName -> ScanWhiteSpaceAfter1FieldName [label="TERM\nSentinel" ]
ScanWhiteSpaceAfter1FieldName -> ScanWhiteSpaceOr1Value [label="\":\"\nNone" ]
ScanWhiteSpaceAfterNFieldName [ label = "7|ScanWhiteSpaceAfterNFieldName" ]
ScanWhiteSpaceAfterNFieldName -> ScanWhiteSpaceAfterNFieldName [label="TERM\nSentinel" ]
ScanWhiteSpaceAfterNFieldName -> ScanWhiteSpaceOrNValue [label="\":\"\nNone" ]
ScanWhiteSpaceOr1Value [ label = "8|ScanWhiteSpaceOr1Value" ]
ScanWhiteSpaceOr1Value -> ScanWhiteSpaceOr1Value [label="TERM\nSentinel" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="*\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="FName\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\":\"\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\"\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\"<\"\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\">\"\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\"\\\"\nStartText" ]
ScanWhiteSpaceOr1Value -> Scan1Value [label="\",\"\nStartText" ]
ScanWhiteSpaceOr1Value -> HalfLineBreakInWhiteSpaceBefore1Value [label="CR\nNone" ]
ScanWhiteSpaceOrNValue [ label = "9|ScanWhiteSpaceOrNValue" ]
ScanWhiteSpaceOrNValue -> ScanWhiteSpaceOrNValue [label="TERM\nSentinel" ]
ScanWhiteSpaceOrNValue -> ScanNValue [label="*\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValue [label="FName\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValue [label="\":\"\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValueInQuotes [label="\"\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValueInAngles [label="\"<\"\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValue [label="\">\"\nStartText" ]
ScanWhiteSpaceOrNValue -> ScanNValue [label="\"\\\"\nStartText" ]
ScanWhiteSpaceOrNValue -> HalfLineBreakInWhiteSpaceBeforeNValue [label="CR\nNone" ]
HalfLineBreakInWhiteSpaceBefore1Value [ label = "10|HalfLineBreakInWhiteSpaceBefore1Value" ]
HalfLineBreakInWhiteSpaceBefore1Value -> HalfLineBreakInWhiteSpaceBefore1Value [label="TERM\nSentinel" ]
HalfLineBreakInWhiteSpaceBefore1Value -> AfterLineBreakInWhiteSpaceBefore1Value [label="LF\nNone" ]
HalfLineBreakInWhiteSpaceBeforeNValue [ label = "11|HalfLineBreakInWhiteSpaceBeforeNValue" ]
HalfLineBreakInWhiteSpaceBeforeNValue -> HalfLineBreakInWhiteSpaceBeforeNValue [label="TERM\nSentinel" ]
HalfLineBreakInWhiteSpaceBeforeNValue -> AfterLineBreakInWhiteSpaceBeforeNValue [label="LF\nNone" ]
AfterLineBreakInWhiteSpaceBefore1Value [ label = "12|AfterLineBreakInWhiteSpaceBefore1Value" ]
AfterLineBreakInWhiteSpaceBefore1Value -> AfterLineBreakInWhiteSpaceBefore1Value [label="TERM\nSentinel" ]
AfterLineBreakInWhiteSpaceBefore1Value -> ScanFieldName [label="FName\nBeyondEmptyValue" ]
AfterLineBreakInWhiteSpaceBefore1Value -> ScanWhiteSpaceOr1Value [label="WS\nNone" ]
AfterLineBreakInWhiteSpaceBefore1Value -> HalfLineBreakAfterLineBreak [label="CR\nBeyondEmptyValue" ]
AfterLineBreakInWhiteSpaceBeforeNValue [ label = "13|AfterLineBreakInWhiteSpaceBeforeNValue" ]
AfterLineBreakInWhiteSpaceBeforeNValue -> AfterLineBreakInWhiteSpaceBeforeNValue [label="TERM\nSentinel" ]
AfterLineBreakInWhiteSpaceBeforeNValue -> ScanFieldName [label="FName\nBeyondEmptyValue" ]
AfterLineBreakInWhiteSpaceBeforeNValue -> ScanWhiteSpaceOrNValue [label="WS\nNone" ]
AfterLineBreakInWhiteSpaceBeforeNValue -> HalfLineBreakAfterLineBreak [label="CR\nBeyondEmptyValue" ]
Scan1Value [ label = "14|Scan1Value" ]
Scan1Value -> Scan1Value [label="TERM\nSentinel" ]
Scan1Value -> HalfLineBreakIn1Value [label="CR\nNone" ]
ScanNValue [ label = "15|ScanNValue" ]
ScanNValue -> ScanNValue [label="TERM\nSentinel" ]
ScanNValue -> ScanNValueInQuotes [label="\"\nNone" ]
ScanNValue -> ScanNValueInAngles [label="\"<\"\nNone" ]
ScanNValue -> ScanWhiteSpaceOrNValue [label="\",\"\nTermValue" ]
ScanNValue -> HalfLineBreakInNValue [label="CR\nNone" ]
HalfLineBreakIn1Value [ label = "16|HalfLineBreakIn1Value" ]
HalfLineBreakIn1Value -> HalfLineBreakIn1Value [label="TERM\nSentinel" ]
HalfLineBreakIn1Value -> AfterLineBreakIn1Value [label="LF\nNone" ]
HalfLineBreakInNValue [ label = "17|HalfLineBreakInNValue" ]
HalfLineBreakInNValue -> HalfLineBreakInNValue [label="TERM\nSentinel" ]
HalfLineBreakInNValue -> AfterLineBreakInNValue [label="LF\nNone" ]
AfterLineBreakIn1Value [ label = "18|AfterLineBreakIn1Value" ]
AfterLineBreakIn1Value -> AfterLineBreakIn1Value [label="TERM\nSentinel" ]
AfterLineBreakIn1Value -> ScanFieldName [label="FName\nTermValueAfterLineBreak" ]
AfterLineBreakIn1Value -> Scan1Value [label="WS\nNone" ]
AfterLineBreakIn1Value -> HalfLineBreakAfterLineBreak [label="CR\nTermValueAfterLineBreak" ]
AfterLineBreakInNValue [ label = "19|AfterLineBreakInNValue" ]
AfterLineBreakInNValue -> AfterLineBreakInNValue [label="TERM\nSentinel" ]
AfterLineBreakInNValue -> ScanFieldName [label="FName\nTermValueAfterLineBreak" ]
AfterLineBreakInNValue -> ScanNValue [label="WS\nNone" ]
AfterLineBreakInNValue -> HalfLineBreakAfterLineBreak [label="CR\nTermValueAfterLineBreak" ]
ScanNValueInQuotes [ label = "20|ScanNValueInQuotes" ]
ScanNValueInQuotes -> ScanNValueInQuotes [label="TERM\nSentinel" ]
ScanNValueInQuotes -> ScanNValue [label="\"\nNone" ]
ScanNValueInQuotes -> AfterEscCharInQuotesInNValue [label="\"\\\"\nNone" ]
ScanNValueInQuotes -> HalfLineBreakInQuotesInNValue [label="CR\nNone" ]
AfterEscCharInQuotesInNValue [ label = "21|AfterEscCharInQuotesInNValue" ]
AfterEscCharInQuotesInNValue -> AfterEscCharInQuotesInNValue [label="TERM\nSentinel" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="*\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="FName\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="WS\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\":\"\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"<\"\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\">\"\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"\\\"\nNone" ]
AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\",\"\nNone" ]
HalfLineBreakInQuotesInNValue [ label = "22|HalfLineBreakInQuotesInNValue" ]
HalfLineBreakInQuotesInNValue -> HalfLineBreakInQuotesInNValue [label="TERM\nSentinel" ]
HalfLineBreakInQuotesInNValue -> AfterLineBreakInQuotesInNValue [label="LF\nNone" ]
AfterLineBreakInQuotesInNValue [ label = "23|AfterLineBreakInQuotesInNValue" ]
AfterLineBreakInQuotesInNValue -> AfterLineBreakInQuotesInNValue [label="TERM\nSentinel" ]
AfterLineBreakInQuotesInNValue -> ScanNValueInQuotes [label="WS\nNone" ]
ScanNValueInAngles [ label = "24|ScanNValueInAngles" ]
ScanNValueInAngles -> ScanNValueInAngles [label="TERM\nSentinel" ]
ScanNValueInAngles -> ScanNValue [label="\">\"\nNone" ]
ScanNValueInAngles -> HalfLineBreakInAnglesInNValue [label="CR\nNone" ]
HalfLineBreakInAnglesInNValue [ label = "25|HalfLineBreakInAnglesInNValue" ]
HalfLineBreakInAnglesInNValue -> HalfLineBreakInAnglesInNValue [label="TERM\nSentinel" ]
HalfLineBreakInAnglesInNValue -> AfterLineBreakInAnglesInNValue [label="LF\nNone" ]
AfterLineBreakInAnglesInNValue [ label = "26|AfterLineBreakInAnglesInNValue" ]
AfterLineBreakInAnglesInNValue -> AfterLineBreakInAnglesInNValue [label="TERM\nSentinel" ]
AfterLineBreakInAnglesInNValue -> ScanNValueInAngles [label="WS\nNone" ]
HalfLineBreakAfterLineBreak [ label = "27|HalfLineBreakAfterLineBreak" ]
HalfLineBreakAfterLineBreak -> HalfLineBreakAfterLineBreak [label="TERM\nSentinel" ]
HalfLineBreakAfterLineBreak -> MsgStart [label="LF\nEndHeader" ]
}
|