source: ThirdParty/mpqc_open/src/bin/mpqc/scan.ll@ a844d8

Candidate_v1.6.1
Last change on this file since a844d8 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 3.0 KB
Line 
1%option c++ prefix="MPQCIn" yylineno
2
3%{
4
5#if !defined(SUN4)
6#include <string.h>
7#endif
8
9#include <util/misc/exenv.h>
10
11#include "mpqcin.h"
12#include "parse.h"
13
14using namespace sc;
15
16#define YY_NO_UNISTD_H
17extern "C" int MPQCInwrap();
18
19#ifndef yywrap
20# define yywrap MPQCInwrap
21#endif
22
23static inline char *
24cstr(char *yytext)
25{
26 if (MPQCIn::checking()) return 0;
27 char *ret;
28 int strlenyytext = strlen(yytext);
29 ret = (char *)malloc(strlenyytext+1);
30 if (!ret) {
31 ExEnv::outn() << "MPQC: malloc failed"
32 << endl;
33 abort();
34 }
35 strcpy(ret,yytext);
36 return ret;
37}
38
39%}
40string [A-Za-z0-9_\.*+-/']*
41qstring \"[^"\n]+\"
42%%
43"!" { return T_NOT; }
44"ebc" { return T_EBC; }
45"gbc" { return T_GBC; }
46"cabs" { return T_CABS; }
47"cabs+" { return T_CABSP; }
48"abs" { return T_ABS; }
49"abs+" { return T_ABSP; }
50"memory" { return T_MEMORY; }
51"molecule" { return T_MOLECULE; }
52"multiplicity" { return T_MULTIPLICITY; }
53"optimize" { return T_OPTIMIZE; }
54"gradient" { return T_GRADIENT; }
55"frequencies" { return T_FREQUENCIES; }
56"yes" { yylval.i = 1; return T_BOOL; }
57"no" { yylval.i = 0; return T_BOOL; }
58"charge" { return T_CHARGE; }
59"method" { return T_METHOD; }
60"basis" { return T_BASIS; }
61"auxbasis" { return T_AUXBASIS; }
62"cartesian" { return T_CARTESIAN; }
63"internal" { return T_INTERNAL; }
64"redundant" { return T_REDUNDANT; }
65"restart" { return T_RESTART; }
66"checkpoint" { return T_CHECKPOINT; }
67"xc" { return T_XC; }
68"symmetry" { return T_SYMMETRY; }
69"bohr" { return T_BOHR; }
70"angstrom" { return T_ANGSTROM; }
71"docc" { return T_DOCC; }
72"socc" { return T_SOCC; }
73"alpha" { return T_ALPHA; }
74"beta" { return T_BETA; }
75"frozen_docc" { return T_FROZEN_DOCC; }
76"frozen_uocc" { return T_FROZEN_UOCC; }
77"grid" { return T_GRID; }
78"=" { return T_EQUALS; }
79":" { return T_COLON; }
80"(" { return T_BEG_OPT; }
81")" { return T_END_OPT; }
82"<" { return T_OO_INPUT_KEYWORD; }
83"mpqc" { return T_OO_INPUT_KEYWORD; }
84{string} { yylval.str = cstr(yytext);
85 return T_STRING;
86 }
87{qstring} { if (MPQCIn::checking()) return T_STRING;
88 yylval.str = (char *)malloc(strlen(yytext));
89 if (!yylval.str) {
90 ExEnv::outn() << "MPQC: {qstring} rule: malloc failed"
91 << endl;
92 abort();
93 }
94 strcpy(yylval.str,&yytext[1]);
95 yylval.str[strlen(yylval.str)-1] = '\0';
96 return(T_STRING);
97 }
98[ \t]+ ;
99%.*$ ;
100[\n\r\f] ;
101. { ExEnv::outn() << "MPQC: Illegal character: \""
102 << yytext[0] <<"\"" << endl; }
103%%
104
105int
106MPQCInwrap()
107{
108 return 1;
109}
Note: See TracBrowser for help on using the repository browser.