i386/identcpu.c: Add VIA Nano support
[dragonfly.git] / sys / contrib / dev / acpica-unix-20061109 / compiler / aslcompiler.y
blob769d5233ca91b18e3d0ee026e0f61daaa0acc2b4
2 %{
3 /******************************************************************************
5 * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions)
6 * $Revision: 1.104 $
8 *****************************************************************************/
10 /******************************************************************************
12 * 1. Copyright Notice
14 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.
15 * All rights reserved.
17 * 2. License
19 * 2.1. This is your license from Intel Corp. under its intellectual property
20 * rights. You may have additional license terms from the party that provided
21 * you this software, covering your right to use that party's intellectual
22 * property rights.
24 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
25 * copy of the source code appearing in this file ("Covered Code") an
26 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
27 * base code distributed originally by Intel ("Original Intel Code") to copy,
28 * make derivatives, distribute, use and display any portion of the Covered
29 * Code in any form, with the right to sublicense such rights; and
31 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
32 * license (with the right to sublicense), under only those claims of Intel
33 * patents that are infringed by the Original Intel Code, to make, use, sell,
34 * offer to sell, and import the Covered Code and derivative works thereof
35 * solely to the minimum extent necessary to exercise the above copyright
36 * license, and in no event shall the patent license extend to any additions
37 * to or modifications of the Original Intel Code. No other license or right
38 * is granted directly or by implication, estoppel or otherwise;
40 * The above copyright and patent license is granted only if the following
41 * conditions are met:
43 * 3. Conditions
45 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
46 * Redistribution of source code of any substantial portion of the Covered
47 * Code or modification with rights to further distribute source must include
48 * the above Copyright Notice, the above License, this list of Conditions,
49 * and the following Disclaimer and Export Compliance provision. In addition,
50 * Licensee must cause all Covered Code to which Licensee contributes to
51 * contain a file documenting the changes Licensee made to create that Covered
52 * Code and the date of any change. Licensee must include in that file the
53 * documentation of any changes made by any predecessor Licensee. Licensee
54 * must include a prominent statement that the modification is derived,
55 * directly or indirectly, from Original Intel Code.
57 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
58 * Redistribution of source code of any substantial portion of the Covered
59 * Code or modification without rights to further distribute source must
60 * include the following Disclaimer and Export Compliance provision in the
61 * documentation and/or other materials provided with distribution. In
62 * addition, Licensee may not authorize further sublicense of source of any
63 * portion of the Covered Code, and must include terms to the effect that the
64 * license from Licensee to its licensee is limited to the intellectual
65 * property embodied in the software Licensee provides to its licensee, and
66 * not to intellectual property embodied in modifications its licensee may
67 * make.
69 * 3.3. Redistribution of Executable. Redistribution in executable form of any
70 * substantial portion of the Covered Code or modification must reproduce the
71 * above Copyright Notice, and the following Disclaimer and Export Compliance
72 * provision in the documentation and/or other materials provided with the
73 * distribution.
75 * 3.4. Intel retains all right, title, and interest in and to the Original
76 * Intel Code.
78 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
79 * Intel shall be used in advertising or otherwise to promote the sale, use or
80 * other dealings in products derived from or relating to the Covered Code
81 * without prior written authorization from Intel.
83 * 4. Disclaimer and Export Compliance
85 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
86 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
87 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
88 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
89 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
90 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
91 * PARTICULAR PURPOSE.
93 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
94 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
95 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
96 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
97 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
98 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
99 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
100 * LIMITED REMEDY.
102 * 4.3. Licensee shall not export, either directly or indirectly, any of this
103 * software or system incorporating such software without first obtaining any
104 * required license or other approval from the U. S. Department of Commerce or
105 * any other agency or department of the United States Government. In the
106 * event Licensee exports any such software from the United States or
107 * re-exports any such software from a foreign destination, Licensee shall
108 * ensure that the distribution and export/re-export of the software is in
109 * compliance with all laws, regulations, orders, or other restrictions of the
110 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
111 * any of its subsidiaries will export/re-export any technical data, process,
112 * software, or service, directly or indirectly, to any country for which the
113 * United States government or any agency thereof requires an export license,
114 * other governmental approval, or letter of assurance, without first obtaining
115 * such license, approval or letter.
117 *****************************************************************************/
119 #define YYDEBUG 1
120 #define YYERROR_VERBOSE 1
123 * State stack - compiler will fault if it overflows. (Default was 200)
125 #define YYINITDEPTH 600
127 #include "aslcompiler.h"
128 #include <stdio.h>
129 #include <stdlib.h>
130 #include <string.h>
131 #include "acpi.h"
133 #define _COMPONENT ACPI_COMPILER
134 ACPI_MODULE_NAME ("aslparse")
137 * Global Notes:
139 * October 2005: The following list terms have been optimized (from the
140 * original ASL grammar in the ACPI specification) to force the immediate
141 * reduction of each list item so that the parse stack use doesn't increase on
142 * each list element and possibly overflow on very large lists (>4000 items).
143 * This dramatically reduces use of the parse stack overall.
145 * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList,
146 * ResourceMacroList, and FieldUnitList
151 * Next statement is important - this makes everything public so that
152 * we can access some of the parser tables from other modules
154 #define static
155 #undef alloca
156 #define alloca AslLocalAllocate
157 #define YYERROR_VERBOSE 1
159 void *
160 AslLocalAllocate (unsigned int Size);
163 * The windows version of bison defines this incorrectly as "32768" (Not negative).
164 * Using a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
165 * instead (#define YYFBAD 32768), so we can define it correctly here.
167 * The problem is that if YYFLAG is positive, the extended syntax error messages
168 * are disabled.
171 #define YYFLAG -32768
178 * Declare the type of values in the grammar
181 %union {
182 UINT64 i;
183 char *s;
184 ACPI_PARSE_OBJECT *n;
188 /*! [Begin] no source code translation */
191 * These shift/reduce conflicts are expected. There should be zer0
192 * reduce/reduce conflicts.
194 %expect 64
198 * Token types: These are returned by the lexer
200 * NOTE: This list MUST match the AslKeywordMapping table found
201 * in aslmap.c EXACTLY! Double check any changes!
204 %token <i> PARSEOP_ACCESSAS
205 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
206 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
207 %token <i> PARSEOP_ACCESSATTRIB_BYTE
208 %token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
209 %token <i> PARSEOP_ACCESSATTRIB_QUICK
210 %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
211 %token <i> PARSEOP_ACCESSATTRIB_WORD
212 %token <i> PARSEOP_ACCESSTYPE_ANY
213 %token <i> PARSEOP_ACCESSTYPE_BUF
214 %token <i> PARSEOP_ACCESSTYPE_BYTE
215 %token <i> PARSEOP_ACCESSTYPE_DWORD
216 %token <i> PARSEOP_ACCESSTYPE_QWORD
217 %token <i> PARSEOP_ACCESSTYPE_WORD
218 %token <i> PARSEOP_ACQUIRE
219 %token <i> PARSEOP_ADD
220 %token <i> PARSEOP_ADDRESSSPACE_FFIXEDHW
221 %token <i> PARSEOP_ADDRESSTYPE_ACPI
222 %token <i> PARSEOP_ADDRESSTYPE_MEMORY
223 %token <i> PARSEOP_ADDRESSTYPE_NVS
224 %token <i> PARSEOP_ADDRESSTYPE_RESERVED
225 %token <i> PARSEOP_ALIAS
226 %token <i> PARSEOP_AND
227 %token <i> PARSEOP_ARG0
228 %token <i> PARSEOP_ARG1
229 %token <i> PARSEOP_ARG2
230 %token <i> PARSEOP_ARG3
231 %token <i> PARSEOP_ARG4
232 %token <i> PARSEOP_ARG5
233 %token <i> PARSEOP_ARG6
234 %token <i> PARSEOP_BANKFIELD
235 %token <i> PARSEOP_BREAK
236 %token <i> PARSEOP_BREAKPOINT
237 %token <i> PARSEOP_BUFFER
238 %token <i> PARSEOP_BUSMASTERTYPE_MASTER
239 %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
240 %token <i> PARSEOP_BYTECONST
241 %token <i> PARSEOP_CASE
242 %token <i> PARSEOP_CONCATENATE
243 %token <i> PARSEOP_CONCATENATERESTEMPLATE
244 %token <i> PARSEOP_CONDREFOF
245 %token <i> PARSEOP_CONTINUE
246 %token <i> PARSEOP_COPYOBJECT
247 %token <i> PARSEOP_CREATEBITFIELD
248 %token <i> PARSEOP_CREATEBYTEFIELD
249 %token <i> PARSEOP_CREATEDWORDFIELD
250 %token <i> PARSEOP_CREATEFIELD
251 %token <i> PARSEOP_CREATEQWORDFIELD
252 %token <i> PARSEOP_CREATEWORDFIELD
253 %token <i> PARSEOP_DATATABLEREGION
254 %token <i> PARSEOP_DEBUG
255 %token <i> PARSEOP_DECODETYPE_POS
256 %token <i> PARSEOP_DECODETYPE_SUB
257 %token <i> PARSEOP_DECREMENT
258 %token <i> PARSEOP_DEFAULT
259 %token <i> PARSEOP_DEFAULT_ARG
260 %token <i> PARSEOP_DEFINITIONBLOCK
261 %token <i> PARSEOP_DEREFOF
262 %token <i> PARSEOP_DEVICE
263 %token <i> PARSEOP_DIVIDE
264 %token <i> PARSEOP_DMA
265 %token <i> PARSEOP_DMATYPE_A
266 %token <i> PARSEOP_DMATYPE_COMPATIBILITY
267 %token <i> PARSEOP_DMATYPE_B
268 %token <i> PARSEOP_DMATYPE_F
269 %token <i> PARSEOP_DWORDCONST
270 %token <i> PARSEOP_DWORDIO
271 %token <i> PARSEOP_DWORDMEMORY
272 %token <i> PARSEOP_DWORDSPACE
273 %token <i> PARSEOP_EISAID
274 %token <i> PARSEOP_ELSE
275 %token <i> PARSEOP_ELSEIF
276 %token <i> PARSEOP_ENDDEPENDENTFN
277 %token <i> PARSEOP_ENDTAG
278 %token <i> PARSEOP_ERRORNODE
279 %token <i> PARSEOP_EVENT
280 %token <i> PARSEOP_EXTENDEDIO
281 %token <i> PARSEOP_EXTENDEDMEMORY
282 %token <i> PARSEOP_EXTENDEDSPACE
283 %token <i> PARSEOP_EXTERNAL
284 %token <i> PARSEOP_FATAL
285 %token <i> PARSEOP_FIELD
286 %token <i> PARSEOP_FINDSETLEFTBIT
287 %token <i> PARSEOP_FINDSETRIGHTBIT
288 %token <i> PARSEOP_FIXEDIO
289 %token <i> PARSEOP_FROMBCD
290 %token <i> PARSEOP_FUNCTION
291 %token <i> PARSEOP_IF
292 %token <i> PARSEOP_INCLUDE
293 %token <i> PARSEOP_INCLUDE_CSTYLE
294 %token <i> PARSEOP_INCLUDE_END
295 %token <i> PARSEOP_INCREMENT
296 %token <i> PARSEOP_INDEX
297 %token <i> PARSEOP_INDEXFIELD
298 %token <i> PARSEOP_INTEGER
299 %token <i> PARSEOP_INTERRUPT
300 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
301 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
302 %token <i> PARSEOP_INTTYPE_EDGE
303 %token <i> PARSEOP_INTTYPE_LEVEL
304 %token <i> PARSEOP_IO
305 %token <i> PARSEOP_IODECODETYPE_10
306 %token <i> PARSEOP_IODECODETYPE_16
307 %token <i> PARSEOP_IRQ
308 %token <i> PARSEOP_IRQNOFLAGS
309 %token <i> PARSEOP_LAND
310 %token <i> PARSEOP_LEQUAL
311 %token <i> PARSEOP_LGREATER
312 %token <i> PARSEOP_LGREATEREQUAL
313 %token <i> PARSEOP_LINE_CSTYLE
314 %token <i> PARSEOP_LLESS
315 %token <i> PARSEOP_LLESSEQUAL
316 %token <i> PARSEOP_LNOT
317 %token <i> PARSEOP_LNOTEQUAL
318 %token <i> PARSEOP_LOAD
319 %token <i> PARSEOP_LOADTABLE
320 %token <i> PARSEOP_LOCAL0
321 %token <i> PARSEOP_LOCAL1
322 %token <i> PARSEOP_LOCAL2
323 %token <i> PARSEOP_LOCAL3
324 %token <i> PARSEOP_LOCAL4
325 %token <i> PARSEOP_LOCAL5
326 %token <i> PARSEOP_LOCAL6
327 %token <i> PARSEOP_LOCAL7
328 %token <i> PARSEOP_LOCKRULE_LOCK
329 %token <i> PARSEOP_LOCKRULE_NOLOCK
330 %token <i> PARSEOP_LOR
331 %token <i> PARSEOP_MATCH
332 %token <i> PARSEOP_MATCHTYPE_MEQ
333 %token <i> PARSEOP_MATCHTYPE_MGE
334 %token <i> PARSEOP_MATCHTYPE_MGT
335 %token <i> PARSEOP_MATCHTYPE_MLE
336 %token <i> PARSEOP_MATCHTYPE_MLT
337 %token <i> PARSEOP_MATCHTYPE_MTR
338 %token <i> PARSEOP_MAXTYPE_FIXED
339 %token <i> PARSEOP_MAXTYPE_NOTFIXED
340 %token <i> PARSEOP_MEMORY24
341 %token <i> PARSEOP_MEMORY32
342 %token <i> PARSEOP_MEMORY32FIXED
343 %token <i> PARSEOP_MEMTYPE_CACHEABLE
344 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
345 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
346 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
347 %token <i> PARSEOP_METHOD
348 %token <i> PARSEOP_METHODCALL
349 %token <i> PARSEOP_MID
350 %token <i> PARSEOP_MINTYPE_FIXED
351 %token <i> PARSEOP_MINTYPE_NOTFIXED
352 %token <i> PARSEOP_MOD
353 %token <i> PARSEOP_MULTIPLY
354 %token <i> PARSEOP_MUTEX
355 %token <i> PARSEOP_NAME
356 %token <s> PARSEOP_NAMESEG
357 %token <s> PARSEOP_NAMESTRING
358 %token <i> PARSEOP_NAND
359 %token <i> PARSEOP_NOOP
360 %token <i> PARSEOP_NOR
361 %token <i> PARSEOP_NOT
362 %token <i> PARSEOP_NOTIFY
363 %token <i> PARSEOP_OBJECTTYPE
364 %token <i> PARSEOP_OBJECTTYPE_BFF
365 %token <i> PARSEOP_OBJECTTYPE_BUF
366 %token <i> PARSEOP_OBJECTTYPE_DDB
367 %token <i> PARSEOP_OBJECTTYPE_DEV
368 %token <i> PARSEOP_OBJECTTYPE_EVT
369 %token <i> PARSEOP_OBJECTTYPE_FLD
370 %token <i> PARSEOP_OBJECTTYPE_INT
371 %token <i> PARSEOP_OBJECTTYPE_MTH
372 %token <i> PARSEOP_OBJECTTYPE_MTX
373 %token <i> PARSEOP_OBJECTTYPE_OPR
374 %token <i> PARSEOP_OBJECTTYPE_PKG
375 %token <i> PARSEOP_OBJECTTYPE_POW
376 %token <i> PARSEOP_OBJECTTYPE_PRO
377 %token <i> PARSEOP_OBJECTTYPE_STR
378 %token <i> PARSEOP_OBJECTTYPE_THZ
379 %token <i> PARSEOP_OBJECTTYPE_UNK
380 %token <i> PARSEOP_OFFSET
381 %token <i> PARSEOP_ONE
382 %token <i> PARSEOP_ONES
383 %token <i> PARSEOP_OPERATIONREGION
384 %token <i> PARSEOP_OR
385 %token <i> PARSEOP_PACKAGE
386 %token <i> PARSEOP_PACKAGE_LENGTH
387 %token <i> PARSEOP_POWERRESOURCE
388 %token <i> PARSEOP_PROCESSOR
389 %token <i> PARSEOP_QWORDCONST
390 %token <i> PARSEOP_QWORDIO
391 %token <i> PARSEOP_QWORDMEMORY
392 %token <i> PARSEOP_QWORDSPACE
393 %token <i> PARSEOP_RANGETYPE_ENTIRE
394 %token <i> PARSEOP_RANGETYPE_ISAONLY
395 %token <i> PARSEOP_RANGETYPE_NONISAONLY
396 %token <i> PARSEOP_RAW_DATA
397 %token <i> PARSEOP_READWRITETYPE_BOTH
398 %token <i> PARSEOP_READWRITETYPE_READONLY
399 %token <i> PARSEOP_REFOF
400 %token <i> PARSEOP_REGIONSPACE_CMOS
401 %token <i> PARSEOP_REGIONSPACE_EC
402 %token <i> PARSEOP_REGIONSPACE_IO
403 %token <i> PARSEOP_REGIONSPACE_MEM
404 %token <i> PARSEOP_REGIONSPACE_PCI
405 %token <i> PARSEOP_REGIONSPACE_PCIBAR
406 %token <i> PARSEOP_REGIONSPACE_SMBUS
407 %token <i> PARSEOP_REGISTER
408 %token <i> PARSEOP_RELEASE
409 %token <i> PARSEOP_RESERVED_BYTES
410 %token <i> PARSEOP_RESET
411 %token <i> PARSEOP_RESOURCETEMPLATE
412 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
413 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
414 %token <i> PARSEOP_RETURN
415 %token <i> PARSEOP_REVISION
416 %token <i> PARSEOP_SCOPE
417 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
418 %token <i> PARSEOP_SERIALIZERULE_SERIAL
419 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
420 %token <i> PARSEOP_SHARETYPE_SHARED
421 %token <i> PARSEOP_SHIFTLEFT
422 %token <i> PARSEOP_SHIFTRIGHT
423 %token <i> PARSEOP_SIGNAL
424 %token <i> PARSEOP_SIZEOF
425 %token <i> PARSEOP_SLEEP
426 %token <i> PARSEOP_STALL
427 %token <i> PARSEOP_STARTDEPENDENTFN
428 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
429 %token <i> PARSEOP_STORE
430 %token <s> PARSEOP_STRING_LITERAL
431 %token <i> PARSEOP_SUBTRACT
432 %token <i> PARSEOP_SWITCH
433 %token <i> PARSEOP_THERMALZONE
434 %token <i> PARSEOP_TIMER
435 %token <i> PARSEOP_TOBCD
436 %token <i> PARSEOP_TOBUFFER
437 %token <i> PARSEOP_TODECIMALSTRING
438 %token <i> PARSEOP_TOHEXSTRING
439 %token <i> PARSEOP_TOINTEGER
440 %token <i> PARSEOP_TOSTRING
441 %token <i> PARSEOP_TOUUID
442 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
443 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
444 %token <i> PARSEOP_TYPE_STATIC
445 %token <i> PARSEOP_TYPE_TRANSLATION
446 %token <i> PARSEOP_UNICODE
447 %token <i> PARSEOP_UNLOAD
448 %token <i> PARSEOP_UPDATERULE_ONES
449 %token <i> PARSEOP_UPDATERULE_PRESERVE
450 %token <i> PARSEOP_UPDATERULE_ZEROS
451 %token <i> PARSEOP_VAR_PACKAGE
452 %token <i> PARSEOP_VENDORLONG
453 %token <i> PARSEOP_VENDORSHORT
454 %token <i> PARSEOP_WAIT
455 %token <i> PARSEOP_WHILE
456 %token <i> PARSEOP_WORDBUSNUMBER
457 %token <i> PARSEOP_WORDCONST
458 %token <i> PARSEOP_WORDIO
459 %token <i> PARSEOP_WORDSPACE
460 %token <i> PARSEOP_XFERTYPE_8
461 %token <i> PARSEOP_XFERTYPE_8_16
462 %token <i> PARSEOP_XFERTYPE_16
463 %token <i> PARSEOP_XOR
464 %token <i> PARSEOP_ZERO
468 * Production names
471 %type <n> ASLCode
472 %type <n> DefinitionBlockTerm
473 %type <n> TermList
474 %type <n> Term
475 %type <n> CompilerDirective
476 %type <n> ObjectList
477 %type <n> Object
478 %type <n> DataObject
479 %type <n> BufferData
480 %type <n> PackageData
481 %type <n> IntegerData
482 %type <n> StringData
483 %type <n> NamedObject
484 %type <n> NameSpaceModifier
485 %type <n> UserTerm
486 %type <n> ArgList
487 %type <n> TermArg
488 %type <n> Target
489 %type <n> RequiredTarget
490 %type <n> SimpleTarget
491 %type <n> BufferTermData
492 %type <n> ParameterTypePackage
493 %type <n> ParameterTypePackageList
494 %type <n> ParameterTypesPackage
495 %type <n> ParameterTypesPackageList
497 %type <n> Type1Opcode
498 %type <n> Type2Opcode
499 %type <n> Type2IntegerOpcode
500 %type <n> Type2StringOpcode
501 %type <n> Type2BufferOpcode
502 %type <n> Type2BufferOrStringOpcode
503 %type <n> Type3Opcode
505 /* Obsolete %type <n> Type4Opcode */
507 %type <n> Type5Opcode
508 %type <n> Type6Opcode
510 %type <n> LineTerm
511 %type <n> IncludeTerm
512 %type <n> IncludeCStyleTerm
513 %type <n> ExternalTerm
515 %type <n> FieldUnitList
516 %type <n> FieldUnit
517 %type <n> FieldUnitEntry
519 %type <n> OffsetTerm
520 %type <n> AccessAsTerm
521 %type <n> OptionalAccessAttribTerm
524 /* Named Objects */
526 %type <n> BankFieldTerm
527 %type <n> CreateBitFieldTerm
528 %type <n> CreateByteFieldTerm
529 %type <n> CreateDWordFieldTerm
530 %type <n> CreateFieldTerm
531 %type <n> CreateQWordFieldTerm
532 %type <n> CreateWordFieldTerm
533 %type <n> DataRegionTerm
534 %type <n> DeviceTerm
535 %type <n> EventTerm
536 %type <n> FieldTerm
537 %type <n> FunctionTerm
538 %type <n> IndexFieldTerm
539 %type <n> MethodTerm
540 %type <n> MutexTerm
541 %type <n> OpRegionTerm
542 %type <n> OpRegionSpaceIdTerm
543 %type <n> PowerResTerm
544 %type <n> ProcessorTerm
545 %type <n> ThermalZoneTerm
548 /* Namespace modifiers */
550 %type <n> AliasTerm
551 %type <n> NameTerm
552 %type <n> ScopeTerm
554 /* Type 1 opcodes */
556 %type <n> BreakTerm
557 %type <n> BreakPointTerm
558 %type <n> ContinueTerm
559 %type <n> FatalTerm
560 %type <n> IfElseTerm
561 %type <n> IfTerm
562 %type <n> ElseTerm
563 %type <n> LoadTerm
564 %type <n> NoOpTerm
565 %type <n> NotifyTerm
566 %type <n> ReleaseTerm
567 %type <n> ResetTerm
568 %type <n> ReturnTerm
569 %type <n> SignalTerm
570 %type <n> SleepTerm
571 %type <n> StallTerm
572 %type <n> SwitchTerm
573 %type <n> CaseDefaultTermList
574 //%type <n> CaseTermList
575 %type <n> CaseTerm
576 %type <n> DefaultTerm
577 %type <n> UnloadTerm
578 %type <n> WhileTerm
580 /* Type 2 opcodes */
582 %type <n> AcquireTerm
583 %type <n> AddTerm
584 %type <n> AndTerm
585 %type <n> ConcatTerm
586 %type <n> ConcatResTerm
587 %type <n> CondRefOfTerm
588 %type <n> CopyObjectTerm
589 %type <n> DecTerm
590 %type <n> DerefOfTerm
591 %type <n> DivideTerm
592 %type <n> FindSetLeftBitTerm
593 %type <n> FindSetRightBitTerm
594 %type <n> FromBCDTerm
595 %type <n> IncTerm
596 %type <n> IndexTerm
597 %type <n> LAndTerm
598 %type <n> LEqualTerm
599 %type <n> LGreaterTerm
600 %type <n> LGreaterEqualTerm
601 %type <n> LLessTerm
602 %type <n> LLessEqualTerm
603 %type <n> LNotTerm
604 %type <n> LNotEqualTerm
605 %type <n> LoadTableTerm
606 %type <n> LOrTerm
607 %type <n> MatchTerm
608 %type <n> MidTerm
609 %type <n> ModTerm
610 %type <n> MultiplyTerm
611 %type <n> NAndTerm
612 %type <n> NOrTerm
613 %type <n> NotTerm
614 %type <n> ObjectTypeTerm
615 %type <n> OrTerm
616 %type <n> RefOfTerm
617 %type <n> ShiftLeftTerm
618 %type <n> ShiftRightTerm
619 %type <n> SizeOfTerm
620 %type <n> StoreTerm
621 %type <n> SubtractTerm
622 %type <n> TimerTerm
623 %type <n> ToBCDTerm
624 %type <n> ToBufferTerm
625 %type <n> ToDecimalStringTerm
626 %type <n> ToHexStringTerm
627 %type <n> ToIntegerTerm
628 %type <n> ToStringTerm
629 %type <n> WaitTerm
630 %type <n> XOrTerm
632 %type <n> OptionalTermArg
633 %type <n> OptionalReturnArg
634 %type <n> OptionalListString
637 /* Keywords */
639 %type <n> ObjectTypeKeyword
640 %type <n> AccessTypeKeyword
641 %type <n> AccessAttribKeyword
642 %type <n> LockRuleKeyword
643 %type <n> UpdateRuleKeyword
644 %type <n> RegionSpaceKeyword
645 %type <n> AddressSpaceKeyword
646 %type <n> MatchOpKeyword
647 %type <n> SerializeRuleKeyword
648 %type <n> DMATypeKeyword
649 %type <n> OptionalBusMasterKeyword
650 %type <n> XferTypeKeyword
651 %type <n> ResourceTypeKeyword
652 %type <n> MinKeyword
653 %type <n> MaxKeyword
654 %type <n> DecodeKeyword
655 %type <n> RangeTypeKeyword
656 %type <n> MemTypeKeyword
657 %type <n> OptionalReadWriteKeyword
658 %type <n> InterruptTypeKeyword
659 %type <n> InterruptLevel
660 %type <n> ShareTypeKeyword
661 %type <n> IODecodeKeyword
662 %type <n> TypeKeyword
663 %type <n> TranslationKeyword
664 %type <n> AddressKeyword
666 /* Types */
668 %type <n> SuperName
669 %type <n> ArgTerm
670 %type <n> LocalTerm
671 %type <n> DebugTerm
673 %type <n> Integer
674 %type <n> ByteConst
675 %type <n> WordConst
676 %type <n> DWordConst
677 %type <n> QWordConst
678 %type <n> String
680 %type <n> ConstTerm
681 %type <n> ByteConstExpr
682 %type <n> WordConstExpr
683 %type <n> DWordConstExpr
684 %type <n> QWordConstExpr
685 %type <n> ConstExprTerm
687 %type <n> BufferTerm
688 %type <n> ByteList
689 %type <n> DWordList
691 %type <n> PackageTerm
692 %type <n> PackageList
693 %type <n> PackageElement
695 %type <n> VarPackageLengthTerm
697 /* Macros */
699 %type <n> EISAIDTerm
700 %type <n> ResourceTemplateTerm
701 %type <n> ToUUIDTerm
702 %type <n> UnicodeTerm
703 %type <n> ResourceMacroList
704 %type <n> ResourceMacroTerm
706 %type <n> DMATerm
707 %type <n> DWordIOTerm
708 %type <n> DWordMemoryTerm
709 %type <n> DWordSpaceTerm
710 %type <n> EndDependentFnTerm
711 %type <n> ExtendedIOTerm
712 %type <n> ExtendedMemoryTerm
713 %type <n> ExtendedSpaceTerm
714 %type <n> FixedIOTerm
715 %type <n> InterruptTerm
716 %type <n> IOTerm
717 %type <n> IRQNoFlagsTerm
718 %type <n> IRQTerm
719 %type <n> Memory24Term
720 %type <n> Memory32FixedTerm
721 %type <n> Memory32Term
722 %type <n> QWordIOTerm
723 %type <n> QWordMemoryTerm
724 %type <n> QWordSpaceTerm
725 %type <n> RegisterTerm
726 %type <n> StartDependentFnTerm
727 %type <n> StartDependentFnNoPriTerm
728 %type <n> VendorLongTerm
729 %type <n> VendorShortTerm
730 %type <n> WordBusNumberTerm
731 %type <n> WordIOTerm
732 %type <n> WordSpaceTerm
734 %type <n> NameString
735 %type <n> NameSeg
738 /* Local types that help construct the AML, not in ACPI spec */
740 %type <n> IncludeEndTerm
741 %type <n> AmlPackageLengthTerm
742 %type <n> OptionalByteConstExpr
743 %type <n> OptionalDWordConstExpr
744 %type <n> OptionalQWordConstExpr
745 %type <n> OptionalSerializeRuleKeyword
746 %type <n> OptionalResourceType_First
747 %type <n> OptionalResourceType
748 %type <n> OptionalMinType
749 %type <n> OptionalMaxType
750 %type <n> OptionalMemType
751 %type <n> OptionalCount
752 %type <n> OptionalDecodeType
753 %type <n> OptionalRangeType
754 %type <n> OptionalShareType
755 %type <n> OptionalType
756 %type <n> OptionalType_Last
757 %type <n> OptionalTranslationType_Last
758 %type <n> OptionalStringData
759 %type <n> OptionalNameString
760 %type <n> OptionalNameString_First
761 %type <n> OptionalNameString_Last
762 %type <n> OptionalAddressRange
763 %type <n> OptionalObjectTypeKeyword
764 %type <n> OptionalParameterTypePackage
765 %type <n> OptionalParameterTypesPackage
766 %type <n> OptionalReference
767 %type <n> OptionalAccessSize
770 %type <n> TermArgItem
771 %type <n> NameStringItem
776 /*******************************************************************************
778 * Production rules start here
780 ******************************************************************************/
783 * ASL Names
788 * Blocks, Data, and Opcodes
791 ASLCode
792 : DefinitionBlockTerm
793 | error {YYABORT; $$ = NULL;}
796 DefinitionBlockTerm
797 : PARSEOP_DEFINITIONBLOCK '(' {$$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
798 String ','
799 String ','
800 ByteConst ','
801 String ','
802 String ','
803 DWordConst
804 ')' {TrSetEndLineNumber ($<n>3);}
805 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
808 /* ACPI 3.0 -- allow semicolons between terms */
810 TermList
811 : {$$ = NULL;}
812 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
813 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
816 Term
817 : Object {}
818 | Type1Opcode {}
819 | Type2Opcode {}
820 | Type2IntegerOpcode {}
821 | Type2StringOpcode {}
822 | Type2BufferOpcode {}
823 | Type2BufferOrStringOpcode {}
824 | error {$$ = AslDoError(); yyclearin;}
827 CompilerDirective
828 : IncludeTerm {}
829 | IncludeCStyleTerm {$$ = NULL;}
830 | LineTerm {$$ = NULL;}
831 | ExternalTerm {}
834 ObjectList
835 : {$$ = NULL;}
836 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
837 | error {$$ = AslDoError(); yyclearin;}
840 Object
841 : CompilerDirective {}
842 | NamedObject {}
843 | NameSpaceModifier {}
846 DataObject
847 : BufferData {}
848 | PackageData {}
849 | IntegerData {}
850 | StringData {}
853 BufferData
854 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
855 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
856 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
857 | BufferTerm {}
860 PackageData
861 : PackageTerm {}
864 IntegerData
865 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
866 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
867 | Integer {}
868 | ConstTerm {}
871 StringData
872 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
873 | String {}
876 NamedObject
877 : BankFieldTerm {}
878 | CreateBitFieldTerm {}
879 | CreateByteFieldTerm {}
880 | CreateDWordFieldTerm {}
881 | CreateFieldTerm {}
882 | CreateQWordFieldTerm {}
883 | CreateWordFieldTerm {}
884 | DataRegionTerm {}
885 | DeviceTerm {}
886 | EventTerm {}
887 | FieldTerm {}
888 | FunctionTerm {}
889 | IndexFieldTerm {}
890 | MethodTerm {}
891 | MutexTerm {}
892 | OpRegionTerm {}
893 | PowerResTerm {}
894 | ProcessorTerm {}
895 | ThermalZoneTerm {}
898 NameSpaceModifier
899 : AliasTerm {}
900 | NameTerm {}
901 | ScopeTerm {}
904 UserTerm
905 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
906 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
909 ArgList
910 : {$$ = NULL;}
911 | TermArg
912 | ArgList ',' /* Allows a trailing comma at list end */
913 | ArgList ','
914 TermArg {$$ = TrLinkPeerNode ($1,$3);}
918 Removed from TermArg due to reduce/reduce conflicts
919 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
920 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
921 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
922 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
926 TermArg
927 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
928 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
929 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
930 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
931 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
934 Target
935 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
936 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
937 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
940 RequiredTarget
941 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
944 SimpleTarget
945 : NameString {}
946 | LocalTerm {}
947 | ArgTerm {}
950 /* Rules for specifying the type of one method argument or return value */
952 ParameterTypePackage
953 : {$$ = NULL;}
954 | ObjectTypeKeyword {$$ = $1;}
955 | ParameterTypePackage ','
956 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
959 ParameterTypePackageList
960 : {$$ = NULL;}
961 | ObjectTypeKeyword {$$ = $1;}
962 | '{' ParameterTypePackage '}' {$$ = $2;}
965 OptionalParameterTypePackage
966 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
967 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
970 /* Rules for specifying the types for method arguments */
972 ParameterTypesPackage
973 : ParameterTypePackageList {$$ = $1;}
974 | ParameterTypesPackage ','
975 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
978 ParameterTypesPackageList
979 : {$$ = NULL;}
980 | ObjectTypeKeyword {$$ = $1;}
981 | '{' ParameterTypesPackage '}' {$$ = $2;}
984 OptionalParameterTypesPackage
985 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
986 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
990 /* Opcode types */
992 Type1Opcode
993 : BreakTerm {}
994 | BreakPointTerm {}
995 | ContinueTerm {}
996 | FatalTerm {}
997 | IfElseTerm {}
998 | LoadTerm {}
999 | NoOpTerm {}
1000 | NotifyTerm {}
1001 | ReleaseTerm {}
1002 | ResetTerm {}
1003 | ReturnTerm {}
1004 | SignalTerm {}
1005 | SleepTerm {}
1006 | StallTerm {}
1007 | SwitchTerm {}
1008 | UnloadTerm {}
1009 | WhileTerm {}
1012 Type2Opcode
1013 : AcquireTerm {}
1014 | CondRefOfTerm {}
1015 | CopyObjectTerm {}
1016 | DerefOfTerm {}
1017 | ObjectTypeTerm {}
1018 | RefOfTerm {}
1019 | SizeOfTerm {}
1020 | StoreTerm {}
1021 | TimerTerm {}
1022 | WaitTerm {}
1023 | UserTerm {}
1027 * Type 3/4/5 opcodes
1030 Type2IntegerOpcode /* "Type3" opcodes */
1031 : AddTerm {}
1032 | AndTerm {}
1033 | DecTerm {}
1034 | DivideTerm {}
1035 | FindSetLeftBitTerm {}
1036 | FindSetRightBitTerm {}
1037 | FromBCDTerm {}
1038 | IncTerm {}
1039 | IndexTerm {}
1040 | LAndTerm {}
1041 | LEqualTerm {}
1042 | LGreaterTerm {}
1043 | LGreaterEqualTerm {}
1044 | LLessTerm {}
1045 | LLessEqualTerm {}
1046 | LNotTerm {}
1047 | LNotEqualTerm {}
1048 | LoadTableTerm {}
1049 | LOrTerm {}
1050 | MatchTerm {}
1051 | ModTerm {}
1052 | MultiplyTerm {}
1053 | NAndTerm {}
1054 | NOrTerm {}
1055 | NotTerm {}
1056 | OrTerm {}
1057 | ShiftLeftTerm {}
1058 | ShiftRightTerm {}
1059 | SubtractTerm {}
1060 | ToBCDTerm {}
1061 | ToIntegerTerm {}
1062 | XOrTerm {}
1065 Type2StringOpcode /* "Type4" Opcodes */
1066 : ToDecimalStringTerm {}
1067 | ToHexStringTerm {}
1068 | ToStringTerm {}
1071 Type2BufferOpcode /* "Type5" Opcodes */
1072 : ToBufferTerm {}
1073 | ConcatResTerm {}
1076 Type2BufferOrStringOpcode
1077 : ConcatTerm {}
1078 | MidTerm {}
1082 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1085 Type3Opcode
1086 : EISAIDTerm {}
1089 /* Obsolete
1090 Type4Opcode
1091 : ConcatTerm {}
1092 | ToDecimalStringTerm {}
1093 | ToHexStringTerm {}
1094 | MidTerm {}
1095 | ToStringTerm {}
1100 Type5Opcode
1101 : ResourceTemplateTerm {}
1102 | UnicodeTerm {}
1103 | ToUUIDTerm {}
1106 Type6Opcode
1107 : RefOfTerm {}
1108 | DerefOfTerm {}
1109 | IndexTerm {}
1110 | UserTerm {}
1113 IncludeTerm
1114 : PARSEOP_INCLUDE '(' {$$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1115 String ')' {$$ = TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1116 TermList
1117 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1120 IncludeEndTerm
1121 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1124 IncludeCStyleTerm
1125 : PARSEOP_INCLUDE_CSTYLE
1126 String {FlOpenIncludeFile ($2);}
1129 LineTerm
1130 : PARSEOP_LINE_CSTYLE
1131 Integer {FlSetLineNumber ($2);}
1134 ExternalTerm
1135 : PARSEOP_EXTERNAL '('
1136 NameString
1137 OptionalObjectTypeKeyword
1138 OptionalParameterTypePackage
1139 OptionalParameterTypesPackage
1140 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1141 | PARSEOP_EXTERNAL '('
1142 error ')' {$$ = AslDoError(); yyclearin;}
1146 /******* Named Objects *******************************************************/
1149 BankFieldTerm
1150 : PARSEOP_BANKFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1151 NameString
1152 NameStringItem
1153 TermArgItem
1154 ',' AccessTypeKeyword
1155 ',' LockRuleKeyword
1156 ',' UpdateRuleKeyword
1157 ')' '{'
1158 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1159 | PARSEOP_BANKFIELD '('
1160 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1163 FieldUnitList
1164 : {$$ = NULL;}
1165 | FieldUnit
1166 | FieldUnitList ',' /* Allows a trailing comma at list end */
1167 | FieldUnitList ','
1168 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1171 FieldUnit
1172 : FieldUnitEntry {}
1173 | OffsetTerm {}
1174 | AccessAsTerm {}
1177 FieldUnitEntry
1178 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1179 | NameSeg ','
1180 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1183 OffsetTerm
1184 : PARSEOP_OFFSET '('
1185 AmlPackageLengthTerm
1186 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1187 | PARSEOP_OFFSET '('
1188 error ')' {$$ = AslDoError(); yyclearin;}
1191 AccessAsTerm
1192 : PARSEOP_ACCESSAS '('
1193 AccessTypeKeyword
1194 OptionalAccessAttribTerm
1195 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1196 | PARSEOP_ACCESSAS '('
1197 error ')' {$$ = AslDoError(); yyclearin;}
1200 CreateBitFieldTerm
1201 : PARSEOP_CREATEBITFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1202 TermArg
1203 TermArgItem
1204 NameStringItem
1205 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1206 | PARSEOP_CREATEBITFIELD '('
1207 error ')' {$$ = AslDoError(); yyclearin;}
1210 CreateByteFieldTerm
1211 : PARSEOP_CREATEBYTEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1212 TermArg
1213 TermArgItem
1214 NameStringItem
1215 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1216 | PARSEOP_CREATEBYTEFIELD '('
1217 error ')' {$$ = AslDoError(); yyclearin;}
1220 CreateDWordFieldTerm
1221 : PARSEOP_CREATEDWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1222 TermArg
1223 TermArgItem
1224 NameStringItem
1225 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1226 | PARSEOP_CREATEDWORDFIELD '('
1227 error ')' {$$ = AslDoError(); yyclearin;}
1230 CreateFieldTerm
1231 : PARSEOP_CREATEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1232 TermArg
1233 TermArgItem
1234 TermArgItem
1235 NameStringItem
1236 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1237 | PARSEOP_CREATEFIELD '('
1238 error ')' {$$ = AslDoError(); yyclearin;}
1241 CreateQWordFieldTerm
1242 : PARSEOP_CREATEQWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1243 TermArg
1244 TermArgItem
1245 NameStringItem
1246 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1247 | PARSEOP_CREATEQWORDFIELD '('
1248 error ')' {$$ = AslDoError(); yyclearin;}
1251 CreateWordFieldTerm
1252 : PARSEOP_CREATEWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1253 TermArg
1254 TermArgItem
1255 NameStringItem
1256 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1257 | PARSEOP_CREATEWORDFIELD '('
1258 error ')' {$$ = AslDoError(); yyclearin;}
1261 DataRegionTerm
1262 : PARSEOP_DATATABLEREGION '(' {$$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1263 NameString
1264 TermArgItem
1265 TermArgItem
1266 TermArgItem
1267 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1268 | PARSEOP_DATATABLEREGION '('
1269 error ')' {$$ = AslDoError(); yyclearin;}
1272 DeviceTerm
1273 : PARSEOP_DEVICE '(' {$$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1274 NameString
1275 ')' '{'
1276 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1277 | PARSEOP_DEVICE '('
1278 error ')' {$$ = AslDoError(); yyclearin;}
1281 EventTerm
1282 : PARSEOP_EVENT '(' {$$ = TrCreateLeafNode (PARSEOP_EVENT);}
1283 NameString
1284 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1285 | PARSEOP_EVENT '('
1286 error ')' {$$ = AslDoError(); yyclearin;}
1289 FieldTerm
1290 : PARSEOP_FIELD '(' {$$ = TrCreateLeafNode (PARSEOP_FIELD);}
1291 NameString
1292 ',' AccessTypeKeyword
1293 ',' LockRuleKeyword
1294 ',' UpdateRuleKeyword
1295 ')' '{'
1296 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1297 | PARSEOP_FIELD '('
1298 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1301 FunctionTerm
1302 : PARSEOP_FUNCTION '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);}
1303 NameString
1304 OptionalParameterTypePackage
1305 OptionalParameterTypesPackage
1306 ')' '{'
1307 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1308 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1309 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1310 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1311 | PARSEOP_FUNCTION '('
1312 error ')' {$$ = AslDoError(); yyclearin;}
1315 IndexFieldTerm
1316 : PARSEOP_INDEXFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1317 NameString
1318 NameStringItem
1319 ',' AccessTypeKeyword
1320 ',' LockRuleKeyword
1321 ',' UpdateRuleKeyword
1322 ')' '{'
1323 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1324 | PARSEOP_INDEXFIELD '('
1325 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1328 MethodTerm
1329 : PARSEOP_METHOD '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);}
1330 NameString
1331 OptionalByteConstExpr {$$ = UtCheckIntegerRange ($5, 0, 7);}
1332 OptionalSerializeRuleKeyword
1333 OptionalByteConstExpr
1334 OptionalParameterTypePackage
1335 OptionalParameterTypesPackage
1336 ')' '{'
1337 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1338 | PARSEOP_METHOD '('
1339 error ')' {$$ = AslDoError(); yyclearin;}
1342 MutexTerm
1343 : PARSEOP_MUTEX '(' {$$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1344 NameString
1345 ',' ByteConstExpr
1346 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1347 | PARSEOP_MUTEX '('
1348 error ')' {$$ = AslDoError(); yyclearin;}
1351 OpRegionTerm
1352 : PARSEOP_OPERATIONREGION '(' {$$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1353 NameString
1354 ',' OpRegionSpaceIdTerm
1355 TermArgItem
1356 TermArgItem
1357 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1358 | PARSEOP_OPERATIONREGION '('
1359 error ')' {$$ = AslDoError(); yyclearin;}
1362 OpRegionSpaceIdTerm
1363 : RegionSpaceKeyword {}
1364 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1367 PowerResTerm
1368 : PARSEOP_POWERRESOURCE '(' {$$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1369 NameString
1370 ',' ByteConstExpr
1371 ',' WordConstExpr
1372 ')' '{'
1373 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1374 | PARSEOP_POWERRESOURCE '('
1375 error ')' {$$ = AslDoError(); yyclearin;}
1378 ProcessorTerm
1379 : PARSEOP_PROCESSOR '(' {$$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1380 NameString
1381 ',' ByteConstExpr
1382 OptionalDWordConstExpr
1383 OptionalByteConstExpr
1384 ')' '{'
1385 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1386 | PARSEOP_PROCESSOR '('
1387 error ')' {$$ = AslDoError(); yyclearin;}
1390 ThermalZoneTerm
1391 : PARSEOP_THERMALZONE '(' {$$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1392 NameString
1393 ')' '{'
1394 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1395 | PARSEOP_THERMALZONE '('
1396 error ')' {$$ = AslDoError(); yyclearin;}
1400 /******* Namespace modifiers *************************************************/
1403 AliasTerm
1404 : PARSEOP_ALIAS '(' {$$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1405 NameString
1406 NameStringItem
1407 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1408 | PARSEOP_ALIAS '('
1409 error ')' {$$ = AslDoError(); yyclearin;}
1412 NameTerm
1413 : PARSEOP_NAME '(' {$$ = TrCreateLeafNode (PARSEOP_NAME);}
1414 NameString
1415 ',' DataObject
1416 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1417 | PARSEOP_NAME '('
1418 error ')' {$$ = AslDoError(); yyclearin;}
1421 ScopeTerm
1422 : PARSEOP_SCOPE '(' {$$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1423 NameString
1424 ')' '{'
1425 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1426 | PARSEOP_SCOPE '('
1427 error ')' {$$ = AslDoError(); yyclearin;}
1431 /******* Type 1 opcodes *******************************************************/
1434 BreakTerm
1435 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1438 BreakPointTerm
1439 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1442 ContinueTerm
1443 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1446 FatalTerm
1447 : PARSEOP_FATAL '(' {$$ = TrCreateLeafNode (PARSEOP_FATAL);}
1448 ByteConstExpr
1449 ',' DWordConstExpr
1450 TermArgItem
1451 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1452 | PARSEOP_FATAL '('
1453 error ')' {$$ = AslDoError(); yyclearin;}
1456 IfElseTerm
1457 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1460 IfTerm
1461 : PARSEOP_IF '(' {$$ = TrCreateLeafNode (PARSEOP_IF);}
1462 TermArg
1463 ')' '{'
1464 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1466 | PARSEOP_IF '('
1467 error ')' {$$ = AslDoError(); yyclearin;}
1470 ElseTerm
1471 : {$$ = NULL;}
1472 | PARSEOP_ELSE '{' {$$ = TrCreateLeafNode (PARSEOP_ELSE);}
1473 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1475 | PARSEOP_ELSE '{'
1476 error '}' {$$ = AslDoError(); yyclearin;}
1478 | PARSEOP_ELSE
1479 error {$$ = AslDoError(); yyclearin;}
1481 | PARSEOP_ELSEIF '(' {$$ = TrCreateLeafNode (PARSEOP_ELSE);}
1482 TermArg {$$ = TrCreateLeafNode (PARSEOP_IF);}
1483 ')' '{'
1484 TermList '}' {$$ = TrLinkChildren ($<n>5,2,$4,$8);}
1485 ElseTerm {$$ = TrLinkPeerNode ($<n>5,$11);}
1486 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1488 | PARSEOP_ELSEIF '('
1489 error ')' {$$ = AslDoError(); yyclearin;}
1491 | PARSEOP_ELSEIF
1492 error {$$ = AslDoError(); yyclearin;}
1495 LoadTerm
1496 : PARSEOP_LOAD '(' {$$ = TrCreateLeafNode (PARSEOP_LOAD);}
1497 NameString
1498 RequiredTarget
1499 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1500 | PARSEOP_LOAD '('
1501 error ')' {$$ = AslDoError(); yyclearin;}
1504 NoOpTerm
1505 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1508 NotifyTerm
1509 : PARSEOP_NOTIFY '(' {$$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1510 SuperName
1511 TermArgItem
1512 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1513 | PARSEOP_NOTIFY '('
1514 error ')' {$$ = AslDoError(); yyclearin;}
1517 ReleaseTerm
1518 : PARSEOP_RELEASE '(' {$$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1519 SuperName
1520 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1521 | PARSEOP_RELEASE '('
1522 error ')' {$$ = AslDoError(); yyclearin;}
1525 ResetTerm
1526 : PARSEOP_RESET '(' {$$ = TrCreateLeafNode (PARSEOP_RESET);}
1527 SuperName
1528 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1529 | PARSEOP_RESET '('
1530 error ')' {$$ = AslDoError(); yyclearin;}
1533 ReturnTerm
1534 : PARSEOP_RETURN '(' {$$ = TrCreateLeafNode (PARSEOP_RETURN);}
1535 OptionalReturnArg
1536 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1537 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrCreateLeafNode (PARSEOP_ZERO));}
1538 | PARSEOP_RETURN '('
1539 error ')' {$$ = AslDoError(); yyclearin;}
1542 SignalTerm
1543 : PARSEOP_SIGNAL '(' {$$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1544 SuperName
1545 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1546 | PARSEOP_SIGNAL '('
1547 error ')' {$$ = AslDoError(); yyclearin;}
1550 SleepTerm
1551 : PARSEOP_SLEEP '(' {$$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1552 TermArg
1553 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1554 | PARSEOP_SLEEP '('
1555 error ')' {$$ = AslDoError(); yyclearin;}
1558 StallTerm
1559 : PARSEOP_STALL '(' {$$ = TrCreateLeafNode (PARSEOP_STALL);}
1560 TermArg
1561 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1562 | PARSEOP_STALL '('
1563 error ')' {$$ = AslDoError(); yyclearin;}
1566 SwitchTerm
1567 : PARSEOP_SWITCH '(' {$$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1568 TermArg
1569 ')' '{'
1570 CaseDefaultTermList '}'
1571 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1572 | PARSEOP_SWITCH '('
1573 error ')' {$$ = AslDoError(); yyclearin;}
1577 * Case-Default list; allow only one Default term and unlimited Case terms
1580 CaseDefaultTermList
1581 : {$$ = NULL;}
1582 | CaseTerm {}
1583 | DefaultTerm {}
1584 | CaseDefaultTermList
1585 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1586 | CaseDefaultTermList
1587 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1589 /* Original - attempts to force zero or one default term within the switch */
1592 CaseDefaultTermList
1593 : {$$ = NULL;}
1594 | CaseTermList
1595 DefaultTerm
1596 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1597 | CaseTermList
1598 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1601 CaseTermList
1602 : {$$ = NULL;}
1603 | CaseTerm {}
1604 | CaseTermList
1605 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1609 CaseTerm
1610 : PARSEOP_CASE '(' {$$ = TrCreateLeafNode (PARSEOP_CASE);}
1611 DataObject
1612 ')' '{'
1613 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1614 | PARSEOP_CASE '('
1615 error ')' {$$ = AslDoError(); yyclearin;}
1618 DefaultTerm
1619 : PARSEOP_DEFAULT '{' {$$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1620 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1621 | PARSEOP_DEFAULT '{'
1622 error '}' {$$ = AslDoError(); yyclearin;}
1625 UnloadTerm
1626 : PARSEOP_UNLOAD '(' {$$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1627 SuperName
1628 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1629 | PARSEOP_UNLOAD '('
1630 error ')' {$$ = AslDoError(); yyclearin;}
1633 WhileTerm
1634 : PARSEOP_WHILE '(' {$$ = TrCreateLeafNode (PARSEOP_WHILE);}
1635 TermArg
1636 ')' '{' TermList '}'
1637 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1638 | PARSEOP_WHILE '('
1639 error ')' {$$ = AslDoError(); yyclearin;}
1643 /******* Type 2 opcodes *******************************************************/
1645 AcquireTerm
1646 : PARSEOP_ACQUIRE '(' {$$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1647 SuperName
1648 ',' WordConstExpr
1649 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1650 | PARSEOP_ACQUIRE '('
1651 error ')' {$$ = AslDoError(); yyclearin;}
1654 AddTerm
1655 : PARSEOP_ADD '(' {$$ = TrCreateLeafNode (PARSEOP_ADD);}
1656 TermArg
1657 TermArgItem
1658 Target
1659 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1660 | PARSEOP_ADD '('
1661 error ')' {$$ = AslDoError(); yyclearin;}
1664 AndTerm
1665 : PARSEOP_AND '(' {$$ = TrCreateLeafNode (PARSEOP_AND);}
1666 TermArg
1667 TermArgItem
1668 Target
1669 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1670 | PARSEOP_AND '('
1671 error ')' {$$ = AslDoError(); yyclearin;}
1674 ConcatTerm
1675 : PARSEOP_CONCATENATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1676 TermArg
1677 TermArgItem
1678 Target
1679 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1680 | PARSEOP_CONCATENATE '('
1681 error ')' {$$ = AslDoError(); yyclearin;}
1684 ConcatResTerm
1685 : PARSEOP_CONCATENATERESTEMPLATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1686 TermArg
1687 TermArgItem
1688 Target
1689 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1690 | PARSEOP_CONCATENATERESTEMPLATE '('
1691 error ')' {$$ = AslDoError(); yyclearin;}
1694 CondRefOfTerm
1695 : PARSEOP_CONDREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1696 SuperName
1697 Target
1698 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1699 | PARSEOP_CONDREFOF '('
1700 error ')' {$$ = AslDoError(); yyclearin;}
1703 CopyObjectTerm
1704 : PARSEOP_COPYOBJECT '(' {$$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1705 TermArg
1706 ',' SimpleTarget
1707 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1708 | PARSEOP_COPYOBJECT '('
1709 error ')' {$$ = AslDoError(); yyclearin;}
1712 DecTerm
1713 : PARSEOP_DECREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1714 SuperName
1715 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1716 | PARSEOP_DECREMENT '('
1717 error ')' {$$ = AslDoError(); yyclearin;}
1720 DerefOfTerm
1721 : PARSEOP_DEREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1722 TermArg
1723 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1724 | PARSEOP_DEREFOF '('
1725 error ')' {$$ = AslDoError(); yyclearin;}
1728 DivideTerm
1729 : PARSEOP_DIVIDE '(' {$$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1730 TermArg
1731 TermArgItem
1732 Target
1733 Target
1734 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1735 | PARSEOP_DIVIDE '('
1736 error ')' {$$ = AslDoError(); yyclearin;}
1739 FindSetLeftBitTerm
1740 : PARSEOP_FINDSETLEFTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1741 TermArg
1742 Target
1743 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1744 | PARSEOP_FINDSETLEFTBIT '('
1745 error ')' {$$ = AslDoError(); yyclearin;}
1748 FindSetRightBitTerm
1749 : PARSEOP_FINDSETRIGHTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1750 TermArg
1751 Target
1752 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1753 | PARSEOP_FINDSETRIGHTBIT '('
1754 error ')' {$$ = AslDoError(); yyclearin;}
1757 FromBCDTerm
1758 : PARSEOP_FROMBCD '(' {$$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1759 TermArg
1760 Target
1761 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1762 | PARSEOP_FROMBCD '('
1763 error ')' {$$ = AslDoError(); yyclearin;}
1766 IncTerm
1767 : PARSEOP_INCREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1768 SuperName
1769 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1770 | PARSEOP_INCREMENT '('
1771 error ')' {$$ = AslDoError(); yyclearin;}
1774 IndexTerm
1775 : PARSEOP_INDEX '(' {$$ = TrCreateLeafNode (PARSEOP_INDEX);}
1776 TermArg
1777 TermArgItem
1778 Target
1779 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1780 | PARSEOP_INDEX '('
1781 error ')' {$$ = AslDoError(); yyclearin;}
1784 LAndTerm
1785 : PARSEOP_LAND '(' {$$ = TrCreateLeafNode (PARSEOP_LAND);}
1786 TermArg
1787 TermArgItem
1788 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1789 | PARSEOP_LAND '('
1790 error ')' {$$ = AslDoError(); yyclearin;}
1793 LEqualTerm
1794 : PARSEOP_LEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1795 TermArg
1796 TermArgItem
1797 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1798 | PARSEOP_LEQUAL '('
1799 error ')' {$$ = AslDoError(); yyclearin;}
1802 LGreaterTerm
1803 : PARSEOP_LGREATER '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1804 TermArg
1805 TermArgItem
1806 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1807 | PARSEOP_LGREATER '('
1808 error ')' {$$ = AslDoError(); yyclearin;}
1811 LGreaterEqualTerm
1812 : PARSEOP_LGREATEREQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);}
1813 TermArg
1814 TermArgItem
1815 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1816 | PARSEOP_LGREATEREQUAL '('
1817 error ')' {$$ = AslDoError(); yyclearin;}
1820 LLessTerm
1821 : PARSEOP_LLESS '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);}
1822 TermArg
1823 TermArgItem
1824 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1825 | PARSEOP_LLESS '('
1826 error ')' {$$ = AslDoError(); yyclearin;}
1829 LLessEqualTerm
1830 : PARSEOP_LLESSEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1831 TermArg
1832 TermArgItem
1833 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1834 | PARSEOP_LLESSEQUAL '('
1835 error ')' {$$ = AslDoError(); yyclearin;}
1838 LNotTerm
1839 : PARSEOP_LNOT '(' {$$ = TrCreateLeafNode (PARSEOP_LNOT);}
1840 TermArg
1841 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1842 | PARSEOP_LNOT '('
1843 error ')' {$$ = AslDoError(); yyclearin;}
1846 LNotEqualTerm
1847 : PARSEOP_LNOTEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1848 TermArg
1849 TermArgItem
1850 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1851 | PARSEOP_LNOTEQUAL '('
1852 error ')' {$$ = AslDoError(); yyclearin;}
1855 LoadTableTerm
1856 : PARSEOP_LOADTABLE '(' {$$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1857 TermArg
1858 TermArgItem
1859 TermArgItem
1860 OptionalListString
1861 OptionalListString
1862 OptionalReference
1863 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1864 | PARSEOP_LOADTABLE '('
1865 error ')' {$$ = AslDoError(); yyclearin;}
1868 LOrTerm
1869 : PARSEOP_LOR '(' {$$ = TrCreateLeafNode (PARSEOP_LOR);}
1870 TermArg
1871 TermArgItem
1872 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1873 | PARSEOP_LOR '('
1874 error ')' {$$ = AslDoError(); yyclearin;}
1877 MatchTerm
1878 : PARSEOP_MATCH '(' {$$ = TrCreateLeafNode (PARSEOP_MATCH);}
1879 TermArg
1880 ',' MatchOpKeyword
1881 TermArgItem
1882 ',' MatchOpKeyword
1883 TermArgItem
1884 TermArgItem
1885 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1886 | PARSEOP_MATCH '('
1887 error ')' {$$ = AslDoError(); yyclearin;}
1890 MidTerm
1891 : PARSEOP_MID '(' {$$ = TrCreateLeafNode (PARSEOP_MID);}
1892 TermArg
1893 TermArgItem
1894 TermArgItem
1895 Target
1896 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1897 | PARSEOP_MID '('
1898 error ')' {$$ = AslDoError(); yyclearin;}
1901 ModTerm
1902 : PARSEOP_MOD '(' {$$ = TrCreateLeafNode (PARSEOP_MOD);}
1903 TermArg
1904 TermArgItem
1905 Target
1906 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1907 | PARSEOP_MOD '('
1908 error ')' {$$ = AslDoError(); yyclearin;}
1911 MultiplyTerm
1912 : PARSEOP_MULTIPLY '(' {$$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1913 TermArg
1914 TermArgItem
1915 Target
1916 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1917 | PARSEOP_MULTIPLY '('
1918 error ')' {$$ = AslDoError(); yyclearin;}
1921 NAndTerm
1922 : PARSEOP_NAND '(' {$$ = TrCreateLeafNode (PARSEOP_NAND);}
1923 TermArg
1924 TermArgItem
1925 Target
1926 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1927 | PARSEOP_NAND '('
1928 error ')' {$$ = AslDoError(); yyclearin;}
1931 NOrTerm
1932 : PARSEOP_NOR '(' {$$ = TrCreateLeafNode (PARSEOP_NOR);}
1933 TermArg
1934 TermArgItem
1935 Target
1936 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1937 | PARSEOP_NOR '('
1938 error ')' {$$ = AslDoError(); yyclearin;}
1941 NotTerm
1942 : PARSEOP_NOT '(' {$$ = TrCreateLeafNode (PARSEOP_NOT);}
1943 TermArg
1944 Target
1945 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1946 | PARSEOP_NOT '('
1947 error ')' {$$ = AslDoError(); yyclearin;}
1950 ObjectTypeTerm
1951 : PARSEOP_OBJECTTYPE '(' {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1952 SuperName
1953 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1954 | PARSEOP_OBJECTTYPE '('
1955 error ')' {$$ = AslDoError(); yyclearin;}
1958 OrTerm
1959 : PARSEOP_OR '(' {$$ = TrCreateLeafNode (PARSEOP_OR);}
1960 TermArg
1961 TermArgItem
1962 Target
1963 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1964 | PARSEOP_OR '('
1965 error ')' {$$ = AslDoError(); yyclearin;}
1969 * In RefOf, the node isn't really a target, but we can't keep track of it after
1970 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1972 RefOfTerm
1973 : PARSEOP_REFOF '(' {$$ = TrCreateLeafNode (PARSEOP_REFOF);}
1974 SuperName
1975 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1976 | PARSEOP_REFOF '('
1977 error ')' {$$ = AslDoError(); yyclearin;}
1980 ShiftLeftTerm
1981 : PARSEOP_SHIFTLEFT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1982 TermArg
1983 TermArgItem
1984 Target
1985 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1986 | PARSEOP_SHIFTLEFT '('
1987 error ')' {$$ = AslDoError(); yyclearin;}
1990 ShiftRightTerm
1991 : PARSEOP_SHIFTRIGHT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1992 TermArg
1993 TermArgItem
1994 Target
1995 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1996 | PARSEOP_SHIFTRIGHT '('
1997 error ')' {$$ = AslDoError(); yyclearin;}
2000 SizeOfTerm
2001 : PARSEOP_SIZEOF '(' {$$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
2002 SuperName
2003 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2004 | PARSEOP_SIZEOF '('
2005 error ')' {$$ = AslDoError(); yyclearin;}
2008 StoreTerm
2009 : PARSEOP_STORE '(' {$$ = TrCreateLeafNode (PARSEOP_STORE);}
2010 TermArg
2011 ',' SuperName
2012 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2013 | PARSEOP_STORE '('
2014 error ')' {$$ = AslDoError(); yyclearin;}
2017 SubtractTerm
2018 : PARSEOP_SUBTRACT '(' {$$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2019 TermArg
2020 TermArgItem
2021 Target
2022 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2023 | PARSEOP_SUBTRACT '('
2024 error ')' {$$ = AslDoError(); yyclearin;}
2027 TimerTerm
2028 : PARSEOP_TIMER '(' {$$ = TrCreateLeafNode (PARSEOP_TIMER);}
2029 ')' {$$ = TrLinkChildren ($<n>3,0);}
2030 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2031 | PARSEOP_TIMER '('
2032 error ')' {$$ = AslDoError(); yyclearin;}
2035 ToBCDTerm
2036 : PARSEOP_TOBCD '(' {$$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2037 TermArg
2038 Target
2039 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2040 | PARSEOP_TOBCD '('
2041 error ')' {$$ = AslDoError(); yyclearin;}
2044 ToBufferTerm
2045 : PARSEOP_TOBUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2046 TermArg
2047 Target
2048 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2049 | PARSEOP_TOBUFFER '('
2050 error ')' {$$ = AslDoError(); yyclearin;}
2053 ToDecimalStringTerm
2054 : PARSEOP_TODECIMALSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2055 TermArg
2056 Target
2057 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2058 | PARSEOP_TODECIMALSTRING '('
2059 error ')' {$$ = AslDoError(); yyclearin;}
2062 ToHexStringTerm
2063 : PARSEOP_TOHEXSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2064 TermArg
2065 Target
2066 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2067 | PARSEOP_TOHEXSTRING '('
2068 error ')' {$$ = AslDoError(); yyclearin;}
2071 ToIntegerTerm
2072 : PARSEOP_TOINTEGER '(' {$$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2073 TermArg
2074 Target
2075 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2076 | PARSEOP_TOINTEGER '('
2077 error ')' {$$ = AslDoError(); yyclearin;}
2080 ToStringTerm
2081 : PARSEOP_TOSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2082 TermArg
2083 OptionalCount
2084 Target
2085 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2086 | PARSEOP_TOSTRING '('
2087 error ')' {$$ = AslDoError(); yyclearin;}
2090 ToUUIDTerm
2091 : PARSEOP_TOUUID '('
2092 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2093 | PARSEOP_TOUUID '('
2094 error ')' {$$ = AslDoError(); yyclearin;}
2097 WaitTerm
2098 : PARSEOP_WAIT '(' {$$ = TrCreateLeafNode (PARSEOP_WAIT);}
2099 SuperName
2100 TermArgItem
2101 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2102 | PARSEOP_WAIT '('
2103 error ')' {$$ = AslDoError(); yyclearin;}
2106 XOrTerm
2107 : PARSEOP_XOR '(' {$$ = TrCreateLeafNode (PARSEOP_XOR);}
2108 TermArg
2109 TermArgItem
2110 Target
2111 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2112 | PARSEOP_XOR '('
2113 error ')' {$$ = AslDoError(); yyclearin;}
2117 /******* Keywords *************************************************************/
2120 ObjectTypeKeyword
2121 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2122 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2123 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2124 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2125 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2126 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2127 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2128 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2129 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2130 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2131 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2132 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2133 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2134 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2135 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2136 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2139 AccessTypeKeyword
2140 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2141 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2142 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2143 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2144 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2145 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2148 AccessAttribKeyword
2149 : PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2150 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2151 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2152 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2153 | PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2154 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2155 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2158 LockRuleKeyword
2159 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2160 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2163 UpdateRuleKeyword
2164 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2165 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2166 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2170 RegionSpaceKeyword
2171 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2172 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2173 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2174 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2175 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2176 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2177 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2180 AddressSpaceKeyword
2181 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2182 | RegionSpaceKeyword {}
2183 | PARSEOP_ADDRESSSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
2187 SerializeRuleKeyword
2188 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2189 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2192 MatchOpKeyword
2193 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2194 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2195 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2196 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2197 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2198 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2201 DMATypeKeyword
2202 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2203 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2204 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2205 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2208 XferTypeKeyword
2209 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2210 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2211 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2214 ResourceTypeKeyword
2215 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2216 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2219 MinKeyword
2220 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2221 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2224 MaxKeyword
2225 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2226 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2229 DecodeKeyword
2230 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2231 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2234 RangeTypeKeyword
2235 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2236 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2237 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2240 MemTypeKeyword
2241 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2242 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2243 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2244 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2247 OptionalReadWriteKeyword
2248 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2249 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2250 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2253 InterruptTypeKeyword
2254 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2255 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2258 InterruptLevel
2259 : PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2260 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2263 ShareTypeKeyword
2264 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2265 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2268 IODecodeKeyword
2269 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2270 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2273 TypeKeyword
2274 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2275 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2278 TranslationKeyword
2279 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2280 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2283 AddressKeyword
2284 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2285 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2286 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2287 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2291 /******* Miscellaneous Types **************************************************/
2294 SuperName
2295 : NameString {}
2296 | ArgTerm {}
2297 | LocalTerm {}
2298 | DebugTerm {}
2299 | Type6Opcode {}
2300 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2303 ArgTerm
2304 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2305 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2306 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2307 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2308 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2309 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2310 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2313 LocalTerm
2314 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2315 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2316 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2317 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2318 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2319 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2320 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2321 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2324 DebugTerm
2325 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2329 ByteConst
2330 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2333 WordConst
2334 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2337 DWordConst
2338 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2341 QWordConst
2342 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2345 Integer
2346 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2349 String
2350 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2353 ConstTerm
2354 : ConstExprTerm {}
2355 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2358 ByteConstExpr
2359 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2360 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2361 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2362 | ByteConst {}
2365 WordConstExpr
2366 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2367 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2368 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2369 | WordConst {}
2372 DWordConstExpr
2373 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2374 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2375 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2376 | DWordConst {}
2379 QWordConstExpr
2380 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2381 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2382 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2383 | QWordConst {}
2386 ConstExprTerm
2387 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2388 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2389 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);}
2392 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2394 OptionalCount
2395 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2396 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2397 | ',' TermArg {$$ = $2;}
2401 BufferTerm
2402 : PARSEOP_BUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2403 OptionalTermArg
2404 ')' '{'
2405 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2406 | PARSEOP_BUFFER '('
2407 error ')' {$$ = AslDoError(); yyclearin;}
2410 BufferTermData
2411 : ByteList {}
2412 | StringData {}
2415 ByteList
2416 : {$$ = NULL;}
2417 | ByteConstExpr
2418 | ByteList ',' /* Allows a trailing comma at list end */
2419 | ByteList ','
2420 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2423 DWordList
2424 : {$$ = NULL;}
2425 | DWordConstExpr
2426 | DWordList ',' /* Allows a trailing comma at list end */
2427 | DWordList ','
2428 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2431 PackageTerm
2432 : PARSEOP_PACKAGE '(' {$$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2433 VarPackageLengthTerm
2434 ')' '{'
2435 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2436 | PARSEOP_PACKAGE '('
2437 error ')' {$$ = AslDoError(); yyclearin;}
2440 VarPackageLengthTerm
2441 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2442 | TermArg {$$ = $1;}
2445 PackageList
2446 : {$$ = NULL;}
2447 | PackageElement
2448 | PackageList ',' /* Allows a trailing comma at list end */
2449 | PackageList ','
2450 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2453 PackageElement
2454 : DataObject {}
2455 | NameString {}
2458 EISAIDTerm
2459 : PARSEOP_EISAID '('
2460 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2461 | PARSEOP_EISAID '('
2462 error ')' {$$ = AslDoError(); yyclearin;}
2466 /******* Resources and Memory ***********************************************/
2470 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2471 * Also, insert the EndTag at the end of the template.
2473 ResourceTemplateTerm
2474 : PARSEOP_RESOURCETEMPLATE '(' ')'
2476 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2477 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2478 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2480 TrCreateLeafNode (PARSEOP_ENDTAG));}
2483 UnicodeTerm
2484 : PARSEOP_UNICODE '(' {$$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2485 StringData
2486 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2487 | PARSEOP_UNICODE '('
2488 error ')' {$$ = AslDoError(); yyclearin;}
2491 ResourceMacroList
2492 : {$$ = NULL;}
2493 | ResourceMacroList
2494 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2497 ResourceMacroTerm
2498 : DMATerm {}
2499 | DWordIOTerm {}
2500 | DWordMemoryTerm {}
2501 | DWordSpaceTerm {}
2502 | EndDependentFnTerm {}
2503 | ExtendedIOTerm {}
2504 | ExtendedMemoryTerm {}
2505 | ExtendedSpaceTerm {}
2506 | FixedIOTerm {}
2507 | InterruptTerm {}
2508 | IOTerm {}
2509 | IRQNoFlagsTerm {}
2510 | IRQTerm {}
2511 | Memory24Term {}
2512 | Memory32FixedTerm {}
2513 | Memory32Term {}
2514 | QWordIOTerm {}
2515 | QWordMemoryTerm {}
2516 | QWordSpaceTerm {}
2517 | RegisterTerm {}
2518 | StartDependentFnTerm {}
2519 | StartDependentFnNoPriTerm {}
2520 | VendorLongTerm {}
2521 | VendorShortTerm {}
2522 | WordBusNumberTerm {}
2523 | WordIOTerm {}
2524 | WordSpaceTerm {}
2527 DMATerm
2528 : PARSEOP_DMA '(' {$$ = TrCreateLeafNode (PARSEOP_DMA);}
2529 DMATypeKeyword
2530 OptionalBusMasterKeyword
2531 ',' XferTypeKeyword
2532 OptionalNameString_Last
2533 ')' '{'
2534 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2535 | PARSEOP_DMA '('
2536 error ')' {$$ = AslDoError(); yyclearin;}
2539 DWordIOTerm
2540 : PARSEOP_DWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2541 OptionalResourceType_First
2542 OptionalMinType
2543 OptionalMaxType
2544 OptionalDecodeType
2545 OptionalRangeType
2546 ',' DWordConstExpr
2547 ',' DWordConstExpr
2548 ',' DWordConstExpr
2549 ',' DWordConstExpr
2550 ',' DWordConstExpr
2551 OptionalByteConstExpr
2552 OptionalStringData
2553 OptionalNameString
2554 OptionalType
2555 OptionalTranslationType_Last
2556 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2557 | PARSEOP_DWORDIO '('
2558 error ')' {$$ = AslDoError(); yyclearin;}
2561 DWordMemoryTerm
2562 : PARSEOP_DWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2563 OptionalResourceType_First
2564 OptionalDecodeType
2565 OptionalMinType
2566 OptionalMaxType
2567 OptionalMemType
2568 ',' OptionalReadWriteKeyword
2569 ',' DWordConstExpr
2570 ',' DWordConstExpr
2571 ',' DWordConstExpr
2572 ',' DWordConstExpr
2573 ',' DWordConstExpr
2574 OptionalByteConstExpr
2575 OptionalStringData
2576 OptionalNameString
2577 OptionalAddressRange
2578 OptionalType_Last
2579 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2580 | PARSEOP_DWORDMEMORY '('
2581 error ')' {$$ = AslDoError(); yyclearin;}
2584 DWordSpaceTerm
2585 : PARSEOP_DWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2586 ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2587 OptionalResourceType
2588 OptionalDecodeType
2589 OptionalMinType
2590 OptionalMaxType
2591 ',' ByteConstExpr
2592 ',' DWordConstExpr
2593 ',' DWordConstExpr
2594 ',' DWordConstExpr
2595 ',' DWordConstExpr
2596 ',' DWordConstExpr
2597 OptionalByteConstExpr
2598 OptionalStringData
2599 OptionalNameString_Last
2600 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2601 | PARSEOP_DWORDSPACE '('
2602 error ')' {$$ = AslDoError(); yyclearin;}
2606 EndDependentFnTerm
2607 : PARSEOP_ENDDEPENDENTFN '('
2608 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2609 | PARSEOP_ENDDEPENDENTFN '('
2610 error ')' {$$ = AslDoError(); yyclearin;}
2613 ExtendedIOTerm
2614 : PARSEOP_EXTENDEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2615 OptionalResourceType_First
2616 OptionalMinType
2617 OptionalMaxType
2618 OptionalDecodeType
2619 OptionalRangeType
2620 ',' QWordConstExpr
2621 ',' QWordConstExpr
2622 ',' QWordConstExpr
2623 ',' QWordConstExpr
2624 ',' QWordConstExpr
2625 OptionalQWordConstExpr
2626 OptionalNameString
2627 OptionalType
2628 OptionalTranslationType_Last
2629 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2630 | PARSEOP_EXTENDEDIO '('
2631 error ')' {$$ = AslDoError(); yyclearin;}
2634 ExtendedMemoryTerm
2635 : PARSEOP_EXTENDEDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2636 OptionalResourceType_First
2637 OptionalDecodeType
2638 OptionalMinType
2639 OptionalMaxType
2640 OptionalMemType
2641 ',' OptionalReadWriteKeyword
2642 ',' QWordConstExpr
2643 ',' QWordConstExpr
2644 ',' QWordConstExpr
2645 ',' QWordConstExpr
2646 ',' QWordConstExpr
2647 OptionalQWordConstExpr
2648 OptionalNameString
2649 OptionalAddressRange
2650 OptionalType_Last
2651 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2652 | PARSEOP_EXTENDEDMEMORY '('
2653 error ')' {$$ = AslDoError(); yyclearin;}
2656 ExtendedSpaceTerm
2657 : PARSEOP_EXTENDEDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2658 ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2659 OptionalResourceType
2660 OptionalDecodeType
2661 OptionalMinType
2662 OptionalMaxType
2663 ',' ByteConstExpr
2664 ',' QWordConstExpr
2665 ',' QWordConstExpr
2666 ',' QWordConstExpr
2667 ',' QWordConstExpr
2668 ',' QWordConstExpr
2669 OptionalQWordConstExpr
2670 OptionalNameString_Last
2671 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2672 | PARSEOP_EXTENDEDSPACE '('
2673 error ')' {$$ = AslDoError(); yyclearin;}
2676 FixedIOTerm
2677 : PARSEOP_FIXEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2678 WordConstExpr
2679 ',' ByteConstExpr
2680 OptionalNameString_Last
2681 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2682 | PARSEOP_FIXEDIO '('
2683 error ')' {$$ = AslDoError(); yyclearin;}
2686 InterruptTerm
2687 : PARSEOP_INTERRUPT '(' {$$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2688 OptionalResourceType_First
2689 ',' InterruptTypeKeyword
2690 ',' InterruptLevel
2691 OptionalShareType
2692 OptionalByteConstExpr
2693 OptionalStringData
2694 OptionalNameString_Last
2695 ')' '{'
2696 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2697 | PARSEOP_INTERRUPT '('
2698 error ')' {$$ = AslDoError(); yyclearin;}
2701 IOTerm
2702 : PARSEOP_IO '(' {$$ = TrCreateLeafNode (PARSEOP_IO);}
2703 IODecodeKeyword
2704 ',' WordConstExpr
2705 ',' WordConstExpr
2706 ',' ByteConstExpr
2707 ',' ByteConstExpr
2708 OptionalNameString_Last
2709 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2710 | PARSEOP_IO '('
2711 error ')' {$$ = AslDoError(); yyclearin;}
2714 IRQNoFlagsTerm
2715 : PARSEOP_IRQNOFLAGS '(' {$$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2716 OptionalNameString_First
2717 ')' '{'
2718 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2719 | PARSEOP_IRQNOFLAGS '('
2720 error ')' {$$ = AslDoError(); yyclearin;}
2723 IRQTerm
2724 : PARSEOP_IRQ '(' {$$ = TrCreateLeafNode (PARSEOP_IRQ);}
2725 InterruptTypeKeyword
2726 ',' InterruptLevel
2727 OptionalShareType
2728 OptionalNameString_Last
2729 ')' '{'
2730 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2731 | PARSEOP_IRQ '('
2732 error ')' {$$ = AslDoError(); yyclearin;}
2735 Memory24Term
2736 : PARSEOP_MEMORY24 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2737 OptionalReadWriteKeyword
2738 ',' WordConstExpr
2739 ',' WordConstExpr
2740 ',' WordConstExpr
2741 ',' WordConstExpr
2742 OptionalNameString_Last
2743 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2744 | PARSEOP_MEMORY24 '('
2745 error ')' {$$ = AslDoError(); yyclearin;}
2748 Memory32FixedTerm
2749 : PARSEOP_MEMORY32FIXED '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2750 OptionalReadWriteKeyword
2751 ',' DWordConstExpr
2752 ',' DWordConstExpr
2753 OptionalNameString_Last
2754 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2755 | PARSEOP_MEMORY32FIXED '('
2756 error ')' {$$ = AslDoError(); yyclearin;}
2759 Memory32Term
2760 : PARSEOP_MEMORY32 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2761 OptionalReadWriteKeyword
2762 ',' DWordConstExpr
2763 ',' DWordConstExpr
2764 ',' DWordConstExpr
2765 ',' DWordConstExpr
2766 OptionalNameString_Last
2767 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2768 | PARSEOP_MEMORY32 '('
2769 error ')' {$$ = AslDoError(); yyclearin;}
2772 QWordIOTerm
2773 : PARSEOP_QWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2774 OptionalResourceType_First
2775 OptionalMinType
2776 OptionalMaxType
2777 OptionalDecodeType
2778 OptionalRangeType
2779 ',' QWordConstExpr
2780 ',' QWordConstExpr
2781 ',' QWordConstExpr
2782 ',' QWordConstExpr
2783 ',' QWordConstExpr
2784 OptionalByteConstExpr
2785 OptionalStringData
2786 OptionalNameString
2787 OptionalType
2788 OptionalTranslationType_Last
2789 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2790 | PARSEOP_QWORDIO '('
2791 error ')' {$$ = AslDoError(); yyclearin;}
2794 QWordMemoryTerm
2795 : PARSEOP_QWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2796 OptionalResourceType_First
2797 OptionalDecodeType
2798 OptionalMinType
2799 OptionalMaxType
2800 OptionalMemType
2801 ',' OptionalReadWriteKeyword
2802 ',' QWordConstExpr
2803 ',' QWordConstExpr
2804 ',' QWordConstExpr
2805 ',' QWordConstExpr
2806 ',' QWordConstExpr
2807 OptionalByteConstExpr
2808 OptionalStringData
2809 OptionalNameString
2810 OptionalAddressRange
2811 OptionalType_Last
2812 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2813 | PARSEOP_QWORDMEMORY '('
2814 error ')' {$$ = AslDoError(); yyclearin;}
2817 QWordSpaceTerm
2818 : PARSEOP_QWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2819 ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2820 OptionalResourceType
2821 OptionalDecodeType
2822 OptionalMinType
2823 OptionalMaxType
2824 ',' ByteConstExpr
2825 ',' QWordConstExpr
2826 ',' QWordConstExpr
2827 ',' QWordConstExpr
2828 ',' QWordConstExpr
2829 ',' QWordConstExpr
2830 OptionalByteConstExpr
2831 OptionalStringData
2832 OptionalNameString_Last
2833 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2834 | PARSEOP_QWORDSPACE '('
2835 error ')' {$$ = AslDoError(); yyclearin;}
2838 RegisterTerm
2839 : PARSEOP_REGISTER '(' {$$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2840 AddressSpaceKeyword
2841 ',' ByteConstExpr
2842 ',' ByteConstExpr
2843 ',' QWordConstExpr
2844 OptionalAccessSize
2845 OptionalNameString_Last
2846 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
2847 | PARSEOP_REGISTER '('
2848 error ')' {$$ = AslDoError(); yyclearin;}
2851 StartDependentFnTerm
2852 : PARSEOP_STARTDEPENDENTFN '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2853 ByteConstExpr
2854 ',' ByteConstExpr
2855 ')' '{'
2856 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2857 | PARSEOP_STARTDEPENDENTFN '('
2858 error ')' {$$ = AslDoError(); yyclearin;}
2861 StartDependentFnNoPriTerm
2862 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2863 ')' '{'
2864 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
2865 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2866 error ')' {$$ = AslDoError(); yyclearin;}
2869 VendorLongTerm
2870 : PARSEOP_VENDORLONG '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2871 OptionalNameString_First
2872 ')' '{'
2873 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2874 | PARSEOP_VENDORLONG '('
2875 error ')' {$$ = AslDoError(); yyclearin;}
2878 VendorShortTerm
2879 : PARSEOP_VENDORSHORT '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2880 OptionalNameString_First
2881 ')' '{'
2882 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2883 | PARSEOP_VENDORSHORT '('
2884 error ')' {$$ = AslDoError(); yyclearin;}
2887 WordBusNumberTerm
2888 : PARSEOP_WORDBUSNUMBER '(' {$$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2889 OptionalResourceType_First
2890 OptionalMinType
2891 OptionalMaxType
2892 OptionalDecodeType
2893 ',' WordConstExpr
2894 ',' WordConstExpr
2895 ',' WordConstExpr
2896 ',' WordConstExpr
2897 ',' WordConstExpr
2898 OptionalByteConstExpr
2899 OptionalStringData
2900 OptionalNameString_Last
2901 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2902 | PARSEOP_WORDBUSNUMBER '('
2903 error ')' {$$ = AslDoError(); yyclearin;}
2906 WordIOTerm
2907 : PARSEOP_WORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2908 OptionalResourceType_First
2909 OptionalMinType
2910 OptionalMaxType
2911 OptionalDecodeType
2912 OptionalRangeType
2913 ',' WordConstExpr
2914 ',' WordConstExpr
2915 ',' WordConstExpr
2916 ',' WordConstExpr
2917 ',' WordConstExpr
2918 OptionalByteConstExpr
2919 OptionalStringData
2920 OptionalNameString
2921 OptionalType
2922 OptionalTranslationType_Last
2923 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2924 | PARSEOP_WORDIO '('
2925 error ')' {$$ = AslDoError(); yyclearin;}
2928 WordSpaceTerm
2929 : PARSEOP_WORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2930 ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2931 OptionalResourceType
2932 OptionalDecodeType
2933 OptionalMinType
2934 OptionalMaxType
2935 ',' ByteConstExpr
2936 ',' WordConstExpr
2937 ',' WordConstExpr
2938 ',' WordConstExpr
2939 ',' WordConstExpr
2940 ',' WordConstExpr
2941 OptionalByteConstExpr
2942 OptionalStringData
2943 OptionalNameString_Last
2944 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2945 | PARSEOP_WORDSPACE '('
2946 error ')' {$$ = AslDoError(); yyclearin;}
2950 /******* Object References ***********************************************/
2952 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
2954 NameString
2955 : NameSeg {}
2956 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2957 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
2958 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
2959 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
2962 NameSeg
2963 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2967 /******* Helper rules ****************************************************/
2970 AmlPackageLengthTerm
2971 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2974 OptionalBusMasterKeyword
2975 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2976 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2977 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2980 OptionalAccessAttribTerm
2981 : {$$ = NULL;}
2982 | ',' {$$ = NULL;}
2983 | ',' ByteConstExpr {$$ = $2;}
2984 | ',' AccessAttribKeyword {$$ = $2;}
2987 OptionalAccessSize
2988 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2989 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2990 | ',' ByteConstExpr {$$ = $2;}
2993 OptionalAddressRange
2994 : {$$ = NULL;}
2995 | ',' {$$ = NULL;}
2996 | ',' AddressKeyword {$$ = $2;}
2999 OptionalByteConstExpr
3000 : {$$ = NULL;}
3001 | ',' {$$ = NULL;}
3002 | ',' ByteConstExpr {$$ = $2;}
3005 OptionalDecodeType
3006 : ',' {$$ = NULL;}
3007 | ',' DecodeKeyword {$$ = $2;}
3010 OptionalDWordConstExpr
3011 : {$$ = NULL;}
3012 | ',' {$$ = NULL;}
3013 | ',' DWordConstExpr {$$ = $2;}
3016 OptionalListString
3017 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3018 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3019 | ',' TermArg {$$ = $2;}
3022 OptionalMaxType
3023 : ',' {$$ = NULL;}
3024 | ',' MaxKeyword {$$ = $2;}
3027 OptionalMemType
3028 : ',' {$$ = NULL;}
3029 | ',' MemTypeKeyword {$$ = $2;}
3032 OptionalMinType
3033 : ',' {$$ = NULL;}
3034 | ',' MinKeyword {$$ = $2;}
3037 OptionalNameString
3038 : {$$ = NULL;}
3039 | ',' {$$ = NULL;}
3040 | ',' NameString {$$ = $2;}
3043 OptionalNameString_Last
3044 : {$$ = NULL;}
3045 | ',' {$$ = NULL;}
3046 | ',' NameString {$$ = $2;}
3049 OptionalNameString_First
3050 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3051 | NameString {$$ = $1;}
3054 OptionalObjectTypeKeyword
3055 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3056 | ',' ObjectTypeKeyword {$$ = $2;}
3059 OptionalQWordConstExpr
3060 : {$$ = NULL;}
3061 | ',' {$$ = NULL;}
3062 | ',' QWordConstExpr {$$ = $2;}
3065 OptionalRangeType
3066 : ',' {$$ = NULL;}
3067 | ',' RangeTypeKeyword {$$ = $2;}
3070 OptionalReference
3071 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3072 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3073 | ',' DataObject {$$ = $2;}
3074 | ',' NameString {$$ = $2;}
3077 OptionalResourceType_First
3078 : {$$ = NULL;}
3079 | ResourceTypeKeyword {$$ = $1;}
3082 OptionalResourceType
3083 : {$$ = NULL;}
3084 | ',' {$$ = NULL;}
3085 | ',' ResourceTypeKeyword {$$ = $2;}
3088 OptionalSerializeRuleKeyword
3089 : {$$ = NULL;}
3090 | ',' {$$ = NULL;}
3091 | ',' SerializeRuleKeyword {$$ = $2;}
3094 OptionalShareType
3095 : {$$ = NULL;}
3096 | ',' {$$ = NULL;}
3097 | ',' ShareTypeKeyword {$$ = $2;}
3100 OptionalStringData
3101 : {$$ = NULL;}
3102 | ',' {$$ = NULL;}
3103 | ',' StringData {$$ = $2;}
3106 OptionalTermArg
3107 : {$$ = NULL;}
3108 | TermArg {$$ = $1;}
3111 OptionalReturnArg
3112 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3113 | TermArg {$$ = $1;}
3116 OptionalType
3117 : {$$ = NULL;}
3118 | ',' {$$ = NULL;}
3119 | ',' TypeKeyword {$$ = $2;}
3122 OptionalType_Last
3123 : {$$ = NULL;}
3124 | ',' {$$ = NULL;}
3125 | ',' TypeKeyword {$$ = $2;}
3128 OptionalTranslationType_Last
3129 : {$$ = NULL;}
3130 | ',' {$$ = NULL;}
3131 | ',' TranslationKeyword {$$ = $2;}
3135 TermArgItem
3136 : ',' TermArg {$$ = $2;}
3137 | ',' error {$$ = AslDoError (); yyclearin;}
3140 NameStringItem
3141 : ',' NameString {$$ = $2;}
3142 | ',' error {$$ = AslDoError (); yyclearin;}
3150 * Local support functions
3154 AslCompilerwrap(void)
3156 return 1;
3159 /*! [End] no source code translation !*/
3161 void *
3162 AslLocalAllocate (unsigned int Size)
3164 void *Mem;
3167 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %d\n\n", Size);
3169 Mem = ACPI_ALLOCATE_ZEROED (Size);
3170 if (!Mem)
3172 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3173 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3174 Gbl_InputByteCount, Gbl_CurrentColumn,
3175 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3176 exit (1);
3179 return (Mem);
3182 ACPI_PARSE_OBJECT *
3183 AslDoError (void)
3187 return (TrCreateLeafNode (PARSEOP_ERRORNODE));