blob: 1138c97c6f36c208d2c8a4496513bf7f98957df4 [file] [log] [blame]
import java_cup.runtime.*;
%%
%class SCFbLexer
%public
%unicode
%cup
%cupdebug
%state SCF1
%state SCF2
%state SCF3
%state EQ3
%state LENXVALUE
%state INTVALUE
%state FLOATVALUE
%state FLOATVALUE3
%state IGNOREALL
%standalone
%8bit
/* ___________________________________________
Copied verbatim into generated lexer class:
*/
%{
public static boolean DEBUG = false;
%}
LineTerminator = \r|\n|\r\n
InputCharacter = [^\r\n]
WhiteSpace = {LineTerminator} | [ \t\f]
Comment = {TraditionalComment} | {EndOfLineComment} | {DocumentationComment}
TraditionalComment = "/*" [^*] ~"*/"
EndOfLineComment = "//" {InputCharacter}* {LineTerminator}
DocumentationComment = "/**" {CommentContent} "*"+ "/"
CommentContent = ( [^*] | \*+ [^/*] )* /* adjust syntax font-coloring */
Identifier = [:jletter:] [:jletterdigit:]*
dec_int_lit = 0 | [1-9][0-9]*
dec_int_id = [A-Za-z_][A-Za-z_0-9]*
DIGIT = [0-9]
FLOAT = [+|-]?{DIGIT}+"."{DIGIT}*(["D"|"d"|"E"|"e"]([+|-]?){DIGIT}+)?
INT = [+|-]?{DIGIT}+
BOOL = [T|F]
EQ = "="
STRING = [A-Z]+
GRAB = [^(" "|\r|\n|\r\n| \t\f)]+
%%
<YYINITIAL>{
"Closed shell SCF:" {
yybegin(SCF1);
return new Symbol(SCFbSym.FOUNDSCF);
}
"open shell SCF:" {
yybegin(SCF1);
return new Symbol(SCFbSym.FOUNDSCF);
}
.|\n {}
}
<SCF1>{
"LenX=" {
yybegin(LENXVALUE);
return new Symbol(SCFbSym.FOUNDLENX);
}
.|\n {}
}
<LENXVALUE>{
{INT} {
yybegin(SCF2);
return new Symbol(SCFbSym.LENXINT, yytext());
}
}
<SCF2>{
"SCF Done:" {
yybegin(SCF3);
return new Symbol(SCFbSym.SCFDONE);
}
.|\n {}
}
<SCF3>{
"E(RHF)" {
yybegin(EQ3);
return new Symbol(SCFbSym.ERHF);
}
"A.U. after" {return new Symbol(SCFbSym.AU);}
"cycles" {return new Symbol(SCFbSym.DUMMY);}
"Convg" {
yybegin(EQ3);
return new Symbol(SCFbSym.CONVG);
}
"-V/T" {
yybegin(EQ3);
return new Symbol(SCFbSym.MINUSVT);
}
"S**2" {
yybegin(EQ3);
return new Symbol(SCFbSym.S2);
}
"KE" {
yybegin(EQ3);
return new Symbol(SCFbSym.KE);
}
"PE" {
yybegin(EQ3);
return new Symbol(SCFbSym.PE);
}
"EE" {
yybegin(EQ3);
return new Symbol(SCFbSym.EE);
}
"Leave Link" {
yybegin(IGNOREALL);
return new Symbol(SCFbSym.LEAVE);
}
{INT} {return new Symbol(SCFbSym.INT, yytext());}
.|\n {}
}
<INTVALUE>{
{INT} {
yybegin(SCF2);
return new Symbol(SCFbSym.INT, yytext());
}
}
<FLOATVALUE>{
{FLOAT} {
yybegin(SCF2);
return new Symbol(SCFbSym.FLOAT, yytext());
}
}
<EQ3>{
{EQ} {
yybegin(FLOATVALUE3);
return new Symbol(SCFbSym.EQUALS);
}
}
<FLOATVALUE3>{
{FLOAT} {
yybegin(SCF3);
return new Symbol(SCFbSym.FLOAT, yytext());
}
}
<IGNOREALL>{
.|\n {}
}
.|\n {}