// This JLex file was machine-generated by the BNF converter
package se.chalmers.cs.gf.CFG;

import java_cup.runtime.*;
%%
%cup
%unicode
%line
%public
%{
  String pstring = new String();
  public int line_num() { return (yyline+1); }
  public String buff() { return new String(yy_buffer,yy_buffer_index,10).trim(); }
%}
LETTER = ({CAPITAL}|{SMALL})
CAPITAL = [A-Z\xC0-\xD6\xD8-\xDE]
SMALL = [a-z\xDF-\xF6\xF8-\xFF]
DIGIT = [0-9]
IDENT = ({LETTER}|{DIGIT}|['_])
%state COMMENT
%state CHAR
%state CHARESC
%state CHAREND
%state STRING
%state ESCAPED
%%
<YYINITIAL>; { return new Symbol(sym._SYMB_0); }
<YYINITIAL>: { return new Symbol(sym._SYMB_1); }
<YYINITIAL>\. { return new Symbol(sym._SYMB_2); }
<YYINITIAL>-> { return new Symbol(sym._SYMB_3); }
<YYINITIAL>_ { return new Symbol(sym._SYMB_4); }
<YYINITIAL>\[ { return new Symbol(sym._SYMB_5); }
<YYINITIAL>\] { return new Symbol(sym._SYMB_6); }
<YYINITIAL>, { return new Symbol(sym._SYMB_7); }
<YYINITIAL>end { return new Symbol(sym._SYMB_8); }
<YYINITIAL>grammar { return new Symbol(sym._SYMB_9); }
<YYINITIAL>startcat { return new Symbol(sym._SYMB_10); }

<YYINITIAL>'([^'\\]|\\['\\])*' { return new Symbol(sym.SingleQuoteString, yytext().intern()); }

<YYINITIAL>"\"" { yybegin(STRING); }
<STRING>\\ { yybegin(ESCAPED); }
<STRING>\" { String foo = pstring; pstring = new String(); yybegin(YYINITIAL); return new Symbol(sym._STRING_, foo.intern()); }
<STRING>.  { pstring += yytext(); }
<ESCAPED>n { pstring +=  "\n"; yybegin(STRING); }
<ESCAPED>\" { pstring += "\""; yybegin(STRING); }
<ESCAPED>\\ { pstring += "\\"; yybegin(STRING); }
<ESCAPED>t  { pstring += "\t"; yybegin(STRING); }
<ESCAPED>.  { pstring += yytext(); yybegin(STRING); }



<YYINITIAL>{DIGIT}+ { return new Symbol(sym._INTEGER_, new Integer(yytext())); }
<YYINITIAL>{LETTER}{IDENT}* { return new Symbol(sym._IDENT_, yytext().intern()); }
<YYINITIAL>[ \t\r\n\f] { /* ignore white space. */ }