From 4c23ada03ef9fc5d1a5833264dbb4490a02f9c33 Mon Sep 17 00:00:00 2001 From: Humenius Date: Wed, 29 Apr 2020 12:08:30 +0200 Subject: [PATCH] [03 - JFlex Scanner] Get TestASScanner3 to work --- .../jflexasscanner/JFlexASScanner.class | Bin 11107 -> 11345 bytes .../dhbw/compiler/jflexasscanner/NumToken.class | Bin 659 -> 592 bytes .../compiler/jflexasscanner/JFlexASScanner.flex | 19 ++-- .../compiler/jflexasscanner/JFlexASScanner.java | 19 ++-- .../jflexasscanner/JFlexASScanner.java~ | 107 ++++++++++-------- .../dhbw/compiler/jflexasscanner/NumToken.java | 7 +- 6 files changed, 85 insertions(+), 67 deletions(-) diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.class b/ÜB-Praxis-JFlex Scanner für AS-Leer/bin/de/dhbw/compiler/jflexasscanner/JFlexASScanner.class index 65a66441f702f8ef5d06efb506aa2296c4eb8ef1..8aa07fc045c43641775a1fd299b4c96570afb4a4 100644 GIT binary patch literal 11345 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 G#{U46DbeWw literal 11107 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 F(I2fpC1L;o literal 659 zcmah`O;5r=6rAP5LM<^#H0!F0&-u<3dOP|r6@njix)K>`~m(b z<6A!B0S%Ykd2eTD=Iwrce|!SCz_Er1gV_;Qr`LY69Dgu$JrP*_drwUGXykAysk|Kz zn*M{38e$A5tJqU2!`h`Q-SCQG$E^4HBey&*yH+C%T-mMJcBRD-yY@RmM-)i|ap(*M z)BcZ}uDeoDkhTb#yzL2wY~6Rb*W!Vz>UlF3_S_LewZ1ClVx}6!2*o5+dP_0s%p+R{ zX4629?~MnNA<-3Ki+f}0N6m_@gJv{Pz%GMEN6o2P&a5o!>DWg}Ly;l#>t)MObVXp` z0EZ+#I_HJi=g}i1}c(U diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex index 9e03609..b711ddd 100644 --- a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex +++ b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.flex @@ -32,8 +32,9 @@ package de.dhbw.compiler.jflexasscanner; int decimalPlace = 0; int exponent = 0; - private Token intToken(int value) { - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + private Token numToken(String numberString, int value) { + //return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return new NumToken(numberString, yyline + 1, yycolumn + 1 - numberString.length(), intValue); } %} @@ -66,16 +67,16 @@ Power = \^{Numbers} { {Numbers} { intValue = intValue * 10 + yycharat(0) - '0'; numberString += yytext(); } - {SmallChars} | {CapitalChars} { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1); } + {SmallChars} | {CapitalChars} { yybegin(ID); idValue = numberString; yypushback(1); } <> { yybegin(YYINITIAL); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); } + return numToken(numberString, intValue); } {Dot} { yybegin(FRAC); fracValue = intValue; System.out.println("BEGIN FRAC <"+yytext()+">"); numberString += yytext(); } [^] { yybegin(YYINITIAL); yypushback(1); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); } + return numToken(numberString, intValue); } } { @@ -91,7 +92,7 @@ Power = \^{Numbers} {Numbers} { fracValue += (yycharat(0) - '0') * Math.pow(10, -++decimalPlace); numberString += yytext(); } <> { yybegin(YYINITIAL); return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); } - \^{Numbers} { System.out.println("BEGIN EXP <"+yytext()+">"); yybegin(EXP); numberString += yytext(); exponent = yycharat(0) - '0'; } + \^{Numbers} { yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent); } [^] { yybegin(YYINITIAL); yypushback(1); return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); } @@ -100,10 +101,12 @@ Power = \^{Numbers} { {Numbers} { numberString += yytext(); exponent = exponent * 10 + yycharat(0) - '0'; } <> { yybegin(YYINITIAL); - return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.exp(exponent)); } + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); } [^] { yybegin(YYINITIAL); yypushback(1); - return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.exp(exponent)); } + System.out.println("numberString: " + numberString); + System.out.println("fracValue: " + fracValue + " / exponent: " + exponent); + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); } } [^] { System.out.println("Illegal character <" + yytext() + ">"); diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java index 96a4c93..74dba4c 100644 --- a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java +++ b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java @@ -256,8 +256,9 @@ public final class JFlexASScanner { int decimalPlace = 0; int exponent = 0; - private Token intToken(int value) { - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + private Token numToken(String numberString, int value) { + //return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return new NumToken(numberString, yyline + 1, yycolumn + 1 - numberString.length(), intValue); } @@ -635,7 +636,7 @@ public final class JFlexASScanner { case 30: break; case EXP: { yybegin(YYINITIAL); - return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.exp(exponent)); + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); } case 31: break; case ID: { @@ -645,7 +646,7 @@ public final class JFlexASScanner { case 32: break; case NUM: { yybegin(YYINITIAL); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return numToken(numberString, intValue); } case 33: break; default: @@ -700,7 +701,9 @@ public final class JFlexASScanner { case 10: { yybegin(YYINITIAL); yypushback(1); - return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.exp(exponent)); + System.out.println("numberString: " + numberString); + System.out.println("fracValue: " + fracValue + " / exponent: " + exponent); + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); } case 29: break; case 11: @@ -720,11 +723,11 @@ public final class JFlexASScanner { case 14: { yybegin(YYINITIAL); yypushback(1); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return numToken(numberString, intValue); } case 33: break; case 15: - { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1); + { yybegin(ID); idValue = numberString; yypushback(1); } case 34: break; case 16: @@ -739,7 +742,7 @@ public final class JFlexASScanner { } case 36: break; case 18: - { System.out.println("BEGIN EXP <"+yytext()+">"); yybegin(EXP); numberString += yytext(); exponent = yycharat(0) - '0'; + { yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent); } case 37: break; case 19: diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~ b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~ index c7bbd44..9913fd9 100644 --- a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~ +++ b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/JFlexASScanner.java~ @@ -66,10 +66,10 @@ public final class JFlexASScanner { private static final String ZZ_ACTION_PACKED_0 = "\6\0\1\1\1\2\1\3\1\4\1\3\1\5\1\6"+ "\1\7\1\10\1\11\1\10\1\12\1\13\1\14\1\15"+ - "\1\16\1\17\1\20\1\0\1\21\1\0\1\22"; + "\1\16\1\17\1\20\1\21\1\0\1\22\1\0\1\23"; private static int [] zzUnpackAction() { - int [] result = new int[28]; + int [] result = new int[29]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -97,10 +97,10 @@ public final class JFlexASScanner { "\0\0\0\14\0\30\0\44\0\60\0\74\0\44\0\110"+ "\0\44\0\44\0\124\0\44\0\44\0\44\0\44\0\44"+ "\0\140\0\44\0\44\0\44\0\44\0\44\0\44\0\44"+ - "\0\154\0\44\0\170\0\44"; + "\0\44\0\154\0\44\0\170\0\44"; private static int [] zzUnpackRowMap() { - int [] result = new int[28]; + int [] result = new int[29]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -124,11 +124,11 @@ public final class JFlexASScanner { private static final String ZZ_TRANS_PACKED_0 = "\1\7\1\10\1\11\1\12\2\7\1\13\2\11\1\14"+ - "\1\15\1\16\3\17\1\20\1\17\1\21\6\17\3\0"+ - "\1\22\24\0\2\23\2\24\2\23\3\24\3\23\2\25"+ - "\1\26\1\27\1\30\1\25\3\26\3\25\1\0\1\10"+ - "\21\0\1\31\7\0\1\32\20\0\1\33\13\0\1\34"+ - "\3\0"; + "\1\15\1\16\3\17\1\20\1\17\1\21\6\17\3\22"+ + "\1\23\10\22\14\0\2\24\2\25\2\24\3\25\3\24"+ + "\2\26\1\27\1\30\1\31\1\26\3\27\3\26\1\0"+ + "\1\10\21\0\1\32\7\0\1\33\20\0\1\34\13\0"+ + "\1\35\3\0"; private static int [] zzUnpackTrans() { int [] result = new int[132]; @@ -170,10 +170,10 @@ public final class JFlexASScanner { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\3\0\1\10\2\0\1\11\1\1\2\11\1\1\5\11"+ - "\1\1\7\11\1\0\1\11\1\0\1\11"; + "\1\1\10\11\1\0\1\11\1\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[28]; + int [] result = new int[29]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -256,8 +256,9 @@ public final class JFlexASScanner { int decimalPlace = 0; int exponent = 0; - private Token intToken(int value) { - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + private Token numToken(String numberString, int value) { + //return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return new NumToken(numberString, yyline + 1, yycolumn + 1 - numberString.length(), intValue); } @@ -632,22 +633,22 @@ public final class JFlexASScanner { yybegin(YYINITIAL); return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); } - case 29: break; + case 30: break; case EXP: { yybegin(YYINITIAL); - return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); } - case 30: break; + case 31: break; case ID: { yybegin(YYINITIAL); return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length()); } - case 31: break; + case 32: break; case NUM: { yybegin(YYINITIAL); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); + return numToken(numberString, intValue); } - case 32: break; + case 33: break; default: { return new Token(Token.EOF, "", yyline+1, yycolumn+1); } @@ -659,87 +660,95 @@ public final class JFlexASScanner { { System.out.println("Illegal character <" + yytext() + ">"); return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1); } - case 19: break; + case 20: break; case 2: { /* Ignore */ } - case 20: break; + case 21: break; case 3: { yybegin(ID); System.out.println("BEGIN ID <"+yytext()+">"); idValue = yytext(); } - case 21: break; + case 22: break; case 4: { yybegin(NUM); intValue = yycharat(0)-'0'; numberString = yytext(); } - case 22: break; + case 23: break; case 5: { return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1); } - case 23: break; + case 24: break; case 6: { return new Token(Token.RSBR, yytext(), yyline+1, yycolumn+1); } - case 24: break; + case 25: break; case 7: { return new Token(Token.COMMA, yytext(), yyline+1, yycolumn+1); } - case 25: break; + case 26: break; case 8: { yybegin(YYINITIAL); yypushback(1); return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); } - case 26: break; + case 27: break; case 9: { fracValue += (yycharat(0) - '0') * Math.pow(10, -++decimalPlace); numberString += yytext(); } - case 27: break; + case 28: break; case 10: + { yybegin(YYINITIAL); + yypushback(1); + System.out.println("numberString: " + numberString); + System.out.println("fracValue: " + fracValue + " / exponent: " + exponent); + return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); + } + case 29: break; + case 11: { numberString += yytext(); exponent = exponent * 10 + yycharat(0) - '0'; } - case 28: break; - case 11: + case 30: break; + case 12: { yybegin(YYINITIAL); yypushback(1); return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length()); } - case 29: break; - case 12: + case 31: break; + case 13: { idValue += yytext(); } - case 30: break; - case 13: + case 32: break; + case 14: { yybegin(YYINITIAL); yypushback(1); - return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length()); - } - case 31: break; - case 14: - { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1); - } - case 32: break; - case 15: - { intValue = intValue * 10 + yycharat(0) - '0'; numberString += yytext(); + return numToken(numberString, intValue); } case 33: break; + case 15: + { yybegin(ID); idValue = String.valueOf(intValue); yypushback(1); + } + case 34: break; case 16: + { intValue = intValue * 10 + yycharat(0) - '0'; numberString += yytext(); + } + case 35: break; + case 17: { yybegin(FRAC); fracValue = intValue; System.out.println("BEGIN FRAC <"+yytext()+">"); numberString += yytext(); } - case 34: break; - case 17: - { System.out.println("BEGIN EXP <"+yytext()+">");yybegin(EXP); numberString += yytext(); exponent = yycharat(0) - '0'; - } - case 35: break; + case 36: break; case 18: + { yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent); + } + case 37: break; + case 19: { return new Token(Token.NULL, yytext(), yyline+1, yycolumn+1); } - case 36: break; + case 38: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/NumToken.java b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/NumToken.java index 957e74c..f6268b2 100644 --- a/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/NumToken.java +++ b/ÜB-Praxis-JFlex Scanner für AS-Leer/src/de/dhbw/compiler/jflexasscanner/NumToken.java @@ -13,12 +13,15 @@ package de.dhbw.compiler.jflexasscanner; public class NumToken extends Token { - public NumToken(String text, int line, int column) { + private int value; + + public NumToken(String text, int line, int column, int value) { super(Token.NUM,text,line,column); + this.value = value; } int getValue() { - return Integer.parseInt(getText()); + return value; }