- package org.ksatechnology.aigedit.dom_old;
- import beaver.*;
- import org.ksatechnology.aigedit.dom_old.HLSLParser.Terminals;
- %%
- %class HLSLScanner
- %extends Scanner
- %unicode
- %function nextToken
- %type Symbol
- %yylexthrow Scanner.Exception
- %line
- %column
- %{
- StringBuffer sb=new StringBuffer();
- public Symbol token(short id){return token(id,null);}
- public Symbol token(short id,Object v){return new Symbol(id,yyline+1,yycolumn+1,v);}
- %}
- %eofval{
- return token(Terminals.EOF);
- %eofval}
- LineTerminator=\r|\n|\r\n
- InputCharacter=[^\r\n]
- Whitespace={LineTerminator} | [ \t]
- Comment="//"{InputCharacter}* {LineTerminator}
- %state STRING
- %%
- <YYINITIAL>{
- "#" {return token(Terminals.HASH); }
- \" { sb.setLength(0);yybegin(STRING); }
- "[" { return token(Terminals.LBRACK); }
- "]" { return token(Terminals.RBRACK); }
- "(" { return token(Terminals.LPAREN); }
- ")" { return token(Terminals.RPAREN); }
- "<" { return token(Terminals.LANGLE); }
- ">" { return token(Terminals.RANGLE); }
- "," { return token(Terminals.COMMA); }
- ";" { return token(Terminals.SEMI); }
- "-"? [:digit:] [:digit:]* "." [:digit:] [:digit:]* { return token(Terminals.FLOAT,new Float(yytext())); }
- "-"? [:digit:] [:digit:]* { return token(Terminals.INT,new Integer(yytext())); }
- [:letter:] ([:letter:]|[:digit:]|_|"/"|"\\"|"."|"-")* { return token(Terminals.NAME,yytext()); }
- {Comment}|{Whitespace} { /*ignore*/ }
- }
- <STRING>{
- \" { yybegin(YYINITIAL);return token(Terminals.STRING,sb.toString()); }
- [^\r\n\"] { sb.append(yytext()); }
- "\\\"" { sb.append('\"'); }
- //{LineTerminator} { throw new Scanner.Exception(yyline+1,yycolumn+1,"Unterminated string at end of line: "+yytext()); }
- }
- .|\n {throw new Scanner.Exception(yyline+1,yycolumn+1,"Unrecognised character:"+yytext()); }