summaryrefslogtreecommitdiff
path: root/src/lex.l
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:53 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:53 +0000
commit03cb750f7935722ab77b77128ca5221c5baf8818 (patch)
tree0c535604db3c131fac34783da8bbd22521db44bc /src/lex.l
R6.6 is the Xorg base-lineXORG-MAIN
Diffstat (limited to 'src/lex.l')
-rw-r--r--src/lex.l145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/lex.l b/src/lex.l
new file mode 100644
index 0000000..1886f4b
--- /dev/null
+++ b/src/lex.l
@@ -0,0 +1,145 @@
+%{
+/*****************************************************************************/
+/*
+
+Copyright 1989,1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
+/** Salt Lake City, Utah **/
+/** Cambridge, Massachusetts **/
+/** **/
+/** All Rights Reserved **/
+/** **/
+/** Permission to use, copy, modify, and distribute this software and **/
+/** its documentation for any purpose and without fee is hereby **/
+/** granted, provided that the above copyright notice appear in all **/
+/** copies and that both that copyright notice and this permis- **/
+/** sion notice appear in supporting documentation, and that the **/
+/** name of Evans & Sutherland not be used in advertising **/
+/** in publicity pertaining to distribution of the software without **/
+/** specific, written prior permission. **/
+/** **/
+/** EVANS & SUTHERLAND DISCLAIMs ALL WARRANTIES WITH REGARD **/
+/** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/
+/** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND **/
+/** BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/
+/** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/
+/** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/
+/** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/
+/** OR PERFORMANCE OF THIS SOFTWARE. **/
+/*****************************************************************************/
+
+/***********************************************************************
+ *
+ * $Xorg: lex.l,v 1.4 2001/02/09 02:05:36 xorgcvs Exp $
+ *
+ * .twmrc lex file
+ *
+ * 12-Nov-87 Thomas E. LaStrange File created
+ *
+ ***********************************************************************/
+
+/* #include <stdio.h> */ /* lex already includes stdio.h */
+#include "gram.h"
+#include "parse.h"
+extern char *ProgramName;
+
+extern int ParseError;
+#ifdef FLEX_SCANNER
+int yylineno;
+
+#undef YY_INPUT
+#define YY_INPUT(buf,result,size) ((result) = doinput((buf),(size)))
+doinput (buf, size)
+char *buf;
+{
+ int c;
+
+ if (size == 0)
+ return (0);
+
+ if ((c = (*twmInputFunc)()) <= 0)
+ return (0);
+
+ buf[0] = c;
+ return (1);
+}
+#endif
+
+%}
+
+string \"([^"]|\\.)*\"
+number [0-9]+
+%%
+"{" { return (LB); }
+"}" { return (RB); }
+"(" { return (LP); }
+")" { return (RP); }
+"=" { return (EQUALS); }
+":" { return (COLON); }
+"+" { return PLUS; }
+"-" { return MINUS; }
+"|" { return OR; }
+
+[a-zA-Z\.]+ { int token = parse_keyword (yytext,
+ &yylval.num);
+ if (token == ERRORTOKEN) {
+ twmrc_error_prefix();
+ fprintf (stderr,
+ "ignoring unknown keyword: %s\n",
+ yytext);
+ ParseError = 1;
+ } else
+ return token;
+ }
+
+"!" { yylval.num = F_EXEC; return FSKEYWORD; }
+"^" { yylval.num = F_CUT; return FSKEYWORD; }
+
+{string} { yylval.ptr = (char *)yytext; return STRING; }
+{number} { (void)sscanf((char *)yytext, "%d", &yylval.num);
+ return (NUMBER);
+ }
+\#[^\n]*\n {;}
+[\n\t ] {;}
+. {
+ twmrc_error_prefix();
+ fprintf (stderr,
+ "ignoring character \"%s\"\n",
+ yytext);
+ ParseError = 1;
+ }
+%%
+#ifndef yywrap
+yywrap() { return(1);}
+#endif
+
+#undef unput
+#undef input
+#undef output
+#undef feof
+#define unput(c) twmUnput(c)
+#define input() (*twmInputFunc)()
+#define output(c) TwmOutput(c)
+#define feof() (1)