org.openscience.cdk.smiles.smarts.parser.ASTStart |
SMARTSParser.Start() |
Start ::= <ReactionExpression> <#_WS>
ReactionExpression ::= <GroupExpression>? (">" <GroupExpression>? ">" <GroupExpression>?)?
GroupExpression ::= ["("] <SmartsExpresion> [")"] ( "." ["("] <SmartsExpression> [")"] )*
SmartsExpression ::= <AtomExpression> (
( [ <LowAndBond> ] ( <Digit> | <AtomExpression> ) ) |
( "(" [ <LowAndBond> ] <SmartsExpression> ")" ) )*
AtomExpression ::= ( "[" [ <AtomicMass> ] <LowAndExpression> [:<Digit>+] "]" ) | <ExplicitAtomExpression>
LowAndBond ::= <OrBond> [ ";" <AndBond> ]
OrBond ::= <ExplicitHighAndBond> [ "," <OrBond> ]
ExplicitHighAndBond ::= <ImplicitHighAndBond> [ "&" <ExplicitHighAndBond> ]
ImplicitHighAndBond ::= <NotBond> [ <ImplicitHighAndBond> ]
NotBond ::= [ "!" ] <SimpleBond>
SimpleBond ::= "/" | "\\" | "/?" | "\\?" | "=" | "#" | "~" | "@"
ExplicitAtomExpression ::= [ "B" | "C" | "N" | "O" | "P" | "S" | "F" | "CL" | "BR" | "I"
| "c" | "o" | "n" | "*" | "A" | "a" | "p" | "as" | "se" ]
LowAndExpression ::= <OrExpression> ( ";" <LowAndExpression> )?
OrExpression ::= <ExplicitHighAndExpression> ( "," <OrExpression> ) ?
ExplicitHighAndExpression ::= <ImplicitHighAndExpression> ( "&" <ExplicitHighAndExpression> )?
ImplicitHighAndExpression ::= <NotExpression> ( <ImplicitHighAndExpression> ) ?
NotExpression ::= "!" ( <PrimitiveAtomExpression> | <RecursiveSmartsExpression> )
RecursiveSmartsExpression ::= "$" "(" <SmartsExpression> ")"
PrimitiveAtomExpression ::= <AtomicMass> | <NonHydrogenElement> | "*" | "A" | "a" | "D" (<Digits>)? | "H" (<Digits>)? | "h" (<Digits>)?
| "R" (<Digit>+)? | "r" (<Digit>+)? | "v" (<Digit>+)? | "#X" | "G" (<DIGIT>+)
| "X" (<Digit>+)? | "x" (<Digit>+)? | "^" (<DIGIT>)
| ("+" | "-") (<Digit>+)? | "#" (<Digit>+) | "@" | "@@" | <Digit>+
Digit ::= ( "0" - "9")
NonHydrogenElement ::= [ "HE" | "LI" | "BE" | "NE" | "NA" | "MG" | "AL" | "SI" | "AR" | "CA" | "SC" |
"TI" | "CR" | "MN" | "FE" | "CO" | "NI" | "CU" | "ZN" | "GA" | "GE" | "AS" |
"SE" | "BR" | "KR" | "RB" | "SR" | "ZR" | "NB" | "MO" | "TC" | "RU" | "RH" |
"PD" | "AG" | "CD" | "IN" | "SN" | "SB" | "TE" | "XE" | "CS" | "BA" | "LA" |
"HF" | "TA" | "RE" | "OS" | "IR" | "PT" | "AU" | "HG" | "TL" | "PB" | "BI" |
"PO" | "AT" | "RN" | "FR" | "RA" | "AC" | "TH" | "PA" |
"B" | "C" | "N" | "O" | "F" | "P" | "S" | "K" | "V" | "Y" | "I" | "U" |
"c" | "o" | "n" | "p" | "as" | "se" ]
|