1 1.7 christos /* $NetBSD: config_lex.l,v 1.7 2009/10/29 14:40:09 christos Exp $ */ 2 1.1 jmmv 3 1.1 jmmv /* 4 1.5 jmmv * Copyright (c) 2003, 2004 The NetBSD Foundation, Inc. 5 1.1 jmmv * All rights reserved. 6 1.1 jmmv * 7 1.1 jmmv * This code is derived from software contributed to The NetBSD Foundation 8 1.3 jmmv * by Julio M. Merino Vidal. 9 1.1 jmmv * 10 1.1 jmmv * Redistribution and use in source and binary forms, with or without 11 1.1 jmmv * modification, are permitted provided that the following conditions 12 1.1 jmmv * are met: 13 1.1 jmmv * 1. Redistributions of source code must retain the above copyright 14 1.1 jmmv * notice, this list of conditions and the following disclaimer. 15 1.1 jmmv * 2. The name authors may not be used to endorse or promote products 16 1.1 jmmv * derived from this software without specific prior written 17 1.1 jmmv * permission. 18 1.1 jmmv * 19 1.1 jmmv * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS 20 1.1 jmmv * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 1.1 jmmv * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 1.1 jmmv * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY 23 1.1 jmmv * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 1.1 jmmv * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 25 1.1 jmmv * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 jmmv * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 1.1 jmmv * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 1.1 jmmv * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 1.1 jmmv * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 1.1 jmmv */ 31 1.1 jmmv 32 1.1 jmmv %{ 33 1.1 jmmv 34 1.1 jmmv #include <sys/cdefs.h> 35 1.1 jmmv 36 1.1 jmmv #ifndef lint 37 1.7 christos __RCSID("$NetBSD: config_lex.l,v 1.7 2009/10/29 14:40:09 christos Exp $"); 38 1.1 jmmv #endif /* not lint */ 39 1.1 jmmv 40 1.1 jmmv #include <stdio.h> 41 1.1 jmmv #include <string.h> 42 1.1 jmmv #include <sys/time.h> 43 1.1 jmmv #include <dev/wscons/wsconsio.h> 44 1.1 jmmv 45 1.1 jmmv #include "wsmoused.h" 46 1.1 jmmv #include "config_yacc.h" 47 1.1 jmmv 48 1.1 jmmv extern int yyline; 49 1.1 jmmv 50 1.1 jmmv extern int yyerror(const char *fmt, ...); 51 1.1 jmmv int yylex(void); 52 1.1 jmmv 53 1.6 christos 54 1.1 jmmv %} 55 1.1 jmmv 56 1.7 christos %option noyywrap noinput nounput 57 1.1 jmmv 58 1.1 jmmv STRING [\$A-Za-z\.\/_\-0-9]* 59 1.3 jmmv SP_STRING [\$A-Za-z\.\/_\-0-9 ]* 60 1.5 jmmv MODE_PROPS button_[0-9]+_down|button_[0-9]+_up|device|fifo|lefthanded|modes|nodaemon|pidfile|slowdown_x|slowdown_y|ttystat|xconsole|xconsole_delay 61 1.1 jmmv 62 1.1 jmmv %% 63 1.1 jmmv 64 1.1 jmmv #.*$ /* Eat up comments */ 65 1.1 jmmv [ \t]+ /* Eat up whitespace */ 66 1.1 jmmv \n { yyline++; } 67 1.1 jmmv 68 1.1 jmmv = { return TK_EQUAL; } 69 1.1 jmmv ; { return TK_EOL; } 70 1.1 jmmv "{" { return TK_LBRACE; } 71 1.1 jmmv "}" { return TK_RBRACE; } 72 1.1 jmmv mode { return TK_MODE; } 73 1.1 jmmv {MODE_PROPS} { yylval.string = strdup(yytext); return TK_MODEPROP; } 74 1.3 jmmv \"{SP_STRING}\" { yylval.string = strdup(yytext + 1); 75 1.3 jmmv yylval.string[strlen(yytext) - 2] = '\0'; return TK_STRING; } 76 1.1 jmmv {STRING} { yylval.string = strdup(yytext); return TK_STRING; } 77 1.1 jmmv 78 1.3 jmmv . { yyerror("illegal token `%s'", yytext); } 79