| import java_cup.runtime.*; |
| |
| %% |
| |
| %class MOptaLexer |
| %public |
| %unicode |
| %cup |
| %cupdebug |
| %state SCF1 |
| %state ITER |
| %state ITER2 |
| %state ITER8 |
| %state DASH |
| %state INTVALUE |
| %state ITER4 |
| %state ITER5 |
| %state ITER6 |
| %state ITER7 |
| %state ITER8 |
| %state ITER9 |
| %state ITER10 |
| %state ITER11 |
| %state ITER12 |
| %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}+ |
| INT = [+|-]?{DIGIT}+ |
| BOOL = [T|F] |
| EQ = "=" |
| STRING = [A-Z]+ |
| GRAB = [^(" "|\r|\n|\r\n| \t\f)]+ |
| |
| %% |
| |
| <YYINITIAL>{ |
| " ITER. ENERGY(OLD) ENERGY(NEW) DE GRADMAX GRADNORM GRADRMS STEPMAX STEPLEN STEPRMS" { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found START OF"); |
| yybegin(ITER); |
| return new Symbol(MOptaSym.FOUNDITER); |
| } |
| .|\n {} |
| } |
| |
| |
| <ITER>{ |
| {dec_int_lit} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found the first integer in the iteration"); |
| if (Settings.DEBUG) System.out.println(yytext()); |
| yybegin(ITER4); |
| return new Symbol(MOptaSym.INTCycle, new Integer(yytext()));} |
| |
| "Geometry written to block 1 of record 700" { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found the dash"); |
| yybegin(DASH);} |
| |
| } |
| |
| <ITER4>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found the energy"); |
| if (Settings.DEBUG) System.out.println(yytext()); |
| yybegin(ITER5); |
| return new Symbol(MOptaSym.ENERGY, new Float(yytext()));} |
| } |
| |
| <ITER5>{ |
| {FLOAT} { if (Settings.DEBUG) System.out.println("MOptaFlex: ITER5"); |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float1"); |
| yybegin (ITER6); |
| return new Symbol(MOptaSym.FLOAT1); |
| } |
| } |
| |
| <ITER6>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float2"); |
| yybegin (ITER7); |
| return new Symbol(MOptaSym.FLOAT2); |
| } |
| } |
| |
| |
| <ITER7>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float3"); |
| yybegin(ITER8); |
| return new Symbol(MOptaSym.FLOAT3);} |
| .|\n {} |
| } |
| |
| |
| |
| <ITER8>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float4"); |
| yybegin(ITER9); |
| return new Symbol(MOptaSym.FLOAT4);} |
| .|\n {} |
| } |
| |
| <ITER9>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float5"); |
| yybegin(ITER10); |
| return new Symbol(MOptaSym.FLOAT5);} |
| .|\n {} |
| } |
| |
| <ITER10>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float6"); |
| yybegin(ITER11); |
| return new Symbol(MOptaSym.FLOAT6);} |
| .|\n {} |
| } |
| |
| <ITER11>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float7"); |
| yybegin(ITER12); |
| return new Symbol(MOptaSym.FLOAT7);} |
| .|\n {} |
| } |
| |
| <ITER12>{ |
| {FLOAT} { |
| if (Settings.DEBUG) System.out.println("MOptaFlex: Found float8"); |
| yybegin(ITER); |
| return new Symbol(MOptaSym.FLOAT8);} |
| .|\n {} |
| } |
| |
| |
| |
| <DASH>{ |
| "*********************" { |
| yybegin(IGNOREALL); |
| return new Symbol(MOptaSym.SCFDONE); |
| } |
| .|\n {} |
| } |
| |
| <IGNOREALL>{ |
| .|\n {} |
| } |
| |
| .|\n {} |