2 /******************************************************************************
4 * Module Name: aslcompiler.y - Bison/Yacc input file (ASL grammar and actions)
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
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.
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.
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.
45 #include <contrib/dev/acpica/compiler/aslcompiler.h>
49 #include <contrib/dev/acpica/include/acpi.h>
50 #include <contrib/dev/acpica/include/accommon.h>
52 #define _COMPONENT ACPI_COMPILER
53 ACPI_MODULE_NAME ("aslparse")
58 * October 2005: The following list terms have been optimized (from the
59 * original ASL grammar in the ACPI specification) to force the immediate
60 * reduction of each list item so that the parse stack use doesn't increase on
61 * each list element and possibly overflow on very large lists (>4000 items).
62 * This dramatically reduces use of the parse stack overall.
64 * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList,
65 * ResourceMacroList, and FieldUnitList
68 void * AslLocalAllocate (unsigned int Size);
70 /* Bison/yacc configuration */
74 #define alloca AslLocalAllocate
75 #define yytname AslCompilername
77 #define YYINITDEPTH 600 /* State stack depth */
78 #define YYDEBUG 1 /* Enable debug output */
79 #define YYERROR_VERBOSE 1 /* Verbose error messages */
82 * The windows version of bison defines this incorrectly as "32768" (Not negative).
83 * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
84 * instead (#define YYFBAD 32768), so we can define it correctly here.
86 * The problem is that if YYFLAG is positive, the extended syntax error messages
94 * Declare the type of values in the grammar
102 /*! [Begin] no source code translation */
105 * These shift/reduce conflicts are expected. There should be zero
106 * reduce/reduce conflicts.
110 /******************************************************************************
112 * Token types: These are returned by the lexer
114 * NOTE: This list MUST match the AslKeywordMapping table found
115 * in aslmap.c EXACTLY! Double check any changes!
117 *****************************************************************************/
119 %token <i> PARSEOP_ACCESSAS
120 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
121 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
122 %token <i> PARSEOP_ACCESSATTRIB_BYTE
123 %token <i> PARSEOP_ACCESSATTRIB_MULTIBYTE
124 %token <i> PARSEOP_ACCESSATTRIB_QUICK
125 %token <i> PARSEOP_ACCESSATTRIB_RAW_BYTES
126 %token <i> PARSEOP_ACCESSATTRIB_RAW_PROCESS
127 %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
128 %token <i> PARSEOP_ACCESSATTRIB_WORD
129 %token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
130 %token <i> PARSEOP_ACCESSTYPE_ANY
131 %token <i> PARSEOP_ACCESSTYPE_BUF
132 %token <i> PARSEOP_ACCESSTYPE_BYTE
133 %token <i> PARSEOP_ACCESSTYPE_DWORD
134 %token <i> PARSEOP_ACCESSTYPE_QWORD
135 %token <i> PARSEOP_ACCESSTYPE_WORD
136 %token <i> PARSEOP_ACQUIRE
137 %token <i> PARSEOP_ADD
138 %token <i> PARSEOP_ADDRESSINGMODE_7BIT
139 %token <i> PARSEOP_ADDRESSINGMODE_10BIT
140 %token <i> PARSEOP_ADDRESSTYPE_ACPI
141 %token <i> PARSEOP_ADDRESSTYPE_MEMORY
142 %token <i> PARSEOP_ADDRESSTYPE_NVS
143 %token <i> PARSEOP_ADDRESSTYPE_RESERVED
144 %token <i> PARSEOP_ALIAS
145 %token <i> PARSEOP_AND
146 %token <i> PARSEOP_ARG0
147 %token <i> PARSEOP_ARG1
148 %token <i> PARSEOP_ARG2
149 %token <i> PARSEOP_ARG3
150 %token <i> PARSEOP_ARG4
151 %token <i> PARSEOP_ARG5
152 %token <i> PARSEOP_ARG6
153 %token <i> PARSEOP_BANKFIELD
154 %token <i> PARSEOP_BITSPERBYTE_EIGHT
155 %token <i> PARSEOP_BITSPERBYTE_FIVE
156 %token <i> PARSEOP_BITSPERBYTE_NINE
157 %token <i> PARSEOP_BITSPERBYTE_SEVEN
158 %token <i> PARSEOP_BITSPERBYTE_SIX
159 %token <i> PARSEOP_BREAK
160 %token <i> PARSEOP_BREAKPOINT
161 %token <i> PARSEOP_BUFFER
162 %token <i> PARSEOP_BUSMASTERTYPE_MASTER
163 %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
164 %token <i> PARSEOP_BYTECONST
165 %token <i> PARSEOP_CASE
166 %token <i> PARSEOP_CLOCKPHASE_FIRST
167 %token <i> PARSEOP_CLOCKPHASE_SECOND
168 %token <i> PARSEOP_CLOCKPOLARITY_HIGH
169 %token <i> PARSEOP_CLOCKPOLARITY_LOW
170 %token <i> PARSEOP_CONCATENATE
171 %token <i> PARSEOP_CONCATENATERESTEMPLATE
172 %token <i> PARSEOP_CONDREFOF
173 %token <i> PARSEOP_CONNECTION
174 %token <i> PARSEOP_CONTINUE
175 %token <i> PARSEOP_COPYOBJECT
176 %token <i> PARSEOP_CREATEBITFIELD
177 %token <i> PARSEOP_CREATEBYTEFIELD
178 %token <i> PARSEOP_CREATEDWORDFIELD
179 %token <i> PARSEOP_CREATEFIELD
180 %token <i> PARSEOP_CREATEQWORDFIELD
181 %token <i> PARSEOP_CREATEWORDFIELD
182 %token <i> PARSEOP_DATABUFFER
183 %token <i> PARSEOP_DATATABLEREGION
184 %token <i> PARSEOP_DEBUG
185 %token <i> PARSEOP_DECODETYPE_POS
186 %token <i> PARSEOP_DECODETYPE_SUB
187 %token <i> PARSEOP_DECREMENT
188 %token <i> PARSEOP_DEFAULT
189 %token <i> PARSEOP_DEFAULT_ARG
190 %token <i> PARSEOP_DEFINITIONBLOCK
191 %token <i> PARSEOP_DEREFOF
192 %token <i> PARSEOP_DEVICE
193 %token <i> PARSEOP_DEVICEPOLARITY_HIGH
194 %token <i> PARSEOP_DEVICEPOLARITY_LOW
195 %token <i> PARSEOP_DIVIDE
196 %token <i> PARSEOP_DMA
197 %token <i> PARSEOP_DMATYPE_A
198 %token <i> PARSEOP_DMATYPE_COMPATIBILITY
199 %token <i> PARSEOP_DMATYPE_B
200 %token <i> PARSEOP_DMATYPE_F
201 %token <i> PARSEOP_DWORDCONST
202 %token <i> PARSEOP_DWORDIO
203 %token <i> PARSEOP_DWORDMEMORY
204 %token <i> PARSEOP_DWORDSPACE
205 %token <i> PARSEOP_EISAID
206 %token <i> PARSEOP_ELSE
207 %token <i> PARSEOP_ELSEIF
208 %token <i> PARSEOP_ENDDEPENDENTFN
209 %token <i> PARSEOP_ENDIAN_BIG
210 %token <i> PARSEOP_ENDIAN_LITTLE
211 %token <i> PARSEOP_ENDTAG
212 %token <i> PARSEOP_ERRORNODE
213 %token <i> PARSEOP_EVENT
214 %token <i> PARSEOP_EXTENDEDIO
215 %token <i> PARSEOP_EXTENDEDMEMORY
216 %token <i> PARSEOP_EXTENDEDSPACE
217 %token <i> PARSEOP_EXTERNAL
218 %token <i> PARSEOP_FATAL
219 %token <i> PARSEOP_FIELD
220 %token <i> PARSEOP_FINDSETLEFTBIT
221 %token <i> PARSEOP_FINDSETRIGHTBIT
222 %token <i> PARSEOP_FIXEDDMA
223 %token <i> PARSEOP_FIXEDIO
224 %token <i> PARSEOP_FLOWCONTROL_HW
225 %token <i> PARSEOP_FLOWCONTROL_NONE
226 %token <i> PARSEOP_FLOWCONTROL_SW
227 %token <i> PARSEOP_FROMBCD
228 %token <i> PARSEOP_FUNCTION
229 %token <i> PARSEOP_GPIO_INT
230 %token <i> PARSEOP_GPIO_IO
231 %token <i> PARSEOP_I2C_SERIALBUS
232 %token <i> PARSEOP_IF
233 %token <i> PARSEOP_INCLUDE
234 %token <i> PARSEOP_INCLUDE_CSTYLE
235 %token <i> PARSEOP_INCLUDE_END
236 %token <i> PARSEOP_INCREMENT
237 %token <i> PARSEOP_INDEX
238 %token <i> PARSEOP_INDEXFIELD
239 %token <i> PARSEOP_INTEGER
240 %token <i> PARSEOP_INTERRUPT
241 %token <i> PARSEOP_INTLEVEL_ACTIVEBOTH
242 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
243 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
244 %token <i> PARSEOP_INTTYPE_EDGE
245 %token <i> PARSEOP_INTTYPE_LEVEL
246 %token <i> PARSEOP_IO
247 %token <i> PARSEOP_IODECODETYPE_10
248 %token <i> PARSEOP_IODECODETYPE_16
249 %token <i> PARSEOP_IORESTRICT_IN
250 %token <i> PARSEOP_IORESTRICT_NONE
251 %token <i> PARSEOP_IORESTRICT_OUT
252 %token <i> PARSEOP_IORESTRICT_PRESERVE
253 %token <i> PARSEOP_IRQ
254 %token <i> PARSEOP_IRQNOFLAGS
255 %token <i> PARSEOP_LAND
256 %token <i> PARSEOP_LEQUAL
257 %token <i> PARSEOP_LGREATER
258 %token <i> PARSEOP_LGREATEREQUAL
259 %token <i> PARSEOP_LINE_CSTYLE
260 %token <i> PARSEOP_LLESS
261 %token <i> PARSEOP_LLESSEQUAL
262 %token <i> PARSEOP_LNOT
263 %token <i> PARSEOP_LNOTEQUAL
264 %token <i> PARSEOP_LOAD
265 %token <i> PARSEOP_LOADTABLE
266 %token <i> PARSEOP_LOCAL0
267 %token <i> PARSEOP_LOCAL1
268 %token <i> PARSEOP_LOCAL2
269 %token <i> PARSEOP_LOCAL3
270 %token <i> PARSEOP_LOCAL4
271 %token <i> PARSEOP_LOCAL5
272 %token <i> PARSEOP_LOCAL6
273 %token <i> PARSEOP_LOCAL7
274 %token <i> PARSEOP_LOCKRULE_LOCK
275 %token <i> PARSEOP_LOCKRULE_NOLOCK
276 %token <i> PARSEOP_LOR
277 %token <i> PARSEOP_MATCH
278 %token <i> PARSEOP_MATCHTYPE_MEQ
279 %token <i> PARSEOP_MATCHTYPE_MGE
280 %token <i> PARSEOP_MATCHTYPE_MGT
281 %token <i> PARSEOP_MATCHTYPE_MLE
282 %token <i> PARSEOP_MATCHTYPE_MLT
283 %token <i> PARSEOP_MATCHTYPE_MTR
284 %token <i> PARSEOP_MAXTYPE_FIXED
285 %token <i> PARSEOP_MAXTYPE_NOTFIXED
286 %token <i> PARSEOP_MEMORY24
287 %token <i> PARSEOP_MEMORY32
288 %token <i> PARSEOP_MEMORY32FIXED
289 %token <i> PARSEOP_MEMTYPE_CACHEABLE
290 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
291 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
292 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
293 %token <i> PARSEOP_METHOD
294 %token <i> PARSEOP_METHODCALL
295 %token <i> PARSEOP_MID
296 %token <i> PARSEOP_MINTYPE_FIXED
297 %token <i> PARSEOP_MINTYPE_NOTFIXED
298 %token <i> PARSEOP_MOD
299 %token <i> PARSEOP_MULTIPLY
300 %token <i> PARSEOP_MUTEX
301 %token <i> PARSEOP_NAME
302 %token <s> PARSEOP_NAMESEG
303 %token <s> PARSEOP_NAMESTRING
304 %token <i> PARSEOP_NAND
305 %token <i> PARSEOP_NOOP
306 %token <i> PARSEOP_NOR
307 %token <i> PARSEOP_NOT
308 %token <i> PARSEOP_NOTIFY
309 %token <i> PARSEOP_OBJECTTYPE
310 %token <i> PARSEOP_OBJECTTYPE_BFF
311 %token <i> PARSEOP_OBJECTTYPE_BUF
312 %token <i> PARSEOP_OBJECTTYPE_DDB
313 %token <i> PARSEOP_OBJECTTYPE_DEV
314 %token <i> PARSEOP_OBJECTTYPE_EVT
315 %token <i> PARSEOP_OBJECTTYPE_FLD
316 %token <i> PARSEOP_OBJECTTYPE_INT
317 %token <i> PARSEOP_OBJECTTYPE_MTH
318 %token <i> PARSEOP_OBJECTTYPE_MTX
319 %token <i> PARSEOP_OBJECTTYPE_OPR
320 %token <i> PARSEOP_OBJECTTYPE_PKG
321 %token <i> PARSEOP_OBJECTTYPE_POW
322 %token <i> PARSEOP_OBJECTTYPE_PRO
323 %token <i> PARSEOP_OBJECTTYPE_STR
324 %token <i> PARSEOP_OBJECTTYPE_THZ
325 %token <i> PARSEOP_OBJECTTYPE_UNK
326 %token <i> PARSEOP_OFFSET
327 %token <i> PARSEOP_ONE
328 %token <i> PARSEOP_ONES
329 %token <i> PARSEOP_OPERATIONREGION
330 %token <i> PARSEOP_OR
331 %token <i> PARSEOP_PACKAGE
332 %token <i> PARSEOP_PACKAGE_LENGTH
333 %token <i> PARSEOP_PARITYTYPE_EVEN
334 %token <i> PARSEOP_PARITYTYPE_MARK
335 %token <i> PARSEOP_PARITYTYPE_NONE
336 %token <i> PARSEOP_PARITYTYPE_ODD
337 %token <i> PARSEOP_PARITYTYPE_SPACE
338 %token <i> PARSEOP_PIN_NOPULL
339 %token <i> PARSEOP_PIN_PULLDEFAULT
340 %token <i> PARSEOP_PIN_PULLDOWN
341 %token <i> PARSEOP_PIN_PULLUP
342 %token <i> PARSEOP_POWERRESOURCE
343 %token <i> PARSEOP_PROCESSOR
344 %token <i> PARSEOP_QWORDCONST
345 %token <i> PARSEOP_QWORDIO
346 %token <i> PARSEOP_QWORDMEMORY
347 %token <i> PARSEOP_QWORDSPACE
348 %token <i> PARSEOP_RANGETYPE_ENTIRE
349 %token <i> PARSEOP_RANGETYPE_ISAONLY
350 %token <i> PARSEOP_RANGETYPE_NONISAONLY
351 %token <i> PARSEOP_RAW_DATA
352 %token <i> PARSEOP_READWRITETYPE_BOTH
353 %token <i> PARSEOP_READWRITETYPE_READONLY
354 %token <i> PARSEOP_REFOF
355 %token <i> PARSEOP_REGIONSPACE_CMOS
356 %token <i> PARSEOP_REGIONSPACE_EC
357 %token <i> PARSEOP_REGIONSPACE_FFIXEDHW
358 %token <i> PARSEOP_REGIONSPACE_GPIO
359 %token <i> PARSEOP_REGIONSPACE_GSBUS
360 %token <i> PARSEOP_REGIONSPACE_IO
361 %token <i> PARSEOP_REGIONSPACE_IPMI
362 %token <i> PARSEOP_REGIONSPACE_MEM
363 %token <i> PARSEOP_REGIONSPACE_PCI
364 %token <i> PARSEOP_REGIONSPACE_PCIBAR
365 %token <i> PARSEOP_REGIONSPACE_SMBUS
366 %token <i> PARSEOP_REGISTER
367 %token <i> PARSEOP_RELEASE
368 %token <i> PARSEOP_RESERVED_BYTES
369 %token <i> PARSEOP_RESET
370 %token <i> PARSEOP_RESOURCETEMPLATE
371 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
372 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
373 %token <i> PARSEOP_RETURN
374 %token <i> PARSEOP_REVISION
375 %token <i> PARSEOP_SCOPE
376 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
377 %token <i> PARSEOP_SERIALIZERULE_SERIAL
378 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
379 %token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
380 %token <i> PARSEOP_SHARETYPE_SHARED
381 %token <i> PARSEOP_SHARETYPE_SHAREDWAKE
382 %token <i> PARSEOP_SHIFTLEFT
383 %token <i> PARSEOP_SHIFTRIGHT
384 %token <i> PARSEOP_SIGNAL
385 %token <i> PARSEOP_SIZEOF
386 %token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
387 %token <i> PARSEOP_SLAVEMODE_DEVICEINIT
388 %token <i> PARSEOP_SLEEP
389 %token <i> PARSEOP_SPI_SERIALBUS
390 %token <i> PARSEOP_STALL
391 %token <i> PARSEOP_STARTDEPENDENTFN
392 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
393 %token <i> PARSEOP_STOPBITS_ONE
394 %token <i> PARSEOP_STOPBITS_ONEPLUSHALF
395 %token <i> PARSEOP_STOPBITS_TWO
396 %token <i> PARSEOP_STOPBITS_ZERO
397 %token <i> PARSEOP_STORE
398 %token <s> PARSEOP_STRING_LITERAL
399 %token <i> PARSEOP_SUBTRACT
400 %token <i> PARSEOP_SWITCH
401 %token <i> PARSEOP_THERMALZONE
402 %token <i> PARSEOP_TIMER
403 %token <i> PARSEOP_TOBCD
404 %token <i> PARSEOP_TOBUFFER
405 %token <i> PARSEOP_TODECIMALSTRING
406 %token <i> PARSEOP_TOHEXSTRING
407 %token <i> PARSEOP_TOINTEGER
408 %token <i> PARSEOP_TOSTRING
409 %token <i> PARSEOP_TOUUID
410 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
411 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
412 %token <i> PARSEOP_TYPE_STATIC
413 %token <i> PARSEOP_TYPE_TRANSLATION
414 %token <i> PARSEOP_UART_SERIALBUS
415 %token <i> PARSEOP_UNICODE
416 %token <i> PARSEOP_UNLOAD
417 %token <i> PARSEOP_UPDATERULE_ONES
418 %token <i> PARSEOP_UPDATERULE_PRESERVE
419 %token <i> PARSEOP_UPDATERULE_ZEROS
420 %token <i> PARSEOP_VAR_PACKAGE
421 %token <i> PARSEOP_VENDORLONG
422 %token <i> PARSEOP_VENDORSHORT
423 %token <i> PARSEOP_WAIT
424 %token <i> PARSEOP_WHILE
425 %token <i> PARSEOP_WIREMODE_FOUR
426 %token <i> PARSEOP_WIREMODE_THREE
427 %token <i> PARSEOP_WORDBUSNUMBER
428 %token <i> PARSEOP_WORDCONST
429 %token <i> PARSEOP_WORDIO
430 %token <i> PARSEOP_WORDSPACE
431 %token <i> PARSEOP_XFERSIZE_8
432 %token <i> PARSEOP_XFERSIZE_16
433 %token <i> PARSEOP_XFERSIZE_32
434 %token <i> PARSEOP_XFERSIZE_64
435 %token <i> PARSEOP_XFERSIZE_128
436 %token <i> PARSEOP_XFERSIZE_256
437 %token <i> PARSEOP_XFERTYPE_8
438 %token <i> PARSEOP_XFERTYPE_8_16
439 %token <i> PARSEOP_XFERTYPE_16
440 %token <i> PARSEOP_XOR
441 %token <i> PARSEOP_ZERO
444 * Special functions. These should probably stay at the end of this
447 %token <i> PARSEOP___DATE__
448 %token <i> PARSEOP___FILE__
449 %token <i> PARSEOP___LINE__
450 %token <i> PARSEOP___PATH__
453 /******************************************************************************
457 *****************************************************************************/
462 %type <n> BufferTermData
463 %type <n> CompilerDirective
465 %type <n> DefinitionBlockTerm
466 %type <n> IntegerData
467 %type <n> NamedObject
468 %type <n> NameSpaceModifier
471 %type <n> PackageData
472 %type <n> ParameterTypePackage
473 %type <n> ParameterTypePackageList
474 %type <n> ParameterTypesPackage
475 %type <n> ParameterTypesPackageList
476 %type <n> RequiredTarget
477 %type <n> SimpleTarget
485 /* Type4Opcode is obsolete */
487 %type <n> Type1Opcode
488 %type <n> Type2BufferOpcode
489 %type <n> Type2BufferOrStringOpcode
490 %type <n> Type2IntegerOpcode
491 %type <n> Type2Opcode
492 %type <n> Type2StringOpcode
493 %type <n> Type3Opcode
494 %type <n> Type5Opcode
495 %type <n> Type6Opcode
497 %type <n> AccessAsTerm
498 %type <n> ExternalTerm
500 %type <n> FieldUnitEntry
501 %type <n> FieldUnitList
502 %type <n> IncludeCStyleTerm
503 %type <n> IncludeTerm
506 %type <n> OptionalAccessAttribTerm
510 %type <n> BankFieldTerm
511 %type <n> CreateBitFieldTerm
512 %type <n> CreateByteFieldTerm
513 %type <n> CreateDWordFieldTerm
514 %type <n> CreateFieldTerm
515 %type <n> CreateQWordFieldTerm
516 %type <n> CreateWordFieldTerm
517 %type <n> DataRegionTerm
521 %type <n> FunctionTerm
522 %type <n> IndexFieldTerm
525 %type <n> OpRegionTerm
526 %type <n> OpRegionSpaceIdTerm
527 %type <n> PowerResTerm
528 %type <n> ProcessorTerm
529 %type <n> ThermalZoneTerm
531 /* Namespace modifiers */
539 %type <n> BreakPointTerm
541 %type <n> CaseDefaultTermList
543 %type <n> ContinueTerm
544 %type <n> DefaultTerm
552 %type <n> ReleaseTerm
561 //%type <n> CaseTermList
565 %type <n> AcquireTerm
568 %type <n> ConcatResTerm
570 %type <n> CondRefOfTerm
571 %type <n> CopyObjectTerm
573 %type <n> DerefOfTerm
575 %type <n> FindSetLeftBitTerm
576 %type <n> FindSetRightBitTerm
577 %type <n> FromBCDTerm
582 %type <n> LGreaterEqualTerm
583 %type <n> LGreaterTerm
584 %type <n> LLessEqualTerm
586 %type <n> LNotEqualTerm
588 %type <n> LoadTableTerm
593 %type <n> MultiplyTerm
597 %type <n> ObjectTypeTerm
600 %type <n> ShiftLeftTerm
601 %type <n> ShiftRightTerm
604 %type <n> SubtractTerm
607 %type <n> ToBufferTerm
608 %type <n> ToDecimalStringTerm
609 %type <n> ToHexStringTerm
610 %type <n> ToIntegerTerm
611 %type <n> ToStringTerm
617 %type <n> AccessAttribKeyword
618 %type <n> AccessTypeKeyword
619 %type <n> AddressingModeKeyword
620 %type <n> AddressKeyword
621 %type <n> AddressSpaceKeyword
622 %type <n> BitsPerByteKeyword
623 %type <n> ClockPhaseKeyword
624 %type <n> ClockPolarityKeyword
625 %type <n> DecodeKeyword
626 %type <n> DevicePolarityKeyword
627 %type <n> DMATypeKeyword
628 %type <n> EndianKeyword
629 %type <n> FlowControlKeyword
630 %type <n> InterruptLevel
631 %type <n> InterruptTypeKeyword
632 %type <n> IODecodeKeyword
633 %type <n> IoRestrictionKeyword
634 %type <n> LockRuleKeyword
635 %type <n> MatchOpKeyword
637 %type <n> MemTypeKeyword
639 %type <n> ObjectTypeKeyword
640 %type <n> OptionalBusMasterKeyword
641 %type <n> OptionalReadWriteKeyword
642 %type <n> ParityTypeKeyword
643 %type <n> PinConfigByte
644 %type <n> PinConfigKeyword
645 %type <n> RangeTypeKeyword
646 %type <n> RegionSpaceKeyword
647 %type <n> ResourceTypeKeyword
648 %type <n> SerializeRuleKeyword
649 %type <n> ShareTypeKeyword
650 %type <n> SlaveModeKeyword
651 %type <n> StopBitsKeyword
652 %type <n> TranslationKeyword
653 %type <n> TypeKeyword
654 %type <n> UpdateRuleKeyword
655 %type <n> WireModeKeyword
656 %type <n> XferSizeKeyword
657 %type <n> XferTypeKeyword
674 %type <n> ConstExprTerm
675 %type <n> ByteConstExpr
676 %type <n> WordConstExpr
677 %type <n> DWordConstExpr
678 %type <n> QWordConstExpr
684 %type <n> PackageElement
685 %type <n> PackageList
686 %type <n> PackageTerm
687 %type <n> VarPackageLengthTerm
692 %type <n> ResourceMacroList
693 %type <n> ResourceMacroTerm
694 %type <n> ResourceTemplateTerm
696 %type <n> UnicodeTerm
698 /* Resource Descriptors */
700 %type <n> ConnectionTerm
701 %type <n> DataBufferTerm
703 %type <n> DWordIOTerm
704 %type <n> DWordMemoryTerm
705 %type <n> DWordSpaceTerm
706 %type <n> EndDependentFnTerm
707 %type <n> ExtendedIOTerm
708 %type <n> ExtendedMemoryTerm
709 %type <n> ExtendedSpaceTerm
710 %type <n> FixedDmaTerm
711 %type <n> FixedIOTerm
712 %type <n> GpioIntTerm
714 %type <n> I2cSerialBusTerm
715 %type <n> InterruptTerm
717 %type <n> IRQNoFlagsTerm
719 %type <n> Memory24Term
720 %type <n> Memory32FixedTerm
721 %type <n> Memory32Term
724 %type <n> QWordIOTerm
725 %type <n> QWordMemoryTerm
726 %type <n> QWordSpaceTerm
727 %type <n> RegisterTerm
728 %type <n> SpiSerialBusTerm
729 %type <n> StartDependentFnNoPriTerm
730 %type <n> StartDependentFnTerm
731 %type <n> UartSerialBusTerm
732 %type <n> VendorLongTerm
733 %type <n> VendorShortTerm
734 %type <n> WordBusNumberTerm
736 %type <n> WordSpaceTerm
738 /* Local types that help construct the AML, not in ACPI spec */
740 %type <n> AmlPackageLengthTerm
741 %type <n> IncludeEndTerm
742 %type <n> NameStringItem
743 %type <n> TermArgItem
745 %type <n> OptionalAccessSize
746 %type <n> OptionalAddressingMode
747 %type <n> OptionalAddressRange
748 %type <n> OptionalBitsPerByte
749 %type <n> OptionalBuffer_Last
750 %type <n> OptionalByteConstExpr
751 %type <n> OptionalCount
752 %type <n> OptionalDecodeType
753 %type <n> OptionalDevicePolarity
754 %type <n> OptionalDWordConstExpr
755 %type <n> OptionalEndian
756 %type <n> OptionalFlowControl
757 %type <n> OptionalIoRestriction
758 %type <n> OptionalListString
759 %type <n> OptionalMaxType
760 %type <n> OptionalMemType
761 %type <n> OptionalMinType
762 %type <n> OptionalNameString
763 %type <n> OptionalNameString_First
764 %type <n> OptionalNameString_Last
765 %type <n> OptionalObjectTypeKeyword
766 %type <n> OptionalParameterTypePackage
767 %type <n> OptionalParameterTypesPackage
768 %type <n> OptionalParityType
769 %type <n> OptionalQWordConstExpr
770 %type <n> OptionalRangeType
771 %type <n> OptionalReference
772 %type <n> OptionalResourceType
773 %type <n> OptionalResourceType_First
774 %type <n> OptionalReturnArg
775 %type <n> OptionalSerializeRuleKeyword
776 %type <n> OptionalShareType
777 %type <n> OptionalShareType_First
778 %type <n> OptionalSlaveMode
779 %type <n> OptionalStopBits
780 %type <n> OptionalStringData
781 %type <n> OptionalTermArg
782 %type <n> OptionalTranslationType_Last
783 %type <n> OptionalType
784 %type <n> OptionalType_Last
785 %type <n> OptionalWireMode
786 %type <n> OptionalWordConst
787 %type <n> OptionalWordConstExpr
788 %type <n> OptionalXferSize
791 /*******************************************************************************
793 * Production rules start here
795 ******************************************************************************/
803 * Blocks, Data, and Opcodes
807 : DefinitionBlockTerm
808 | error {YYABORT; $$ = NULL;}
812 * Note concerning support for "module-level code".
814 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
815 * methods (the so-called module-level code.) This support was explicitly
816 * removed in ACPI 2.0, but this type of code continues to be created by
817 * BIOS vendors. In order to support the disassembly and recompilation of
818 * such code (and the porting of ASL code to iASL), iASL supports this
819 * code in violation of the current ACPI specification.
821 * The grammar change to support module-level code is to revert the
822 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
823 * original use of {TermList} instead (see below.) This allows the use
824 * of Type1 and Type2 opcodes at module level.
827 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
834 ')' {TrSetEndLineNumber ($<n>3);}
835 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
838 /* ACPI 3.0 -- allow semicolons between terms */
842 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
843 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
844 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
845 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
852 | Type2IntegerOpcode {}
853 | Type2StringOpcode {}
854 | Type2BufferOpcode {}
855 | Type2BufferOrStringOpcode {}
856 | error {$$ = AslDoError(); yyclearin;}
861 | IncludeCStyleTerm {$$ = NULL;}
862 | LineTerm {$$ = NULL;}
868 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
869 | error {$$ = AslDoError(); yyclearin;}
873 : CompilerDirective {}
875 | NameSpaceModifier {}
886 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
887 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
888 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
897 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
898 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
904 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
910 | CreateBitFieldTerm {}
911 | CreateByteFieldTerm {}
912 | CreateDWordFieldTerm {}
914 | CreateQWordFieldTerm {}
915 | CreateWordFieldTerm {}
937 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
938 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
944 | ArgList ',' /* Allows a trailing comma at list end */
946 TermArg {$$ = TrLinkPeerNode ($1,$3);}
950 Removed from TermArg due to reduce/reduce conflicts
951 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
952 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
953 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
954 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
959 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
960 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
961 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
962 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
963 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
967 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
968 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
969 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
973 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
982 /* Rules for specifying the type of one method argument or return value */
986 | ObjectTypeKeyword {$$ = $1;}
987 | ParameterTypePackage ','
988 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
991 ParameterTypePackageList
993 | ObjectTypeKeyword {$$ = $1;}
994 | '{' ParameterTypePackage '}' {$$ = $2;}
997 OptionalParameterTypePackage
998 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
999 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1002 /* Rules for specifying the types for method arguments */
1004 ParameterTypesPackage
1005 : ParameterTypePackageList {$$ = $1;}
1006 | ParameterTypesPackage ','
1007 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
1010 ParameterTypesPackageList
1012 | ObjectTypeKeyword {$$ = $1;}
1013 | '{' ParameterTypesPackage '}' {$$ = $2;}
1016 OptionalParameterTypesPackage
1017 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1018 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1059 * Type 3/4/5 opcodes
1062 Type2IntegerOpcode /* "Type3" opcodes */
1067 | FindSetLeftBitTerm {}
1068 | FindSetRightBitTerm {}
1075 | LGreaterEqualTerm {}
1097 Type2StringOpcode /* "Type4" Opcodes */
1098 : ToDecimalStringTerm {}
1099 | ToHexStringTerm {}
1103 Type2BufferOpcode /* "Type5" Opcodes */
1108 Type2BufferOrStringOpcode
1114 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1124 | ToDecimalStringTerm {}
1125 | ToHexStringTerm {}
1133 : ResourceTemplateTerm {}
1146 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1147 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1149 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1153 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1157 : PARSEOP_INCLUDE_CSTYLE
1158 String {FlOpenIncludeFile ($2);}
1162 : PARSEOP_LINE_CSTYLE
1163 Integer {FlSetLineNumber ($2);}
1167 : PARSEOP_EXTERNAL '('
1169 OptionalObjectTypeKeyword
1170 OptionalParameterTypePackage
1171 OptionalParameterTypesPackage
1172 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1173 | PARSEOP_EXTERNAL '('
1174 error ')' {$$ = AslDoError(); yyclearin;}
1178 /******* Named Objects *******************************************************/
1182 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1186 ',' AccessTypeKeyword
1188 ',' UpdateRuleKeyword
1190 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1191 | PARSEOP_BANKFIELD '('
1192 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1198 | FieldUnitList ',' /* Allows a trailing comma at list end */
1200 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1211 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1213 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1217 : PARSEOP_OFFSET '('
1218 AmlPackageLengthTerm
1219 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1220 | PARSEOP_OFFSET '('
1221 error ')' {$$ = AslDoError(); yyclearin;}
1225 : PARSEOP_ACCESSAS '('
1227 OptionalAccessAttribTerm
1228 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1229 | PARSEOP_ACCESSAS '('
1230 error ')' {$$ = AslDoError(); yyclearin;}
1234 : PARSEOP_CONNECTION '('
1236 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
1237 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
1239 ')' {$$ = TrLinkChildren ($<n>3, 1,
1240 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
1241 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1242 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1244 | PARSEOP_CONNECTION '('
1245 error ')' {$$ = AslDoError(); yyclearin;}
1249 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1253 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1254 | PARSEOP_CREATEBITFIELD '('
1255 error ')' {$$ = AslDoError(); yyclearin;}
1259 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1263 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1264 | PARSEOP_CREATEBYTEFIELD '('
1265 error ')' {$$ = AslDoError(); yyclearin;}
1268 CreateDWordFieldTerm
1269 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1273 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1274 | PARSEOP_CREATEDWORDFIELD '('
1275 error ')' {$$ = AslDoError(); yyclearin;}
1279 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1284 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1285 | PARSEOP_CREATEFIELD '('
1286 error ')' {$$ = AslDoError(); yyclearin;}
1289 CreateQWordFieldTerm
1290 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1294 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1295 | PARSEOP_CREATEQWORDFIELD '('
1296 error ')' {$$ = AslDoError(); yyclearin;}
1300 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1304 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1305 | PARSEOP_CREATEWORDFIELD '('
1306 error ')' {$$ = AslDoError(); yyclearin;}
1310 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1315 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1316 | PARSEOP_DATATABLEREGION '('
1317 error ')' {$$ = AslDoError(); yyclearin;}
1321 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1324 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1325 | PARSEOP_DEVICE '('
1326 error ')' {$$ = AslDoError(); yyclearin;}
1330 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
1332 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1334 error ')' {$$ = AslDoError(); yyclearin;}
1338 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
1340 ',' AccessTypeKeyword
1342 ',' UpdateRuleKeyword
1344 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1346 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1350 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1352 OptionalParameterTypePackage
1353 OptionalParameterTypesPackage
1355 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1356 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1357 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1358 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1359 | PARSEOP_FUNCTION '('
1360 error ')' {$$ = AslDoError(); yyclearin;}
1364 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1367 ',' AccessTypeKeyword
1369 ',' UpdateRuleKeyword
1371 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1372 | PARSEOP_INDEXFIELD '('
1373 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1377 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1379 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1380 OptionalSerializeRuleKeyword
1381 OptionalByteConstExpr
1382 OptionalParameterTypePackage
1383 OptionalParameterTypesPackage
1385 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1386 | PARSEOP_METHOD '('
1387 error ')' {$$ = AslDoError(); yyclearin;}
1391 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1394 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1396 error ')' {$$ = AslDoError(); yyclearin;}
1400 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1402 ',' OpRegionSpaceIdTerm
1405 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1406 | PARSEOP_OPERATIONREGION '('
1407 error ')' {$$ = AslDoError(); yyclearin;}
1411 : RegionSpaceKeyword {}
1412 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1416 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1421 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1422 | PARSEOP_POWERRESOURCE '('
1423 error ')' {$$ = AslDoError(); yyclearin;}
1427 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1430 OptionalDWordConstExpr
1431 OptionalByteConstExpr
1433 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1434 | PARSEOP_PROCESSOR '('
1435 error ')' {$$ = AslDoError(); yyclearin;}
1439 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1442 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1443 | PARSEOP_THERMALZONE '('
1444 error ')' {$$ = AslDoError(); yyclearin;}
1448 /******* Namespace modifiers *************************************************/
1452 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1455 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1457 error ')' {$$ = AslDoError(); yyclearin;}
1461 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1464 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1466 error ')' {$$ = AslDoError(); yyclearin;}
1470 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1473 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1475 error ')' {$$ = AslDoError(); yyclearin;}
1479 /******* Type 1 opcodes *******************************************************/
1483 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1487 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1491 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1495 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
1499 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1501 error ')' {$$ = AslDoError(); yyclearin;}
1505 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1509 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1512 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1515 error ')' {$$ = AslDoError(); yyclearin;}
1520 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1521 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1524 error '}' {$$ = AslDoError(); yyclearin;}
1527 error {$$ = AslDoError(); yyclearin;}
1529 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1530 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1532 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
1533 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
1534 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1536 | PARSEOP_ELSEIF '('
1537 error ')' {$$ = AslDoError(); yyclearin;}
1540 error {$$ = AslDoError(); yyclearin;}
1544 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1547 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1549 error ')' {$$ = AslDoError(); yyclearin;}
1553 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1557 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1560 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1561 | PARSEOP_NOTIFY '('
1562 error ')' {$$ = AslDoError(); yyclearin;}
1566 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1568 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1569 | PARSEOP_RELEASE '('
1570 error ')' {$$ = AslDoError(); yyclearin;}
1574 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1576 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1578 error ')' {$$ = AslDoError(); yyclearin;}
1582 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1584 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1585 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1586 | PARSEOP_RETURN '('
1587 error ')' {$$ = AslDoError(); yyclearin;}
1591 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1593 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1594 | PARSEOP_SIGNAL '('
1595 error ')' {$$ = AslDoError(); yyclearin;}
1599 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1601 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1603 error ')' {$$ = AslDoError(); yyclearin;}
1607 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1609 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1611 error ')' {$$ = AslDoError(); yyclearin;}
1615 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1618 CaseDefaultTermList '}'
1619 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1620 | PARSEOP_SWITCH '('
1621 error ')' {$$ = AslDoError(); yyclearin;}
1625 * Case-Default list; allow only one Default term and unlimited Case terms
1632 | CaseDefaultTermList
1633 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1634 | CaseDefaultTermList
1635 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1637 /* Original - attempts to force zero or one default term within the switch */
1644 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1646 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1653 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1658 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1661 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1663 error ')' {$$ = AslDoError(); yyclearin;}
1667 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1668 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1669 | PARSEOP_DEFAULT '{'
1670 error '}' {$$ = AslDoError(); yyclearin;}
1674 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1676 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1677 | PARSEOP_UNLOAD '('
1678 error ')' {$$ = AslDoError(); yyclearin;}
1682 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1684 ')' '{' TermList '}'
1685 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1687 error ')' {$$ = AslDoError(); yyclearin;}
1691 /******* Type 2 opcodes *******************************************************/
1694 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1697 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1698 | PARSEOP_ACQUIRE '('
1699 error ')' {$$ = AslDoError(); yyclearin;}
1703 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1707 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1709 error ')' {$$ = AslDoError(); yyclearin;}
1713 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1717 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1719 error ')' {$$ = AslDoError(); yyclearin;}
1723 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1727 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1728 | PARSEOP_CONCATENATE '('
1729 error ')' {$$ = AslDoError(); yyclearin;}
1733 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1737 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1738 | PARSEOP_CONCATENATERESTEMPLATE '('
1739 error ')' {$$ = AslDoError(); yyclearin;}
1743 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1746 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1747 | PARSEOP_CONDREFOF '('
1748 error ')' {$$ = AslDoError(); yyclearin;}
1752 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1755 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1756 | PARSEOP_COPYOBJECT '('
1757 error ')' {$$ = AslDoError(); yyclearin;}
1761 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1763 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1764 | PARSEOP_DECREMENT '('
1765 error ')' {$$ = AslDoError(); yyclearin;}
1769 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1771 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1772 | PARSEOP_DEREFOF '('
1773 error ')' {$$ = AslDoError(); yyclearin;}
1777 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1782 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1783 | PARSEOP_DIVIDE '('
1784 error ')' {$$ = AslDoError(); yyclearin;}
1788 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1791 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1792 | PARSEOP_FINDSETLEFTBIT '('
1793 error ')' {$$ = AslDoError(); yyclearin;}
1797 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1800 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1801 | PARSEOP_FINDSETRIGHTBIT '('
1802 error ')' {$$ = AslDoError(); yyclearin;}
1806 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1809 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1810 | PARSEOP_FROMBCD '('
1811 error ')' {$$ = AslDoError(); yyclearin;}
1815 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1817 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1818 | PARSEOP_INCREMENT '('
1819 error ')' {$$ = AslDoError(); yyclearin;}
1823 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1827 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1829 error ')' {$$ = AslDoError(); yyclearin;}
1833 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1836 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1838 error ')' {$$ = AslDoError(); yyclearin;}
1842 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1845 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1846 | PARSEOP_LEQUAL '('
1847 error ')' {$$ = AslDoError(); yyclearin;}
1851 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1854 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1855 | PARSEOP_LGREATER '('
1856 error ')' {$$ = AslDoError(); yyclearin;}
1860 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1863 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1864 | PARSEOP_LGREATEREQUAL '('
1865 error ')' {$$ = AslDoError(); yyclearin;}
1869 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1872 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1874 error ')' {$$ = AslDoError(); yyclearin;}
1878 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1881 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1882 | PARSEOP_LLESSEQUAL '('
1883 error ')' {$$ = AslDoError(); yyclearin;}
1887 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1889 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1891 error ')' {$$ = AslDoError(); yyclearin;}
1895 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1898 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1899 | PARSEOP_LNOTEQUAL '('
1900 error ')' {$$ = AslDoError(); yyclearin;}
1904 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1911 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1912 | PARSEOP_LOADTABLE '('
1913 error ')' {$$ = AslDoError(); yyclearin;}
1917 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1920 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1922 error ')' {$$ = AslDoError(); yyclearin;}
1926 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1933 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1935 error ')' {$$ = AslDoError(); yyclearin;}
1939 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1944 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1946 error ')' {$$ = AslDoError(); yyclearin;}
1950 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1954 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1956 error ')' {$$ = AslDoError(); yyclearin;}
1960 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1964 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1965 | PARSEOP_MULTIPLY '('
1966 error ')' {$$ = AslDoError(); yyclearin;}
1970 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1974 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1976 error ')' {$$ = AslDoError(); yyclearin;}
1980 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1984 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1986 error ')' {$$ = AslDoError(); yyclearin;}
1990 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1993 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1995 error ')' {$$ = AslDoError(); yyclearin;}
1999 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
2001 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2002 | PARSEOP_OBJECTTYPE '('
2003 error ')' {$$ = AslDoError(); yyclearin;}
2007 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
2011 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2013 error ')' {$$ = AslDoError(); yyclearin;}
2017 * In RefOf, the node isn't really a target, but we can't keep track of it after
2018 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
2021 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
2023 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
2025 error ')' {$$ = AslDoError(); yyclearin;}
2029 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
2033 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2034 | PARSEOP_SHIFTLEFT '('
2035 error ')' {$$ = AslDoError(); yyclearin;}
2039 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
2043 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2044 | PARSEOP_SHIFTRIGHT '('
2045 error ')' {$$ = AslDoError(); yyclearin;}
2049 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
2051 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2052 | PARSEOP_SIZEOF '('
2053 error ')' {$$ = AslDoError(); yyclearin;}
2057 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
2060 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2062 error ')' {$$ = AslDoError(); yyclearin;}
2066 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2070 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2071 | PARSEOP_SUBTRACT '('
2072 error ')' {$$ = AslDoError(); yyclearin;}
2076 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
2077 ')' {$$ = TrLinkChildren ($<n>3,0);}
2078 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2080 error ')' {$$ = AslDoError(); yyclearin;}
2084 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2087 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2089 error ')' {$$ = AslDoError(); yyclearin;}
2093 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2096 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2097 | PARSEOP_TOBUFFER '('
2098 error ')' {$$ = AslDoError(); yyclearin;}
2102 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2105 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2106 | PARSEOP_TODECIMALSTRING '('
2107 error ')' {$$ = AslDoError(); yyclearin;}
2111 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2114 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2115 | PARSEOP_TOHEXSTRING '('
2116 error ')' {$$ = AslDoError(); yyclearin;}
2120 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2123 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2124 | PARSEOP_TOINTEGER '('
2125 error ')' {$$ = AslDoError(); yyclearin;}
2129 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2133 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2134 | PARSEOP_TOSTRING '('
2135 error ')' {$$ = AslDoError(); yyclearin;}
2139 : PARSEOP_TOUUID '('
2140 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2141 | PARSEOP_TOUUID '('
2142 error ')' {$$ = AslDoError(); yyclearin;}
2146 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
2149 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2151 error ')' {$$ = AslDoError(); yyclearin;}
2155 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
2159 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2161 error ')' {$$ = AslDoError(); yyclearin;}
2165 /******* Keywords *************************************************************/
2169 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2170 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2171 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2172 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2173 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2174 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2175 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2176 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
2178 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2179 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
2181 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2182 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
2184 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2188 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2189 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2190 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2191 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2192 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2193 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2196 AddressingModeKeyword
2197 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
2198 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
2202 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2203 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2204 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2205 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2209 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2210 | RegionSpaceKeyword {}
2214 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
2215 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
2216 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
2217 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
2218 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
2222 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
2223 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
2226 ClockPolarityKeyword
2227 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
2228 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
2232 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2233 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2236 DevicePolarityKeyword
2237 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
2238 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
2242 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2243 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2244 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2245 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2249 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
2250 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
2254 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
2255 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
2256 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
2260 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
2261 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2262 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2265 InterruptTypeKeyword
2266 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2267 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2271 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2272 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2275 IoRestrictionKeyword
2276 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
2277 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
2278 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
2279 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
2283 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2284 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2288 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2289 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2290 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2291 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2292 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2293 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2297 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2298 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2302 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2303 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2304 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2305 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2309 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2310 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2314 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2315 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2316 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2317 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2318 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2319 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2320 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2321 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2322 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2323 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2324 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2325 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2326 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2327 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2328 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2329 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2333 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
2334 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
2335 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
2336 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
2337 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
2341 : PinConfigKeyword {$$ = $1;}
2342 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2346 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
2347 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
2348 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
2349 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
2353 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2354 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2355 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2359 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2360 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2361 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2362 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2363 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2364 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2365 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2366 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
2367 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
2368 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
2369 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
2373 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2374 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2377 SerializeRuleKeyword
2378 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2379 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2383 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2384 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2385 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
2386 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
2390 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
2391 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
2395 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
2396 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
2397 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
2398 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
2402 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2403 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2407 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2408 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2412 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2413 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2414 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2418 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
2419 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
2423 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
2424 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
2425 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2426 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
2427 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
2428 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
2432 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2433 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2434 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2438 /******* Miscellaneous Types **************************************************/
2447 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2451 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2452 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2453 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2454 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2455 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2456 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2457 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2461 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2462 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2463 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2464 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2465 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2466 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2467 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2468 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2472 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2477 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2481 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2485 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2489 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2493 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2497 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2502 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2506 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2507 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2508 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
2509 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
2510 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
2511 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
2512 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2516 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2517 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2518 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2523 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2524 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2525 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2530 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2531 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2532 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2537 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2538 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2539 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2543 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2546 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2547 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2548 | ',' TermArg {$$ = $2;}
2552 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2555 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2556 | PARSEOP_BUFFER '('
2557 error ')' {$$ = AslDoError(); yyclearin;}
2568 | ByteList ',' /* Allows a trailing comma at list end */
2570 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2574 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2577 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2578 | PARSEOP_DATABUFFER '('
2579 error ')' {$$ = AslDoError(); yyclearin;}
2585 | DWordList ',' /* Allows a trailing comma at list end */
2587 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2591 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2592 VarPackageLengthTerm
2594 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2595 | PARSEOP_PACKAGE '('
2596 error ')' {$$ = AslDoError(); yyclearin;}
2602 | PackageList ',' /* Allows a trailing comma at list end */
2604 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2612 VarPackageLengthTerm
2613 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2614 | TermArg {$$ = $1;}
2618 /******* Macros ***********************************************/
2622 : PARSEOP_EISAID '('
2623 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2624 | PARSEOP_EISAID '('
2625 error ')' {$$ = AslDoError(); yyclearin;}
2629 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2631 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2632 | PARSEOP_UNICODE '('
2633 error ')' {$$ = AslDoError(); yyclearin;}
2637 /******* Resources and Memory ***********************************************/
2641 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2642 * Also, insert the EndTag at the end of the template.
2644 ResourceTemplateTerm
2645 : PARSEOP_RESOURCETEMPLATE '(' ')'
2647 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2648 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2649 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2651 TrCreateLeafNode (PARSEOP_ENDTAG));}
2657 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2663 | DWordMemoryTerm {}
2665 | EndDependentFnTerm {}
2667 | ExtendedMemoryTerm {}
2668 | ExtendedSpaceTerm {}
2673 | I2cSerialBusTerm {}
2679 | Memory32FixedTerm {}
2682 | QWordMemoryTerm {}
2685 | SpiSerialBusTerm {}
2686 | StartDependentFnNoPriTerm {}
2687 | StartDependentFnTerm {}
2688 | UartSerialBusTerm {}
2690 | VendorShortTerm {}
2691 | WordBusNumberTerm {}
2697 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2699 OptionalBusMasterKeyword
2701 OptionalNameString_Last
2703 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2705 error ')' {$$ = AslDoError(); yyclearin;}
2709 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2710 OptionalResourceType_First
2720 OptionalByteConstExpr
2724 OptionalTranslationType_Last
2725 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2726 | PARSEOP_DWORDIO '('
2727 error ')' {$$ = AslDoError(); yyclearin;}
2731 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2732 OptionalResourceType_First
2737 ',' OptionalReadWriteKeyword
2743 OptionalByteConstExpr
2746 OptionalAddressRange
2748 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2749 | PARSEOP_DWORDMEMORY '('
2750 error ')' {$$ = AslDoError(); yyclearin;}
2754 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2755 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2756 OptionalResourceType
2766 OptionalByteConstExpr
2768 OptionalNameString_Last
2769 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2770 | PARSEOP_DWORDSPACE '('
2771 error ')' {$$ = AslDoError(); yyclearin;}
2776 : PARSEOP_ENDDEPENDENTFN '('
2777 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2778 | PARSEOP_ENDDEPENDENTFN '('
2779 error ')' {$$ = AslDoError(); yyclearin;}
2783 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2784 OptionalResourceType_First
2794 OptionalQWordConstExpr
2797 OptionalTranslationType_Last
2798 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2799 | PARSEOP_EXTENDEDIO '('
2800 error ')' {$$ = AslDoError(); yyclearin;}
2804 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2805 OptionalResourceType_First
2810 ',' OptionalReadWriteKeyword
2816 OptionalQWordConstExpr
2818 OptionalAddressRange
2820 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2821 | PARSEOP_EXTENDEDMEMORY '('
2822 error ')' {$$ = AslDoError(); yyclearin;}
2826 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2827 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2828 OptionalResourceType
2838 OptionalQWordConstExpr
2839 OptionalNameString_Last
2840 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2841 | PARSEOP_EXTENDEDSPACE '('
2842 error ')' {$$ = AslDoError(); yyclearin;}
2846 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2847 WordConstExpr // 04: DMA RequestLines
2848 ',' WordConstExpr // 06: DMA Channels
2849 OptionalXferSize // 07: DMA TransferSize
2850 OptionalNameString // 08: DescriptorName
2851 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2852 | PARSEOP_FIXEDDMA '('
2853 error ')' {$$ = AslDoError(); yyclearin;}
2857 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2860 OptionalNameString_Last
2861 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2862 | PARSEOP_FIXEDIO '('
2863 error ')' {$$ = AslDoError(); yyclearin;}
2867 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2868 InterruptTypeKeyword // 04: InterruptType
2869 ',' InterruptLevel // 06: InterruptLevel
2870 OptionalShareType // 07: SharedType
2871 ',' PinConfigByte // 09: PinConfig
2872 OptionalWordConstExpr // 10: DebounceTimeout
2873 ',' StringData // 12: ResourceSource
2874 OptionalByteConstExpr // 13: ResourceSourceIndex
2875 OptionalResourceType // 14: ResourceType
2876 OptionalNameString // 15: DescriptorName
2877 OptionalBuffer_Last // 16: VendorData
2879 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2880 | PARSEOP_GPIO_INT '('
2881 error ')' {$$ = AslDoError(); yyclearin;}
2885 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2886 OptionalShareType_First // 04: SharedType
2887 ',' PinConfigByte // 06: PinConfig
2888 OptionalWordConstExpr // 07: DebounceTimeout
2889 OptionalWordConstExpr // 08: DriveStrength
2890 OptionalIoRestriction // 09: IoRestriction
2891 ',' StringData // 11: ResourceSource
2892 OptionalByteConstExpr // 12: ResourceSourceIndex
2893 OptionalResourceType // 13: ResourceType
2894 OptionalNameString // 14: DescriptorName
2895 OptionalBuffer_Last // 15: VendorData
2897 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2898 | PARSEOP_GPIO_IO '('
2899 error ')' {$$ = AslDoError(); yyclearin;}
2903 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2904 WordConstExpr // 04: SlaveAddress
2905 OptionalSlaveMode // 05: SlaveMode
2906 ',' DWordConstExpr // 07: ConnectionSpeed
2907 OptionalAddressingMode // 08: AddressingMode
2908 ',' StringData // 10: ResourceSource
2909 OptionalByteConstExpr // 11: ResourceSourceIndex
2910 OptionalResourceType // 12: ResourceType
2911 OptionalNameString // 13: DescriptorName
2912 OptionalBuffer_Last // 14: VendorData
2913 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2914 | PARSEOP_I2C_SERIALBUS '('
2915 error ')' {$$ = AslDoError(); yyclearin;}
2919 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2920 OptionalResourceType_First
2921 ',' InterruptTypeKeyword
2924 OptionalByteConstExpr
2926 OptionalNameString_Last
2928 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2929 | PARSEOP_INTERRUPT '('
2930 error ')' {$$ = AslDoError(); yyclearin;}
2934 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2940 OptionalNameString_Last
2941 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2943 error ')' {$$ = AslDoError(); yyclearin;}
2947 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2948 OptionalNameString_First
2950 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2951 | PARSEOP_IRQNOFLAGS '('
2952 error ')' {$$ = AslDoError(); yyclearin;}
2956 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2957 InterruptTypeKeyword
2960 OptionalNameString_Last
2962 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2964 error ')' {$$ = AslDoError(); yyclearin;}
2968 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2969 OptionalReadWriteKeyword
2974 OptionalNameString_Last
2975 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2976 | PARSEOP_MEMORY24 '('
2977 error ')' {$$ = AslDoError(); yyclearin;}
2981 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2982 OptionalReadWriteKeyword
2985 OptionalNameString_Last
2986 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2987 | PARSEOP_MEMORY32FIXED '('
2988 error ')' {$$ = AslDoError(); yyclearin;}
2992 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2993 OptionalReadWriteKeyword
2998 OptionalNameString_Last
2999 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
3000 | PARSEOP_MEMORY32 '('
3001 error ')' {$$ = AslDoError(); yyclearin;}
3005 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
3006 OptionalResourceType_First
3016 OptionalByteConstExpr
3020 OptionalTranslationType_Last
3021 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3022 | PARSEOP_QWORDIO '('
3023 error ')' {$$ = AslDoError(); yyclearin;}
3027 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
3028 OptionalResourceType_First
3033 ',' OptionalReadWriteKeyword
3039 OptionalByteConstExpr
3042 OptionalAddressRange
3044 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
3045 | PARSEOP_QWORDMEMORY '('
3046 error ')' {$$ = AslDoError(); yyclearin;}
3050 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
3051 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3052 OptionalResourceType
3062 OptionalByteConstExpr
3064 OptionalNameString_Last
3065 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3066 | PARSEOP_QWORDSPACE '('
3067 error ')' {$$ = AslDoError(); yyclearin;}
3071 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
3077 OptionalNameString_Last
3078 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
3079 | PARSEOP_REGISTER '('
3080 error ')' {$$ = AslDoError(); yyclearin;}
3084 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
3085 WordConstExpr // 04: DeviceSelection
3086 OptionalDevicePolarity // 05: DevicePolarity
3087 OptionalWireMode // 06: WireMode
3088 ',' ByteConstExpr // 08: DataBitLength
3089 OptionalSlaveMode // 09: SlaveMode
3090 ',' DWordConstExpr // 11: ConnectionSpeed
3091 ',' ClockPolarityKeyword // 13: ClockPolarity
3092 ',' ClockPhaseKeyword // 15: ClockPhase
3093 ',' StringData // 17: ResourceSource
3094 OptionalByteConstExpr // 18: ResourceSourceIndex
3095 OptionalResourceType // 19: ResourceType
3096 OptionalNameString // 20: DescriptorName
3097 OptionalBuffer_Last // 21: VendorData
3098 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
3099 | PARSEOP_SPI_SERIALBUS '('
3100 error ')' {$$ = AslDoError(); yyclearin;}
3103 StartDependentFnNoPriTerm
3104 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
3106 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
3107 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
3108 error ')' {$$ = AslDoError(); yyclearin;}
3111 StartDependentFnTerm
3112 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
3116 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
3117 | PARSEOP_STARTDEPENDENTFN '('
3118 error ')' {$$ = AslDoError(); yyclearin;}
3122 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
3123 DWordConstExpr // 04: ConnectionSpeed
3124 OptionalBitsPerByte // 05: BitsPerByte
3125 OptionalStopBits // 06: StopBits
3126 ',' ByteConstExpr // 08: LinesInUse
3127 OptionalEndian // 09: Endianess
3128 OptionalParityType // 10: Parity
3129 OptionalFlowControl // 11: FlowControl
3130 ',' WordConstExpr // 13: Rx BufferSize
3131 ',' WordConstExpr // 15: Tx BufferSize
3132 ',' StringData // 17: ResourceSource
3133 OptionalByteConstExpr // 18: ResourceSourceIndex
3134 OptionalResourceType // 19: ResourceType
3135 OptionalNameString // 20: DescriptorName
3136 OptionalBuffer_Last // 21: VendorData
3137 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
3138 | PARSEOP_UART_SERIALBUS '('
3139 error ')' {$$ = AslDoError(); yyclearin;}
3143 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
3144 OptionalNameString_First
3146 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3147 | PARSEOP_VENDORLONG '('
3148 error ')' {$$ = AslDoError(); yyclearin;}
3152 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
3153 OptionalNameString_First
3155 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3156 | PARSEOP_VENDORSHORT '('
3157 error ')' {$$ = AslDoError(); yyclearin;}
3161 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
3162 OptionalResourceType_First
3171 OptionalByteConstExpr
3173 OptionalNameString_Last
3174 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
3175 | PARSEOP_WORDBUSNUMBER '('
3176 error ')' {$$ = AslDoError(); yyclearin;}
3180 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
3181 OptionalResourceType_First
3191 OptionalByteConstExpr
3195 OptionalTranslationType_Last
3196 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3197 | PARSEOP_WORDIO '('
3198 error ')' {$$ = AslDoError(); yyclearin;}
3202 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
3203 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3204 OptionalResourceType
3214 OptionalByteConstExpr
3216 OptionalNameString_Last
3217 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3218 | PARSEOP_WORDSPACE '('
3219 error ')' {$$ = AslDoError(); yyclearin;}
3223 /******* Object References ***********************************************/
3225 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
3229 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3230 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
3231 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
3232 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
3236 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3240 /******* Helper rules ****************************************************/
3243 AmlPackageLengthTerm
3244 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
3248 : ',' NameString {$$ = $2;}
3249 | ',' error {$$ = AslDoError (); yyclearin;}
3253 : ',' TermArg {$$ = $2;}
3254 | ',' error {$$ = AslDoError (); yyclearin;}
3257 OptionalBusMasterKeyword
3258 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3259 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3260 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
3263 OptionalAccessAttribTerm
3266 | ',' ByteConstExpr {$$ = $2;}
3267 | ',' AccessAttribKeyword {$$ = $2;}
3271 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3272 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3273 | ',' ByteConstExpr {$$ = $2;}
3276 OptionalAddressingMode
3278 | ',' AddressingModeKeyword {$$ = $2;}
3281 OptionalAddressRange
3284 | ',' AddressKeyword {$$ = $2;}
3289 | ',' BitsPerByteKeyword {$$ = $2;}
3295 | ',' DataBufferTerm {$$ = $2;}
3298 OptionalByteConstExpr
3301 | ',' ByteConstExpr {$$ = $2;}
3306 | ',' DecodeKeyword {$$ = $2;}
3309 OptionalDevicePolarity
3311 | ',' DevicePolarityKeyword {$$ = $2;}
3314 OptionalDWordConstExpr
3317 | ',' DWordConstExpr {$$ = $2;}
3322 | ',' EndianKeyword {$$ = $2;}
3327 | ',' FlowControlKeyword {$$ = $2;}
3330 OptionalIoRestriction
3332 | ',' IoRestrictionKeyword {$$ = $2;}
3336 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3337 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3338 | ',' TermArg {$$ = $2;}
3343 | ',' MaxKeyword {$$ = $2;}
3348 | ',' MemTypeKeyword {$$ = $2;}
3353 | ',' MinKeyword {$$ = $2;}
3359 | ',' NameString {$$ = $2;}
3362 OptionalNameString_Last
3365 | ',' NameString {$$ = $2;}
3368 OptionalNameString_First
3369 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3370 | NameString {$$ = $1;}
3373 OptionalObjectTypeKeyword
3374 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3375 | ',' ObjectTypeKeyword {$$ = $2;}
3380 | ',' ParityTypeKeyword {$$ = $2;}
3383 OptionalQWordConstExpr
3386 | ',' QWordConstExpr {$$ = $2;}
3391 | ',' RangeTypeKeyword {$$ = $2;}
3394 OptionalReadWriteKeyword
3395 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3396 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3397 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
3401 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3402 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3403 | ',' TermArg {$$ = $2;}
3406 OptionalResourceType_First
3407 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3408 | ResourceTypeKeyword {$$ = $1;}
3411 OptionalResourceType
3412 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3413 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3414 | ',' ResourceTypeKeyword {$$ = $2;}
3418 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
3419 | TermArg {$$ = $1;}
3422 OptionalSerializeRuleKeyword
3425 | ',' SerializeRuleKeyword {$$ = $2;}
3430 | ',' SlaveModeKeyword {$$ = $2;}
3436 | ',' ShareTypeKeyword {$$ = $2;}
3439 OptionalShareType_First
3441 | ShareTypeKeyword {$$ = $1;}
3446 | ',' StopBitsKeyword {$$ = $2;}
3452 | ',' StringData {$$ = $2;}
3457 | TermArg {$$ = $1;}
3463 | ',' TypeKeyword {$$ = $2;}
3469 | ',' TypeKeyword {$$ = $2;}
3472 OptionalTranslationType_Last
3475 | ',' TranslationKeyword {$$ = $2;}
3480 | ',' WireModeKeyword {$$ = $2;}
3485 | WordConst {$$ = $1;}
3488 OptionalWordConstExpr
3490 | ',' WordConstExpr {$$ = $2;}
3494 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3495 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3496 | ',' XferSizeKeyword {$$ = $2;}
3500 /******************************************************************************
3502 * Local support functions
3504 *****************************************************************************/
3507 AslCompilerwrap(void)
3512 /*! [End] no source code translation !*/
3515 AslLocalAllocate (unsigned int Size)
3520 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
3522 Mem = ACPI_ALLOCATE_ZEROED (Size);
3525 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3526 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3527 Gbl_InputByteCount, Gbl_CurrentColumn,
3528 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3540 return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3545 /*******************************************************************************
3547 * FUNCTION: UtGetOpName
3549 * PARAMETERS: ParseOpcode - Parser keyword ID
3551 * RETURN: Pointer to the opcode name
3553 * DESCRIPTION: Get the ascii name of the parse opcode
3555 ******************************************************************************/
3561 #ifdef ASL_YYTNAME_START
3563 * First entries (ASL_YYTNAME_START) in yytname are special reserved names.
3564 * Ignore first 8 characters of the name
3566 return ((char *) yytname
3567 [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8);
3569 return ("[Unknown parser generator]");