MudGuard: Interpretation Email-Syntax in RFC 5322

Hi,

aus der RFC 5322 hab ich mal ein paar Regeln für den Aufbau einer E-Mail-Adresse rausgezogen:

addr-spec       =   local-part "@" domain

local-part      =   dot-atom / quoted-string / obs-local-part

dot-atom        =   [CFWS] dot-atom-text [CFWS]

dot-atom-text   =   1*atext *("." 1*atext)

atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "`" / "{" /
                       "|" / "}" /
                       "~"

Wie muß ich das jetzt interpretieren?
Ich vermute mal, daß / für ein "exklusives oder" steht. local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.
Die eckigen Klammern schließen meiner Vermutung nach was ein, was auch wegfallen kann. dot-atom kann also eines von
CFWS dot-atom-text
dot-atom-text
CFWS dot-atom-text CFWS
dot-atom-text CFWS
sein.
Die runden Klammern vermute ich mal als Gruppierung - so daß bei dot-atom-text der * auf "." zusammen mit 1*atext angewendet wird.
1* heißt wohl: mindestens einmal das folgende Konstrukt, und * beliebig oft das folgende Konstrukt.
Damit entspräche dem 1* hier das, was bei Regulären Ausdrücken das + ist, während der * hier und im Regex dieselbe Bedeutung hätte.

Liege ich damit richtig?

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  1. Hi,

    Liege ich damit richtig?

    Ja. Sagt RFC 5234, die ich inzwischen als die zuständige ermitteln konnte ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Ich vermute mal, daß / für ein "exklusives oder" steht.

    Nein, es steht im Gleichen Sinne wie für
    Perl: (a|b)+
    und das kann sein aaaaa abbaa

    local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.

    ja aber nur deshalb weil gilt
    Perl: (a|b|c){1}

    Die eckigen Klammern schließen meiner Vermutung nach was ein, was auch wegfallen kann. dot-atom kann also eines von

    Ja, sie haben hier die Bedeutung von ()?

    Die runden Klammern vermute ich mal als Gruppierung - so daß bei dot-atom-text der * auf "." zusammen mit 1*atext angewendet wird.
    1* heißt wohl: mindestens einmal das folgende Konstrukt, und * beliebig oft das folgende Konstrukt.
    Damit entspräche dem 1* hier das, was bei Regulären Ausdrücken das + ist, während der * hier und im Regex dieselbe Bedeutung hätte.

    Liege ich damit richtig?

    Soweit ja.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hi,

      Ich vermute mal, daß / für ein "exklusives oder" steht.

      Nein, es steht im Gleichen Sinne wie für
      Perl: (a|b)+
      und das kann sein aaaaa abbaa

      Das bezweifle ich.
      Siehe RFC 5234 Abschnitt 3.2:

        
      3\.2. Alternatives: Rule1 / Rule2  
        
        
         Elements separated by a forward slash ("/") are alternatives.  
         Therefore,  
        
               foo / bar  
        
         will accept <foo> or <bar>.  
        
      

      local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.

      ja aber nur deshalb weil gilt
      Perl: (a|b|c){1}

      Hier widersprichst Du Dir doch selbst - oben soll das / noch für (foo|bar)+ stehen, hier plötzlich für (foo|bar|baz){1}

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hier widersprichst Du Dir doch selbst - oben soll das / noch für (foo|bar)+ stehen, hier plötzlich für (foo|bar|baz){1}

        / ist ein oder im genau gleichen Sinne wie die Pipe in einem RE.
        Was aber dieses oder genau bedeutet, hängt vom weiteren Kontext ab.
        (a|b)+ ist etwas anderes als (a+|b+)
        Nur im letzten Fall erhältst du aaa...a exklusiv oder bbb...b
        Im konkret gefragten Fall der Zeichenliste aber ist das / einfach der Trenner zur Definition einer Zeichenklasse.

        Exklusiv wird das "oder"  in a|b erst, wenn a != b

        in a XOR b muss b evaluiert werden. Das ist in einem "Oder" für eine Zeichenklasse oder eine Alternative nicht der Fall.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische