PhpSymbolTokenizer.lex revision 5c22aad0392c68f935e17cd0a1b14bd855a8080b
cd348e325366620fe047edcc849e3c9424828599Peter Bray/*
cd348e325366620fe047edcc849e3c9424828599Peter Bray * CDDL HEADER START
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco *
cd348e325366620fe047edcc849e3c9424828599Peter Bray * The contents of this file are subject to the terms of the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Common Development and Distribution License (the "License").
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * You may not use this file except in compliance with the License.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * See LICENSE.txt included in this distribution for the specific
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * language governing permissions and limitations under the License.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * When distributing Covered Code, include this CDDL HEADER in each
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco * file and include the License file at LICENSE.txt.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * If applicable, add the following below this CDDL HEADER, with the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * fields enclosed by brackets "[]" replaced with your own identifying
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * information: Portions Copyright [yyyy] [name of copyright owner]
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * CDDL HEADER END
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray/*
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Gets Php symbols - ignores comments, strings, keywords
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braypackage org.opensolaris.opengrok.analysis.php;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayimport java.io.IOException;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayimport java.io.Reader;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayimport org.opensolaris.opengrok.analysis.JFlexTokenizer;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%%
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%public
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%class PhpSymbolTokenizer
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray%extends JFlexTokenizer
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray%unicode
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray%type boolean
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray%eofval{
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Brayreturn false;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%eofval}
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco%char
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter BrayIdentifier = [a-zA-Z_] [a-zA-Z0-9_]*
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray%state STRING SCOMMENT QSTRING
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray%%
cd348e325366620fe047edcc849e3c9424828599Peter Bray
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco<YYINITIAL> {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray{Identifier} {String id = yytext();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if(!Consts.kwd.contains(id)){
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray setAttribs(id, yychar, yychar + yylength());
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return true; }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray \" { yybegin(STRING); }
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco \' { yybegin(QSTRING); }
cd348e325366620fe047edcc849e3c9424828599Peter Bray "#" { yybegin(SCOMMENT); }
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray<STRING> {
cd348e325366620fe047edcc849e3c9424828599Peter Bray \" { yybegin(YYINITIAL); }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray \\\" {}
cd348e325366620fe047edcc849e3c9424828599Peter Bray \n { yybegin(YYINITIAL); }
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray<QSTRING> {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco \' { yybegin(YYINITIAL); }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray \\\' {}
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray \n { yybegin(YYINITIAL); }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray}
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray<SCOMMENT> {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray \n { yybegin(YYINITIAL);}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray<YYINITIAL, STRING, SCOMMENT, QSTRING> {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray<<EOF>> { return false;}
cd348e325366620fe047edcc849e3c9424828599Peter Bray.|\n {}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray