]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/dev/acpica/compiler/aslcompiler.y
This commit was generated by cvs2svn to compensate for changes in r165071,
[FreeBSD/FreeBSD.git] / sys / contrib / dev / acpica / compiler / aslcompiler.y
1
2 %{
3 /******************************************************************************
4  *
5  * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions)
6  *              $Revision: 1.92 $
7  *
8  *****************************************************************************/
9
10 /******************************************************************************
11  *
12  * 1. Copyright Notice
13  *
14  * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
15  * All rights reserved.
16  *
17  * 2. License
18  *
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.
23  *
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
30  *
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;
39  *
40  * The above copyright and patent license is granted only if the following
41  * conditions are met:
42  *
43  * 3. Conditions
44  *
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.
56  *
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.
68  *
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.
74  *
75  * 3.4. Intel retains all right, title, and interest in and to the Original
76  * Intel Code.
77  *
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.
82  *
83  * 4. Disclaimer and Export Compliance
84  *
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.
92  *
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.
101  *
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.
116  *
117  *****************************************************************************/
118
119 #define YYDEBUG 1
120 #define YYERROR_VERBOSE 1
121
122 /*
123  * State stack - compiler will fault if it overflows.   (Default was 200)
124  */
125 #define YYINITDEPTH 600
126
127 #include <contrib/dev/acpica/compiler/aslcompiler.h>
128 #include <stdio.h>
129 #include <stdlib.h>
130 #include <string.h>
131 #include <contrib/dev/acpica/acpi.h>
132
133 #define _COMPONENT          ACPI_COMPILER
134         ACPI_MODULE_NAME    ("aslparse")
135
136
137 /*
138  * Next statement is important - this makes everything public so that
139  * we can access some of the parser tables from other modules
140  */
141 #define static
142 #undef alloca
143 #define alloca      AslLocalAllocate
144 #define YYERROR_VERBOSE     1
145
146 void *
147 AslLocalAllocate (unsigned int Size);
148
149 /*
150  * The windows version of bison defines this incorrectly as "32768" (Not negative).
151  * Using a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
152  * instead (#define YYFBAD      32768), so we can define it correctly here.
153  *
154  * The problem is that if YYFLAG is positive, the extended syntax error messages
155  * are disabled.
156  */
157
158 #define YYFLAG              -32768
159
160
161 %}
162
163
164 /*
165  * Declare the type of values in the grammar
166  */
167
168 %union {
169     UINT64          i;
170     char            *s;
171     ACPI_PARSE_OBJECT  *n;
172 }
173
174
175 /*! [Begin] no source code translation */
176
177
178 /*
179  * Token types: These are returned by the lexer
180  *
181  * NOTE: This list MUST match the AslKeywordMapping table found
182  *       in aslmap.c EXACTLY!  Double check any changes!
183  */
184
185 %token <i> PARSEOP_ACCESSAS
186 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
187 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
188 %token <i> PARSEOP_ACCESSATTRIB_BYTE
189 %token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
190 %token <i> PARSEOP_ACCESSATTRIB_QUICK
191 %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
192 %token <i> PARSEOP_ACCESSATTRIB_WORD
193 %token <i> PARSEOP_ACCESSTYPE_ANY
194 %token <i> PARSEOP_ACCESSTYPE_BUF
195 %token <i> PARSEOP_ACCESSTYPE_BYTE
196 %token <i> PARSEOP_ACCESSTYPE_DWORD
197 %token <i> PARSEOP_ACCESSTYPE_QWORD
198 %token <i> PARSEOP_ACCESSTYPE_WORD
199 %token <i> PARSEOP_ACQUIRE
200 %token <i> PARSEOP_ADD
201 %token <i> PARSEOP_ADDRESSSPACE_FFIXEDHW
202 %token <i> PARSEOP_ADDRESSTYPE_ACPI
203 %token <i> PARSEOP_ADDRESSTYPE_MEMORY
204 %token <i> PARSEOP_ADDRESSTYPE_NVS
205 %token <i> PARSEOP_ADDRESSTYPE_RESERVED
206 %token <i> PARSEOP_ALIAS
207 %token <i> PARSEOP_AND
208 %token <i> PARSEOP_ARG0
209 %token <i> PARSEOP_ARG1
210 %token <i> PARSEOP_ARG2
211 %token <i> PARSEOP_ARG3
212 %token <i> PARSEOP_ARG4
213 %token <i> PARSEOP_ARG5
214 %token <i> PARSEOP_ARG6
215 %token <i> PARSEOP_BANKFIELD
216 %token <i> PARSEOP_BREAK
217 %token <i> PARSEOP_BREAKPOINT
218 %token <i> PARSEOP_BUFFER
219 %token <i> PARSEOP_BUSMASTERTYPE_MASTER
220 %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
221 %token <i> PARSEOP_BYTECONST
222 %token <i> PARSEOP_CASE
223 %token <i> PARSEOP_CONCATENATE
224 %token <i> PARSEOP_CONCATENATERESTEMPLATE
225 %token <i> PARSEOP_CONDREFOF
226 %token <i> PARSEOP_CONTINUE
227 %token <i> PARSEOP_COPYOBJECT
228 %token <i> PARSEOP_CREATEBITFIELD
229 %token <i> PARSEOP_CREATEBYTEFIELD
230 %token <i> PARSEOP_CREATEDWORDFIELD
231 %token <i> PARSEOP_CREATEFIELD
232 %token <i> PARSEOP_CREATEQWORDFIELD
233 %token <i> PARSEOP_CREATEWORDFIELD
234 %token <i> PARSEOP_DATATABLEREGION
235 %token <i> PARSEOP_DEBUG
236 %token <i> PARSEOP_DECODETYPE_POS
237 %token <i> PARSEOP_DECODETYPE_SUB
238 %token <i> PARSEOP_DECREMENT
239 %token <i> PARSEOP_DEFAULT
240 %token <i> PARSEOP_DEFAULT_ARG
241 %token <i> PARSEOP_DEFINITIONBLOCK
242 %token <i> PARSEOP_DEREFOF
243 %token <i> PARSEOP_DEVICE
244 %token <i> PARSEOP_DIVIDE
245 %token <i> PARSEOP_DMA
246 %token <i> PARSEOP_DMATYPE_A
247 %token <i> PARSEOP_DMATYPE_COMPATIBILITY
248 %token <i> PARSEOP_DMATYPE_B
249 %token <i> PARSEOP_DMATYPE_F
250 %token <i> PARSEOP_DWORDCONST
251 %token <i> PARSEOP_DWORDIO
252 %token <i> PARSEOP_DWORDMEMORY
253 %token <i> PARSEOP_DWORDSPACE
254 %token <i> PARSEOP_EISAID
255 %token <i> PARSEOP_ELSE
256 %token <i> PARSEOP_ELSEIF
257 %token <i> PARSEOP_ENDDEPENDENTFN
258 %token <i> PARSEOP_ERRORNODE
259 %token <i> PARSEOP_EVENT
260 %token <i> PARSEOP_EXTENDEDIO
261 %token <i> PARSEOP_EXTENDEDMEMORY
262 %token <i> PARSEOP_EXTENDEDSPACE
263 %token <i> PARSEOP_EXTERNAL
264 %token <i> PARSEOP_FATAL
265 %token <i> PARSEOP_FIELD
266 %token <i> PARSEOP_FINDSETLEFTBIT
267 %token <i> PARSEOP_FINDSETRIGHTBIT
268 %token <i> PARSEOP_FIXEDIO
269 %token <i> PARSEOP_FROMBCD
270 %token <i> PARSEOP_FUNCTION
271 %token <i> PARSEOP_IF
272 %token <i> PARSEOP_INCLUDE
273 %token <i> PARSEOP_INCLUDE_CSTYLE
274 %token <i> PARSEOP_INCLUDE_END
275 %token <i> PARSEOP_INCREMENT
276 %token <i> PARSEOP_INDEX
277 %token <i> PARSEOP_INDEXFIELD
278 %token <i> PARSEOP_INTEGER
279 %token <i> PARSEOP_INTERRUPT
280 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
281 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
282 %token <i> PARSEOP_INTTYPE_EDGE
283 %token <i> PARSEOP_INTTYPE_LEVEL
284 %token <i> PARSEOP_IO
285 %token <i> PARSEOP_IODECODETYPE_10
286 %token <i> PARSEOP_IODECODETYPE_16
287 %token <i> PARSEOP_IRQ
288 %token <i> PARSEOP_IRQNOFLAGS
289 %token <i> PARSEOP_LAND
290 %token <i> PARSEOP_LEQUAL
291 %token <i> PARSEOP_LGREATER
292 %token <i> PARSEOP_LGREATEREQUAL
293 %token <i> PARSEOP_LINE_CSTYLE
294 %token <i> PARSEOP_LLESS
295 %token <i> PARSEOP_LLESSEQUAL
296 %token <i> PARSEOP_LNOT
297 %token <i> PARSEOP_LNOTEQUAL
298 %token <i> PARSEOP_LOAD
299 %token <i> PARSEOP_LOADTABLE
300 %token <i> PARSEOP_LOCAL0
301 %token <i> PARSEOP_LOCAL1
302 %token <i> PARSEOP_LOCAL2
303 %token <i> PARSEOP_LOCAL3
304 %token <i> PARSEOP_LOCAL4
305 %token <i> PARSEOP_LOCAL5
306 %token <i> PARSEOP_LOCAL6
307 %token <i> PARSEOP_LOCAL7
308 %token <i> PARSEOP_LOCKRULE_LOCK
309 %token <i> PARSEOP_LOCKRULE_NOLOCK
310 %token <i> PARSEOP_LOR
311 %token <i> PARSEOP_MATCH
312 %token <i> PARSEOP_MATCHTYPE_MEQ
313 %token <i> PARSEOP_MATCHTYPE_MGE
314 %token <i> PARSEOP_MATCHTYPE_MGT
315 %token <i> PARSEOP_MATCHTYPE_MLE
316 %token <i> PARSEOP_MATCHTYPE_MLT
317 %token <i> PARSEOP_MATCHTYPE_MTR
318 %token <i> PARSEOP_MAXTYPE_FIXED
319 %token <i> PARSEOP_MAXTYPE_NOTFIXED
320 %token <i> PARSEOP_MEMORY24
321 %token <i> PARSEOP_MEMORY32
322 %token <i> PARSEOP_MEMORY32FIXED
323 %token <i> PARSEOP_MEMTYPE_CACHEABLE
324 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
325 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
326 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
327 %token <i> PARSEOP_METHOD
328 %token <i> PARSEOP_METHODCALL
329 %token <i> PARSEOP_MID
330 %token <i> PARSEOP_MINTYPE_FIXED
331 %token <i> PARSEOP_MINTYPE_NOTFIXED
332 %token <i> PARSEOP_MOD
333 %token <i> PARSEOP_MULTIPLY
334 %token <i> PARSEOP_MUTEX
335 %token <i> PARSEOP_NAME
336 %token <s> PARSEOP_NAMESEG
337 %token <s> PARSEOP_NAMESTRING
338 %token <i> PARSEOP_NAND
339 %token <i> PARSEOP_NOOP
340 %token <i> PARSEOP_NOR
341 %token <i> PARSEOP_NOT
342 %token <i> PARSEOP_NOTIFY
343 %token <i> PARSEOP_OBJECTTYPE
344 %token <i> PARSEOP_OBJECTTYPE_BFF
345 %token <i> PARSEOP_OBJECTTYPE_BUF
346 %token <i> PARSEOP_OBJECTTYPE_DDB
347 %token <i> PARSEOP_OBJECTTYPE_DEV
348 %token <i> PARSEOP_OBJECTTYPE_EVT
349 %token <i> PARSEOP_OBJECTTYPE_FLD
350 %token <i> PARSEOP_OBJECTTYPE_INT
351 %token <i> PARSEOP_OBJECTTYPE_MTH
352 %token <i> PARSEOP_OBJECTTYPE_MTX
353 %token <i> PARSEOP_OBJECTTYPE_OPR
354 %token <i> PARSEOP_OBJECTTYPE_PKG
355 %token <i> PARSEOP_OBJECTTYPE_POW
356 %token <i> PARSEOP_OBJECTTYPE_PRO
357 %token <i> PARSEOP_OBJECTTYPE_STR
358 %token <i> PARSEOP_OBJECTTYPE_THZ
359 %token <i> PARSEOP_OBJECTTYPE_UNK
360 %token <i> PARSEOP_OFFSET
361 %token <i> PARSEOP_ONE
362 %token <i> PARSEOP_ONES
363 %token <i> PARSEOP_OPERATIONREGION
364 %token <i> PARSEOP_OR
365 %token <i> PARSEOP_PACKAGE
366 %token <i> PARSEOP_PACKAGE_LENGTH
367 %token <i> PARSEOP_POWERRESOURCE
368 %token <i> PARSEOP_PROCESSOR
369 %token <i> PARSEOP_QWORDCONST
370 %token <i> PARSEOP_QWORDIO
371 %token <i> PARSEOP_QWORDMEMORY
372 %token <i> PARSEOP_QWORDSPACE
373 %token <i> PARSEOP_RANGETYPE_ENTIRE
374 %token <i> PARSEOP_RANGETYPE_ISAONLY
375 %token <i> PARSEOP_RANGETYPE_NONISAONLY
376 %token <i> PARSEOP_RAW_DATA
377 %token <i> PARSEOP_READWRITETYPE_BOTH
378 %token <i> PARSEOP_READWRITETYPE_READONLY
379 %token <i> PARSEOP_REFOF
380 %token <i> PARSEOP_REGIONSPACE_CMOS
381 %token <i> PARSEOP_REGIONSPACE_EC
382 %token <i> PARSEOP_REGIONSPACE_IO
383 %token <i> PARSEOP_REGIONSPACE_MEM
384 %token <i> PARSEOP_REGIONSPACE_PCI
385 %token <i> PARSEOP_REGIONSPACE_PCIBAR
386 %token <i> PARSEOP_REGIONSPACE_SMBUS
387 %token <i> PARSEOP_REGISTER
388 %token <i> PARSEOP_RELEASE
389 %token <i> PARSEOP_RESERVED_BYTES
390 %token <i> PARSEOP_RESET
391 %token <i> PARSEOP_RESOURCETEMPLATE
392 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
393 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
394 %token <i> PARSEOP_RETURN
395 %token <i> PARSEOP_REVISION
396 %token <i> PARSEOP_SCOPE
397 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
398 %token <i> PARSEOP_SERIALIZERULE_SERIAL
399 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
400 %token <i> PARSEOP_SHARETYPE_SHARED
401 %token <i> PARSEOP_SHIFTLEFT
402 %token <i> PARSEOP_SHIFTRIGHT
403 %token <i> PARSEOP_SIGNAL
404 %token <i> PARSEOP_SIZEOF
405 %token <i> PARSEOP_SLEEP
406 %token <i> PARSEOP_STALL
407 %token <i> PARSEOP_STARTDEPENDENTFN
408 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
409 %token <i> PARSEOP_STORE
410 %token <s> PARSEOP_STRING_LITERAL
411 %token <i> PARSEOP_SUBTRACT
412 %token <i> PARSEOP_SWITCH
413 %token <i> PARSEOP_THERMALZONE
414 %token <i> PARSEOP_TIMER
415 %token <i> PARSEOP_TOBCD
416 %token <i> PARSEOP_TOBUFFER
417 %token <i> PARSEOP_TODECIMALSTRING
418 %token <i> PARSEOP_TOHEXSTRING
419 %token <i> PARSEOP_TOINTEGER
420 %token <i> PARSEOP_TOSTRING
421 %token <i> PARSEOP_TOUUID
422 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
423 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
424 %token <i> PARSEOP_TYPE_STATIC
425 %token <i> PARSEOP_TYPE_TRANSLATION
426 %token <i> PARSEOP_UNICODE
427 %token <i> PARSEOP_UNLOAD
428 %token <i> PARSEOP_UPDATERULE_ONES
429 %token <i> PARSEOP_UPDATERULE_PRESERVE
430 %token <i> PARSEOP_UPDATERULE_ZEROS
431 %token <i> PARSEOP_VAR_PACKAGE
432 %token <i> PARSEOP_VENDORLONG
433 %token <i> PARSEOP_VENDORSHORT
434 %token <i> PARSEOP_WAIT
435 %token <i> PARSEOP_WHILE
436 %token <i> PARSEOP_WORDBUSNUMBER
437 %token <i> PARSEOP_WORDCONST
438 %token <i> PARSEOP_WORDIO
439 %token <i> PARSEOP_WORDSPACE
440 %token <i> PARSEOP_XFERTYPE_8
441 %token <i> PARSEOP_XFERTYPE_8_16
442 %token <i> PARSEOP_XFERTYPE_16
443 %token <i> PARSEOP_XOR
444 %token <i> PARSEOP_ZERO
445
446
447 /*
448  * Production names
449  */
450
451 %type <n> ASLCode
452 %type <n> DefinitionBlockTerm
453 %type <n> TermList
454 %type <n> Term
455 %type <n> CompilerDirective
456 %type <n> ObjectList
457 %type <n> Object
458 %type <n> DataObject
459 %type <n> BufferData
460 %type <n> PackageData
461 %type <n> IntegerData
462 %type <n> StringData
463 %type <n> NamedObject
464 %type <n> NameSpaceModifier
465 %type <n> UserTerm
466 %type <n> ArgList
467 %type <n> ArgListTail
468 %type <n> TermArg
469 %type <n> Target
470 %type <n> RequiredTarget
471 %type <n> SimpleTarget
472 %type <n> BufferTermData
473 %type <n> ParameterTypePackage
474 %type <n> ParameterTypePackageList
475 %type <n> ParameterTypesPackage
476 %type <n> ParameterTypesPackageList
477
478 %type <n> Type1Opcode
479 %type <n> Type2Opcode
480 %type <n> Type2IntegerOpcode
481 %type <n> Type2StringOpcode
482 %type <n> Type2BufferOpcode
483 %type <n> Type2BufferOrStringOpcode
484 %type <n> Type3Opcode
485
486 /* Obsolete %type <n> Type4Opcode */
487
488 %type <n> Type5Opcode
489 %type <n> Type6Opcode
490
491 %type <n> LineTerm
492 %type <n> IncludeTerm
493 %type <n> IncludeCStyleTerm
494 %type <n> ExternalTerm
495
496 %type <n> FieldUnitList
497 %type <n> FieldUnitListTail
498 %type <n> FieldUnit
499 %type <n> FieldUnitEntry
500
501 %type <n> OffsetTerm
502 %type <n> AccessAsTerm
503 %type <n> OptionalAccessAttribTerm
504
505
506 /* Named Objects */
507
508 %type <n> BankFieldTerm
509 %type <n> CreateBitFieldTerm
510 %type <n> CreateByteFieldTerm
511 %type <n> CreateDWordFieldTerm
512 %type <n> CreateFieldTerm
513 %type <n> CreateQWordFieldTerm
514 %type <n> CreateWordFieldTerm
515 %type <n> DataRegionTerm
516 %type <n> DeviceTerm
517 %type <n> EventTerm
518 %type <n> FieldTerm
519 %type <n> FunctionTerm
520 %type <n> IndexFieldTerm
521 %type <n> MethodTerm
522 %type <n> MutexTerm
523 %type <n> OpRegionTerm
524 %type <n> OpRegionSpaceIdTerm
525 %type <n> PowerResTerm
526 %type <n> ProcessorTerm
527 %type <n> ThermalZoneTerm
528
529
530 /* Namespace modifiers */
531
532 %type <n> AliasTerm
533 %type <n> NameTerm
534 %type <n> ScopeTerm
535
536 /* Type 1 opcodes */
537
538 %type <n> BreakTerm
539 %type <n> BreakPointTerm
540 %type <n> ContinueTerm
541 %type <n> FatalTerm
542 %type <n> IfElseTerm
543 %type <n> IfTerm
544 %type <n> ElseTerm
545 %type <n> LoadTerm
546 %type <n> NoOpTerm
547 %type <n> NotifyTerm
548 %type <n> ReleaseTerm
549 %type <n> ResetTerm
550 %type <n> ReturnTerm
551 %type <n> SignalTerm
552 %type <n> SleepTerm
553 %type <n> StallTerm
554 %type <n> SwitchTerm
555 %type <n> CaseTermList
556 %type <n> DefaultTermList
557 %type <n> CaseTerm
558 %type <n> DefaultTerm
559 %type <n> UnloadTerm
560 %type <n> WhileTerm
561
562 /* Type 2 opcodes */
563
564 %type <n> AcquireTerm
565 %type <n> AddTerm
566 %type <n> AndTerm
567 %type <n> ConcatTerm
568 %type <n> ConcatResTerm
569 %type <n> CondRefOfTerm
570 %type <n> CopyObjectTerm
571 %type <n> DecTerm
572 %type <n> DerefOfTerm
573 %type <n> DivideTerm
574 %type <n> FindSetLeftBitTerm
575 %type <n> FindSetRightBitTerm
576 %type <n> FromBCDTerm
577 %type <n> IncTerm
578 %type <n> IndexTerm
579 %type <n> LAndTerm
580 %type <n> LEqualTerm
581 %type <n> LGreaterTerm
582 %type <n> LGreaterEqualTerm
583 %type <n> LLessTerm
584 %type <n> LLessEqualTerm
585 %type <n> LNotTerm
586 %type <n> LNotEqualTerm
587 %type <n> LoadTableTerm
588 %type <n> LOrTerm
589 %type <n> MatchTerm
590 %type <n> MidTerm
591 %type <n> ModTerm
592 %type <n> MultiplyTerm
593 %type <n> NAndTerm
594 %type <n> NOrTerm
595 %type <n> NotTerm
596 %type <n> ObjectTypeTerm
597 %type <n> OrTerm
598 %type <n> RefOfTerm
599 %type <n> ShiftLeftTerm
600 %type <n> ShiftRightTerm
601 %type <n> SizeOfTerm
602 %type <n> StoreTerm
603 %type <n> SubtractTerm
604 %type <n> TimerTerm
605 %type <n> ToBCDTerm
606 %type <n> ToBufferTerm
607 %type <n> ToDecimalStringTerm
608 %type <n> ToHexStringTerm
609 %type <n> ToIntegerTerm
610 %type <n> ToStringTerm
611 %type <n> WaitTerm
612 %type <n> XOrTerm
613
614 %type <n> OptionalTermArg
615 %type <n> OptionalReturnArg
616 %type <n> OptionalListString
617
618
619 /* Keywords */
620
621 %type <n> ObjectTypeKeyword
622 %type <n> AccessTypeKeyword
623 %type <n> AccessAttribKeyword
624 %type <n> LockRuleKeyword
625 %type <n> UpdateRuleKeyword
626 %type <n> RegionSpaceKeyword
627 %type <n> AddressSpaceKeyword
628 %type <n> MatchOpKeyword
629 %type <n> SerializeRuleKeyword
630 %type <n> DMATypeKeyword
631 %type <n> OptionalBusMasterKeyword
632 %type <n> XferTypeKeyword
633 %type <n> ResourceTypeKeyword
634 %type <n> MinKeyword
635 %type <n> MaxKeyword
636 %type <n> DecodeKeyword
637 %type <n> RangeTypeKeyword
638 %type <n> MemTypeKeyword
639 %type <n> OptionalReadWriteKeyword
640 %type <n> InterruptTypeKeyword
641 %type <n> InterruptLevel
642 %type <n> ShareTypeKeyword
643 %type <n> IODecodeKeyword
644 %type <n> TypeKeyword
645 %type <n> TranslationKeyword
646 %type <n> AddressKeyword
647
648 /* Types */
649
650 %type <n> SuperName
651 %type <n> ArgTerm
652 %type <n> LocalTerm
653 %type <n> DebugTerm
654
655
656 %type <n> Integer
657
658 %type <n> ByteConst
659 %type <n> WordConst
660 %type <n> DWordConst
661 %type <n> QWordConst
662
663 /* Useless
664 %type <n> WordConst
665 %type <n> QWordConst
666 */
667
668 %type <n> String
669
670 %type <n> ConstTerm
671 %type <n> ByteConstExpr
672 %type <n> WordConstExpr
673 %type <n> DWordConstExpr
674 %type <n> QWordConstExpr
675 %type <n> ConstExprTerm
676
677 %type <n> BufferTerm
678 %type <n> ByteList
679 %type <n> ByteListTail
680 %type <n> DWordList
681 %type <n> DWordListTail
682
683 %type <n> PackageTerm
684 %type <n> PackageList
685 %type <n> PackageListTail
686 %type <n> PackageElement
687
688 %type <n> VarPackageLengthTerm
689
690 /* Macros */
691
692 %type <n> EISAIDTerm
693 %type <n> ResourceTemplateTerm
694 %type <n> ToUUIDTerm
695 %type <n> UnicodeTerm
696 %type <n> ResourceMacroList
697 %type <n> ResourceMacroTerm
698
699 %type <n> DMATerm
700 %type <n> DWordIOTerm
701 %type <n> DWordMemoryTerm
702 %type <n> DWordSpaceTerm
703 %type <n> EndDependentFnTerm
704 %type <n> ExtendedIOTerm
705 %type <n> ExtendedMemoryTerm
706 %type <n> ExtendedSpaceTerm
707 %type <n> FixedIOTerm
708 %type <n> InterruptTerm
709 %type <n> IOTerm
710 %type <n> IRQNoFlagsTerm
711 %type <n> IRQTerm
712 %type <n> Memory24Term
713 %type <n> Memory32FixedTerm
714 %type <n> Memory32Term
715 %type <n> QWordIOTerm
716 %type <n> QWordMemoryTerm
717 %type <n> QWordSpaceTerm
718 %type <n> RegisterTerm
719 %type <n> StartDependentFnTerm
720 %type <n> StartDependentFnNoPriTerm
721 %type <n> VendorLongTerm
722 %type <n> VendorShortTerm
723 %type <n> WordBusNumberTerm
724 %type <n> WordIOTerm
725 %type <n> WordSpaceTerm
726
727 %type <n> NameString
728 %type <n> NameSeg
729
730
731 /* Local types that help construct the AML, not in ACPI spec */
732
733 %type <n> IncludeEndTerm
734 %type <n> AmlPackageLengthTerm
735 %type <n> OptionalByteConstExpr
736 %type <n> OptionalDWordConstExpr
737 %type <n> OptionalQWordConstExpr
738 %type <n> OptionalSerializeRuleKeyword
739 %type <n> OptionalResourceType_First
740 %type <n> OptionalResourceType
741 %type <n> OptionalMinType
742 %type <n> OptionalMaxType
743 %type <n> OptionalMemType
744 %type <n> OptionalCount
745 %type <n> OptionalDecodeType
746 %type <n> OptionalRangeType
747 %type <n> OptionalShareType
748 %type <n> OptionalType
749 %type <n> OptionalType_Last
750 %type <n> OptionalTranslationType_Last
751 %type <n> OptionalStringData
752 %type <n> OptionalNameString
753 %type <n> OptionalNameString_First
754 %type <n> OptionalNameString_Last
755 %type <n> OptionalAddressRange
756 %type <n> OptionalObjectTypeKeyword
757 %type <n> OptionalParameterTypePackage
758 %type <n> OptionalParameterTypesPackage
759 %type <n> OptionalReference
760 %type <n> OptionalAccessSize
761
762
763 %type <n> TermArgItem
764 %type <n> NameStringItem
765
766 %%
767
768
769 /*******************************************************************************
770  *
771  * Production rules start here
772  *
773  ******************************************************************************/
774
775 /*
776  * ASL Names
777  */
778
779
780 /*
781  * Blocks, Data, and Opcodes
782  */
783
784 ASLCode
785     : DefinitionBlockTerm
786     | error                         {YYABORT; $$ = NULL;}
787     ;
788
789 DefinitionBlockTerm
790     : PARSEOP_DEFINITIONBLOCK '('       {$$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
791         String ','
792         String ','
793         ByteConst ','
794         String ','
795         String ','
796         DWordConst
797         ')'                         {TrSetEndLineNumber ($<n>3);}
798             '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
799     ;
800
801 /* ACPI 3.0 -- allow semicolons between terms */
802
803 TermList
804     :                               {$$ = NULL;}
805     | Term TermList                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
806     | Term ';' TermList             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
807     ;
808
809 Term
810     : Object                        {}
811     | Type1Opcode                   {}
812     | Type2Opcode                   {}
813     | Type2IntegerOpcode            {}
814     | Type2StringOpcode             {}
815     | Type2BufferOpcode             {}
816     | Type2BufferOrStringOpcode     {}
817     | error                         {$$ = AslDoError(); yyclearin;}
818     ;
819
820 CompilerDirective
821     : IncludeTerm                   {}
822     | IncludeCStyleTerm             {$$ = NULL;}
823     | LineTerm                                          {$$ = NULL;}
824     | ExternalTerm                  {}
825     ;
826
827 ObjectList
828     :                               {$$ = NULL;}
829     | Object ObjectList             {$$ = TrLinkPeerNode ($1,$2);}
830     | error                         {$$ = AslDoError(); yyclearin;}
831     ;
832
833 Object
834     : CompilerDirective             {}
835     | NamedObject                   {}
836     | NameSpaceModifier             {}
837     ;
838
839 DataObject
840     : BufferData                    {}
841     | PackageData                   {}
842     | IntegerData                   {}
843     | StringData                    {}
844     ;
845
846 BufferData
847     : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
848     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
849     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
850     | BufferTerm                    {}
851     ;
852
853 PackageData
854     : PackageTerm                   {}
855     ;
856
857 IntegerData
858     : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
859     | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
860     | Integer                       {}
861     | ConstTerm                     {}
862     ;
863
864 StringData
865     : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
866     | String                        {}
867     ;
868
869 NamedObject
870     : BankFieldTerm                 {}
871     | CreateBitFieldTerm            {}
872     | CreateByteFieldTerm           {}
873     | CreateDWordFieldTerm          {}
874     | CreateFieldTerm               {}
875     | CreateQWordFieldTerm          {}
876     | CreateWordFieldTerm           {}
877     | DataRegionTerm                {}
878     | DeviceTerm                    {}
879     | EventTerm                     {}
880     | FieldTerm                     {}
881     | FunctionTerm                  {}
882     | IndexFieldTerm                {}
883     | MethodTerm                    {}
884     | MutexTerm                     {}
885     | OpRegionTerm                  {}
886     | PowerResTerm                  {}
887     | ProcessorTerm                 {}
888     | ThermalZoneTerm               {}
889     ;
890
891 NameSpaceModifier
892     : AliasTerm                     {}
893     | NameTerm                      {}
894     | ScopeTerm                     {}
895     ;
896
897 UserTerm
898     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
899         ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
900     ;
901
902 ArgList
903     :                               {$$ = NULL;}
904     | TermArg ArgListTail           {$$ = TrLinkPeerNode ($1,$2);}
905     ;
906
907 ArgListTail
908     :                               {$$ = NULL;}
909     | ',' TermArg ArgListTail       {$$ = TrLinkPeerNode ($2,$3);}
910     | ','                           {$$ = NULL;}   /* Allows a trailing comma at list end */
911     ;
912
913 TermArg
914     : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
915     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
916     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
917     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
918     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
919     | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
920     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
921     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
922     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
923     ;
924
925 Target
926     :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
927     | ','                           {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
928     | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
929     ;
930
931 RequiredTarget
932     : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
933     ;
934
935 SimpleTarget
936     : NameString                    {}
937     | LocalTerm                     {}
938     | ArgTerm                       {}
939     ;
940
941 /* Rules for specifying the Return type for control methods */
942
943 ParameterTypePackage
944     :                               {$$ = NULL;}
945     | ObjectTypeKeyword             {$$ = $1;}
946     | '{''}'                        {$$ = NULL;}
947     | '{'
948         ObjectTypeKeyword
949       '}'                           {$$ = $2;}
950     | '{'
951         ParameterTypePackageList
952       '}'                           {$$ = $2;}
953     ;
954
955 ParameterTypePackageList
956     :                               {$$ = NULL;}
957     | ObjectTypeKeyword             {$$ = $1;}
958     | ObjectTypeKeyword ','
959         ParameterTypePackageList    {$$ = TrLinkPeerNodes (2,$1,$3);}
960     ;
961
962 OptionalParameterTypePackage
963     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
964     | ','                           {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
965     | ',' ParameterTypePackage      {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
966     ;
967
968 /* Rules for specifying the Argument types for control methods */
969
970 ParameterTypesPackage
971     :                               {$$ = NULL;}
972     | ObjectTypeKeyword             {$$ = $1;}
973     | '{''}'                        {$$ = NULL;}
974     | '{'
975         ObjectTypeKeyword
976       '}'                           {$$ = $2;}
977     | '{'
978         ParameterTypesPackageList
979       '}'                           {$$ = $2;}
980     ;
981
982 ParameterTypesPackageList
983     :                               {$$ = NULL;}
984     | ObjectTypeKeyword             {$$ = $1;}
985     | ParameterTypesPackage         {$$ = $1;}
986     | ParameterTypesPackage ','
987         ParameterTypesPackageList   {$$ = TrLinkPeerNodes (2,$1,$3);}
988     | ParameterTypesPackage ','
989         ParameterTypesPackage       {$$ = TrLinkPeerNodes (2,$1,$3);}
990     ;
991
992 OptionalParameterTypesPackage
993     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
994     | ','                           {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
995     | ',' ParameterTypesPackage     {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
996     ;
997
998
999 /* Opcode types */
1000
1001 Type1Opcode
1002     : BreakTerm                     {}
1003     | BreakPointTerm                {}
1004     | ContinueTerm                  {}
1005     | FatalTerm                     {}
1006     | IfElseTerm                    {}
1007     | LoadTerm                      {}
1008     | NoOpTerm                      {}
1009     | NotifyTerm                    {}
1010     | ReleaseTerm                   {}
1011     | ResetTerm                     {}
1012     | ReturnTerm                    {}
1013     | SignalTerm                    {}
1014     | SleepTerm                     {}
1015     | StallTerm                     {}
1016     | SwitchTerm                    {}
1017     | UnloadTerm                    {}
1018     | WhileTerm                     {}
1019     ;
1020
1021 Type2Opcode
1022     : AcquireTerm                   {}
1023     | CondRefOfTerm                 {}
1024     | CopyObjectTerm                {}
1025     | DerefOfTerm                   {}
1026     | ObjectTypeTerm                {}
1027     | RefOfTerm                     {}
1028     | SizeOfTerm                    {}
1029     | StoreTerm                     {}
1030     | TimerTerm                     {}
1031     | WaitTerm                      {}
1032     | UserTerm                      {}
1033     ;
1034
1035 /*
1036  * Type 3/4/5 opcodes
1037  */
1038
1039 Type2IntegerOpcode                  /* "Type3" opcodes */
1040     : AddTerm                       {}
1041     | AndTerm                       {}
1042     | DecTerm                       {}
1043     | DivideTerm                    {}
1044     | FindSetLeftBitTerm            {}
1045     | FindSetRightBitTerm           {}
1046     | FromBCDTerm                   {}
1047     | IncTerm                       {}
1048     | IndexTerm                     {}
1049     | LAndTerm                      {}
1050     | LEqualTerm                    {}
1051     | LGreaterTerm                  {}
1052     | LGreaterEqualTerm             {}
1053     | LLessTerm                     {}
1054     | LLessEqualTerm                {}
1055     | LNotTerm                      {}
1056     | LNotEqualTerm                 {}
1057     | LoadTableTerm                 {}
1058     | LOrTerm                       {}
1059     | MatchTerm                     {}
1060     | ModTerm                       {}
1061     | MultiplyTerm                  {}
1062     | NAndTerm                      {}
1063     | NOrTerm                       {}
1064     | NotTerm                       {}
1065     | OrTerm                        {}
1066     | ShiftLeftTerm                 {}
1067     | ShiftRightTerm                {}
1068     | SubtractTerm                  {}
1069     | ToBCDTerm                     {}
1070     | ToIntegerTerm                 {}
1071     | XOrTerm                       {}
1072     ;
1073
1074 Type2StringOpcode                   /* "Type4" Opcodes */
1075     : ToDecimalStringTerm           {}
1076     | ToHexStringTerm               {}
1077     | ToStringTerm                  {}
1078     ;
1079
1080 Type2BufferOpcode                   /* "Type5" Opcodes */
1081     : ToBufferTerm                  {}
1082     | ConcatResTerm                 {}
1083     ;
1084
1085 Type2BufferOrStringOpcode
1086     : ConcatTerm                    {}
1087     | MidTerm                       {}
1088     ;
1089
1090 /*
1091  * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1092  */
1093
1094 Type3Opcode
1095     : EISAIDTerm                    {}
1096     ;
1097
1098 /* Obsolete
1099 Type4Opcode
1100     : ConcatTerm                    {}
1101     | ToDecimalStringTerm           {}
1102     | ToHexStringTerm               {}
1103     | MidTerm                       {}
1104     | ToStringTerm                  {}
1105     ;
1106 */
1107
1108
1109 Type5Opcode
1110     : ResourceTemplateTerm          {}
1111     | UnicodeTerm                   {}
1112     | ToUUIDTerm                    {}
1113     ;
1114
1115 Type6Opcode
1116     : RefOfTerm                     {}
1117     | DerefOfTerm                   {}
1118     | IndexTerm                     {}
1119     | UserTerm                      {}
1120     ;
1121
1122 IncludeTerm
1123     : PARSEOP_INCLUDE '('                       {$$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1124         String  ')'                 {$$ = TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1125         TermList
1126         IncludeEndTerm              {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1127     ;
1128
1129 IncludeEndTerm
1130     : PARSEOP_INCLUDE_END                       {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1131     ;
1132
1133 IncludeCStyleTerm
1134     : PARSEOP_INCLUDE_CSTYLE
1135         String                      {FlOpenIncludeFile ($2);}
1136     ;
1137
1138 LineTerm
1139         : PARSEOP_LINE_CSTYLE
1140                 Integer                                         {FlSetLineNumber ($2);}
1141         ;
1142
1143 ExternalTerm
1144     : PARSEOP_EXTERNAL '('
1145         NameString
1146         OptionalObjectTypeKeyword
1147         OptionalParameterTypePackage
1148         OptionalParameterTypesPackage
1149         ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1150     | PARSEOP_EXTERNAL '('
1151         error ')'                   {$$ = AslDoError(); yyclearin;}
1152     ;
1153
1154
1155 /******* Named Objects *******************************************************/
1156
1157
1158 BankFieldTerm
1159     : PARSEOP_BANKFIELD '('                     {$$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1160         NameString
1161         NameStringItem
1162         TermArgItem
1163         ',' AccessTypeKeyword
1164         ',' LockRuleKeyword
1165         ',' UpdateRuleKeyword
1166         ')' '{'
1167             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1168     | PARSEOP_BANKFIELD '('
1169         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
1170     ;
1171
1172 FieldUnitList
1173     :                               {$$ = NULL;}
1174     | FieldUnit
1175         FieldUnitListTail           {$$ = TrLinkPeerNode ($1,$2);}
1176     ;
1177
1178 FieldUnitListTail
1179     :                               {$$ = NULL;}
1180     | ','                           {$$ = NULL;}  /* Allows a trailing comma at list end */
1181     | ',' FieldUnit
1182             FieldUnitListTail       {$$ = TrLinkPeerNode ($2,$3);}
1183     ;
1184
1185 FieldUnit
1186     : FieldUnitEntry                {}
1187     | OffsetTerm                    {}
1188     | AccessAsTerm                  {}
1189     ;
1190
1191 FieldUnitEntry
1192     : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1193     | NameSeg ','
1194         AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
1195     ;
1196
1197 OffsetTerm
1198     : PARSEOP_OFFSET '('
1199         AmlPackageLengthTerm
1200         ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1201     | PARSEOP_OFFSET '('
1202         error ')'                   {$$ = AslDoError(); yyclearin;}
1203     ;
1204
1205 AccessAsTerm
1206     : PARSEOP_ACCESSAS '('
1207         AccessTypeKeyword
1208         OptionalAccessAttribTerm
1209         ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1210     | PARSEOP_ACCESSAS '('
1211         error ')'                   {$$ = AslDoError(); yyclearin;}
1212     ;
1213
1214 CreateBitFieldTerm
1215     : PARSEOP_CREATEBITFIELD '('        {$$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1216         TermArg
1217         TermArgItem
1218         NameStringItem
1219         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1220     | PARSEOP_CREATEBITFIELD '('
1221         error ')'                   {$$ = AslDoError(); yyclearin;}
1222     ;
1223
1224 CreateByteFieldTerm
1225     : PARSEOP_CREATEBYTEFIELD '('       {$$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1226         TermArg
1227         TermArgItem
1228         NameStringItem
1229         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1230     | PARSEOP_CREATEBYTEFIELD '('
1231         error ')'                   {$$ = AslDoError(); yyclearin;}
1232     ;
1233
1234 CreateDWordFieldTerm
1235     : PARSEOP_CREATEDWORDFIELD '('      {$$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1236         TermArg
1237         TermArgItem
1238         NameStringItem
1239         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1240     | PARSEOP_CREATEDWORDFIELD '('
1241         error ')'                   {$$ = AslDoError(); yyclearin;}
1242     ;
1243
1244 CreateFieldTerm
1245     : PARSEOP_CREATEFIELD '('           {$$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1246         TermArg
1247         TermArgItem
1248         TermArgItem
1249         NameStringItem
1250         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1251     | PARSEOP_CREATEFIELD '('
1252         error ')'                   {$$ = AslDoError(); yyclearin;}
1253     ;
1254
1255 CreateQWordFieldTerm
1256     : PARSEOP_CREATEQWORDFIELD '('      {$$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1257         TermArg
1258         TermArgItem
1259         NameStringItem
1260         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1261     | PARSEOP_CREATEQWORDFIELD '('
1262         error ')'                   {$$ = AslDoError(); yyclearin;}
1263     ;
1264
1265 CreateWordFieldTerm
1266     : PARSEOP_CREATEWORDFIELD '('       {$$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1267         TermArg
1268         TermArgItem
1269         NameStringItem
1270         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1271     | PARSEOP_CREATEWORDFIELD '('
1272         error ')'                   {$$ = AslDoError(); yyclearin;}
1273     ;
1274
1275 DataRegionTerm
1276     : PARSEOP_DATATABLEREGION '('       {$$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1277         NameString
1278         TermArgItem
1279         TermArgItem
1280         TermArgItem
1281         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1282     | PARSEOP_DATATABLEREGION '('
1283         error ')'                   {$$ = AslDoError(); yyclearin;}
1284     ;
1285
1286 DeviceTerm
1287     : PARSEOP_DEVICE '('                        {$$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1288         NameString
1289         ')' '{'
1290             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1291     | PARSEOP_DEVICE '('
1292         error ')'                   {$$ = AslDoError(); yyclearin;}
1293     ;
1294
1295 EventTerm
1296     : PARSEOP_EVENT '('                         {$$ = TrCreateLeafNode (PARSEOP_EVENT);}
1297         NameString
1298         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1299     | PARSEOP_EVENT '('
1300         error ')'                   {$$ = AslDoError(); yyclearin;}
1301     ;
1302
1303 FieldTerm
1304     : PARSEOP_FIELD '('                         {$$ = TrCreateLeafNode (PARSEOP_FIELD);}
1305         NameString
1306         ',' AccessTypeKeyword
1307         ',' LockRuleKeyword
1308         ',' UpdateRuleKeyword
1309         ')' '{'
1310             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1311     | PARSEOP_FIELD '('
1312         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
1313     ;
1314
1315 FunctionTerm
1316     : PARSEOP_FUNCTION '('                      {$$ = TrCreateLeafNode (PARSEOP_METHOD);}
1317         NameString
1318         OptionalParameterTypePackage
1319         OptionalParameterTypesPackage
1320         ')' '{'
1321             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1322                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1323                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1324                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1325     | PARSEOP_FUNCTION '('
1326         error ')'                   {$$ = AslDoError(); yyclearin;}
1327     ;
1328
1329 IndexFieldTerm
1330     : PARSEOP_INDEXFIELD '('            {$$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1331         NameString
1332         NameStringItem
1333         ',' AccessTypeKeyword
1334         ',' LockRuleKeyword
1335         ',' UpdateRuleKeyword
1336         ')' '{'
1337             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1338     | PARSEOP_INDEXFIELD '('
1339         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
1340     ;
1341
1342 MethodTerm
1343     : PARSEOP_METHOD  '('                       {$$ = TrCreateLeafNode (PARSEOP_METHOD);}
1344         NameString
1345         OptionalByteConstExpr       {$$ = UtCheckIntegerRange ($5, 0, 7);}
1346         OptionalSerializeRuleKeyword
1347         OptionalByteConstExpr
1348         OptionalParameterTypePackage
1349         OptionalParameterTypesPackage
1350         ')' '{'
1351             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1352     | PARSEOP_METHOD '('
1353         error ')'                   {$$ = AslDoError(); yyclearin;}
1354     ;
1355
1356 MutexTerm
1357     : PARSEOP_MUTEX '('                         {$$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1358         NameString
1359         ',' ByteConstExpr
1360         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1361     | PARSEOP_MUTEX '('
1362         error ')'                   {$$ = AslDoError(); yyclearin;}
1363     ;
1364
1365 OpRegionTerm
1366     : PARSEOP_OPERATIONREGION '('       {$$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1367         NameString
1368         ',' OpRegionSpaceIdTerm
1369         TermArgItem
1370         TermArgItem
1371         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1372     | PARSEOP_OPERATIONREGION '('
1373         error ')'                   {$$ = AslDoError(); yyclearin;}
1374     ;
1375
1376 OpRegionSpaceIdTerm
1377     : RegionSpaceKeyword            {}
1378     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1379     ;
1380
1381 PowerResTerm
1382     : PARSEOP_POWERRESOURCE '('         {$$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1383         NameString
1384         ',' ByteConstExpr
1385         ',' WordConstExpr
1386         ')' '{'
1387             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1388     | PARSEOP_POWERRESOURCE '('
1389         error ')'                   {$$ = AslDoError(); yyclearin;}
1390     ;
1391
1392 ProcessorTerm
1393     : PARSEOP_PROCESSOR '('                     {$$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1394         NameString
1395         ',' ByteConstExpr
1396         OptionalDWordConstExpr
1397         OptionalByteConstExpr
1398         ')' '{'
1399             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1400     | PARSEOP_PROCESSOR '('
1401         error ')'                   {$$ = AslDoError(); yyclearin;}
1402     ;
1403
1404 ThermalZoneTerm
1405     : PARSEOP_THERMALZONE '('           {$$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1406         NameString
1407         ')' '{'
1408             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1409     | PARSEOP_THERMALZONE '('
1410         error ')'                   {$$ = AslDoError(); yyclearin;}
1411     ;
1412
1413
1414 /******* Namespace modifiers *************************************************/
1415
1416
1417 AliasTerm
1418     : PARSEOP_ALIAS '('                         {$$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1419         NameString
1420         NameStringItem
1421         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1422     | PARSEOP_ALIAS '('
1423         error ')'                   {$$ = AslDoError(); yyclearin;}
1424     ;
1425
1426 NameTerm
1427     : PARSEOP_NAME '('                          {$$ = TrCreateLeafNode (PARSEOP_NAME);}
1428         NameString
1429         ',' DataObject
1430         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1431     | PARSEOP_NAME '('
1432         error ')'                   {$$ = AslDoError(); yyclearin;}
1433     ;
1434
1435 ScopeTerm
1436     : PARSEOP_SCOPE '('                         {$$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1437         NameString
1438         ')' '{'
1439             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1440     | PARSEOP_SCOPE '('
1441         error ')'                   {$$ = AslDoError(); yyclearin;}
1442     ;
1443
1444
1445 /******* Type 1 opcodes *******************************************************/
1446
1447
1448 BreakTerm
1449     : PARSEOP_BREAK                                     {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1450     ;
1451
1452 BreakPointTerm
1453     : PARSEOP_BREAKPOINT                        {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1454     ;
1455
1456 ContinueTerm
1457     : PARSEOP_CONTINUE                          {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1458     ;
1459
1460 FatalTerm
1461     : PARSEOP_FATAL '('                         {$$ = TrCreateLeafNode (PARSEOP_FATAL);}
1462         ByteConstExpr
1463         ',' DWordConstExpr
1464         TermArgItem
1465         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1466     | PARSEOP_FATAL '('
1467         error ')'                   {$$ = AslDoError(); yyclearin;}
1468     ;
1469
1470 IfElseTerm
1471     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
1472     ;
1473
1474 IfTerm
1475     : PARSEOP_IF '('                            {$$ = TrCreateLeafNode (PARSEOP_IF);}
1476         TermArg
1477         ')' '{'
1478             TermList '}'
1479                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1480     | PARSEOP_IF '('
1481         error ')'                   {$$ = AslDoError(); yyclearin;}
1482     ;
1483
1484 ElseTerm
1485     :                               {$$ = NULL;}
1486     | PARSEOP_ELSE '{'                          {$$ = TrCreateLeafNode (PARSEOP_ELSE);}
1487         TermList '}'
1488                                     {$$ = TrLinkChildren ($<n>3,1,$4);}
1489     | PARSEOP_ELSE '{'
1490         error '}'                   {$$ = AslDoError(); yyclearin;}
1491
1492     | PARSEOP_ELSEIF '('                        {$$ = TrCreateLeafNode (PARSEOP_ELSE);}
1493         TermArg                                         {$$ = TrCreateLeafNode (PARSEOP_IF);}
1494         ')' '{'
1495         TermList '}'                        {$$ = TrLinkChildren ($<n>5,2,$4,$8);}
1496         ElseTerm                    {$$ = TrLinkPeerNode ($<n>5,$11);}
1497                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1498     | PARSEOP_ELSEIF '('
1499         error ')'                   {$$ = AslDoError(); yyclearin;}
1500     ;
1501
1502 LoadTerm
1503     : PARSEOP_LOAD '('                          {$$ = TrCreateLeafNode (PARSEOP_LOAD);}
1504         NameString
1505         RequiredTarget
1506         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1507     | PARSEOP_LOAD '('
1508         error ')'                   {$$ = AslDoError(); yyclearin;}
1509     ;
1510
1511 NoOpTerm
1512     : PARSEOP_NOOP                                      {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1513     ;
1514
1515 NotifyTerm
1516     : PARSEOP_NOTIFY '('                        {$$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1517         SuperName
1518         TermArgItem
1519         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1520     | PARSEOP_NOTIFY '('
1521         error ')'                   {$$ = AslDoError(); yyclearin;}
1522     ;
1523
1524 ReleaseTerm
1525     : PARSEOP_RELEASE '('                       {$$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1526         SuperName
1527         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1528     | PARSEOP_RELEASE '('
1529         error ')'                   {$$ = AslDoError(); yyclearin;}
1530     ;
1531
1532 ResetTerm
1533     : PARSEOP_RESET '('                         {$$ = TrCreateLeafNode (PARSEOP_RESET);}
1534         SuperName
1535         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1536     | PARSEOP_RESET '('
1537         error ')'                   {$$ = AslDoError(); yyclearin;}
1538     ;
1539
1540 ReturnTerm
1541     : PARSEOP_RETURN '('                        {$$ = TrCreateLeafNode (PARSEOP_RETURN);}
1542         OptionalReturnArg
1543         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1544     | PARSEOP_RETURN                            {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrCreateLeafNode (PARSEOP_ZERO));}
1545     | PARSEOP_RETURN '('
1546         error ')'                   {$$ = AslDoError(); yyclearin;}
1547     ;
1548
1549 SignalTerm
1550     : PARSEOP_SIGNAL '('                        {$$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1551         SuperName
1552         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1553     | PARSEOP_SIGNAL '('
1554         error ')'                   {$$ = AslDoError(); yyclearin;}
1555     ;
1556
1557 SleepTerm
1558     : PARSEOP_SLEEP '('                         {$$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1559         TermArg
1560         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1561     | PARSEOP_SLEEP '('
1562         error ')'                   {$$ = AslDoError(); yyclearin;}
1563     ;
1564
1565 StallTerm
1566     : PARSEOP_STALL '('                         {$$ = TrCreateLeafNode (PARSEOP_STALL);}
1567         TermArg
1568         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1569     | PARSEOP_STALL '('
1570         error ')'                   {$$ = AslDoError(); yyclearin;}
1571     ;
1572
1573 SwitchTerm
1574     : PARSEOP_SWITCH '('                        {$$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1575         TermArg
1576         ')' '{'
1577             CaseTermList '}'
1578                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1579     | PARSEOP_SWITCH '('
1580         error ')'                   {$$ = AslDoError(); yyclearin;}
1581     ;
1582
1583 CaseTermList
1584     :                               {$$ = NULL;}
1585     | CaseTerm                      {}
1586     | DefaultTerm
1587         DefaultTermList             {$$ = TrLinkPeerNode ($1,$2);}
1588     | CaseTerm
1589         CaseTermList                {$$ = TrLinkPeerNode ($1,$2);}
1590     ;
1591
1592 DefaultTermList
1593     :                               {$$ = NULL;}
1594     | CaseTerm                      {}
1595     | CaseTerm
1596         DefaultTermList             {$$ = TrLinkPeerNode ($1,$2);}
1597     ;
1598
1599 CaseTerm
1600     : PARSEOP_CASE '('                          {$$ = TrCreateLeafNode (PARSEOP_CASE);}
1601         DataObject
1602         ')' '{'
1603             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1604     | PARSEOP_CASE '('
1605         error ')'                   {$$ = AslDoError(); yyclearin;}
1606     ;
1607
1608 DefaultTerm
1609     : PARSEOP_DEFAULT '{'                       {$$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1610         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
1611     | PARSEOP_DEFAULT '{'
1612         error '}'                   {$$ = AslDoError(); yyclearin;}
1613     ;
1614
1615 UnloadTerm
1616     : PARSEOP_UNLOAD '('                        {$$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1617         SuperName
1618         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1619     | PARSEOP_UNLOAD '('
1620         error ')'                   {$$ = AslDoError(); yyclearin;}
1621     ;
1622
1623 WhileTerm
1624     : PARSEOP_WHILE '('                         {$$ = TrCreateLeafNode (PARSEOP_WHILE);}
1625         TermArg
1626         ')' '{' TermList '}'
1627                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1628     | PARSEOP_WHILE '('
1629         error ')'                   {$$ = AslDoError(); yyclearin;}
1630     ;
1631
1632
1633 /******* Type 2 opcodes *******************************************************/
1634
1635 AcquireTerm
1636     : PARSEOP_ACQUIRE '('                       {$$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1637         SuperName
1638         ',' WordConstExpr
1639         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1640     | PARSEOP_ACQUIRE '('
1641         error ')'                   {$$ = AslDoError(); yyclearin;}
1642     ;
1643
1644 AddTerm
1645     : PARSEOP_ADD '('                           {$$ = TrCreateLeafNode (PARSEOP_ADD);}
1646         TermArg
1647         TermArgItem
1648         Target
1649         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1650     | PARSEOP_ADD '('
1651         error ')'                   {$$ = AslDoError(); yyclearin;}
1652     ;
1653
1654 AndTerm
1655     : PARSEOP_AND '('                           {$$ = TrCreateLeafNode (PARSEOP_AND);}
1656         TermArg
1657         TermArgItem
1658         Target
1659         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1660     | PARSEOP_AND '('
1661         error ')'                   {$$ = AslDoError(); yyclearin;}
1662     ;
1663
1664 ConcatTerm
1665     : PARSEOP_CONCATENATE '('           {$$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1666         TermArg
1667         TermArgItem
1668         Target
1669         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1670     | PARSEOP_CONCATENATE '('
1671         error ')'                   {$$ = AslDoError(); yyclearin;}
1672     ;
1673
1674 ConcatResTerm
1675     : PARSEOP_CONCATENATERESTEMPLATE '('    {$$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1676         TermArg
1677         TermArgItem
1678         Target
1679         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1680     | PARSEOP_CONCATENATERESTEMPLATE '('
1681         error ')'                   {$$ = AslDoError(); yyclearin;}
1682     ;
1683
1684 CondRefOfTerm
1685     : PARSEOP_CONDREFOF '('                     {$$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1686         SuperName
1687         Target
1688         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1689     | PARSEOP_CONDREFOF '('
1690         error ')'                   {$$ = AslDoError(); yyclearin;}
1691     ;
1692
1693 CopyObjectTerm
1694     : PARSEOP_COPYOBJECT '('            {$$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1695         TermArg
1696         ',' SimpleTarget
1697         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1698     | PARSEOP_COPYOBJECT '('
1699         error ')'                   {$$ = AslDoError(); yyclearin;}
1700     ;
1701
1702 DecTerm
1703     : PARSEOP_DECREMENT '('                     {$$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1704         SuperName
1705         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1706     | PARSEOP_DECREMENT '('
1707         error ')'                   {$$ = AslDoError(); yyclearin;}
1708     ;
1709
1710 DerefOfTerm
1711     : PARSEOP_DEREFOF '('                       {$$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1712         TermArg
1713         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1714     | PARSEOP_DEREFOF '('
1715         error ')'                   {$$ = AslDoError(); yyclearin;}
1716     ;
1717
1718 DivideTerm
1719     : PARSEOP_DIVIDE '('                        {$$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1720         TermArg
1721         TermArgItem
1722         Target
1723         Target
1724         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1725     | PARSEOP_DIVIDE '('
1726         error ')'                   {$$ = AslDoError(); yyclearin;}
1727     ;
1728
1729 FindSetLeftBitTerm
1730     : PARSEOP_FINDSETLEFTBIT '('        {$$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1731         TermArg
1732         Target
1733         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1734     | PARSEOP_FINDSETLEFTBIT '('
1735         error ')'                   {$$ = AslDoError(); yyclearin;}
1736     ;
1737
1738 FindSetRightBitTerm
1739     : PARSEOP_FINDSETRIGHTBIT '('       {$$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1740         TermArg
1741         Target
1742         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1743     | PARSEOP_FINDSETRIGHTBIT '('
1744         error ')'                   {$$ = AslDoError(); yyclearin;}
1745     ;
1746
1747 FromBCDTerm
1748     : PARSEOP_FROMBCD '('                       {$$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1749         TermArg
1750         Target
1751         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1752     | PARSEOP_FROMBCD '('
1753         error ')'                   {$$ = AslDoError(); yyclearin;}
1754     ;
1755
1756 IncTerm
1757     : PARSEOP_INCREMENT '('                     {$$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1758         SuperName
1759         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1760     | PARSEOP_INCREMENT '('
1761         error ')'                   {$$ = AslDoError(); yyclearin;}
1762     ;
1763
1764 IndexTerm
1765     : PARSEOP_INDEX '('                         {$$ = TrCreateLeafNode (PARSEOP_INDEX);}
1766         TermArg
1767         TermArgItem
1768         Target
1769         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1770     | PARSEOP_INDEX '('
1771         error ')'                   {$$ = AslDoError(); yyclearin;}
1772     ;
1773
1774 LAndTerm
1775     : PARSEOP_LAND '('                          {$$ = TrCreateLeafNode (PARSEOP_LAND);}
1776         TermArg
1777         TermArgItem
1778         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1779     | PARSEOP_LAND '('
1780         error ')'                   {$$ = AslDoError(); yyclearin;}
1781     ;
1782
1783 LEqualTerm
1784     : PARSEOP_LEQUAL '('                        {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1785         TermArg
1786         TermArgItem
1787         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1788     | PARSEOP_LEQUAL '('
1789         error ')'                   {$$ = AslDoError(); yyclearin;}
1790     ;
1791
1792 LGreaterTerm
1793     : PARSEOP_LGREATER '('                      {$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1794         TermArg
1795         TermArgItem
1796         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1797     | PARSEOP_LGREATER '('
1798         error ')'                   {$$ = AslDoError(); yyclearin;}
1799     ;
1800
1801 LGreaterEqualTerm
1802     : PARSEOP_LGREATEREQUAL '('         {$$ = TrCreateLeafNode (PARSEOP_LLESS);}
1803         TermArg
1804         TermArgItem
1805         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1806     | PARSEOP_LGREATEREQUAL '('
1807         error ')'                   {$$ = AslDoError(); yyclearin;}
1808     ;
1809
1810 LLessTerm
1811     : PARSEOP_LLESS '('                         {$$ = TrCreateLeafNode (PARSEOP_LLESS);}
1812         TermArg
1813         TermArgItem
1814         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1815     | PARSEOP_LLESS '('
1816         error ')'                   {$$ = AslDoError(); yyclearin;}
1817     ;
1818
1819 LLessEqualTerm
1820     : PARSEOP_LLESSEQUAL '('            {$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1821         TermArg
1822         TermArgItem
1823         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1824     | PARSEOP_LLESSEQUAL '('
1825         error ')'                   {$$ = AslDoError(); yyclearin;}
1826     ;
1827
1828 LNotTerm
1829     : PARSEOP_LNOT '('                          {$$ = TrCreateLeafNode (PARSEOP_LNOT);}
1830         TermArg
1831         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1832     | PARSEOP_LNOT '('
1833         error ')'                   {$$ = AslDoError(); yyclearin;}
1834     ;
1835
1836 LNotEqualTerm
1837     : PARSEOP_LNOTEQUAL '('                     {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1838         TermArg
1839         TermArgItem
1840         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1841     | PARSEOP_LNOTEQUAL '('
1842         error ')'                   {$$ = AslDoError(); yyclearin;}
1843     ;
1844
1845 LoadTableTerm
1846     : PARSEOP_LOADTABLE '('                     {$$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1847         TermArg
1848         TermArgItem
1849         TermArgItem
1850         OptionalListString
1851         OptionalListString
1852         OptionalReference
1853         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1854     | PARSEOP_LOADTABLE '('
1855         error ')'                   {$$ = AslDoError(); yyclearin;}
1856     ;
1857
1858 LOrTerm
1859     : PARSEOP_LOR '('                           {$$ = TrCreateLeafNode (PARSEOP_LOR);}
1860         TermArg
1861         TermArgItem
1862         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1863     | PARSEOP_LOR '('
1864         error ')'                   {$$ = AslDoError(); yyclearin;}
1865     ;
1866
1867 MatchTerm
1868     : PARSEOP_MATCH '('                         {$$ = TrCreateLeafNode (PARSEOP_MATCH);}
1869         TermArg
1870         ',' MatchOpKeyword
1871         TermArgItem
1872         ',' MatchOpKeyword
1873         TermArgItem
1874         TermArgItem
1875         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1876     | PARSEOP_MATCH '('
1877         error ')'                   {$$ = AslDoError(); yyclearin;}
1878     ;
1879
1880 MidTerm
1881     : PARSEOP_MID '('                           {$$ = TrCreateLeafNode (PARSEOP_MID);}
1882         TermArg
1883         TermArgItem
1884         TermArgItem
1885         Target
1886         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1887     | PARSEOP_MID '('
1888         error ')'                   {$$ = AslDoError(); yyclearin;}
1889     ;
1890
1891 ModTerm
1892     : PARSEOP_MOD '('                           {$$ = TrCreateLeafNode (PARSEOP_MOD);}
1893         TermArg
1894         TermArgItem
1895         Target
1896         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1897     | PARSEOP_MOD '('
1898         error ')'                   {$$ = AslDoError(); yyclearin;}
1899     ;
1900
1901 MultiplyTerm
1902     : PARSEOP_MULTIPLY '('                      {$$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1903         TermArg
1904         TermArgItem
1905         Target
1906         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1907     | PARSEOP_MULTIPLY '('
1908         error ')'                   {$$ = AslDoError(); yyclearin;}
1909     ;
1910
1911 NAndTerm
1912     : PARSEOP_NAND '('                          {$$ = TrCreateLeafNode (PARSEOP_NAND);}
1913         TermArg
1914         TermArgItem
1915         Target
1916         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1917     | PARSEOP_NAND '('
1918         error ')'                   {$$ = AslDoError(); yyclearin;}
1919     ;
1920
1921 NOrTerm
1922     : PARSEOP_NOR '('                           {$$ = TrCreateLeafNode (PARSEOP_NOR);}
1923         TermArg
1924         TermArgItem
1925         Target
1926         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1927     | PARSEOP_NOR '('
1928         error ')'                   {$$ = AslDoError(); yyclearin;}
1929     ;
1930
1931 NotTerm
1932     : PARSEOP_NOT '('                           {$$ = TrCreateLeafNode (PARSEOP_NOT);}
1933         TermArg
1934         Target
1935         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1936     | PARSEOP_NOT '('
1937         error ')'                   {$$ = AslDoError(); yyclearin;}
1938     ;
1939
1940 ObjectTypeTerm
1941     : PARSEOP_OBJECTTYPE '('            {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1942         SuperName
1943         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1944     | PARSEOP_OBJECTTYPE '('
1945         error ')'                   {$$ = AslDoError(); yyclearin;}
1946     ;
1947
1948 OrTerm
1949     : PARSEOP_OR '('                            {$$ = TrCreateLeafNode (PARSEOP_OR);}
1950         TermArg
1951         TermArgItem
1952         Target
1953         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1954     | PARSEOP_OR '('
1955         error ')'                   {$$ = AslDoError(); yyclearin;}
1956     ;
1957
1958 /*
1959  * In RefOf, the node isn't really a target, but we can't keep track of it after
1960  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1961  */
1962 RefOfTerm
1963     : PARSEOP_REFOF '('                         {$$ = TrCreateLeafNode (PARSEOP_REFOF);}
1964         SuperName
1965         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1966     | PARSEOP_REFOF '('
1967         error ')'                   {$$ = AslDoError(); yyclearin;}
1968     ;
1969
1970 ShiftLeftTerm
1971     : PARSEOP_SHIFTLEFT '('                     {$$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1972         TermArg
1973         TermArgItem
1974         Target
1975         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1976     | PARSEOP_SHIFTLEFT '('
1977         error ')'                   {$$ = AslDoError(); yyclearin;}
1978     ;
1979
1980 ShiftRightTerm
1981     : PARSEOP_SHIFTRIGHT '('            {$$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1982         TermArg
1983         TermArgItem
1984         Target
1985         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1986     | PARSEOP_SHIFTRIGHT '('
1987         error ')'                   {$$ = AslDoError(); yyclearin;}
1988     ;
1989
1990 SizeOfTerm
1991     : PARSEOP_SIZEOF '('                        {$$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1992         SuperName
1993         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1994     | PARSEOP_SIZEOF '('
1995         error ')'                   {$$ = AslDoError(); yyclearin;}
1996     ;
1997
1998 StoreTerm
1999     : PARSEOP_STORE '('                         {$$ = TrCreateLeafNode (PARSEOP_STORE);}
2000         TermArg
2001         ',' SuperName
2002         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2003     | PARSEOP_STORE '('
2004         error ')'                   {$$ = AslDoError(); yyclearin;}
2005     ;
2006
2007 SubtractTerm
2008     : PARSEOP_SUBTRACT '('                      {$$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2009         TermArg
2010         TermArgItem
2011         Target
2012         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2013     | PARSEOP_SUBTRACT '('
2014         error ')'                   {$$ = AslDoError(); yyclearin;}
2015     ;
2016
2017 TimerTerm
2018     : PARSEOP_TIMER '('                     {$$ = TrCreateLeafNode (PARSEOP_TIMER);}
2019         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
2020     | PARSEOP_TIMER                         {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2021     | PARSEOP_TIMER '('
2022         error ')'                   {$$ = AslDoError(); yyclearin;}
2023     ;
2024
2025 ToBCDTerm
2026     : PARSEOP_TOBCD '('                         {$$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2027         TermArg
2028         Target
2029         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2030     | PARSEOP_TOBCD '('
2031         error ')'                   {$$ = AslDoError(); yyclearin;}
2032     ;
2033
2034 ToBufferTerm
2035     : PARSEOP_TOBUFFER '('                      {$$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2036         TermArg
2037         Target
2038         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2039     | PARSEOP_TOBUFFER '('
2040         error ')'                   {$$ = AslDoError(); yyclearin;}
2041     ;
2042
2043 ToDecimalStringTerm
2044     : PARSEOP_TODECIMALSTRING '('       {$$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2045         TermArg
2046         Target
2047         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2048     | PARSEOP_TODECIMALSTRING '('
2049         error ')'                   {$$ = AslDoError(); yyclearin;}
2050     ;
2051
2052 ToHexStringTerm
2053     : PARSEOP_TOHEXSTRING '('           {$$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2054         TermArg
2055         Target
2056         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2057     | PARSEOP_TOHEXSTRING '('
2058         error ')'                   {$$ = AslDoError(); yyclearin;}
2059     ;
2060
2061 ToIntegerTerm
2062     : PARSEOP_TOINTEGER '('                     {$$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2063         TermArg
2064         Target
2065         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2066     | PARSEOP_TOINTEGER '('
2067         error ')'                   {$$ = AslDoError(); yyclearin;}
2068     ;
2069
2070 ToStringTerm
2071     : PARSEOP_TOSTRING '('                      {$$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2072         TermArg
2073         OptionalCount
2074         Target
2075         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2076     | PARSEOP_TOSTRING '('
2077         error ')'                   {$$ = AslDoError(); yyclearin;}
2078     ;
2079
2080 ToUUIDTerm
2081     : PARSEOP_TOUUID '('
2082         StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2083     | PARSEOP_TOUUID '('
2084         error ')'                   {$$ = AslDoError(); yyclearin;}
2085     ;
2086
2087 WaitTerm
2088     : PARSEOP_WAIT '('                          {$$ = TrCreateLeafNode (PARSEOP_WAIT);}
2089         SuperName
2090         TermArgItem
2091         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2092     | PARSEOP_WAIT '('
2093         error ')'                   {$$ = AslDoError(); yyclearin;}
2094     ;
2095
2096 XOrTerm
2097     : PARSEOP_XOR '('                           {$$ = TrCreateLeafNode (PARSEOP_XOR);}
2098         TermArg
2099         TermArgItem
2100         Target
2101         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2102     | PARSEOP_XOR '('
2103         error ')'                   {$$ = AslDoError(); yyclearin;}
2104     ;
2105
2106
2107 /******* Keywords *************************************************************/
2108
2109
2110 ObjectTypeKeyword
2111     : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2112     | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2113     | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2114     | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2115     | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2116     | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2117     | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2118     | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2119     | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2120     | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2121     | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2122     | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2123     | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2124     | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2125     | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2126     | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2127     ;
2128
2129 AccessTypeKeyword
2130     : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2131     | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2132     | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2133     | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2134     | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2135     | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2136     ;
2137
2138 AccessAttribKeyword
2139     : PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2140     | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2141     | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2142     | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2143     | PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2144     | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2145     | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2146     ;
2147
2148 LockRuleKeyword
2149     : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2150     | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2151     ;
2152
2153 UpdateRuleKeyword
2154     : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2155     | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2156     | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2157     ;
2158
2159
2160 RegionSpaceKeyword
2161     : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2162     | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2163     | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2164     | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2165     | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2166     | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2167     | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2168     ;
2169
2170 AddressSpaceKeyword
2171     : ByteConst                                                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2172     | RegionSpaceKeyword                                        {}
2173     | PARSEOP_ADDRESSSPACE_FFIXEDHW         {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
2174     ;
2175
2176
2177 SerializeRuleKeyword
2178     : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2179     | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2180     ;
2181
2182 MatchOpKeyword
2183     : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2184     | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2185     | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2186     | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2187     | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2188     | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2189     ;
2190
2191 DMATypeKeyword
2192     : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2193     | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2194     | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2195     | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2196     ;
2197
2198 XferTypeKeyword
2199     : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2200     | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2201     | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2202     ;
2203
2204 ResourceTypeKeyword
2205     : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2206     | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2207     ;
2208
2209 MinKeyword
2210     : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2211     | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2212     ;
2213
2214 MaxKeyword
2215     : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2216     | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2217     ;
2218
2219 DecodeKeyword
2220     : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2221     | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2222     ;
2223
2224 RangeTypeKeyword
2225     : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2226     | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2227     | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2228     ;
2229
2230 MemTypeKeyword
2231     : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2232     | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2233     | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2234     | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2235     ;
2236
2237 OptionalReadWriteKeyword
2238     :                                       {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2239     | PARSEOP_READWRITETYPE_BOTH            {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2240     | PARSEOP_READWRITETYPE_READONLY        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2241     ;
2242
2243 InterruptTypeKeyword
2244     : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2245     | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2246     ;
2247
2248 InterruptLevel
2249     : PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2250     | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2251     ;
2252
2253 ShareTypeKeyword
2254     : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2255     | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2256     ;
2257
2258 IODecodeKeyword
2259     : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2260     | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2261     ;
2262
2263 TypeKeyword
2264     : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2265     | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2266     ;
2267
2268 TranslationKeyword
2269     : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2270     | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2271     ;
2272
2273 AddressKeyword
2274     : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2275     | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2276     | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2277     | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2278     ;
2279
2280
2281 /******* Miscellaneous Types **************************************************/
2282
2283
2284 SuperName
2285     : NameString                    {}
2286     | ArgTerm                       {}
2287     | LocalTerm                     {}
2288     | DebugTerm                     {}
2289     | Type6Opcode                   {}
2290 /*    | UserTerm                      {} */  /* Caused reduce/reduce with Type6Opcode->UserTerm */
2291     ;
2292
2293 ArgTerm
2294     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2295     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2296     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2297     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2298     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2299     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2300     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2301     ;
2302
2303 LocalTerm
2304     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2305     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2306     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2307     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2308     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2309     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2310     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2311     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2312     ;
2313
2314 DebugTerm
2315     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2316     ;
2317
2318
2319 ByteConst
2320     : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2321     ;
2322
2323 WordConst
2324     : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2325     ;
2326
2327 DWordConst
2328     : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2329     ;
2330
2331 QWordConst
2332     : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2333     ;
2334
2335 Integer
2336     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2337     ;
2338
2339 String
2340     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2341     ;
2342
2343 ConstTerm
2344     : ConstExprTerm                 {}
2345     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2346     ;
2347
2348 ByteConstExpr
2349     : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2350     | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2351     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2352     | ByteConst                     {}
2353     ;
2354
2355 WordConstExpr
2356     : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2357     | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2358     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2359     | WordConst                     {}
2360     ;
2361
2362 DWordConstExpr
2363     : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2364     | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2365     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2366     | DWordConst                    {}
2367     ;
2368
2369 QWordConstExpr
2370     : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2371     | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2372     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2373     | QWordConst                    {}
2374     ;
2375
2376 ConstExprTerm
2377     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2378     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2379     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);}
2380     ;
2381
2382 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2383
2384 OptionalCount
2385     :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
2386     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
2387     | ',' TermArg                   {$$ = $2;}
2388     ;
2389
2390
2391 BufferTerm
2392     : PARSEOP_BUFFER '('            {$$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2393         OptionalTermArg
2394         ')' '{'
2395             BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2396     | PARSEOP_BUFFER '('
2397         error ')'                   {$$ = AslDoError(); yyclearin;}
2398     ;
2399
2400 BufferTermData
2401     : ByteList                      {}
2402     | StringData                    {}
2403     ;
2404
2405 ByteList
2406     :                               {$$ = NULL;}
2407     | ByteConstExpr
2408         ByteListTail                {$$ = TrLinkPeerNode ($1,$2);}
2409     ;
2410
2411 ByteListTail
2412     :                               {$$ = NULL;}
2413     |  ','                          {$$ = NULL;}   /* Allows a trailing comma at list end */
2414     |  ',' ByteConstExpr
2415          ByteListTail               {$$ = TrLinkPeerNode ($2,$3);}
2416     ;
2417
2418 DWordList
2419     :                               {$$ = NULL;}
2420     | DWordConstExpr
2421         DWordListTail               {$$ = TrLinkPeerNode ($1,$2);}
2422     ;
2423
2424 DWordListTail
2425     :                               {$$ = NULL;}
2426     | ','                           {$$ = NULL;}   /* Allows a trailing comma at list end */
2427     | ',' DWordConstExpr
2428         DWordListTail               {$$ = TrLinkPeerNode ($2,$3);}
2429     ;
2430
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;}
2438     ;
2439
2440 VarPackageLengthTerm
2441     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2442     | TermArg                       {$$ = $1;}
2443     ;
2444
2445 PackageList
2446     :                               {$$ = NULL;}
2447     | PackageElement
2448         PackageListTail             {$$ = TrLinkPeerNode ($1,$2);}
2449     ;
2450
2451 PackageListTail
2452     :                               {$$ = NULL;}
2453     | ','                           {$$ = NULL;}   /* Allows a trailing comma at list end */
2454     | ',' PackageElement
2455         PackageListTail             {$$ = TrLinkPeerNode ($2,$3);}
2456     ;
2457
2458 PackageElement
2459     : DataObject                    {}
2460     | NameString                    {}
2461     ;
2462
2463 EISAIDTerm
2464     : PARSEOP_EISAID '('
2465         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2466     | PARSEOP_EISAID '('
2467         error ')'                   {$$ = AslDoError(); yyclearin;}
2468     ;
2469
2470
2471 /******* Resources and Memory ***********************************************/
2472
2473
2474 ResourceTemplateTerm
2475     : PARSEOP_RESOURCETEMPLATE '(' ')'
2476         '{'
2477         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,3,
2478                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2479                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$5);}
2480     ;
2481
2482 UnicodeTerm
2483     : PARSEOP_UNICODE '('           {$$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2484         StringData
2485         ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2486     | PARSEOP_UNICODE '('
2487         error ')'                   {$$ = AslDoError(); yyclearin;}
2488     ;
2489
2490 ResourceMacroList
2491     :                               {$$ = NULL;}
2492     | ResourceMacroTerm
2493         ResourceMacroList           {$$ = TrLinkPeerNode ($1,$2);}
2494     ;
2495
2496 ResourceMacroTerm
2497     : DMATerm                       {}
2498     | DWordIOTerm                   {}
2499     | DWordMemoryTerm               {}
2500     | DWordSpaceTerm                {}
2501     | EndDependentFnTerm            {}
2502     | ExtendedIOTerm                {}
2503     | ExtendedMemoryTerm            {}
2504     | ExtendedSpaceTerm             {}
2505     | FixedIOTerm                   {}
2506     | InterruptTerm                 {}
2507     | IOTerm                        {}
2508     | IRQNoFlagsTerm                {}
2509     | IRQTerm                       {}
2510     | Memory24Term                  {}
2511     | Memory32FixedTerm             {}
2512     | Memory32Term                  {}
2513     | QWordIOTerm                   {}
2514     | QWordMemoryTerm               {}
2515     | QWordSpaceTerm                {}
2516     | RegisterTerm                  {}
2517     | StartDependentFnTerm          {}
2518     | StartDependentFnNoPriTerm     {}
2519     | VendorLongTerm                {}
2520     | VendorShortTerm               {}
2521     | WordBusNumberTerm             {}
2522     | WordIOTerm                    {}
2523     | WordSpaceTerm                 {}
2524     ;
2525
2526 DMATerm
2527     : PARSEOP_DMA '('               {$$ = TrCreateLeafNode (PARSEOP_DMA);}
2528         DMATypeKeyword
2529         OptionalBusMasterKeyword
2530         ',' XferTypeKeyword
2531         OptionalNameString_Last
2532         ')' '{'
2533             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2534     | PARSEOP_DMA '('
2535         error ')'                   {$$ = AslDoError(); yyclearin;}
2536     ;
2537
2538 DWordIOTerm
2539     : PARSEOP_DWORDIO '('           {$$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2540         OptionalResourceType_First
2541         OptionalMinType
2542         OptionalMaxType
2543         OptionalDecodeType
2544         OptionalRangeType
2545         ',' DWordConstExpr
2546         ',' DWordConstExpr
2547         ',' DWordConstExpr
2548         ',' DWordConstExpr
2549         ',' DWordConstExpr
2550         OptionalByteConstExpr
2551         OptionalStringData
2552         OptionalNameString
2553         OptionalType
2554         OptionalTranslationType_Last
2555         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2556     | PARSEOP_DWORDIO '('
2557         error ')'                   {$$ = AslDoError(); yyclearin;}
2558     ;
2559
2560 DWordMemoryTerm
2561     : PARSEOP_DWORDMEMORY '('       {$$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2562         OptionalResourceType_First
2563         OptionalDecodeType
2564         OptionalMinType
2565         OptionalMaxType
2566         OptionalMemType
2567         ',' OptionalReadWriteKeyword
2568         ',' DWordConstExpr
2569         ',' DWordConstExpr
2570         ',' DWordConstExpr
2571         ',' DWordConstExpr
2572         ',' DWordConstExpr
2573         OptionalByteConstExpr
2574         OptionalStringData
2575         OptionalNameString
2576         OptionalAddressRange
2577         OptionalType_Last
2578         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2579     | PARSEOP_DWORDMEMORY '('
2580         error ')'                   {$$ = AslDoError(); yyclearin;}
2581     ;
2582
2583 DWordSpaceTerm
2584     : PARSEOP_DWORDSPACE '('        {$$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2585         ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2586         OptionalResourceType
2587         OptionalDecodeType
2588         OptionalMinType
2589         OptionalMaxType
2590         ',' ByteConstExpr
2591         ',' DWordConstExpr
2592         ',' DWordConstExpr
2593         ',' DWordConstExpr
2594         ',' DWordConstExpr
2595         ',' DWordConstExpr
2596         OptionalByteConstExpr
2597         OptionalStringData
2598         OptionalNameString_Last
2599         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2600     | PARSEOP_DWORDSPACE '('
2601         error ')'                   {$$ = AslDoError(); yyclearin;}
2602     ;
2603
2604
2605 EndDependentFnTerm
2606     : PARSEOP_ENDDEPENDENTFN '('
2607         ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2608     | PARSEOP_ENDDEPENDENTFN '('
2609         error ')'                   {$$ = AslDoError(); yyclearin;}
2610     ;
2611
2612 ExtendedIOTerm
2613     : PARSEOP_EXTENDEDIO '('        {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2614         OptionalResourceType_First
2615         OptionalMinType
2616         OptionalMaxType
2617         OptionalDecodeType
2618         OptionalRangeType
2619         ',' QWordConstExpr
2620         ',' QWordConstExpr
2621         ',' QWordConstExpr
2622         ',' QWordConstExpr
2623         ',' QWordConstExpr
2624         OptionalQWordConstExpr
2625         OptionalNameString
2626         OptionalType
2627         OptionalTranslationType_Last
2628         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2629     | PARSEOP_EXTENDEDIO '('
2630         error ')'                   {$$ = AslDoError(); yyclearin;}
2631     ;
2632
2633 ExtendedMemoryTerm
2634     : PARSEOP_EXTENDEDMEMORY '('    {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2635         OptionalResourceType_First
2636         OptionalDecodeType
2637         OptionalMinType
2638         OptionalMaxType
2639         OptionalMemType
2640         ',' OptionalReadWriteKeyword
2641         ',' QWordConstExpr
2642         ',' QWordConstExpr
2643         ',' QWordConstExpr
2644         ',' QWordConstExpr
2645         ',' QWordConstExpr
2646         OptionalQWordConstExpr
2647         OptionalNameString
2648         OptionalAddressRange
2649         OptionalType_Last
2650         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2651     | PARSEOP_EXTENDEDMEMORY '('
2652         error ')'                   {$$ = AslDoError(); yyclearin;}
2653     ;
2654
2655 ExtendedSpaceTerm
2656     : PARSEOP_EXTENDEDSPACE '('     {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2657         ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2658         OptionalResourceType
2659         OptionalDecodeType
2660         OptionalMinType
2661         OptionalMaxType
2662         ',' ByteConstExpr
2663         ',' QWordConstExpr
2664         ',' QWordConstExpr
2665         ',' QWordConstExpr
2666         ',' QWordConstExpr
2667         ',' QWordConstExpr
2668         OptionalQWordConstExpr
2669         OptionalNameString_Last
2670         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2671     | PARSEOP_EXTENDEDSPACE '('
2672         error ')'                   {$$ = AslDoError(); yyclearin;}
2673     ;
2674
2675 FixedIOTerm
2676     : PARSEOP_FIXEDIO '('           {$$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2677         WordConstExpr
2678         ',' ByteConstExpr
2679         OptionalNameString_Last
2680         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2681     | PARSEOP_FIXEDIO '('
2682         error ')'                   {$$ = AslDoError(); yyclearin;}
2683     ;
2684
2685 InterruptTerm
2686     : PARSEOP_INTERRUPT '('         {$$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2687         OptionalResourceType_First
2688         ',' InterruptTypeKeyword
2689         ',' InterruptLevel
2690         OptionalShareType
2691         OptionalByteConstExpr
2692         OptionalStringData
2693         OptionalNameString_Last
2694         ')' '{'
2695             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2696     | PARSEOP_INTERRUPT '('
2697         error ')'                   {$$ = AslDoError(); yyclearin;}
2698     ;
2699
2700 IOTerm
2701     : PARSEOP_IO '('                {$$ = TrCreateLeafNode (PARSEOP_IO);}
2702         IODecodeKeyword
2703         ',' WordConstExpr
2704         ',' WordConstExpr
2705         ',' ByteConstExpr
2706         ',' ByteConstExpr
2707         OptionalNameString_Last
2708         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2709     | PARSEOP_IO '('
2710         error ')'                   {$$ = AslDoError(); yyclearin;}
2711     ;
2712
2713 IRQNoFlagsTerm
2714     : PARSEOP_IRQNOFLAGS '('        {$$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2715         OptionalNameString_First
2716         ')' '{'
2717             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2718     | PARSEOP_IRQNOFLAGS '('
2719         error ')'                   {$$ = AslDoError(); yyclearin;}
2720     ;
2721
2722 IRQTerm
2723     : PARSEOP_IRQ '('               {$$ = TrCreateLeafNode (PARSEOP_IRQ);}
2724         InterruptTypeKeyword
2725         ',' InterruptLevel
2726         OptionalShareType
2727         OptionalNameString_Last
2728         ')' '{'
2729             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2730     | PARSEOP_IRQ '('
2731         error ')'                   {$$ = AslDoError(); yyclearin;}
2732     ;
2733
2734 Memory24Term
2735     : PARSEOP_MEMORY24 '('          {$$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2736         OptionalReadWriteKeyword
2737         ',' WordConstExpr
2738         ',' WordConstExpr
2739         ',' WordConstExpr
2740         ',' WordConstExpr
2741         OptionalNameString_Last
2742         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2743     | PARSEOP_MEMORY24 '('
2744         error ')'                   {$$ = AslDoError(); yyclearin;}
2745     ;
2746
2747 Memory32FixedTerm
2748     : PARSEOP_MEMORY32FIXED '('     {$$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2749         OptionalReadWriteKeyword
2750         ',' DWordConstExpr
2751         ',' DWordConstExpr
2752         OptionalNameString_Last
2753         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2754     | PARSEOP_MEMORY32FIXED '('
2755         error ')'                   {$$ = AslDoError(); yyclearin;}
2756     ;
2757
2758 Memory32Term
2759     : PARSEOP_MEMORY32 '('          {$$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2760         OptionalReadWriteKeyword
2761         ',' DWordConstExpr
2762         ',' DWordConstExpr
2763         ',' DWordConstExpr
2764         ',' DWordConstExpr
2765         OptionalNameString_Last
2766         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2767     | PARSEOP_MEMORY32 '('
2768         error ')'                   {$$ = AslDoError(); yyclearin;}
2769     ;
2770
2771 QWordIOTerm
2772     : PARSEOP_QWORDIO '('           {$$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2773         OptionalResourceType_First
2774         OptionalMinType
2775         OptionalMaxType
2776         OptionalDecodeType
2777         OptionalRangeType
2778         ',' QWordConstExpr
2779         ',' QWordConstExpr
2780         ',' QWordConstExpr
2781         ',' QWordConstExpr
2782         ',' QWordConstExpr
2783         OptionalByteConstExpr
2784         OptionalStringData
2785         OptionalNameString
2786         OptionalType
2787         OptionalTranslationType_Last
2788         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2789     | PARSEOP_QWORDIO '('
2790         error ')'                   {$$ = AslDoError(); yyclearin;}
2791     ;
2792
2793 QWordMemoryTerm
2794     : PARSEOP_QWORDMEMORY '('       {$$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2795         OptionalResourceType_First
2796         OptionalDecodeType
2797         OptionalMinType
2798         OptionalMaxType
2799         OptionalMemType
2800         ',' OptionalReadWriteKeyword
2801         ',' QWordConstExpr
2802         ',' QWordConstExpr
2803         ',' QWordConstExpr
2804         ',' QWordConstExpr
2805         ',' QWordConstExpr
2806         OptionalByteConstExpr
2807         OptionalStringData
2808         OptionalNameString
2809         OptionalAddressRange
2810         OptionalType_Last
2811         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2812     | PARSEOP_QWORDMEMORY '('
2813         error ')'                   {$$ = AslDoError(); yyclearin;}
2814     ;
2815
2816 QWordSpaceTerm
2817     : PARSEOP_QWORDSPACE '('        {$$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2818         ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2819         OptionalResourceType
2820         OptionalDecodeType
2821         OptionalMinType
2822         OptionalMaxType
2823         ',' ByteConstExpr
2824         ',' QWordConstExpr
2825         ',' QWordConstExpr
2826         ',' QWordConstExpr
2827         ',' QWordConstExpr
2828         ',' QWordConstExpr
2829         OptionalByteConstExpr
2830         OptionalStringData
2831         OptionalNameString_Last
2832         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2833     | PARSEOP_QWORDSPACE '('
2834         error ')'                   {$$ = AslDoError(); yyclearin;}
2835     ;
2836
2837 RegisterTerm
2838     : PARSEOP_REGISTER '('          {$$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2839         AddressSpaceKeyword
2840         ',' ByteConstExpr
2841         ',' ByteConstExpr
2842         ',' QWordConstExpr
2843         OptionalAccessSize
2844         ')'                         {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$11);}
2845     | PARSEOP_REGISTER '('
2846         error ')'                   {$$ = AslDoError(); yyclearin;}
2847     ;
2848
2849 StartDependentFnTerm
2850     : PARSEOP_STARTDEPENDENTFN '('  {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2851         ByteConstExpr
2852         ',' ByteConstExpr
2853         ')' '{'
2854         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2855     | PARSEOP_STARTDEPENDENTFN '('
2856         error ')'                   {$$ = AslDoError(); yyclearin;}
2857     ;
2858
2859 StartDependentFnNoPriTerm
2860     : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2861         ')' '{'
2862         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
2863     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2864         error ')'                   {$$ = AslDoError(); yyclearin;}
2865     ;
2866
2867 VendorLongTerm
2868     : PARSEOP_VENDORLONG '('        {$$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2869         OptionalNameString_First
2870         ')' '{'
2871             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2872     | PARSEOP_VENDORLONG '('
2873         error ')'                   {$$ = AslDoError(); yyclearin;}
2874     ;
2875
2876 VendorShortTerm
2877     : PARSEOP_VENDORSHORT '('       {$$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2878         OptionalNameString_First
2879         ')' '{'
2880             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2881     | PARSEOP_VENDORSHORT '('
2882         error ')'                   {$$ = AslDoError(); yyclearin;}
2883     ;
2884
2885 WordBusNumberTerm
2886     : PARSEOP_WORDBUSNUMBER '('     {$$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2887         OptionalResourceType_First
2888         OptionalMinType
2889         OptionalMaxType
2890         OptionalDecodeType
2891         ',' WordConstExpr
2892         ',' WordConstExpr
2893         ',' WordConstExpr
2894         ',' WordConstExpr
2895         ',' WordConstExpr
2896         OptionalByteConstExpr
2897         OptionalStringData
2898         OptionalNameString_Last
2899         ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2900     | PARSEOP_WORDBUSNUMBER '('
2901         error ')'                   {$$ = AslDoError(); yyclearin;}
2902     ;
2903
2904 WordIOTerm
2905     : PARSEOP_WORDIO '('            {$$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2906         OptionalResourceType_First
2907         OptionalMinType
2908         OptionalMaxType
2909         OptionalDecodeType
2910         OptionalRangeType
2911         ',' WordConstExpr
2912         ',' WordConstExpr
2913         ',' WordConstExpr
2914         ',' WordConstExpr
2915         ',' WordConstExpr
2916         OptionalByteConstExpr
2917         OptionalStringData
2918         OptionalNameString
2919         OptionalType
2920         OptionalTranslationType_Last
2921         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2922     | PARSEOP_WORDIO '('
2923         error ')'                   {$$ = AslDoError(); yyclearin;}
2924     ;
2925
2926 WordSpaceTerm
2927     : PARSEOP_WORDSPACE '('         {$$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2928         ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2929         OptionalResourceType
2930         OptionalDecodeType
2931         OptionalMinType
2932         OptionalMaxType
2933         ',' ByteConstExpr
2934         ',' WordConstExpr
2935         ',' WordConstExpr
2936         ',' WordConstExpr
2937         ',' WordConstExpr
2938         ',' WordConstExpr
2939         OptionalByteConstExpr
2940         OptionalStringData
2941         OptionalNameString_Last
2942         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2943     | PARSEOP_WORDSPACE '('
2944         error ')'                   {$$ = AslDoError(); yyclearin;}
2945     ;
2946
2947
2948 /******* Object References ***********************************************/
2949
2950
2951 NameString
2952     : NameSeg                       {}
2953     | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2954     ;
2955
2956 NameSeg
2957     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2958     ;
2959
2960
2961 /******* Helper rules ****************************************************/
2962
2963
2964 AmlPackageLengthTerm
2965     : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2966     ;
2967
2968 OptionalBusMasterKeyword
2969     : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2970     | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2971     | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2972     ;
2973
2974 OptionalAccessAttribTerm
2975     :                               {$$ = NULL;}
2976     | ','                           {$$ = NULL;}
2977     | ',' ByteConstExpr             {$$ = $2;}
2978     | ',' AccessAttribKeyword       {$$ = $2;}
2979     ;
2980
2981 OptionalAccessSize
2982     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2983     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2984     | ',' ByteConstExpr             {$$ = $2;}
2985     ;
2986
2987 OptionalAddressRange
2988     :                               {$$ = NULL;}
2989     | ','                           {$$ = NULL;}
2990     | ',' AddressKeyword            {$$ = $2;}
2991     ;
2992
2993 OptionalByteConstExpr
2994     :                               {$$ = NULL;}
2995     | ','                           {$$ = NULL;}
2996     | ',' ByteConstExpr             {$$ = $2;}
2997     ;
2998
2999 OptionalDecodeType
3000     : ','                           {$$ = NULL;}
3001     | ',' DecodeKeyword             {$$ = $2;}
3002     ;
3003
3004 OptionalDWordConstExpr
3005     :                               {$$ = NULL;}
3006     | ','                           {$$ = NULL;}
3007     | ',' DWordConstExpr            {$$ = $2;}
3008     ;
3009
3010 OptionalListString
3011     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
3012     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
3013     | ',' TermArg                   {$$ = $2;}
3014     ;
3015
3016 OptionalMaxType
3017     : ','                           {$$ = NULL;}
3018     | ',' MaxKeyword                {$$ = $2;}
3019     ;
3020
3021 OptionalMemType
3022     : ','                           {$$ = NULL;}
3023     | ',' MemTypeKeyword            {$$ = $2;}
3024     ;
3025
3026 OptionalMinType
3027     : ','                           {$$ = NULL;}
3028     | ',' MinKeyword                {$$ = $2;}
3029     ;
3030
3031 OptionalNameString
3032     :                               {$$ = NULL;}
3033     | ','                           {$$ = NULL;}
3034     | ',' NameString                {$$ = $2;}
3035     ;
3036
3037 OptionalNameString_Last
3038     :                               {$$ = NULL;}
3039     | ','                           {$$ = NULL;}
3040     | ',' NameString                {$$ = $2;}
3041     ;
3042
3043 OptionalNameString_First
3044     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3045     | NameString                    {$$ = $1;}
3046     ;
3047
3048 OptionalObjectTypeKeyword
3049     :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3050     | ',' ObjectTypeKeyword         {$$ = $2;}
3051     ;
3052
3053 OptionalQWordConstExpr
3054     :                               {$$ = NULL;}
3055     | ','                           {$$ = NULL;}
3056     | ',' QWordConstExpr            {$$ = $2;}
3057     ;
3058
3059 OptionalRangeType
3060     : ','                           {$$ = NULL;}
3061     | ',' RangeTypeKeyword          {$$ = $2;}
3062     ;
3063
3064 OptionalReference
3065     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
3066     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
3067     | ',' DataObject                {$$ = $2;}
3068     | ',' NameString                {$$ = $2;}
3069     ;
3070
3071 OptionalResourceType_First
3072     :                               {$$ = NULL;}
3073     | ResourceTypeKeyword           {$$ = $1;}
3074     ;
3075
3076 OptionalResourceType
3077     :                               {$$ = NULL;}
3078     | ','                           {$$ = NULL;}
3079     | ',' ResourceTypeKeyword       {$$ = $2;}
3080     ;
3081
3082 OptionalSerializeRuleKeyword
3083     :                               {$$ = NULL;}
3084     | ','                           {$$ = NULL;}
3085     | ',' SerializeRuleKeyword      {$$ = $2;}
3086     ;
3087
3088 OptionalShareType
3089     :                               {$$ = NULL;}
3090     | ','                           {$$ = NULL;}
3091     | ',' ShareTypeKeyword          {$$ = $2;}
3092     ;
3093
3094 OptionalStringData
3095     :                               {$$ = NULL;}
3096     | ','                           {$$ = NULL;}
3097     | ',' StringData                {$$ = $2;}
3098     ;
3099
3100 OptionalTermArg
3101     :                               {$$ = NULL;}
3102     | TermArg                       {$$ = $1;}
3103     ;
3104
3105 OptionalReturnArg
3106     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
3107     | TermArg                       {$$ = $1;}
3108     ;
3109
3110 OptionalType
3111     :                               {$$ = NULL;}
3112     | ','                           {$$ = NULL;}
3113     | ',' TypeKeyword               {$$ = $2;}
3114     ;
3115
3116 OptionalType_Last
3117     :                               {$$ = NULL;}
3118     | ','                           {$$ = NULL;}
3119     | ',' TypeKeyword               {$$ = $2;}
3120     ;
3121
3122 OptionalTranslationType_Last
3123     :                               {$$ = NULL;}
3124     | ','                           {$$ = NULL;}
3125     | ',' TranslationKeyword        {$$ = $2;}
3126     ;
3127
3128
3129 TermArgItem
3130     : ',' TermArg                   {$$ = $2;}
3131     | ',' error                     {$$ = AslDoError (); yyclearin;}
3132     ;
3133
3134 NameStringItem
3135     : ',' NameString                {$$ = $2;}
3136     | ',' error                     {$$ = AslDoError (); yyclearin;}
3137     ;
3138
3139
3140 %%
3141
3142
3143 /*
3144  * Local support functions
3145  */
3146
3147 int
3148 AslCompilerwrap(void)
3149 {
3150   return 1;
3151 }
3152
3153 /*! [End] no source code translation !*/
3154
3155 void *
3156 AslLocalAllocate (unsigned int Size)
3157 {
3158     void                *Mem;
3159
3160
3161     DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %d\n\n", Size);
3162
3163     Mem = ACPI_MEM_CALLOCATE (Size);
3164     if (!Mem)
3165     {
3166         AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3167                         Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3168                         Gbl_InputByteCount, Gbl_CurrentColumn,
3169                         Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3170         exit (1);
3171     }
3172
3173     return (Mem);
3174 }
3175
3176 ACPI_PARSE_OBJECT *
3177 AslDoError (void)
3178 {
3179
3180
3181     return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3182
3183 }