1*4c52cad2SJung-uk Kim %{ 2*4c52cad2SJung-uk Kim /****************************************************************************** 3*4c52cad2SJung-uk Kim * 4*4c52cad2SJung-uk Kim * Module Name: prparser.l - Flex input file for preprocessor lexer 5*4c52cad2SJung-uk Kim * 6*4c52cad2SJung-uk Kim *****************************************************************************/ 7*4c52cad2SJung-uk Kim 8*4c52cad2SJung-uk Kim /* 9*4c52cad2SJung-uk Kim * Copyright (C) 2000 - 2012, Intel Corp. 10*4c52cad2SJung-uk Kim * All rights reserved. 11*4c52cad2SJung-uk Kim * 12*4c52cad2SJung-uk Kim * Redistribution and use in source and binary forms, with or without 13*4c52cad2SJung-uk Kim * modification, are permitted provided that the following conditions 14*4c52cad2SJung-uk Kim * are met: 15*4c52cad2SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 16*4c52cad2SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 17*4c52cad2SJung-uk Kim * without modification. 18*4c52cad2SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19*4c52cad2SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 20*4c52cad2SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 21*4c52cad2SJung-uk Kim * including a substantially similar Disclaimer requirement for further 22*4c52cad2SJung-uk Kim * binary redistribution. 23*4c52cad2SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 24*4c52cad2SJung-uk Kim * of any contributors may be used to endorse or promote products derived 25*4c52cad2SJung-uk Kim * from this software without specific prior written permission. 26*4c52cad2SJung-uk Kim * 27*4c52cad2SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 28*4c52cad2SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 29*4c52cad2SJung-uk Kim * Software Foundation. 30*4c52cad2SJung-uk Kim * 31*4c52cad2SJung-uk Kim * NO WARRANTY 32*4c52cad2SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33*4c52cad2SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34*4c52cad2SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35*4c52cad2SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36*4c52cad2SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37*4c52cad2SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38*4c52cad2SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39*4c52cad2SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40*4c52cad2SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41*4c52cad2SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42*4c52cad2SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 43*4c52cad2SJung-uk Kim */ 44*4c52cad2SJung-uk Kim 45*4c52cad2SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h> 46*4c52cad2SJung-uk Kim #include "prparser.y.h" 47*4c52cad2SJung-uk Kim 48*4c52cad2SJung-uk Kim /* Buffer to pass strings to the parser */ 49*4c52cad2SJung-uk Kim 50*4c52cad2SJung-uk Kim #define STRING_SETUP strcpy (StringBuffer, PrParsertext);\ 51*4c52cad2SJung-uk Kim PrParserlval.str = StringBuffer 52*4c52cad2SJung-uk Kim 53*4c52cad2SJung-uk Kim #define YY_NO_INPUT /* No file input, we use strings only */ 54*4c52cad2SJung-uk Kim 55*4c52cad2SJung-uk Kim #define _COMPONENT ACPI_COMPILER 56*4c52cad2SJung-uk Kim ACPI_MODULE_NAME ("prscanner") 57*4c52cad2SJung-uk Kim %} 58*4c52cad2SJung-uk Kim 59*4c52cad2SJung-uk Kim %option noyywrap 60*4c52cad2SJung-uk Kim %option nounput 61*4c52cad2SJung-uk Kim 62*4c52cad2SJung-uk Kim Number [0-9a-fA-F]+ 63*4c52cad2SJung-uk Kim HexNumber 0[xX][0-9a-fA-F]+ 64*4c52cad2SJung-uk Kim WhiteSpace [ \t\v\r]+ 65*4c52cad2SJung-uk Kim NewLine [\n] 66*4c52cad2SJung-uk Kim Identifier [a-zA-Z][0-9a-zA-Z]* 67*4c52cad2SJung-uk Kim 68*4c52cad2SJung-uk Kim %% 69*4c52cad2SJung-uk Kim 70*4c52cad2SJung-uk Kim \( return (EXPOP_PAREN_OPEN); 71*4c52cad2SJung-uk Kim \) return (EXPOP_PAREN_CLOSE); 72*4c52cad2SJung-uk Kim \~ return (EXPOP_ONES_COMPLIMENT); 73*4c52cad2SJung-uk Kim \! return (EXPOP_LOGICAL_NOT); 74*4c52cad2SJung-uk Kim \* return (EXPOP_MULTIPLY); 75*4c52cad2SJung-uk Kim \/ return (EXPOP_DIVIDE); 76*4c52cad2SJung-uk Kim \% return (EXPOP_MODULO); 77*4c52cad2SJung-uk Kim \+ return (EXPOP_ADD); 78*4c52cad2SJung-uk Kim \- return (EXPOP_SUBTRACT); 79*4c52cad2SJung-uk Kim ">>" return (EXPOP_SHIFT_RIGHT); 80*4c52cad2SJung-uk Kim "<<" return (EXPOP_SHIFT_LEFT); 81*4c52cad2SJung-uk Kim \< return (EXPOP_LESS); 82*4c52cad2SJung-uk Kim \> return (EXPOP_GREATER); 83*4c52cad2SJung-uk Kim "<=" return (EXPOP_LESS_EQUAL); 84*4c52cad2SJung-uk Kim ">=" return (EXPOP_GREATER_EQUAL); 85*4c52cad2SJung-uk Kim "==" return (EXPOP_EQUAL); 86*4c52cad2SJung-uk Kim "!=" return (EXPOP_NOT_EQUAL); 87*4c52cad2SJung-uk Kim \& return (EXPOP_AND); 88*4c52cad2SJung-uk Kim \^ return (EXPOP_XOR); 89*4c52cad2SJung-uk Kim \| return (EXPOP_OR); 90*4c52cad2SJung-uk Kim "&&" return (EXPOP_LOGICAL_AND); 91*4c52cad2SJung-uk Kim "||" return (EXPOP_LOGICAL_OR); 92*4c52cad2SJung-uk Kim 93*4c52cad2SJung-uk Kim "defined" return (EXPOP_DEFINE); 94*4c52cad2SJung-uk Kim {Identifier} {STRING_SETUP; return (EXPOP_IDENTIFIER);} 95*4c52cad2SJung-uk Kim 96*4c52cad2SJung-uk Kim <<EOF>> return (EXPOP_EOF); /* null end-of-string */ 97*4c52cad2SJung-uk Kim 98*4c52cad2SJung-uk Kim {Number} return (EXPOP_NUMBER); 99*4c52cad2SJung-uk Kim {HexNumber} return (EXPOP_HEX_NUMBER); 100*4c52cad2SJung-uk Kim {NewLine} return (EXPOP_NEW_LINE); 101*4c52cad2SJung-uk Kim {WhiteSpace} /* Ignore */ 102*4c52cad2SJung-uk Kim 103*4c52cad2SJung-uk Kim . return (EXPOP_EOF); 104*4c52cad2SJung-uk Kim %% 105*4c52cad2SJung-uk Kim 106*4c52cad2SJung-uk Kim /* 107*4c52cad2SJung-uk Kim * Local support functions 108*4c52cad2SJung-uk Kim */ 109*4c52cad2SJung-uk Kim YY_BUFFER_STATE LexBuffer; 110*4c52cad2SJung-uk Kim 111*4c52cad2SJung-uk Kim 112*4c52cad2SJung-uk Kim /****************************************************************************** 113*4c52cad2SJung-uk Kim * 114*4c52cad2SJung-uk Kim * FUNCTION: PrInitLexer 115*4c52cad2SJung-uk Kim * 116*4c52cad2SJung-uk Kim * PARAMETERS: String - Input string to be parsed 117*4c52cad2SJung-uk Kim * 118*4c52cad2SJung-uk Kim * RETURN: TRUE if parser returns NULL. FALSE otherwise. 119*4c52cad2SJung-uk Kim * 120*4c52cad2SJung-uk Kim * DESCRIPTION: Initialization routine for lexer. The lexer needs 121*4c52cad2SJung-uk Kim * a buffer to handle strings instead of a file. 122*4c52cad2SJung-uk Kim * 123*4c52cad2SJung-uk Kim *****************************************************************************/ 124*4c52cad2SJung-uk Kim 125*4c52cad2SJung-uk Kim int 126*4c52cad2SJung-uk Kim PrInitLexer ( 127*4c52cad2SJung-uk Kim char *String) 128*4c52cad2SJung-uk Kim { 129*4c52cad2SJung-uk Kim 130*4c52cad2SJung-uk Kim LexBuffer = yy_scan_string (String); 131*4c52cad2SJung-uk Kim return (LexBuffer == NULL); 132*4c52cad2SJung-uk Kim } 133*4c52cad2SJung-uk Kim 134*4c52cad2SJung-uk Kim 135*4c52cad2SJung-uk Kim /****************************************************************************** 136*4c52cad2SJung-uk Kim * 137*4c52cad2SJung-uk Kim * FUNCTION: PrTerminateLexer 138*4c52cad2SJung-uk Kim * 139*4c52cad2SJung-uk Kim * PARAMETERS: None 140*4c52cad2SJung-uk Kim * 141*4c52cad2SJung-uk Kim * RETURN: None 142*4c52cad2SJung-uk Kim * 143*4c52cad2SJung-uk Kim * DESCRIPTION: Termination routine for thelexer. 144*4c52cad2SJung-uk Kim * 145*4c52cad2SJung-uk Kim *****************************************************************************/ 146*4c52cad2SJung-uk Kim 147*4c52cad2SJung-uk Kim void 148*4c52cad2SJung-uk Kim PrTerminateLexer ( 149*4c52cad2SJung-uk Kim void) 150*4c52cad2SJung-uk Kim { 151*4c52cad2SJung-uk Kim 152*4c52cad2SJung-uk Kim yy_delete_buffer (LexBuffer); 153*4c52cad2SJung-uk Kim } 154