/* Parses basis sets GAMESS format */ %{ %} %token ELEMENT %token ANG_MOM %token INTEGER %token FLOAT %token SPACE %token EOL %token EOF %start input %type input %% /* Grammar rules and actions follow */ input: | basis { $1 } | EOL input { $2 } basis: | element shell_array EOL { ($1, $2) } | element shell_array EOF { ($1, $2) } element: | ELEMENT { $1 } shell_array: | shell_list { Array.of_list @@ List.rev $1 } shell_list: | { [] } | shell_list shell { $2 :: $1 } shell: | ANG_MOM INTEGER EOL primitive_list { (Angular_momentum.of_char $1, Array.of_list @@ List.rev $4 ) } primitive_list: | { [] } | primitive_list primitive { $2 :: $1 } primitive: | INTEGER FLOAT FLOAT EOL { General_basis.{exponent=$2 ; coefficient=$3 } }