Subversion Repositories Kolibri OS

Rev

Rev 1498 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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