Chinaunix首页 | 论坛 | 博客
  • 博客访问: 932007
  • 博文数量: 74
  • 博客积分: 10001
  • 博客等级: 上将
  • 技术积分: 2609
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-04 19:54
文章存档

2015年(1)

2009年(2)

2008年(71)

我的朋友

分类: WINDOWS

2008-05-23 22:48:10

放在这里多少有些牵强, 不过微软的活动目录标准名称格式中遵守RFC 822, 所以我专门看了一下RFC 822的内容, 并将下面的内容贴出来, 帮助大家了解活动目录中使用RFC 822的邮件地址  

如果你看到下面内容没有对齐, 那么请复制到文本编辑器, 并使用等宽字体进行查看.

   2.  NOTATIONAL CONVENTIONS

          This specification uses an augmented Backus-Naur Form  (BNF)
     notation.  The differences from standard BNF involve naming rules
     and indicating repetition and "local" alternatives.

     2.1.  RULE NAMING

          Angle brackets ("<", ">") are not  used,  in  general.   The
     name  of  a rule is simply the name itself, rather than "".
     Quotation-marks enclose literal text (which may be  upper  and/or
     lower  case).   Certain  basic  rules  are  in uppercase, such as
     SPACE, TAB, CRLF, DIGIT, ALPHA, etc.  Angle brackets are used  in
     rule  definitions,  and  in  the rest of this  document, whenever
     their presence will facilitate discerning the use of rule names.

     2.2.  RULE1 / RULE2:  ALTERNATIVES

          Elements separated by slash ("/") are alternatives.   There-
     fore "foo / bar" will accept foo or bar.

     2.3.  (RULE1 RULE2):  LOCAL ALTERNATIVES

          Elements enclosed in parentheses are  treated  as  a  single
     element.   Thus,  "(elem  (foo  /  bar)  elem)"  allows the token
     sequences "elem foo elem" and "elem bar elem".

     2.4.  *RULE:  REPETITION

          The character "*" preceding an element indicates repetition.
     The full form is:

                              *element

     indicating at least and at most occurrences  of  element.
     Default values are 0 and infinity so that "*(element)" allows any
     number, including zero; "1*element" requires at  least  one;  and
     "1*2element" allows one or two.

     2.5.  [RULE]:  OPTIONAL

          Square brackets enclose optional elements; "[foo  bar]"   is
     equivalent to "*1(foo bar)".

     2.6.  NRULE:  SPECIFIC REPETITION

          "(element)" is equivalent to "*(element)"; that is,
     exactly    occurrences  of (element). Thus 2DIGIT is a 2-digit
     number, and 3ALPHA is a string of three alphabetic characters.

     August 13, 1982               - 3 -                      RFC #822

     Standard for ARPA Internet Text Messages

     2.7.  #RULE:  LISTS

          A construct "#" is defined, similar to "*", as follows:

                              #element

     indicating at least and at most elements, each  separated
     by  one  or more commas (","). This makes the usual form of lists
     very easy; a rule such as '(element *("," element))' can be shown
     as  "1#element".   Wherever this construct is used, null elements
     are allowed, but do not  contribute  to  the  count  of  elements
     present.   That  is,  "(element),,(element)"  is  permitted,  but
     counts as only two elements.  Therefore, where at least one  ele-
     ment  is required, at least one non-null element must be present.
     Default values are 0 and infinity so that "#(element)" allows any
     number,  including  zero;  "1#element" requires at least one; and
     "1#2element" allows one or two.

     2.8.  ; COMMENTS

          A semi-colon, set off some distance to  the  right  of  rule
     text,  starts  a comment that continues to the end of line.  This
     is a simple way of including useful notes in  parallel  with  the
     specifications.

上面主要是介绍RFC 822中定义文法使用结构, 如果有形式语言, 词法分析, 语法分析相关知识的人读起来可能会更简单, 不过都不是太难的东西. 下面是一些名称上涉及的定义:

    phrase      =  1*word                                 ; Sequence of words
    word        =  atom / quoted-string
    atom        =  1*
    quoted-string = <"> *(qtext/quoted-pair) <">; Regular qtext or
                                                          ;   quoted chars.
    qtext       =  ,               ; => may be folded
                   "\" & CR, and including
                   linear-white-space>
    quoted-pair =  "\" CHAR                               ; may quote any char
    CHAR        =                    ; (  0-177,  0.-127.)
    CTL         =                     character and DEL>                     ; (    177,     127.)
    CR          =              ; (     15,      13.)
    LF          =                     ; (     12,      10.)
    SPACE       =                        ; (     40,      32.)
    HTAB        =               ; (     11,       9.)
    <">         =                       ; (     42,      34.)
    CRLF        =  CR LF
    linear-white-space =  1*([CRLF] LWSP-char)  ; semantics = SPACE
                                             ; CRLF => folding

     6.  ADDRESS SPECIFICATION

     6.1.  SYNTAX

     address     =  mailbox                      ; one addressee
                 /  group                        ; named list

     group       =  phrase ":" [#mailbox] ";"

     mailbox     =  addr-spec                    ; simple address
                 /  phrase route-addr            ; name & addr-spec

     route-addr  =  "<" [route] addr-spec ">"

     route       =  1#("@" domain) ":"           ; path-relative

     addr-spec   =  local-part "@" domain        ; global address

     local-part  =  word *("." word)             ; uninterpreted
                                                 ; case-preserved

     domain      =  sub-domain *("." sub-domain)

     sub-domain  =  domain-ref / domain-literal

     domain-ref  =  atom                         ; symbolic reference

阅读(1300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~