aslcompiler.l revision 284460
1%{
2/******************************************************************************
3 *
4 * Module Name: aslcompiler.l - Flex/lex input file
5 *
6 *****************************************************************************/
7
8/*
9 * Copyright (C) 2000 - 2015, Intel Corp.
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions, and the following disclaimer,
17 *    without modification.
18 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19 *    substantially similar to the "NO WARRANTY" disclaimer below
20 *    ("Disclaimer") and any redistribution must be conditioned upon
21 *    including a substantially similar Disclaimer requirement for further
22 *    binary redistribution.
23 * 3. Neither the names of the above-listed copyright holders nor the names
24 *    of any contributors may be used to endorse or promote products derived
25 *    from this software without specific prior written permission.
26 *
27 * Alternatively, this software may be distributed under the terms of the
28 * GNU General Public License ("GPL") version 2 as published by the Free
29 * Software Foundation.
30 *
31 * NO WARRANTY
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 * POSSIBILITY OF SUCH DAMAGES.
43 */
44
45#include <contrib/dev/acpica/compiler/aslcompiler.h>
46#include "aslcompiler.y.h"
47
48#include <stdlib.h>
49#include <string.h>
50YYSTYPE AslCompilerlval;
51
52/*
53 * Generation:  Use the following command line:
54 *
55 * flex.exe -PAslCompiler -i -o$(InputPath).c $(InputPath)
56 *
57 * -i: Scanner must be case-insensitive
58 */
59
60#define _COMPONENT          ACPI_COMPILER
61        ACPI_MODULE_NAME    ("aslscanner")
62
63
64/* Local prototypes */
65
66static void
67AslDoLineDirective (void);
68
69static char
70AslDoComment (void);
71
72static char
73AslDoCommentType2 (void);
74
75static char
76AslDoStringLiteral (void);
77
78static void
79count (int type);
80
81
82/*! [Begin] no source code translation */
83
84%}
85    /* Definitions */
86
87LeadNameChar                [A-Za-z_]
88DigitChar                   [0-9]
89HexDigitChar                [A-Fa-f0-9]
90RootChar                    [\\]
91Nothing                     []
92
93NameChar                    [A-Za-z_0-9]
94NameSeg1                    {LeadNameChar}{NameChar}
95NameSeg2                    {LeadNameChar}{NameChar}{NameChar}
96NameSeg3                    {LeadNameChar}{NameChar}{NameChar}{NameChar}
97NameSeg                     {LeadNameChar}|{NameSeg1}|{NameSeg2}|{NameSeg3}
98
99NameString                  {RootChar}|{RootChar}{NamePath}|[\^]+{NamePath}|{NonEmptyNamePath}
100NamePath                    {NonEmptyNamePath}?
101NonEmptyNamePath            {NameSeg}{NamePathTail}*
102NamePathTail                [.]{NameSeg}
103
104%%
105    /* Rules */
106
107[ ]                         { count (0); }
108[\n]                        { count (0); } /* Handle files with both LF and CR/LF */
109[\r]                        { count (0); } /* termination on both Unix and Windows */
110[ \t]                       { count (0); }
111
112
113"/*"                        { if (!AslDoComment ()) {yyterminate ();} }
114"//"                        { if (!AslDoCommentType2 ()) {yyterminate ();} }
115
116"\""                        { if (AslDoStringLiteral ()) {return (PARSEOP_STRING_LITERAL);}
117                              else {yyterminate ();} }
118";"                         { count (0); return(';'); }
119
120    /* ASL Extension: Standard C operators */
121
122"~"                         { count (3); return (PARSEOP_EXP_NOT); }
123"!"                         { count (3); return (PARSEOP_EXP_LOGICAL_NOT); }
124"*"                         { count (3); return (PARSEOP_EXP_MULTIPLY); }
125"/"                         { count (3); return (PARSEOP_EXP_DIVIDE); }
126"%"                         { count (3); return (PARSEOP_EXP_MODULO); }
127"+"                         { count (3); return (PARSEOP_EXP_ADD); }
128"-"                         { count (3); return (PARSEOP_EXP_SUBTRACT); }
129">>"                        { count (3); return (PARSEOP_EXP_SHIFT_RIGHT); }
130"<<"                        { count (3); return (PARSEOP_EXP_SHIFT_LEFT); }
131"<"                         { count (3); return (PARSEOP_EXP_LESS); }
132">"                         { count (3); return (PARSEOP_EXP_GREATER); }
133"&"                         { count (3); return (PARSEOP_EXP_AND); }
134"<="                        { count (3); return (PARSEOP_EXP_LESS_EQUAL); }
135">="                        { count (3); return (PARSEOP_EXP_GREATER_EQUAL); }
136"=="                        { count (3); return (PARSEOP_EXP_EQUAL); }
137"!="                        { count (3); return (PARSEOP_EXP_NOT_EQUAL); }
138"|"                         { count (3); return (PARSEOP_EXP_OR); }
139"&&"                        { count (3); return (PARSEOP_EXP_LOGICAL_AND); }
140"||"                        { count (3); return (PARSEOP_EXP_LOGICAL_OR); }
141"++"                        { count (3); return (PARSEOP_EXP_INCREMENT); }
142"--"                        { count (3); return (PARSEOP_EXP_DECREMENT); }
143"^ "                        { count (3); return (PARSEOP_EXP_XOR); }
144
145    /* ASL Extension: Standard C assignment operators */
146
147"="                         { count (3); return (PARSEOP_EXP_EQUALS); }
148"+="                        { count (3); return (PARSEOP_EXP_ADD_EQ); }
149"-="                        { count (3); return (PARSEOP_EXP_SUB_EQ); }
150"*="                        { count (3); return (PARSEOP_EXP_MUL_EQ); }
151"/="                        { count (3); return (PARSEOP_EXP_DIV_EQ); }
152"%="                        { count (3); return (PARSEOP_EXP_MOD_EQ); }
153"<<="                       { count (3); return (PARSEOP_EXP_SHL_EQ); }
154">>="                       { count (3); return (PARSEOP_EXP_SHR_EQ); }
155"&="                        { count (3); return (PARSEOP_EXP_AND_EQ); }
156"^="                        { count (3); return (PARSEOP_EXP_XOR_EQ); }
157"|="                        { count (3); return (PARSEOP_EXP_OR_EQ); }
158
159
160    /*
161     * Begin standard ASL grammar
162     */
1630[xX]{HexDigitChar}+ |
164{DigitChar}+                { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);
165                                count (1); return (PARSEOP_INTEGER); }
166
167"Include"                   { count (1); return (PARSEOP_INCLUDE); }
168"External"                  { count (1); return (PARSEOP_EXTERNAL); }
169
170 /*
171  * The #line directive is emitted by the preprocessor and handled
172  * here in the main iASL lexer - simply set the line number and
173  * optionally the current filename.
174  */
175"#line"                     { AslDoLineDirective ();}
176
177
178 /****************************************************************************
179  *
180  * Main ASL operators
181  *
182  ****************************************************************************/
183
184"AccessAs"                  { count (1); return (PARSEOP_ACCESSAS); }
185"Acquire"                   { count (3); return (PARSEOP_ACQUIRE); }
186"Add"                       { count (3); return (PARSEOP_ADD); }
187"Alias"                     { count (2); return (PARSEOP_ALIAS); }
188"And"                       { count (3); return (PARSEOP_AND); }
189"BankField"                 { count (2); return (PARSEOP_BANKFIELD); }
190"Break"                     { count (3); return (PARSEOP_BREAK); }
191"BreakPoint"                { count (3); return (PARSEOP_BREAKPOINT); }
192"Buffer"                    { count (1); return (PARSEOP_BUFFER); }
193"Case"                      { count (3); return (PARSEOP_CASE); }
194"Concatenate"               { count (3); return (PARSEOP_CONCATENATE); }
195"ConcatenateResTemplate"    { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); }
196"CondRefOf"                 { count (3); return (PARSEOP_CONDREFOF); }
197"Connection"                { count (2); return (PARSEOP_CONNECTION); }
198"Continue"                  { count (3); return (PARSEOP_CONTINUE); }
199"CopyObject"                { count (3); return (PARSEOP_COPYOBJECT); }
200"CreateBitField"            { count (2); return (PARSEOP_CREATEBITFIELD); }
201"CreateByteField"           { count (2); return (PARSEOP_CREATEBYTEFIELD); }
202"CreateDWordField"          { count (2); return (PARSEOP_CREATEDWORDFIELD); }
203"CreateField"               { count (2); return (PARSEOP_CREATEFIELD); }
204"CreateQWordField"          { count (2); return (PARSEOP_CREATEQWORDFIELD); }
205"CreateWordField"           { count (2); return (PARSEOP_CREATEWORDFIELD); }
206"DataTableRegion"           { count (2); return (PARSEOP_DATATABLEREGION); }
207"Debug"                     { count (1); return (PARSEOP_DEBUG); }
208"Decrement"                 { count (3); return (PARSEOP_DECREMENT); }
209"Default"                   { count (3); return (PARSEOP_DEFAULT); }
210"DefinitionBlock"           { count (1); return (PARSEOP_DEFINITIONBLOCK); }
211"DeRefOf"                   { count (3); return (PARSEOP_DEREFOF); }
212"Device"                    { count (2); return (PARSEOP_DEVICE); }
213"Divide"                    { count (3); return (PARSEOP_DIVIDE); }
214"Eisaid"                    { count (1); return (PARSEOP_EISAID); }
215"Else"                      { count (3); return (PARSEOP_ELSE); }
216"ElseIf"                    { count (3); return (PARSEOP_ELSEIF); }
217"Event"                     { count (2); return (PARSEOP_EVENT); }
218"Fatal"                     { count (3); return (PARSEOP_FATAL); }
219"Field"                     { count (2); return (PARSEOP_FIELD); }
220"FindSetLeftBit"            { count (3); return (PARSEOP_FINDSETLEFTBIT); }
221"FindSetRightBit"           { count (3); return (PARSEOP_FINDSETRIGHTBIT); }
222"FromBcd"                   { count (3); return (PARSEOP_FROMBCD); }
223"Function"                  { count (2); return (PARSEOP_FUNCTION); }
224"If"                        { count (3); return (PARSEOP_IF); }
225"Increment"                 { count (3); return (PARSEOP_INCREMENT); }
226"Index"                     { count (3); return (PARSEOP_INDEX); }
227"IndexField"                { count (2); return (PARSEOP_INDEXFIELD); }
228"LAnd"                      { count (3); return (PARSEOP_LAND); }
229"LEqual"                    { count (3); return (PARSEOP_LEQUAL); }
230"LGreater"                  { count (3); return (PARSEOP_LGREATER); }
231"LGreaterEqual"             { count (3); return (PARSEOP_LGREATEREQUAL); }
232"LLess"                     { count (3); return (PARSEOP_LLESS); }
233"LLessEqual"                { count (3); return (PARSEOP_LLESSEQUAL); }
234"LNot"                      { count (3); return (PARSEOP_LNOT); }
235"LNotEqual"                 { count (3); return (PARSEOP_LNOTEQUAL); }
236"Load"                      { count (3); return (PARSEOP_LOAD); }
237"LoadTable"                 { count (3); return (PARSEOP_LOADTABLE); }
238"LOr"                       { count (3); return (PARSEOP_LOR); }
239"Match"                     { count (3); return (PARSEOP_MATCH); }
240"Method"                    { count (2); return (PARSEOP_METHOD); }
241"Mid"                       { count (3); return (PARSEOP_MID); }
242"Mod"                       { count (3); return (PARSEOP_MOD); }
243"Multiply"                  { count (3); return (PARSEOP_MULTIPLY); }
244"Mutex"                     { count (2); return (PARSEOP_MUTEX); }
245"Name"                      { count (2); return (PARSEOP_NAME); }
246"NAnd"                      { count (3); return (PARSEOP_NAND); }
247"Noop"                      { if (!AcpiGbl_IgnoreNoopOperator) {count (3); return (PARSEOP_NOOP);} }
248"NOr"                       { count (3); return (PARSEOP_NOR); }
249"Not"                       { count (3); return (PARSEOP_NOT); }
250"Notify"                    { count (3); return (PARSEOP_NOTIFY); }
251"ObjectType"                { count (3); return (PARSEOP_OBJECTTYPE); }
252"Offset"                    { count (1); return (PARSEOP_OFFSET); }
253"One"                       { count (1); return (PARSEOP_ONE); }
254"Ones"                      { count (1); return (PARSEOP_ONES); }
255"OperationRegion"           { count (2); return (PARSEOP_OPERATIONREGION); }
256"Or"                        { count (3); return (PARSEOP_OR); }
257"Package"                   { count (1); return (PARSEOP_PACKAGE); }
258"PowerResource"             { count (2); return (PARSEOP_POWERRESOURCE); }
259"Processor"                 { count (2); return (PARSEOP_PROCESSOR); }
260"RefOf"                     { count (3); return (PARSEOP_REFOF); }
261"Release"                   { count (3); return (PARSEOP_RELEASE); }
262"Reset"                     { count (3); return (PARSEOP_RESET); }
263"Return"                    { count (3); return (PARSEOP_RETURN); }
264"Revision"                  { count (1); return (PARSEOP_REVISION); }
265"Scope"                     { count (2); return (PARSEOP_SCOPE); }
266"ShiftLeft"                 { count (3); return (PARSEOP_SHIFTLEFT); }
267"ShiftRight"                { count (3); return (PARSEOP_SHIFTRIGHT); }
268"Signal"                    { count (3); return (PARSEOP_SIGNAL); }
269"SizeOf"                    { count (3); return (PARSEOP_SIZEOF); }
270"Sleep"                     { count (3); return (PARSEOP_SLEEP); }
271"Stall"                     { count (3); return (PARSEOP_STALL); }
272"Store"                     { count (3); return (PARSEOP_STORE); }
273"Subtract"                  { count (3); return (PARSEOP_SUBTRACT); }
274"Switch"                    { count (3); return (PARSEOP_SWITCH); }
275"ThermalZone"               { count (2); return (PARSEOP_THERMALZONE); }
276"Timer"                     { count (3); return (PARSEOP_TIMER); }
277"ToBcd"                     { count (3); return (PARSEOP_TOBCD); }
278"ToBuffer"                  { count (3); return (PARSEOP_TOBUFFER); }
279"ToDecimalString"           { count (3); return (PARSEOP_TODECIMALSTRING); }
280"ToHexString"               { count (3); return (PARSEOP_TOHEXSTRING); }
281"ToInteger"                 { count (3); return (PARSEOP_TOINTEGER); }
282"ToString"                  { count (3); return (PARSEOP_TOSTRING); }
283"ToUuid"                    { count (1); return (PARSEOP_TOUUID); }
284"Unicode"                   { count (1); return (PARSEOP_UNICODE); }
285"Unload"                    { count (3); return (PARSEOP_UNLOAD); }
286"Wait"                      { count (3); return (PARSEOP_WAIT); }
287"While"                     { count (3); return (PARSEOP_WHILE); }
288"XOr"                       { count (3); return (PARSEOP_XOR); }
289"Zero"                      { count (1); return (PARSEOP_ZERO); }
290
291    /* Control method arguments and locals */
292
293"Arg0"                      { count (1); return (PARSEOP_ARG0); }
294"Arg1"                      { count (1); return (PARSEOP_ARG1); }
295"Arg2"                      { count (1); return (PARSEOP_ARG2); }
296"Arg3"                      { count (1); return (PARSEOP_ARG3); }
297"Arg4"                      { count (1); return (PARSEOP_ARG4); }
298"Arg5"                      { count (1); return (PARSEOP_ARG5); }
299"Arg6"                      { count (1); return (PARSEOP_ARG6); }
300"Local0"                    { count (1); return (PARSEOP_LOCAL0); }
301"Local1"                    { count (1); return (PARSEOP_LOCAL1); }
302"Local2"                    { count (1); return (PARSEOP_LOCAL2); }
303"Local3"                    { count (1); return (PARSEOP_LOCAL3); }
304"Local4"                    { count (1); return (PARSEOP_LOCAL4); }
305"Local5"                    { count (1); return (PARSEOP_LOCAL5); }
306"Local6"                    { count (1); return (PARSEOP_LOCAL6); }
307"Local7"                    { count (1); return (PARSEOP_LOCAL7); }
308
309
310 /****************************************************************************
311  *
312  * Resource Descriptor macros
313  *
314  ****************************************************************************/
315
316"ResourceTemplate"          { count (1); return (PARSEOP_RESOURCETEMPLATE); }
317"RawDataBuffer"             { count (1); return (PARSEOP_DATABUFFER); }
318
319"DMA"                       { count (1); return (PARSEOP_DMA); }
320"DWordIO"                   { count (1); return (PARSEOP_DWORDIO); }
321"DWordMemory"               { count (1); return (PARSEOP_DWORDMEMORY); }
322"DWordSpace"                { count (1); return (PARSEOP_DWORDSPACE); }
323"EndDependentFn"            { count (1); return (PARSEOP_ENDDEPENDENTFN); }
324"ExtendedIO"                { count (1); return (PARSEOP_EXTENDEDIO); }
325"ExtendedMemory"            { count (1); return (PARSEOP_EXTENDEDMEMORY); }
326"ExtendedSpace"             { count (1); return (PARSEOP_EXTENDEDSPACE); }
327"FixedDma"                  { count (1); return (PARSEOP_FIXEDDMA); }
328"FixedIO"                   { count (1); return (PARSEOP_FIXEDIO); }
329"GpioInt"                   { count (1); return (PARSEOP_GPIO_INT); }
330"GpioIo"                    { count (1); return (PARSEOP_GPIO_IO); }
331"I2cSerialBus"              { count (1); return (PARSEOP_I2C_SERIALBUS); }
332"Interrupt"                 { count (1); return (PARSEOP_INTERRUPT); }
333"IO"                        { count (1); return (PARSEOP_IO); }
334"IRQ"                       { count (1); return (PARSEOP_IRQ); }
335"IRQNoFlags"                { count (1); return (PARSEOP_IRQNOFLAGS); }
336"Memory24"                  { count (1); return (PARSEOP_MEMORY24); }
337"Memory32"                  { count (1); return (PARSEOP_MEMORY32); }
338"Memory32Fixed"             { count (1); return (PARSEOP_MEMORY32FIXED); }
339"QWordIO"                   { count (1); return (PARSEOP_QWORDIO); }
340"QWordMemory"               { count (1); return (PARSEOP_QWORDMEMORY); }
341"QWordSpace"                { count (1); return (PARSEOP_QWORDSPACE); }
342"Register"                  { count (1); return (PARSEOP_REGISTER); }
343"SpiSerialBus"              { count (1); return (PARSEOP_SPI_SERIALBUS); }
344"StartDependentFn"          { count (1); return (PARSEOP_STARTDEPENDENTFN); }
345"StartDependentFnNoPri"     { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); }
346"UartSerialBus"             { count (1); return (PARSEOP_UART_SERIALBUS); }
347"VendorLong"                { count (1); return (PARSEOP_VENDORLONG); }
348"VendorShort"               { count (1); return (PARSEOP_VENDORSHORT); }
349"WordBusNumber"             { count (1); return (PARSEOP_WORDBUSNUMBER); }
350"WordIO"                    { count (1); return (PARSEOP_WORDIO); }
351"WordSpace"                 { count (1); return (PARSEOP_WORDSPACE); }
352
353
354 /****************************************************************************
355  *
356  * Keywords used as arguments to ASL operators and macros
357  *
358  ****************************************************************************/
359
360    /*  AccessAttribKeyword: Serial Bus Attributes (ACPI 5.0) */
361
362"AttribQuick"               { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
363"AttribSendReceive"         { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
364"AttribByte"                { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); }
365"AttribWord"                { count (0); return (PARSEOP_ACCESSATTRIB_WORD); }
366"AttribBlock"               { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); }
367"AttribProcessCall"         { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
368"AttribBlockProcessCall"    { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
369
370    /* AccessAttribKeyword: Legacy synonyms for above (pre-ACPI 5.0) */
371
372"SMBQuick"                  { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
373"SMBSendReceive"            { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
374"SMBByte"                   { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); }
375"SMBWord"                   { count (0); return (PARSEOP_ACCESSATTRIB_WORD); }
376"SMBBlock"                  { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); }
377"SMBProcessCall"            { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
378"SMBBlockProcessCall"       { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
379
380    /* AccessTypeKeyword: Field Access Types */
381
382"AnyAcc"                    { count (0); return (PARSEOP_ACCESSTYPE_ANY); }
383"ByteAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_BYTE); }
384"WordAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_WORD); }
385"DWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_DWORD); }
386"QWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_QWORD); }
387"BufferAcc"                 { count (0); return (PARSEOP_ACCESSTYPE_BUF); }
388
389    /* AddressingModeKeyword: Mode - Resource Descriptors (ACPI 5.0) */
390
391"AddressingMode7Bit"        { count (0); return (PARSEOP_ADDRESSINGMODE_7BIT); }
392"AddressingMode10Bit"       { count (0); return (PARSEOP_ADDRESSINGMODE_10BIT); }
393
394    /* AddressKeyword: ACPI memory range types */
395
396"AddressRangeMemory"        { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); }
397"AddressRangeReserved"      { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); }
398"AddressRangeNVS"           { count (0); return (PARSEOP_ADDRESSTYPE_NVS); }
399"AddressRangeACPI"          { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); }
400
401    /* BusMasterKeyword: DMA Bus Mastering */
402
403"BusMaster"                 { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); }
404"NotBusMaster"              { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); }
405
406    /* ByteLengthKeyword: Bits per Byte - Resource Descriptors (ACPI 5.0) */
407
408"DataBitsFive"              { count (0); return (PARSEOP_BITSPERBYTE_FIVE); }
409"DataBitsSix"               { count (0); return (PARSEOP_BITSPERBYTE_SIX); }
410"DataBitsSeven"             { count (0); return (PARSEOP_BITSPERBYTE_SEVEN); }
411"DataBitsEight"             { count (0); return (PARSEOP_BITSPERBYTE_EIGHT); }
412"DataBitsNine"              { count (0); return (PARSEOP_BITSPERBYTE_NINE); }
413
414    /* ClockPhaseKeyword: Resource Descriptors (ACPI 5.0) */
415
416"ClockPhaseFirst"           { count (0); return (PARSEOP_CLOCKPHASE_FIRST); }
417"ClockPhaseSecond"          { count (0); return (PARSEOP_CLOCKPHASE_SECOND); }
418
419    /* ClockPolarityKeyword: Resource Descriptors (ACPI 5.0) */
420
421"ClockPolarityLow"          { count (0); return (PARSEOP_CLOCKPOLARITY_LOW); }
422"ClockPolarityHigh"         { count (0); return (PARSEOP_CLOCKPOLARITY_HIGH); }
423
424    /* DecodeKeyword: Type of Memory Decoding - Resource Descriptors */
425
426"PosDecode"                 { count (0); return (PARSEOP_DECODETYPE_POS); }
427"SubDecode"                 { count (0); return (PARSEOP_DECODETYPE_SUB); }
428
429    /* DmaTypeKeyword: DMA Types - DMA Resource Descriptor */
430
431"Compatibility"             { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); }
432"TypeA"                     { count (0); return (PARSEOP_DMATYPE_A); }
433"TypeB"                     { count (0); return (PARSEOP_DMATYPE_B); }
434"TypeF"                     { count (0); return (PARSEOP_DMATYPE_F); }
435
436    /* EndianKeyword: Endian type - Resource Descriptor (ACPI 5.0) */
437
438"LittleEndian"              { count (0); return (PARSEOP_ENDIAN_LITTLE); }
439"BigEndian"                 { count (0); return (PARSEOP_ENDIAN_BIG); }
440
441    /* ExtendedAttribKeyword: Bus attributes, AccessAs operator (ACPI 5.0) */
442
443"AttribBytes"               { count (0); return (PARSEOP_ACCESSATTRIB_MULTIBYTE); }
444"AttribRawBytes"            { count (0); return (PARSEOP_ACCESSATTRIB_RAW_BYTES); }
445"AttribRawProcessBytes"     { count (0); return (PARSEOP_ACCESSATTRIB_RAW_PROCESS); }
446
447    /* FlowControlKeyword: Resource Descriptors (ACPI 5.0) */
448
449"FlowControlHardware"       { count (0); return (PARSEOP_FLOWCONTROL_HW); }
450"FlowControlNone"           { count (0); return (PARSEOP_FLOWCONTROL_NONE); }
451"FlowControlXon"            { count (0); return (PARSEOP_FLOWCONTROL_SW); }
452
453    /* InterruptLevelKeyword: Interrupt Active Types */
454
455"ActiveBoth"                { count (0); return (PARSEOP_INTLEVEL_ACTIVEBOTH); }
456"ActiveHigh"                { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); }
457"ActiveLow"                 { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); }
458
459    /* InterruptTypeKeyword: Interrupt Types */
460
461"Edge"                      { count (0); return (PARSEOP_INTTYPE_EDGE); }
462"Level"                     { count (0); return (PARSEOP_INTTYPE_LEVEL); }
463
464    /* IoDecodeKeyword: Type of Memory Decoding - Resource Descriptors */
465
466"Decode10"                  { count (0); return (PARSEOP_IODECODETYPE_10); }
467"Decode16"                  { count (0); return (PARSEOP_IODECODETYPE_16); }
468
469    /* IoRestrictionKeyword: I/O Restriction - GPIO Resource Descriptors (ACPI 5.0) */
470
471"IoRestrictionNone"         { count (0); return (PARSEOP_IORESTRICT_NONE); }
472"IoRestrictionInputOnly"    { count (0); return (PARSEOP_IORESTRICT_IN); }
473"IoRestrictionOutputOnly"   { count (0); return (PARSEOP_IORESTRICT_OUT); }
474"IoRestrictionNoneAndPreserve"   { count (0); return (PARSEOP_IORESTRICT_PRESERVE); }
475
476    /* LockRuleKeyword: Global Lock use for Field Operator */
477
478"Lock"                      { count (0); return (PARSEOP_LOCKRULE_LOCK); }
479"NoLock"                    { count (0); return (PARSEOP_LOCKRULE_NOLOCK); }
480
481    /* MatchOpKeyword: Types for Match Operator */
482
483"MTR"                       { count (0); return (PARSEOP_MATCHTYPE_MTR); }
484"MEQ"                       { count (0); return (PARSEOP_MATCHTYPE_MEQ); }
485"MLE"                       { count (0); return (PARSEOP_MATCHTYPE_MLE); }
486"MLT"                       { count (0); return (PARSEOP_MATCHTYPE_MLT); }
487"MGE"                       { count (0); return (PARSEOP_MATCHTYPE_MGE); }
488"MGT"                       { count (0); return (PARSEOP_MATCHTYPE_MGT); }
489
490    /* MaxKeyword: Max Range Type - Resource Descriptors */
491
492"MaxFixed"                  { count (0); return (PARSEOP_MAXTYPE_FIXED); }
493"MaxNotFixed"               { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); }
494
495    /* MemTypeKeyword: Memory Types - Resource Descriptors */
496
497"Cacheable"                 { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); }
498"WriteCombining"            { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); }
499"Prefetchable"              { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); }
500"NonCacheable"              { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); }
501
502    /* MinKeyword: Min Range Type - Resource Descriptors */
503
504"MinFixed"                  { count (0); return (PARSEOP_MINTYPE_FIXED); }
505"MinNotFixed"               { count (0); return (PARSEOP_MINTYPE_NOTFIXED); }
506
507    /* ObjectTypeKeyword: ACPI Object Types */
508
509"UnknownObj"                { count (0); return (PARSEOP_OBJECTTYPE_UNK); }
510"IntObj"                    { count (0); return (PARSEOP_OBJECTTYPE_INT); }
511"StrObj"                    { count (0); return (PARSEOP_OBJECTTYPE_STR); }
512"BuffObj"                   { count (0); return (PARSEOP_OBJECTTYPE_BUF); }
513"PkgObj"                    { count (0); return (PARSEOP_OBJECTTYPE_PKG); }
514"FieldUnitObj"              { count (0); return (PARSEOP_OBJECTTYPE_FLD); }
515"DeviceObj"                 { count (0); return (PARSEOP_OBJECTTYPE_DEV); }
516"EventObj"                  { count (0); return (PARSEOP_OBJECTTYPE_EVT); }
517"MethodObj"                 { count (0); return (PARSEOP_OBJECTTYPE_MTH); }
518"MutexObj"                  { count (0); return (PARSEOP_OBJECTTYPE_MTX); }
519"OpRegionObj"               { count (0); return (PARSEOP_OBJECTTYPE_OPR); }
520"PowerResObj"               { count (0); return (PARSEOP_OBJECTTYPE_POW); }
521"ProcessorObj"              { count (0); return (PARSEOP_OBJECTTYPE_PRO); }
522"ThermalZoneObj"            { count (0); return (PARSEOP_OBJECTTYPE_THZ); }
523"BuffFieldObj"              { count (0); return (PARSEOP_OBJECTTYPE_BFF); }
524"DDBHandleObj"              { count (0); return (PARSEOP_OBJECTTYPE_DDB); }
525
526    /* ParityKeyword: Resource Descriptors (ACPI 5.0) */
527
528"ParityTypeSpace"           { count (0); return (PARSEOP_PARITYTYPE_SPACE); }
529"ParityTypeMark"            { count (0); return (PARSEOP_PARITYTYPE_MARK); }
530"ParityTypeOdd"             { count (0); return (PARSEOP_PARITYTYPE_ODD); }
531"ParityTypeEven"            { count (0); return (PARSEOP_PARITYTYPE_EVEN); }
532"ParityTypeNone"            { count (0); return (PARSEOP_PARITYTYPE_NONE); }
533
534    /* PinConfigKeyword: Pin Configuration - GPIO Resource Descriptors (ACPI 5.0) */
535
536"PullDefault"               { count (0); return (PARSEOP_PIN_PULLDEFAULT); }
537"PullUp"                    { count (0); return (PARSEOP_PIN_PULLUP); }
538"PullDown"                  { count (0); return (PARSEOP_PIN_PULLDOWN); }
539"PullNone"                  { count (0); return (PARSEOP_PIN_NOPULL); }
540
541    /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */
542
543"PolarityLow"               { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); }
544"PolarityHigh"              { count (0); return (PARSEOP_DEVICEPOLARITY_HIGH); }
545
546    /* RangeTypeKeyword: I/O Range Types - Resource Descriptors */
547
548"ISAOnlyRanges"             { count (0); return (PARSEOP_RANGETYPE_ISAONLY); }
549"NonISAOnlyRanges"          { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); }
550"EntireRange"               { count (0); return (PARSEOP_RANGETYPE_ENTIRE); }
551
552    /* ReadWriteKeyword: Memory Access Types - Resource Descriptors */
553
554"ReadWrite"                 { count (0); return (PARSEOP_READWRITETYPE_BOTH); }
555"ReadOnly"                  { count (0); return (PARSEOP_READWRITETYPE_READONLY); }
556
557    /* RegionSpaceKeyword: Operation Region Address Space Types */
558
559"SystemIO"                  { count (0); return (PARSEOP_REGIONSPACE_IO); }
560"SystemMemory"              { count (0); return (PARSEOP_REGIONSPACE_MEM); }
561"PCI_Config"                { count (0); return (PARSEOP_REGIONSPACE_PCI); }
562"EmbeddedControl"           { count (0); return (PARSEOP_REGIONSPACE_EC); }
563"SMBus"                     { count (0); return (PARSEOP_REGIONSPACE_SMBUS); }
564"SystemCMOS"                { count (0); return (PARSEOP_REGIONSPACE_CMOS); }
565"PciBarTarget"              { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); }
566"IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
567"GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
568"GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
569"PCC"                       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
570"FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
571
572    /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
573
574"ResourceConsumer"          { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); }
575"ResourceProducer"          { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); }
576
577    /* SerializeRuleKeyword: Control Method Serialization */
578
579"Serialized"                { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); }
580"NotSerialized"             { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); }
581
582    /* ShareTypeKeyword: Interrupt Sharing - Resource Descriptors */
583
584"Shared"                    { count (0); return (PARSEOP_SHARETYPE_SHARED); }
585"Exclusive"                 { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); }
586"SharedAndWake"             { count (0); return (PARSEOP_SHARETYPE_SHAREDWAKE); }       /* ACPI 5.0 */
587"ExclusiveAndWake"          { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVEWAKE); }    /* ACPI 5.0 */
588
589    /* SlaveModeKeyword: Resource Descriptors (ACPI 5.0) */
590
591"ControllerInitiated"       { count (0); return (PARSEOP_SLAVEMODE_CONTROLLERINIT); }
592"DeviceInitiated"           { count (0); return (PARSEOP_SLAVEMODE_DEVICEINIT); }
593
594    /* StopBitsKeyword: Resource Descriptors (ACPI 5.0) */
595
596"StopBitsOne"               { count (0); return (PARSEOP_STOPBITS_ONE); }
597"StopBitsOnePlusHalf"       { count (0); return (PARSEOP_STOPBITS_ONEPLUSHALF); }
598"StopBitsTwo"               { count (0); return (PARSEOP_STOPBITS_TWO); }
599"StopBitsZero"              { count (0); return (PARSEOP_STOPBITS_ZERO); }
600
601    /* TransferWidthKeyword: DMA Widths - Fixed DMA Resource Descriptor (ACPI 5.0) */
602
603"Width8bit"                 { count (0); return (PARSEOP_XFERSIZE_8); }
604"Width16bit"                { count (0); return (PARSEOP_XFERSIZE_16); }
605"Width32bit"                { count (0); return (PARSEOP_XFERSIZE_32); }
606"Width64bit"                { count (0); return (PARSEOP_XFERSIZE_64); }
607"Width128bit"               { count (0); return (PARSEOP_XFERSIZE_128); }
608"Width256bit"               { count (0); return (PARSEOP_XFERSIZE_256); }
609
610    /* TranslationKeyword: Translation Density Types - Resource Descriptors */
611
612"SparseTranslation"         { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); }
613"DenseTranslation"          { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); }
614
615    /* TypeKeyword: Translation Types - Resource Descriptors */
616
617"TypeTranslation"           { count (0); return (PARSEOP_TYPE_TRANSLATION); }
618"TypeStatic"                { count (0); return (PARSEOP_TYPE_STATIC); }
619
620    /* UpdateRuleKeyword: Field Update Rules */
621
622"Preserve"                  { count (0); return (PARSEOP_UPDATERULE_PRESERVE); }
623"WriteAsOnes"               { count (0); return (PARSEOP_UPDATERULE_ONES); }
624"WriteAsZeros"              { count (0); return (PARSEOP_UPDATERULE_ZEROS); }
625
626    /* WireModeKeyword: SPI Wire Mode - Resource Descriptors (ACPI 5.0) */
627
628"FourWireMode"              { count (0); return (PARSEOP_WIREMODE_FOUR); }
629"ThreeWireMode"             { count (0); return (PARSEOP_WIREMODE_THREE); }
630
631    /* XferTypeKeyword: DMA Transfer Types */
632
633"Transfer8"                 { count (0); return (PARSEOP_XFERTYPE_8); }
634"Transfer8_16"              { count (0); return (PARSEOP_XFERTYPE_8_16); }
635"Transfer16"                { count (0); return (PARSEOP_XFERTYPE_16); }
636
637    /* ToPld macro */
638
639"ToPLD"                     { count (0); return (PARSEOP_TOPLD); }
640
641"PLD_Revision"              { count (0); return (PARSEOP_PLD_REVISION); }
642"PLD_IgnoreColor"           { count (0); return (PARSEOP_PLD_IGNORECOLOR); }
643"PLD_Red"                   { count (0); return (PARSEOP_PLD_RED); }
644"PLD_Green"                 { count (0); return (PARSEOP_PLD_GREEN); }
645"PLD_Blue"                  { count (0); return (PARSEOP_PLD_BLUE); }
646"PLD_Width"                 { count (0); return (PARSEOP_PLD_WIDTH); }
647"PLD_Height"                { count (0); return (PARSEOP_PLD_HEIGHT); }
648"PLD_UserVisible"           { count (0); return (PARSEOP_PLD_USERVISIBLE); }
649"PLD_Dock"                  { count (0); return (PARSEOP_PLD_DOCK); }
650"PLD_Lid"                   { count (0); return (PARSEOP_PLD_LID); }
651"PLD_Panel"                 { count (0); return (PARSEOP_PLD_PANEL); }
652"PLD_VerticalPosition"      { count (0); return (PARSEOP_PLD_VERTICALPOSITION); }
653"PLD_HorizontalPosition"    { count (0); return (PARSEOP_PLD_HORIZONTALPOSITION); }
654"PLD_Shape"                 { count (0); return (PARSEOP_PLD_SHAPE); }
655"PLD_GroupOrientation"      { count (0); return (PARSEOP_PLD_GROUPORIENTATION); }
656"PLD_GroupToken"            { count (0); return (PARSEOP_PLD_GROUPTOKEN); }
657"PLD_GroupPosition"         { count (0); return (PARSEOP_PLD_GROUPPOSITION); }
658"PLD_Bay"                   { count (0); return (PARSEOP_PLD_BAY); }
659"PLD_Ejectable"             { count (0); return (PARSEOP_PLD_EJECTABLE); }
660"PLD_EjectRequired"         { count (0); return (PARSEOP_PLD_EJECTREQUIRED); }
661"PLD_CabinetNumber"         { count (0); return (PARSEOP_PLD_CABINETNUMBER); }
662"PLD_CardCageNumber"        { count (0); return (PARSEOP_PLD_CARDCAGENUMBER); }
663"PLD_Reference"             { count (0); return (PARSEOP_PLD_REFERENCE); }
664"PLD_Rotation"              { count (0); return (PARSEOP_PLD_ROTATION); }
665"PLD_Order"                 { count (0); return (PARSEOP_PLD_ORDER); }
666"PLD_Reserved"              { count (0); return (PARSEOP_PLD_RESERVED); }
667"PLD_VerticalOffset"        { count (0); return (PARSEOP_PLD_VERTICALOFFSET); }
668"PLD_HorizontalOffset"      { count (0); return (PARSEOP_PLD_HORIZONTALOFFSET); }
669
670
671    /* printf debug macros */
672"printf"                    { count (0); return (PARSEOP_PRINTF); }
673"fprintf"                   { count (0); return (PARSEOP_FPRINTF); }
674
675    /* Predefined compiler names */
676
677"__DATE__"                  { count (0); return (PARSEOP___DATE__); }
678"__FILE__"                  { count (0); return (PARSEOP___FILE__); }
679"__LINE__"                  { count (0); return (PARSEOP___LINE__); }
680"__PATH__"                  { count (0); return (PARSEOP___PATH__); }
681
682
683"{"                         { count (0); return('{'); }
684"}"                         { count (0); return('}'); }
685","                         { count (0); return(','); }
686"("                         { count (0); return('('); }
687")"                         { count (0); return(')'); }
688
689{NameSeg}                   { char *s;
690                                count (0);
691                                s=UtStringCacheCalloc (ACPI_NAME_SIZE + 1);
692                                if (strcmp (AslCompilertext, "\\"))
693                                {
694                                    strcpy (s, "____");
695                                    AcpiUtStrupr (AslCompilertext);
696                                }
697                                memcpy (s, AslCompilertext, strlen (AslCompilertext));
698                                AslCompilerlval.s = s;
699                                DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s);
700                                return (PARSEOP_NAMESEG); }
701
702{NameString}                { char *s;
703                                count (0);
704                                s=UtStringCacheCalloc (strlen (AslCompilertext)+1);
705                                AcpiUtStrupr (AslCompilertext);
706                                strcpy (s, AslCompilertext);
707                                AslCompilerlval.s = s;
708                                DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);
709                                return (PARSEOP_NAMESTRING); }
710
711.                           { count (1);
712                                if (ACPI_IS_PRINT (*AslCompilertext))
713                                {
714                                    sprintf (MsgBuffer,
715                                        "Invalid character (%c), expecting ASL keyword or name",
716                                        *AslCompilertext);
717                                }
718                                else
719                                {
720                                    sprintf (MsgBuffer,
721                                        "Invalid character (0x%2.2X), expecting ASL keyword or name",
722                                        *AslCompilertext);
723                                }
724                                AslCompilererror (MsgBuffer);}
725
726<<EOF>>                     { if (AslPopInputFileStack ())
727                                {yyterminate();}
728                              else
729                                {return (PARSEOP_INCLUDE_END);} };
730
731%%
732
733/*! [End] no source code translation !*/
734
735/*
736 * Bring in the scanner support routines
737 */
738#include <contrib/dev/acpica/compiler/aslsupport.l>
739