11a63eb31SJulian Elischer %{ 21de7b4b8SPedro F. Giffuni /*- 31a63eb31SJulian Elischer * lexer.l 41a63eb31SJulian Elischer * 54d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 61de7b4b8SPedro F. Giffuni * 71a63eb31SJulian Elischer * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com> 81a63eb31SJulian Elischer * All rights reserved. 91a63eb31SJulian Elischer * 101a63eb31SJulian Elischer * Redistribution and use in source and binary forms, with or without 111a63eb31SJulian Elischer * modification, are permitted provided that the following conditions 121a63eb31SJulian Elischer * are met: 131a63eb31SJulian Elischer * 1. Redistributions of source code must retain the above copyright 141a63eb31SJulian Elischer * notice, this list of conditions and the following disclaimer. 151a63eb31SJulian Elischer * 2. Redistributions in binary form must reproduce the above copyright 161a63eb31SJulian Elischer * notice, this list of conditions and the following disclaimer in the 171a63eb31SJulian Elischer * documentation and/or other materials provided with the distribution. 181a63eb31SJulian Elischer * 191a63eb31SJulian Elischer * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 201a63eb31SJulian Elischer * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 211a63eb31SJulian Elischer * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 221a63eb31SJulian Elischer * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 231a63eb31SJulian Elischer * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 241a63eb31SJulian Elischer * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 251a63eb31SJulian Elischer * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 261a63eb31SJulian Elischer * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 271a63eb31SJulian Elischer * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 281a63eb31SJulian Elischer * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 291a63eb31SJulian Elischer * SUCH DAMAGE. 301a63eb31SJulian Elischer * 311a63eb31SJulian Elischer * $Id: lexer.l,v 1.1 2002/11/24 20:22:39 max Exp $ 321a63eb31SJulian Elischer */ 331a63eb31SJulian Elischer 341a63eb31SJulian Elischer #include <string.h> 351a63eb31SJulian Elischer #include "parser.h" 361a63eb31SJulian Elischer %} 371a63eb31SJulian Elischer 38e267ef95SRebecca Cran %option yylineno noyywrap nounput noinput 391a63eb31SJulian Elischer 401a63eb31SJulian Elischer delim [ \t\n] 411a63eb31SJulian Elischer ws {delim}+ 421a63eb31SJulian Elischer empty {delim}* 431a63eb31SJulian Elischer comment \#.* 441a63eb31SJulian Elischer 451a63eb31SJulian Elischer hexdigit [0-9a-fA-F] 461a63eb31SJulian Elischer hexbyte {hexdigit}{hexdigit} 471a63eb31SJulian Elischer 481a63eb31SJulian Elischer device_word device 491a63eb31SJulian Elischer bdaddr_word bdaddr 501a63eb31SJulian Elischer name_word name 511a63eb31SJulian Elischer key_word key 521a63eb31SJulian Elischer nokey_word nokey 531a63eb31SJulian Elischer pin_word pin 541a63eb31SJulian Elischer nopin_word nopin 551a63eb31SJulian Elischer 561a63eb31SJulian Elischer bdaddrstring {hexbyte}:{hexbyte}:{hexbyte}:{hexbyte}:{hexbyte}:{hexbyte} 571a63eb31SJulian Elischer hexstring 0x{hexbyte}+ 581a63eb31SJulian Elischer string \".+\" 591a63eb31SJulian Elischer 601a63eb31SJulian Elischer %% 611a63eb31SJulian Elischer 621a63eb31SJulian Elischer \; return (';'); 631a63eb31SJulian Elischer \: return (':'); 641a63eb31SJulian Elischer \{ return ('{'); 651a63eb31SJulian Elischer \} return ('}'); 661a63eb31SJulian Elischer 671a63eb31SJulian Elischer {ws} ; 681a63eb31SJulian Elischer {empty} ; 691a63eb31SJulian Elischer {comment} ; 701a63eb31SJulian Elischer 711a63eb31SJulian Elischer {device_word} return (T_DEVICE); 721a63eb31SJulian Elischer {bdaddr_word} return (T_BDADDR); 731a63eb31SJulian Elischer {name_word} return (T_NAME); 741a63eb31SJulian Elischer {key_word} return (T_KEY); 751a63eb31SJulian Elischer {nokey_word} return (T_NOKEY); 761a63eb31SJulian Elischer {pin_word} return (T_PIN); 771a63eb31SJulian Elischer {nopin_word} return (T_NOPIN); 781a63eb31SJulian Elischer 791a63eb31SJulian Elischer {bdaddrstring} { 801a63eb31SJulian Elischer yylval.string = yytext; 811a63eb31SJulian Elischer return (T_BDADDRSTRING); 821a63eb31SJulian Elischer } 831a63eb31SJulian Elischer 841a63eb31SJulian Elischer {hexstring} { 851a63eb31SJulian Elischer yylval.string = &yytext[2]; 861a63eb31SJulian Elischer return (T_HEXSTRING); 871a63eb31SJulian Elischer } 881a63eb31SJulian Elischer 891a63eb31SJulian Elischer {string} { 901a63eb31SJulian Elischer yytext[strlen(yytext) - 1] = 0; 911a63eb31SJulian Elischer yylval.string = &yytext[1]; 921a63eb31SJulian Elischer return (T_STRING); 931a63eb31SJulian Elischer } 941a63eb31SJulian Elischer 951a63eb31SJulian Elischer %% 961a63eb31SJulian Elischer 97