Connected: An Internet Encyclopedia
RFC 1630 - 4.5. BNF for specific URL schemes

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1630
Up: 4. Recommendations
Prev: 4.4. BNF of Generic URI Syntax
Next: References

### 4.5. BNF for specific URL schemes

This is a BNF-like description of the Uniform Resource Locator syntax. A vertical line "|" indicates alternatives, and [brackets] indicate optional parts. Spaces are represented by the word "space", and the vertical line character by "vline". Single letters stand for single letters. All words of more than one letter below are entities described somewhere in this description.

The current IETF URI Working Group preference is for the prefixedurl production. (Nov 1993. July 93: url).

The "national" and "punctuation" characters do not appear in any productions and therefore may not appear in URLs.

The "afsaddress" is left in as historical note, but is not a url production.

      prefixedurl            u r l : url

      url                    httpaddress | ftpaddress | newsaddress |
                             nntpaddress | prosperoaddress | telnetaddress
                             | gopheraddress | waisaddress |
                             mailtoaddress  | midaddress | cidaddress

      scheme                 ialpha

      httpaddress            h t t p :   / / hostport [  / path ] [ ?
                             search ]

      ftpaddress             f t p : / / login / path [  ftptype ]

      afsaddress             a f s : / / cellname / path

      newsaddress            n e w s : groupart

      nntpaddress            n n t p : group /  digits

      midaddress             m i d  :  addr-spec

      cidaddress             c i d : content-identifier

      mailtoaddress          m a i l t o : xalphas @ hostname

      waisaddress            waisindex | waisdoc

      waisindex              w a i s : / / hostport / database [ ? search
                             ]

      waisdoc                w a i s : / / hostport / database / wtype  /
                             wpath

      wpath                  digits = path ;  [ wpath ]

      groupart               * | group | article

      group                  ialpha [ . group ]

      article                xalphas @ host

      database               xalphas

      wtype                  xalphas

      prosperoaddress        prosperolink

      prosperolink           p r o s p e r o : / / hostport / hsoname [ %
                             0 0 version [ attributes ] ]

      hsoname                path

      version                digits

      attributes             attribute [ attributes ]

      attribute              alphanums

      telnetaddress          t e l n e t : / / login

      gopheraddress          g o p h e r : / / hostport [/ gtype  [
                             gcommand ] ]

      login                  [ user [ : password ] @ ] hostport

      hostport               host [ : port ]

      host                   hostname | hostnumber

      ftptype                A formcode | E formcode | I | L digits

      formcode               N | T | C

      cellname               hostname

      hostname               ialpha [  .  hostname ]

      hostnumber             digits . digits . digits . digits

      port                   digits

      gcommand               path

      path                   void |  segment  [  / path ]

      segment                xpalphas

      search                 xalphas [ + search ]

      user                   alphanum2 [ user ]

      password               alphanum2 [ password ]

      fragmentid             xalphas

      gtype                  xalpha

      alphanum2              alpha | digit | - | _ | . | +

      xalpha                 alpha | digit | safe | extra | escape

      xalphas                xalpha [ xalphas ]

      xpalpha                xalpha | +

      xpalphas               xpalpha [ xpalphas ]

      ialpha                 alpha [ xalphas ]

      alpha                  a | b | c | d | e | f | g | h | i | j | k |
                             l | m | n | o  | p | q | r | s | t | u | v |
                             w | x | y | z | A | B | C  | D | E | F | G |
                             H | I | J | K | L | M | N | O | P |  Q | R |
                             S | T | U | V | W | X | Y | Z

      digit                  0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

      safe                   $ | - | _ | @ | . | &  | + | -

      extra                  ! | * |  " |  ' | ( | )  | ,

      reserved               =  |  ;  |  /  |  #  | ? |  : | space

      escape                 % hex hex

      hex                    digit | a | b | c | d | e | f | A | B | C |
                             D | E | F

      national               { | } | vline | [ | ] | \ | ^ | ~

      punctuation            < | >

      digits                 digit [ digits ]

      alphanum               alpha | digit

      alphanums              alphanum [ alphanums ]

      void

       (end of URL BNF)

Next: References

Connected: An Internet Encyclopedia
RFC 1630 - 4.5. BNF for specific URL schemes