22 * Text up to the first is copied verbatim into the created source file.
33 * Used for package and import statements. (we don't need any here)
44 */
5- import java_cup.runtime.Symbol ;
5+ import common.RelationRepository ; import java_cup.runtime.Symbol ;
66import java_cup.runtime.ComplexSymbolFactory ;
77import java_cup.runtime.ComplexSymbolFactory.Location ;
88import java.lang.* ;
@@ -33,10 +33,7 @@ import java.lang.*;
3333/* Code in the next section is copied into the generated lexer class.
3434 */
3535%{
36- /* public TestLexer(ComplexSymbolFactory sf, java.io.InputStream is){
37- this(is);
38- symbolFactory = sf;
39- }*/
36+
4037 public TestLexer(ComplexSymbolFactory sf, java.io. Reader reader){
4138 this (reader);
4239 symbolFactory = sf;
@@ -73,7 +70,7 @@ import java.lang.*;
7370 */
7471
7572VARIABLE = [ a- z] +( [ a- z] | [ 0- 9] )*
76- RELATION = "*" [ A- Z] + "*"
73+ // RELATION = [A-Z]+([A-Z]|[0-9])*
7774SET_VAR = [ A- Z] +( [ A- Z] | [ 0- 9] )*
7875BRACKET_L = "{"
7976BRACKET_R = "}"
@@ -84,25 +81,32 @@ NUMBER = [1-9][0-9]*
8481SET_OPERATORS = "+" | "-" | "\\ "
8582SET_DELI = ","
8683SEMI = ";"
84+ DEF = "DEF:"
8785// SET_LIST = (","{WHITESPACE}*{VARIABLE})+
8886
8987%state STRING
9088
9189%%
9290
9391<YYINITIAL> "is" { return symbolFactory. newSymbol(" IS" ,sym. IS );}
94- <YYINITIAL> {VARIABLE} { return symbolFactory. newSymbol(" VARIABLE" ,sym. VAR , yytext());}
95- <YYINITIAL> {RELATION} { return symbolFactory. newSymbol(" RELATION" ,sym. REL , yytext());}
92+ <YYINITIAL> {VARIABLE} { return symbolFactory. newSymbol(" VARIABLE" ,sym. VAR , yytext());}
93+ // <YYINITIAL> {RELATION} { return symbolFactory.newSymbol("RELATION",sym.REL, yytext());}
9694<YYINITIAL> {WHITESPACE} { /* ignore*/ }
9795<YYINITIAL> {BRACKET_L} { return symbolFactory. newSymbol(" BRACKET_L" ,sym. L_BRA );}
9896<YYINITIAL> {BRACKET_R} { return symbolFactory. newSymbol(" BRACKET_R" ,sym. R_BRA );}
9997<YYINITIAL> {GT} { return symbolFactory. newSymbol(" GT" ,sym. GT );}
10098<YYINITIAL> {LT} { return symbolFactory. newSymbol(" LT" ,sym. LT );}
10199<YYINITIAL> {NUMBER} { return symbolFactory. newSymbol(" NUMBER" ,sym. NUMBER , Integer . parseInt(yytext()));}
102- <YYINITIAL> {SET_VAR} { return symbolFactory. newSymbol(" SET_VAR" ,sym. SET_VAR , yytext());}
100+ <YYINITIAL> {SET_VAR} { String capsName = yytext();
101+ if (RelationRepository . isThereRelation(capsName)){
102+ return symbolFactory. newSymbol(" SET_VAR" ,sym. REL , yytext());
103+ }else {
104+ return symbolFactory. newSymbol(" SET_VAR" ,sym. SET_VAR , capsName);
105+ }}
103106<YYINITIAL> {SET_OPERATORS} { return symbolFactory. newSymbol(" SET_OPERATORS" ,sym. SET_OPERATORS , yytext());}
104107<YYINITIAL> {SET_DELI} { return symbolFactory. newSymbol(" SET_DELI" ,sym. SET_DELI );}
105108<YYINITIAL> {SEMI} { return symbolFactory. newSymbol(" SEMI" ,sym. SEMI );}
109+ <YYINITIAL> {DEF} { return symbolFactory. newSymbol(" DEF" ,sym. REL_DEFINITION );}
106110
107111[^] { emit_warning(" Unrecognized character '" + yytext()+ " ' -- ignored" ); }
108112// [^] { throw new RuntimeException("Illegal character <" + yytext() + ">"); }
0 commit comments