2018-01-17 15:56:57 +01:00
|
|
|
/* Parses basis sets GAMESS format */
|
2017-12-30 19:12:20 +01:00
|
|
|
|
2017-12-30 19:06:07 +01:00
|
|
|
%{
|
|
|
|
|
|
|
|
%}
|
|
|
|
|
|
|
|
%token <string> ELEMENT
|
|
|
|
%token <char> ANG_MOM
|
|
|
|
%token <int> INTEGER
|
|
|
|
%token <float> FLOAT
|
|
|
|
%token SPACE
|
|
|
|
%token EOL
|
|
|
|
%token EOF
|
|
|
|
|
|
|
|
%start input
|
2018-01-17 15:56:57 +01:00
|
|
|
%type <Basis.basis_set> input
|
2017-12-30 19:06:07 +01:00
|
|
|
|
|
|
|
%% /* 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 { Basis.{exponent=$2 ; coefficient=$3 } }
|
|
|
|
|
|
|
|
|
2018-01-17 15:56:57 +01:00
|
|
|
|