1 1.7 joerg /* $NetBSD: map_scan.l,v 1.7 2011/05/24 12:07:14 joerg Exp $ */ 2 1.1 hannken 3 1.1 hannken /*- 4 1.1 hannken * Copyright (c) 1998 The NetBSD Foundation, Inc. 5 1.1 hannken * All rights reserved. 6 1.1 hannken * 7 1.1 hannken * This code is derived from software contributed to The NetBSD Foundation 8 1.1 hannken * by Juergen Hannken-Illjes. 9 1.1 hannken * 10 1.1 hannken * Redistribution and use in source and binary forms, with or without 11 1.1 hannken * modification, are permitted provided that the following conditions 12 1.1 hannken * are met: 13 1.1 hannken * 1. Redistributions of source code must retain the above copyright 14 1.1 hannken * notice, this list of conditions and the following disclaimer. 15 1.1 hannken * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 hannken * notice, this list of conditions and the following disclaimer in the 17 1.1 hannken * documentation and/or other materials provided with the distribution. 18 1.1 hannken * 19 1.1 hannken * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.1 hannken * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.1 hannken * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.1 hannken * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.1 hannken * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.1 hannken * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 hannken * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 hannken * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.1 hannken * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 hannken * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.1 hannken * POSSIBILITY OF SUCH DAMAGE. 30 1.1 hannken */ 31 1.1 hannken 32 1.1 hannken %{ 33 1.1 hannken 34 1.1 hannken #include <dev/wscons/wsksymdef.h> 35 1.1 hannken #include <dev/wscons/wsksymvar.h> 36 1.3 jmmv 37 1.1 hannken #include <err.h> 38 1.3 jmmv #include <stdlib.h> 39 1.3 jmmv 40 1.1 hannken #include "wsconsctl.h" 41 1.1 hannken #include "map_parse.h" 42 1.1 hannken 43 1.1 hannken 44 1.1 hannken void 45 1.2 xtraeme map_scan_setinput(char *str) 46 1.1 hannken { 47 1.3 jmmv 48 1.1 hannken yy_scan_string(str); 49 1.1 hannken } 50 1.1 hannken 51 1.1 hannken %} 52 1.1 hannken 53 1.5 christos %option noyywrap 54 1.7 joerg %option noinput 55 1.5 christos 56 1.1 hannken %% 57 1.1 hannken 58 1.1 hannken [ \t\n]+ { 59 1.1 hannken /* ignore spaces and tabs */ 60 1.1 hannken } 61 1.1 hannken 62 1.1 hannken "=" { 63 1.1 hannken return('='); 64 1.1 hannken } 65 1.1 hannken 66 1.1 hannken keycode { 67 1.1 hannken return(T_KEYCODE); 68 1.1 hannken } 69 1.1 hannken 70 1.1 hannken keysym { 71 1.1 hannken return(T_KEYSYM); 72 1.1 hannken } 73 1.1 hannken 74 1.6 phx Cmd { 75 1.6 phx return(T_CMD); 76 1.6 phx } 77 1.6 phx 78 1.1 hannken [a-zA-Z][a-zA-Z0-9_]* { 79 1.1 hannken int i; 80 1.1 hannken 81 1.1 hannken i = name2ksym(yytext); 82 1.1 hannken if (i == -1) 83 1.3 jmmv errx(EXIT_FAILURE, "%s: not a keysym", yytext); 84 1.1 hannken yylval.kval = i; 85 1.1 hannken if (KS_GROUP(i) == KS_GROUP_Command || 86 1.1 hannken i == KS_Cmd || i == KS_Cmd1 || i == KS_Cmd2) 87 1.1 hannken return(T_KEYSYM_CMD_VAR); 88 1.1 hannken else 89 1.1 hannken return(T_KEYSYM_VAR); 90 1.1 hannken } 91 1.1 hannken 92 1.1 hannken [0-9]+ { 93 1.1 hannken yylval.ival = atoi(yytext); 94 1.1 hannken return(T_NUMBER); 95 1.1 hannken } 96 1.1 hannken 97 1.1 hannken . { 98 1.1 hannken if (yytext[0] >= ' ' && yytext[0] <= '~') 99 1.3 jmmv errx(EXIT_FAILURE, "%c: illegal character in input", 100 1.3 jmmv yytext[0]); 101 1.1 hannken else 102 1.3 jmmv errx(EXIT_FAILURE, "%03o: illegal character in input", 103 1.3 jmmv yytext[0] & 255); 104 1.1 hannken 105 1.1 hannken /* To quiet the compiler */ 106 1.1 hannken if (0) 107 1.1 hannken unput(0); 108 1.1 hannken } 109