Полуэмпирические формулы

Posted on January 29, 2016 with tags: химия.

Полуэмпирические формулы могут содержать три оротогональных компонента: заряды фрагментов, функциональные группы и плейсхолдеры.

quantifier    = nat > 1

signum        = '+' | '-'

charge        = '(' '+' + ')' | '(' '-' + ')' | '(' quantifier signum ')' | '(' signum quantifier ')'

isotope       = '[' nat atom ']' | '[' atom ']'

placeholder   = '[' [A..z][a..z]* `notElem` element table ']'

              | '[' [A..z][a..z0..9]* ']'

atom          = [A..Z][a..z]{0,2} `elem` element table

linker        = '-' | '=' | '#'

halfempirical = linker{0,1} node linker{0,1} rest*

rest          = node linker{0,1}

unchargednode = isotope quantifier{0,1}

              | atom quantifier{0,1}

              | '(' linker{0,1} unchargednode  ')' quantifier{0,1}

node          = isotope charge{0,1} quantifier{0,1}

              | atom charge{0,1} quantifier{0,1}

              | '(' halfempirical ')' charge{0,1} quantifier{0,1}