/* JavaScriptLexer.java is a generated file. You probably want to * edit JavaScriptLexer.lex to make changes. Use JFlex to generate it. * To generate JavaScriptLexer.java * Install JFlex v1.3.2 or later. * Once JFlex is in your classpath run
* java JFlex.Main JavaScriptLexer.lex
* You will then have a file called JavaScriptLexer.java */ /* * This file is part of a syntax * highlighting package. * Copyright (C) 1999-2002 Stephen Ostermiller * http://ostermiller.org/contact.pl?regarding=Syntax+Highlighting * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See COPYING.TXT for details. */ package com.Ostermiller.Syntax.Lexer; import java.io.*; /** * JavaScriptLexer is a java script lexer. Created with JFlex. An example of how it is used: * *
 *  JavaScriptLexer shredder = new JavaScriptLexer(System.in);
 *  JavaScriptToken t;
 *  while ((t = shredder.getNextToken()) != null){
 *      System.out.println(t);
 *  }
 *  
*
* The tokens returned should comply with the * * Java Script Reference. * @see JavaScriptToken */ %% %public %class JavaScriptLexer %implements Lexer %function getNextToken %type Token %{ int lastToken; private int nextState=YYINITIAL; /** * next Token method that allows you to control if whitespace and comments are * returned as tokens. */ public Token getNextToken(boolean returnComments, boolean returnWhiteSpace)throws IOException{ Token t = getNextToken(); while (t != null && ((!returnWhiteSpace && t.isWhiteSpace()) || (!returnComments && t.isComment()))){ t = getNextToken(); } return (t); } /** * Prints out tokens from a file or System.in. * If no arguments are given, System.in will be used for input. * If more arguments are given, the first argument will be used as * the name of the file to use as input * * @param args program arguments, of which the first is a filename */ public static void main(String[] args) { InputStream in; try { if (args.length > 0){ File f = new File(args[0]); if (f.exists()){ if (f.canRead()){ in = new FileInputStream(f); } else { throw new IOException("Could not open " + args[0]); } } else { throw new IOException("Could not find " + args[0]); } } else { in = System.in; } JavaScriptLexer shredder = new JavaScriptLexer(in); Token t; while ((t = shredder.getNextToken()) != null) { if (t.getID() != JavaScriptToken.WHITE_SPACE){ System.out.println(t); } } } catch (IOException e){ System.out.println(e.getMessage()); } } /** * Closes the current input stream, and resets the scanner to read from a new input stream. * All internal variables are reset, the old input stream cannot be reused * (content of the internal buffer is discarded and lost). * The lexical state is set to the initial state. * Subsequent tokens read from the lexer will start with the line, char, and column * values given here. * * @param reader The new input. * @param yyline The line number of the first token. * @param yychar The position (relative to the start of the stream) of the first token. * @param yycolumn The position (relative to the line) of the first token. * @throws IOException if an IOExecption occurs while switching readers. */ public void reset(java.io.Reader reader, int yyline, int yychar, int yycolumn) throws IOException{ yyreset(reader); this.yyline = yyline; this.yychar = yychar; this.yycolumn = yycolumn; } %} %line %char %full HexDigit=([0-9a-fA-F]) Digit=([0-9]) OctalDigit=([0-7]) TetraDigit=([0-3]) NonZeroDigit=([1-9]) Letter=([a-zA-Z_$]) BLANK=([ ]) TAB=([\t]) FF=([\f]) EscChar=([\\]) CR=([\r]) LF=([\n]) EOL=({CR}|{LF}|{CR}{LF}) WhiteSpace=({BLANK}|{TAB}|{FF}|{EOL}) AnyNonSeparator=([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']) OctEscape1=({EscChar}{OctalDigit}) OctEscape2=({EscChar}{OctalDigit}{OctalDigit}) OctEscape3=({EscChar}{TetraDigit}{OctalDigit}{OctalDigit}) OctEscape=({OctEscape1}|{OctEscape2}|{OctEscape3}) UnicodeEscape=({EscChar}[u]{HexDigit}{HexDigit}{HexDigit}{HexDigit}) Escape=({EscChar}([r]|[n]|[b]|[f]|[t]|[\\]|[\']|[\"])) JavaLetter=({Letter}|{UnicodeEscape}) Identifier=({JavaLetter}({JavaLetter}|{Digit})*) ErrorIdentifier=({AnyNonSeparator}+) HTMLComment=("