; ABNF definitions for PWG 5101.1-2023: PWG Media Standardized Names v2.1 (MSN) ; ; Last Update: April 28, 2023 ; ; The ABNF definitions contained herein, if different from the definitions in ; the specification, supercede those present in the specification. ; ; NOTE: This ABNF allows for a mix of uppercase and lowercase letters in ; names, however specific bindings such as the Internet Printing Protocol ; only allow for lowercase letters. ; ; 3 Media Type Names type-name = custom-type-name / derived-type-name / standard-type-name / vendor-type-name custom-type-name = "custom-" base-name derived-type-name = "derived-" base-name "_" ( base-name / custom-type-name / vendor-type-name ) standard-type-name = keyword vendor-type-name = (dns-name / smi-name) "-" base-name ; 4 Color Names color-name = custom-color-name / standard-color-name / vendor-color-name custom-color-name = "custom-" base-name *( "_" red-color green-color blue-color [ alpha-color ] ) standard-color-name = keyword vendor-color-name = (dns-name / smi-name) "-" base-name *( "_" red-color green-color blue-color [ alpha-color ] ) red-color = 2HEXDIG green-color = 2HEXDIG blue-color = 2HEXDIG alpha-color = 2HEXDIG ; 5 Media Size Names media-size-self-describing-name = media-size-name / "choice" 2*( "_" media-size-name ) media-size-name = class-in "_" size-name "_" width-dim "x" length-dim "in" / class-mm "_" size-name "_" width-dim "x" length-dim "mm" / "disc_" size-name "_" inner-dim "x" outer-dim "mm" class-in = "custom" / "na" / "asme" / "roc" / "oe" / "roll" class-mm = "custom" / "iso" / "jis" / "jpn" / "prc" / "om" / "roll" size-name = base-name width-dim = dim length-dim = dim / "0" inner-dim = dim outer-dim = dim dim = integer-part [fraction-part] / "0" fraction-part integer-part = non-zero-digit *DIGIT fraction-part = "." *DIGIT non-zero-digit class-name = ( ALPHA / DIGIT ) *( ALPHA / DIGIT / "." ) ; 6 Media Coating Names coating-name = custom-coating-name / standard-coating-name / vendor-coating-name custom-coating-name = "custom-" base-name standard-coating-name = keyword vendor-coating-name = (dns-name / smi-name) "-" base-name ; 7 Media Source Names source-name = custom-source-name / standard-source-name / vendor-source-name custom-source-name = "custom-" base-name standard-source-name = keyword vendor-source-name = (dns-name / smi-name) "-" base-name ; 8 Media Tooth Names tooth-name = custom-tooth-name / standard-tooth-name / vendor-tooth-name custom-tooth-name = "custom-" base-name standard-tooth-name = keyword vendor-tooth-name = (dns-name / smi-name) "-" base-name ; Common rules base-name = ( ALPHA / DIGIT ) *( ALPHA / DIGIT / "-" / "." ) dns-name = 1*ALPHA 1*( "." 1*( ALPHA / DIGIT / "-" ) ) smi-name = "smi" 1*DIGIT keyword = ALPHA 1*( ALPHA / DIGIT / "-" / "_" / ".") non-zero-digit = %x31-39 ; EOF