Simplified SHEBANG comment detection

* %line & %column removed (zzCurrentPos used instead)
* jflex cmd arguments reverted
This commit is contained in:
Andrey Breslav
2012-05-29 11:41:54 +04:00
parent 85cffd9e90
commit 0b33877144
3 changed files with 177 additions and 239 deletions
-3
View File
@@ -24,10 +24,7 @@
jvmargs="-Xmx512M"
fork="true"
failonerror="true">
<arg value="-charat"/>
<!-- generates invalid code when %line option is on
<arg value="-sliceandcharat"/>
-->
<arg value="-skel"/>
<arg value="@{skeleton}"/>
<arg value="-d"/>
@@ -12,8 +12,6 @@ import org.jetbrains.jet.lexer.JetTokens;
%unicode
%class _JetLexer
%implements FlexLexer
%column
%line
%{
private static final class State {
@@ -34,9 +32,6 @@ import org.jetbrains.jet.lexer.JetTokens;
private final Stack<State> states = new Stack<State>();
private int lBraceCount;
private int yyline;
private int yycolumn;
private int commentStart;
private int commentDepth;
@@ -219,7 +214,7 @@ LONG_TEMPLATE_ENTRY_END=\}
{EOL_COMMENT} { return JetTokens.EOL_COMMENT; }
{SHEBANG_COMMENT} {
if (yyline == 0 && yycolumn == 0) {
if (zzCurrentPos == 0) {
return JetTokens.SHEBANG_COMMENT;
}
else {
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 5/28/12 10:57 PM */
/* The following code was generated by JFlex 1.4.3 on 5/29/12 11:33 AM */
package org.jetbrains.jet.lexer;
@@ -13,8 +13,8 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 5/28/12 10:57 PM from the specification file
* <tt>/Users/yozh/devel/jb/jet/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
* on 5/29/12 11:33 AM from the specification file
* <tt>/Users/abreslav/work/kotlin/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
class _JetLexer implements FlexLexer {
/** initial size of the lookahead buffer */
@@ -609,9 +609,6 @@ class _JetLexer implements FlexLexer {
private final Stack<State> states = new Stack<State>();
private int lBraceCount;
private int yyline;
private int yycolumn;
private int commentStart;
private int commentDepth;
@@ -834,57 +831,6 @@ class _JetLexer implements FlexLexer {
while (true) {
zzMarkedPosL = zzMarkedPos;
boolean zzR = false;
for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
zzCurrentPosL++) {
switch (zzBufferL.charAt(zzCurrentPosL)) {
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yyline++;
yycolumn = 0;
zzR = false;
break;
case '\r':
yyline++;
yycolumn = 0;
zzR = true;
break;
case '\n':
if (zzR)
zzR = false;
else {
yyline++;
yycolumn = 0;
}
break;
default:
zzR = false;
yycolumn++;
}
}
if (zzR) {
// peek one character ahead if it is \n (if we have counted one line too much)
boolean zzPeek;
if (zzMarkedPosL < zzEndReadL)
zzPeek = zzBufferL.charAt(zzMarkedPosL) == '\n';
else if (zzAtEOF)
zzPeek = false;
else {
boolean eof = zzRefill();
zzEndReadL = zzEndRead;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
if (eof)
zzPeek = false;
else
zzPeek = zzBufferL.charAt(zzMarkedPosL) == '\n';
}
if (zzPeek) yyline--;
}
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
@@ -896,7 +842,7 @@ class _JetLexer implements FlexLexer {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = zzBufferL.charAt(zzCurrentPosL++);
zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++);
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
@@ -916,7 +862,7 @@ class _JetLexer implements FlexLexer {
break zzForAction;
}
else {
zzInput = zzBufferL.charAt(zzCurrentPosL++);
zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++);
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
@@ -1170,8 +1116,178 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.QUEST ;
}
case 159: break;
case 70:
{ pushState(DOC_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 160: break;
case 62:
{ return JetTokens.OROR ;
}
case 161: break;
case 21:
{ return JetTokens.PERC ;
}
case 162: break;
case 73:
{ return JetTokens.EXCLEQEQEQ;
}
case 163: break;
case 63:
{ return JetTokens.PERCEQ ;
}
case 164: break;
case 45:
{ return JetTokens.RANGE ;
}
case 165: break;
case 1:
{ return TokenType.BAD_CHARACTER;
}
case 166: break;
case 64:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 167: break;
case 71:
{ return JetTokens.NOT_IS;
}
case 168: break;
case 15:
{ return JetTokens.MUL ;
}
case 169: break;
case 23:
{ return JetTokens.RBRACKET ;
}
case 170: break;
case 60:
{ return JetTokens.PLUSPLUS ;
}
case 171: break;
case 41:
{ pushState(BLOCK_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 172: break;
case 86:
{ return JetTokens.THIS_KEYWORD ;
}
case 173: break;
case 9:
{ return JetTokens.DOT ;
}
case 174: break;
case 27:
{ return JetTokens.SEMICOLON ;
}
case 175: break;
case 51:
{ return JetTokens.IF_KEYWORD ;
}
case 176: break;
case 66:
{ return JetTokens.ESCAPE_SEQUENCE;
}
case 177: break;
case 31:
{ popState(); return JetTokens.CLOSING_QUOTE;
}
case 178: break;
case 18:
{ return JetTokens.EQ ;
}
case 179: break;
case 5:
{ return JetTokens.AT ;
}
case 180: break;
case 76:
{ return JetTokens.AS_SAFE;
}
case 181: break;
case 24:
{ return JetTokens.LPAR ;
}
case 182: break;
case 10:
{ return JetTokens.MINUS ;
}
case 183: break;
case 100:
{ return JetTokens.FALSE_KEYWORD ;
}
case 184: break;
case 88:
{ return JetTokens.TYPE_KEYWORD ;
}
case 185: break;
case 67:
{ commentDepth++;
}
case 186: break;
case 77:
{ return JetTokens.FUN_KEYWORD ;
}
case 187: break;
case 49:
{ return JetTokens.IS_KEYWORD ;
}
case 188: break;
case 30:
{ popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE;
}
case 189: break;
case 34:
{ lBraceCount++; return JetTokens.LBRACE;
}
case 190: break;
case 85:
{ yypushback(3); return JetTokens.EXCL;
}
case 191: break;
case 42:
{ return JetTokens.DIVEQ ;
}
case 192: break;
case 90:
{ return JetTokens.ELSE_KEYWORD ;
}
case 193: break;
case 53:
{ return JetTokens.AS_KEYWORD ;
}
case 194: break;
case 50:
{ return JetTokens.IN_KEYWORD ;
}
case 195: break;
case 58:
{ return JetTokens.EQEQ ;
}
case 196: break;
case 83:
{ return JetTokens.EQEQEQ ;
}
case 197: break;
case 80:
{ return JetTokens.VAL_KEYWORD ;
}
case 198: break;
case 92:
{ return JetTokens.CAPITALIZED_THIS_KEYWORD ;
}
case 199: break;
case 52:
{ return JetTokens.MULTEQ ;
}
case 200: break;
case 43:
{ if (yyline == 0 && yycolumn == 0) {
{ if (zzCurrentPos == 0) {
return JetTokens.SHEBANG_COMMENT;
}
else {
@@ -1179,176 +1295,6 @@ class _JetLexer implements FlexLexer {
return JetTokens.HASH;
}
}
case 160: break;
case 70:
{ pushState(DOC_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 161: break;
case 62:
{ return JetTokens.OROR ;
}
case 162: break;
case 21:
{ return JetTokens.PERC ;
}
case 163: break;
case 73:
{ return JetTokens.EXCLEQEQEQ;
}
case 164: break;
case 63:
{ return JetTokens.PERCEQ ;
}
case 165: break;
case 45:
{ return JetTokens.RANGE ;
}
case 166: break;
case 1:
{ return TokenType.BAD_CHARACTER;
}
case 167: break;
case 64:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 168: break;
case 71:
{ return JetTokens.NOT_IS;
}
case 169: break;
case 15:
{ return JetTokens.MUL ;
}
case 170: break;
case 23:
{ return JetTokens.RBRACKET ;
}
case 171: break;
case 60:
{ return JetTokens.PLUSPLUS ;
}
case 172: break;
case 41:
{ pushState(BLOCK_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 173: break;
case 86:
{ return JetTokens.THIS_KEYWORD ;
}
case 174: break;
case 9:
{ return JetTokens.DOT ;
}
case 175: break;
case 27:
{ return JetTokens.SEMICOLON ;
}
case 176: break;
case 51:
{ return JetTokens.IF_KEYWORD ;
}
case 177: break;
case 66:
{ return JetTokens.ESCAPE_SEQUENCE;
}
case 178: break;
case 31:
{ popState(); return JetTokens.CLOSING_QUOTE;
}
case 179: break;
case 18:
{ return JetTokens.EQ ;
}
case 180: break;
case 5:
{ return JetTokens.AT ;
}
case 181: break;
case 76:
{ return JetTokens.AS_SAFE;
}
case 182: break;
case 24:
{ return JetTokens.LPAR ;
}
case 183: break;
case 10:
{ return JetTokens.MINUS ;
}
case 184: break;
case 100:
{ return JetTokens.FALSE_KEYWORD ;
}
case 185: break;
case 88:
{ return JetTokens.TYPE_KEYWORD ;
}
case 186: break;
case 67:
{ commentDepth++;
}
case 187: break;
case 77:
{ return JetTokens.FUN_KEYWORD ;
}
case 188: break;
case 49:
{ return JetTokens.IS_KEYWORD ;
}
case 189: break;
case 30:
{ popState(); yypushback(1); return JetTokens.DANGLING_NEWLINE;
}
case 190: break;
case 34:
{ lBraceCount++; return JetTokens.LBRACE;
}
case 191: break;
case 85:
{ yypushback(3); return JetTokens.EXCL;
}
case 192: break;
case 42:
{ return JetTokens.DIVEQ ;
}
case 193: break;
case 90:
{ return JetTokens.ELSE_KEYWORD ;
}
case 194: break;
case 53:
{ return JetTokens.AS_KEYWORD ;
}
case 195: break;
case 50:
{ return JetTokens.IN_KEYWORD ;
}
case 196: break;
case 58:
{ return JetTokens.EQEQ ;
}
case 197: break;
case 83:
{ return JetTokens.EQEQEQ ;
}
case 198: break;
case 80:
{ return JetTokens.VAL_KEYWORD ;
}
case 199: break;
case 92:
{ return JetTokens.CAPITALIZED_THIS_KEYWORD ;
}
case 200: break;
case 52:
{ return JetTokens.MULTEQ ;
}
case 201: break;
case 13:
{ return JetTokens.LBRACE ;