⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexer.flex

📁 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件
💻 FLEX
字号:
/* * This is the definition (lexer.flex) for the auto-generated lexer (Lexer.java) created by JFlex <http://jflex.de/>. * To regenerate Lexer.java, run 'ant jflex'. * * @author Joe Walnes */// class headerspackage com.opensymphony.module.sitemesh.html.tokenizer;%%// class and lexer definitions%class Lexer%abstract%unicode%byaccj%char%ignorecase// useful for debugging, but adds overhead//%line//%column// Profiling showed that this mode was slightly faster than %pack or %table.%switch// Profiling showed this as an optimal size buffer that was often filled but rarely exceeded.%buffer 2048%{    // Additional methods to add to generated Lexer to aid in error reporting.    protected int position() { return yychar; }    protected int length()   { return yy_markedPos - yy_startRead; }    protected int line()     { return -1; /*yyline;*/ }   // useful for debugging, but adds overhead    protected int column()   { return -1; /*yycolumn;*/ } // useful for debugging, but adds overhead    protected void resetLexerState() { yybegin(YYINITIAL); }    protected abstract void reportError(String message, int line, int column);%}/* Additional states that the lexer can switch into. */%state ELEMENT%%/* Initial state of lexer. */<YYINITIAL> {    "<!--" [^\[] ~"-->" { return Parser.TEXT; } /* All comments unless they start with <!--[ */    "<!---->"           { return Parser.TEXT; }     "<?" ~"?>"          { return Parser.TEXT; }    "<!" [^\[\-] ~">"     { return Parser.TEXT; }    "<![CDATA[" ~"]]>"  { return Parser.TEXT; }    "<xmp" ~"</xmp" ~">" { return Parser.TEXT; }    "<script" ~"</script" ~">" { return Parser.TEXT; }    [^<]+               { return Parser.TEXT; }    "<"                 { yybegin(ELEMENT); return Parser.LT; }    "<!--["             { yybegin(ELEMENT); return Parser.LT_OPEN_MAGIC_COMMENT; }    "<!["               { yybegin(ELEMENT); return Parser.LT_CLOSE_MAGIC_COMMENT; }}/* State of lexer when inside an element/tag. */<ELEMENT> {    "/"                 { return Parser.SLASH; }    [\n\r \t\b\012]+    { return Parser.WHITESPACE; }    "="                 { return Parser.EQUALS; }    "\"" ~"\""          { return Parser.QUOTED; }    "'" ~"'"            { return Parser.QUOTED; }    [^>\]/=\"\'\n\r \t\b\012][^>\]/=\n\r \t\b\012]* { return Parser.WORD; }    ">"                 { yybegin(YYINITIAL); return Parser.GT; }    "]>"                { yybegin(YYINITIAL); return Parser.GT; }    "]-->"              { yybegin(YYINITIAL); return Parser.GT; }}/* Fallback rule - if nothing else matches. */.|\n                    { reportError("Illegal character <"+ yytext() +">", line(), column()); return Parser.TEXT; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -