⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc138.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 4 页
字号:
                                       arithmeticexpression         operator ::= + | - | * | /         primary ::= identifier | L(identifier) | V(identifier) |                     INTEGER   The replication expression is a repeat function applied to the   combined data type and value expression.  It expresses the number of   times that the value (of the data type/value expression) is to be   repeated within the field length denoted by the data type/length   expression.   A null replication expression has the value of one.  Arithmetic   expressions are evaluated from left-to-right with no precedence.  (It   is anticipated that this interpretation might be changed, if   necessary.)   The L(identifier) is a length operator that generates a 32-bit binary   integer corresponding to the length of the term named.  The   V(identifier) is a value operator that generates a 32-bit binary   integer corresponding to the value of the term named.  (See   Restrictions and Interpretations of Term Functions.)  The value   operator is intended to convert character strings to their numerical   correspondents.Anderson, et al.                                               [Page 12]RFC 138               Data Reconfiguration Service          April 1971   The data type is defined below.             datatype ::= B | O | X | E | A   The data type describes the kind of data that the term represents.   (It is expected that additional data types, such as floating point   and user-defined types, will be added as needed.)        Data Type         Meaning              Unit Length            B             Bit string              1 bit            O             Bit string              3 bits            X             Bit string              4 bits            E             EBCDIC character        8 bits            A             Network ASCII character 8 bits        The value expression is defined below.                 valueexpression ::= value | <null>                 value ::= literal | arithmeticexpression                 literal ::= literaltype "string"                 literaltype ::= B | O | X | E | A   The value expression is the unit value of a term expressed in the   format indicated by the data type.  It is repeated according to the   replication expression, in a field whose length is constrained by the   length expression.   A null value expression in the input stream defaults to the data   present in the input stream.  The data must comply with the datatype   attribute, however.   A null value expression generates padding according to Restrictions   and Interpretations of Term Functions.   The length expression is defined below.         lengthexpression ::= # | arithmeticexpression | <null>   The length expression states the length of the field containing the   value expression as expanded by the replication expression.  If the   value of the length expression is less then the length implied by the   expanded value expression, then the expanded value expression is   truncated, see Restrictions and Interpretations of Term Functions.   The terminal symbol # means an arbitrary length, explicitly   terminated by the value of the next term.  The # is legal only in the   input stream and not in the output stream.Anderson, et al.                                               [Page 13]RFC 138               Data Reconfiguration Service          April 1971   If the length expression is less than or equal to zero, the term   succeeds but the appropriate stream pointer is not advanced.   Positive lengths cause the appropriate stream pointer to be advanced   if the term otherwise succeeds.   Control is defined under TERM AND RULE SEQUENCING.Term Format 3   Term format 3 is shown below.         descriptor   It is identical to term format 2 with the omission of the identifier.   Term format 3 is generally used in the output stream.  It is used in   the input stream where input data is to be passed over but not   retained for emission or later reference.Term Format 4   The fourth term format is shown below.         comparator    ::= (value connective value control) |                           (identifier .<=. value control)         value         ::= literal | arithmeticexpression         literal       ::= literaltype "string"         literaltype   ::= B | O | X | E | A         string        ::= from 0 to 256 characters         connective    ::= .LE. | .LT. | .GE. | .GT. | .EQ. | .NE.   The fourth term format is used for assignment and comparison.   The assignment operator .<=. assigns the value to the identifier.   The connectives have their usual meaning.  Values to be compared must   have the same type and length attributes or an error condition arises   and the form fails.The Application of a Term   The elements of a term are applied by the following sequence of   steps.         1.  The data type and value expression together specify a unit             value, call it x.         2.  The replication expression specifies the number of times x             is to be repeated (or copied) in concatenated fashion.  The             value of the concatenated xs becomes, say, y of length L1.Anderson, et al.                                               [Page 14]RFC 138               Data Reconfiguration Service          April 1971         3.  The data type and the length expression together specify a             field length of the input area (call it L2) that begins at             the current stream pointer position.         4.  The value of y is truncated to y' if L1 > L2.  Call the             truncated length L1'.         5.  If the term is an input stream term, then the value y' of             length L1' is compared to the input value beginning at the             current input pointer position.         6.  If the values are identical over the length L1' then the             input value of length L2 (may be greater than L1') starting             at the current pointer position in the input area, becomes             the value of the term.   In an output stream term, the procedure is the same except that the   source of input is the value of the term(s) named in the value   expression and the data is emitted in the output stream.   The above procedure is modified to include a one term look-ahead   where lengths are indefinite because of the arbitrary symbol, #.Restrictions and Interpretations of Term Functions   1.  Terms specifying indefinite lengths, through the use of the #         symbol must be separated by some type-specific data such as a         literal.  (A literal isn't specifically required, however.  An         arbitrary number of ASCII characters could be terminated by a         non-ASCII character.)  # is legal only in the input stream, not         in the output stream.   2.  Truncation and padding is as follows:         a)  Character to character (A <--> E) conversion is left             justified and truncated or padded on the right with blanks.         b)  Character to numeric and numeric to numeric conversions are             right-justified and truncated or padded on the left with             zeros.         c)  Numeric to character conversion is right-justified and             left-padded with blanks.   3.  The following are ignored in a form definition over the control         connection.         a)  TAB, carriage return, etc.         b)  blanks except within quotes.         c)  /* string */ is treated as comments except within quotes.   4.  The following defaults prevail where the term part is omitted.Anderson, et al.                                               [Page 15]RFC 138               Data Reconfiguration Service          April 1971         a)  The replication expression defaults to one.         b)  The data type defaults to type B.         c)  The value expression of an input stream term defaults to             the value found in the input stream, but the input stream             must conform to data type and length expression.  The value             expression of an output stream term defaults to padding             only.         d)  The length expression defaults to the size of the quantity             determined by replication expression, data type, and value             expression.         e)  Control defaults to the next sequential term if a term is             successfully applied; else control defaults to the next             sequential rule.  If _where_ evaluates to an undefined             _label_ the form fails.   5.  Arithmetic expressions are evaluated left-to-right with no         precedence.   6.  The following limits prevail.         a)  Binary lengths are <= 32 bits         b)  Character strings are <= 256 8-bit characters         c)  Identifier names are <= 4 characters         d)  Maximum number of identifiers is <= 256         e)  Label integers are >= 0 and <= 9999   7.  Value and length operators product 32-bit binary integers.  The         value operator is currently intended for converting A or E type         decimal character strings to their binary correspondents.  For         example, the value of E'12' would be 0......01100.  The value         of E'AB' would cause the form to fail.Anderson, et al.                                               [Page 16]RFC 138               Data Reconfiguration Service          April 1971TERM AND RULE SEQUENCING   Sequencing may be explicitly controlled by including control in a   term.        control ::=  :options | <null>        options ::=  S(where) | F(where) | U(where)                     S(where) , F(where) |                     F(where) , S(where)        where   ::=  arithmeticexpression | R(arithmeticexpression)   S, F, and U denote success, fail, and unconditional transfers,   respectively.  _Where_ evaluates to a _rule_ label, thus transfer can   be effected from within a rule (at the end of a term) to the   beginning of another rule.  R means terminate the form and return the   evaluated expression to the initiator over the control connection (if   still open).   If terms are not explicitly sequenced, the following defaults   prevail.   1)  When a term fails go to the next sequential rule.   2)  When a term succeeds go to the next sequential       term within the rule.   (3) At the end of a rule, go to the next sequential       rule.   Note in the following example, the correlation between transfer of   control and movement of the input pointer.        1   XYZ(,B,,8:S(2),F(3)) : XYZ ;        2   . . . . . . .        3   . . . . . . .   The value of XYZ will never be emitted in the output stream since   control is transferred out of the rule upon either success or   failure.  If the term succeeds, the 8 bits of input will be assigned   as the value of XYZ and rule 2 will then be applied to the same input   stream data.  That is, since the complete rule 1 was not successfully   applied, then the input stream pointer is not advanced.Anderson, et al.                                               [Page 17]RFC 138               Data Reconfiguration Service          April 1971IV.  EXAMPLESREMARKS   The following examples (forms and also single rules) are simple   representative uses of the Form Machine.  The examples are expressed   in a term-per-line format only to aid the explanation.  Typically, a   single rule might be written as a single line.FIELD INSERTION

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -