aslprimaries.y revision 1.1.1.8 1 NoEcho('
2 /******************************************************************************
3 *
4 * Module Name: aslprimaries.y - Rules for primary ASL operators
5 * - Keep this file synched with the
6 * CvParseOpBlockType function in cvcompiler.c
7 *
8 *****************************************************************************/
9
10 /*
11 * Copyright (C) 2000 - 2020, Intel Corp.
12 * All rights reserved.
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions
16 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions, and the following disclaimer,
19 * without modification.
20 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
21 * substantially similar to the "NO WARRANTY" disclaimer below
22 * ("Disclaimer") and any redistribution must be conditioned upon
23 * including a substantially similar Disclaimer requirement for further
24 * binary redistribution.
25 * 3. Neither the names of the above-listed copyright holders nor the names
26 * of any contributors may be used to endorse or promote products derived
27 * from this software without specific prior written permission.
28 *
29 * Alternatively, this software may be distributed under the terms of the
30 * GNU General Public License ("GPL") version 2 as published by the Free
31 * Software Foundation.
32 *
33 * NO WARRANTY
34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
37 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
38 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
42 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
43 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44 * POSSIBILITY OF SUCH DAMAGES.
45 */
46
47 ')
48
49
50 /*******************************************************************************
51 *
52 * ASL Primary Terms
53 *
54 ******************************************************************************/
55
56 AccessAsTerm
57 : PARSEOP_ACCESSAS
58 PARSEOP_OPEN_PAREN
59 AccessTypeKeyword
60 OptionalAccessAttribTerm
61 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_ACCESSAS,2,$3,$4);}
62 | PARSEOP_ACCESSAS
63 PARSEOP_OPEN_PAREN
64 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
65 ;
66
67 AcquireTerm
68 : PARSEOP_ACQUIRE
69 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp(PARSEOP_ACQUIRE);}
70 SuperName
71 ',' WordConstExpr
72 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$6);}
73 | PARSEOP_ACQUIRE
74 PARSEOP_OPEN_PAREN
75 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
76 ;
77
78 AddTerm
79 : PARSEOP_ADD
80 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_ADD);}
81 TermArg
82 TermArgItem
83 Target
84 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
85 | PARSEOP_ADD
86 PARSEOP_OPEN_PAREN
87 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
88 ;
89
90 AliasTerm
91 : PARSEOP_ALIAS
92 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_ALIAS);}
93 NameString
94 NameStringItem
95 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,
96 TrSetOpFlags ($5, OP_IS_NAME_DECLARATION));}
97 | PARSEOP_ALIAS
98 PARSEOP_OPEN_PAREN
99 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
100 ;
101
102 AndTerm
103 : PARSEOP_AND
104 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_AND);}
105 TermArg
106 TermArgItem
107 Target
108 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
109 | PARSEOP_AND
110 PARSEOP_OPEN_PAREN
111 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
112 ;
113
114 ArgTerm
115 : PARSEOP_ARG0 {$$ = TrCreateLeafOp (PARSEOP_ARG0);}
116 | PARSEOP_ARG1 {$$ = TrCreateLeafOp (PARSEOP_ARG1);}
117 | PARSEOP_ARG2 {$$ = TrCreateLeafOp (PARSEOP_ARG2);}
118 | PARSEOP_ARG3 {$$ = TrCreateLeafOp (PARSEOP_ARG3);}
119 | PARSEOP_ARG4 {$$ = TrCreateLeafOp (PARSEOP_ARG4);}
120 | PARSEOP_ARG5 {$$ = TrCreateLeafOp (PARSEOP_ARG5);}
121 | PARSEOP_ARG6 {$$ = TrCreateLeafOp (PARSEOP_ARG6);}
122 ;
123
124 BankFieldTerm
125 : PARSEOP_BANKFIELD
126 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_BANKFIELD);}
127 NameString
128 NameStringItem
129 TermArgItem
130 OptionalAccessTypeKeyword
131 OptionalLockRuleKeyword
132 OptionalUpdateRuleKeyword
133 PARSEOP_CLOSE_PAREN '{'
134 FieldUnitList '}' {$$ = TrLinkOpChildren ($<n>3,7,
135 $4,$5,$6,$7,$8,$9,$12);}
136 | PARSEOP_BANKFIELD
137 PARSEOP_OPEN_PAREN
138 error PARSEOP_CLOSE_PAREN
139 '{' error '}' {$$ = AslDoError(); yyclearin;}
140 ;
141
142 BreakTerm
143 : PARSEOP_BREAK {$$ = TrCreateOp (PARSEOP_BREAK, 0);}
144 ;
145
146 BreakPointTerm
147 : PARSEOP_BREAKPOINT {$$ = TrCreateOp (PARSEOP_BREAKPOINT, 0);}
148 ;
149
150 BufferTerm
151 : PARSEOP_BUFFER {$<n>$ = TrCreateLeafOp (PARSEOP_BUFFER); COMMENT_CAPTURE_OFF; }
152 OptionalDataCount
153 '{' BufferTermData '}' {$$ = TrLinkOpChildren ($<n>2,2,$3,$5); COMMENT_CAPTURE_ON;}
154 ;
155
156 BufferTermData
157 : ByteList {}
158 | StringData {}
159 ;
160
161 CaseTerm
162 : PARSEOP_CASE
163 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CASE);}
164 DataObject
165 PARSEOP_CLOSE_PAREN '{'
166 TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
167 | PARSEOP_CASE
168 PARSEOP_OPEN_PAREN
169 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
170 ;
171
172 ConcatTerm
173 : PARSEOP_CONCATENATE
174 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CONCATENATE);}
175 TermArg
176 TermArgItem
177 Target
178 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
179 | PARSEOP_CONCATENATE
180 PARSEOP_OPEN_PAREN
181 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
182 ;
183
184 ConcatResTerm
185 : PARSEOP_CONCATENATERESTEMPLATE
186 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (
187 PARSEOP_CONCATENATERESTEMPLATE);}
188 TermArg
189 TermArgItem
190 Target
191 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
192 | PARSEOP_CONCATENATERESTEMPLATE
193 PARSEOP_OPEN_PAREN
194 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
195 ;
196
197 CondRefOfTerm
198 : PARSEOP_CONDREFOF
199 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CONDREFOF);}
200 CondRefOfSource
201 Target
202 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
203 | PARSEOP_CONDREFOF
204 PARSEOP_OPEN_PAREN
205 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
206 ;
207
208 ConnectionTerm
209 : PARSEOP_CONNECTION
210 PARSEOP_OPEN_PAREN
211 NameString
212 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_CONNECTION,1,$3);}
213 | PARSEOP_CONNECTION
214 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CONNECTION);}
215 ResourceMacroTerm
216 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3, 1,
217 TrLinkOpChildren (
218 TrCreateLeafOp (PARSEOP_RESOURCETEMPLATE), 3,
219 TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
220 TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
221 $4));}
222 | PARSEOP_CONNECTION
223 PARSEOP_OPEN_PAREN
224 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
225 ;
226
227 ContinueTerm
228 : PARSEOP_CONTINUE {$$ = TrCreateOp (PARSEOP_CONTINUE, 0);}
229 ;
230
231 CopyObjectTerm
232 : PARSEOP_COPYOBJECT
233 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_COPYOBJECT);}
234 TermArg
235 ',' SimpleName
236 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,
237 TrSetOpFlags ($6, OP_IS_TARGET));}
238 | PARSEOP_COPYOBJECT
239 PARSEOP_OPEN_PAREN
240 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
241 ;
242
243 CreateBitFieldTerm
244 : PARSEOP_CREATEBITFIELD
245 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEBITFIELD);}
246 TermArg
247 TermArgItem
248 NameStringItem
249 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,
250 TrSetOpFlags ($6, OP_IS_NAME_DECLARATION));}
251 | PARSEOP_CREATEBITFIELD
252 PARSEOP_OPEN_PAREN
253 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
254 ;
255
256 CreateByteFieldTerm
257 : PARSEOP_CREATEBYTEFIELD
258 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEBYTEFIELD);}
259 TermArg
260 TermArgItem
261 NameStringItem
262 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,
263 TrSetOpFlags ($6, OP_IS_NAME_DECLARATION));}
264 | PARSEOP_CREATEBYTEFIELD
265 PARSEOP_OPEN_PAREN
266 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
267 ;
268
269 CreateDWordFieldTerm
270 : PARSEOP_CREATEDWORDFIELD
271 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEDWORDFIELD);}
272 TermArg
273 TermArgItem
274 NameStringItem
275 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,
276 TrSetOpFlags ($6, OP_IS_NAME_DECLARATION));}
277 | PARSEOP_CREATEDWORDFIELD
278 PARSEOP_OPEN_PAREN
279 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
280 ;
281
282 CreateFieldTerm
283 : PARSEOP_CREATEFIELD
284 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEFIELD);}
285 TermArg
286 TermArgItem
287 TermArgItem
288 NameStringItem
289 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,$4,$5,$6,
290 TrSetOpFlags ($7, OP_IS_NAME_DECLARATION));}
291 | PARSEOP_CREATEFIELD
292 PARSEOP_OPEN_PAREN
293 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
294 ;
295
296 CreateQWordFieldTerm
297 : PARSEOP_CREATEQWORDFIELD
298 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEQWORDFIELD);}
299 TermArg
300 TermArgItem
301 NameStringItem
302 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,
303 TrSetOpFlags ($6, OP_IS_NAME_DECLARATION));}
304 | PARSEOP_CREATEQWORDFIELD
305 PARSEOP_OPEN_PAREN
306 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
307 ;
308
309 CreateWordFieldTerm
310 : PARSEOP_CREATEWORDFIELD
311 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CREATEWORDFIELD);}
312 TermArg
313 TermArgItem
314 NameStringItem
315 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,
316 TrSetOpFlags ($6, OP_IS_NAME_DECLARATION));}
317 | PARSEOP_CREATEWORDFIELD
318 PARSEOP_OPEN_PAREN
319 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
320 ;
321
322 DataRegionTerm
323 : PARSEOP_DATATABLEREGION
324 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DATATABLEREGION);}
325 NameString
326 TermArgItem
327 TermArgItem
328 TermArgItem
329 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,
330 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$5,$6,$7);}
331 | PARSEOP_DATATABLEREGION
332 PARSEOP_OPEN_PAREN
333 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
334 ;
335
336 DebugTerm
337 : PARSEOP_DEBUG {$$ = TrCreateLeafOp (PARSEOP_DEBUG);}
338 ;
339
340 DecTerm
341 : PARSEOP_DECREMENT
342 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DECREMENT);}
343 SuperName
344 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
345 | PARSEOP_DECREMENT
346 PARSEOP_OPEN_PAREN
347 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
348 ;
349
350 DefaultTerm
351 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafOp (PARSEOP_DEFAULT);}
352 TermList '}' {$$ = TrLinkOpChildren ($<n>3,1,$4);}
353 | PARSEOP_DEFAULT '{'
354 error '}' {$$ = AslDoError(); yyclearin;}
355 ;
356
357 DerefOfTerm
358 : PARSEOP_DEREFOF
359 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DEREFOF);}
360 DerefOfSource
361 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
362 | PARSEOP_DEREFOF
363 PARSEOP_OPEN_PAREN
364 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
365 ;
366
367 DeviceTerm
368 : PARSEOP_DEVICE
369 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DEVICE);}
370 NameString
371 PARSEOP_CLOSE_PAREN '{'
372 TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,
373 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$7);}
374 | PARSEOP_DEVICE
375 PARSEOP_OPEN_PAREN
376 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
377 ;
378
379 DivideTerm
380 : PARSEOP_DIVIDE
381 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DIVIDE);}
382 TermArg
383 TermArgItem
384 Target
385 Target
386 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,$4,$5,$6,$7);}
387 | PARSEOP_DIVIDE
388 PARSEOP_OPEN_PAREN
389 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
390 ;
391
392 EISAIDTerm
393 : PARSEOP_EISAID
394 PARSEOP_OPEN_PAREN
395 StringData
396 PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_EISAID, $3);}
397 | PARSEOP_EISAID
398 PARSEOP_OPEN_PAREN
399 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
400 ;
401
402 ElseIfTerm
403 : IfTerm ElseTerm {$$ = TrLinkPeerOp ($1,$2);}
404 ;
405
406 ElseTerm
407 : {$$ = NULL;}
408 | PARSEOP_ELSE '{'
409 TermList {$<n>$ = TrCreateLeafOp (PARSEOP_ELSE);}
410 '}' {$$ = TrLinkOpChildren ($<n>4,1,$3);}
411
412 | PARSEOP_ELSE '{'
413 error '}' {$$ = AslDoError(); yyclearin;}
414
415 | PARSEOP_ELSE
416 error {$$ = AslDoError(); yyclearin;}
417
418 | PARSEOP_ELSEIF
419 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_ELSE);}
420 TermArg {$<n>$ = TrCreateLeafOp (PARSEOP_IF);}
421 PARSEOP_CLOSE_PAREN '{'
422 TermList '}' {TrLinkOpChildren ($<n>5,2,$4,$8);}
423 ElseTerm {TrLinkPeerOp ($<n>5,$11);}
424 {$$ = TrLinkOpChildren ($<n>3,1,$<n>5);}
425
426 | PARSEOP_ELSEIF
427 PARSEOP_OPEN_PAREN
428 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
429
430 | PARSEOP_ELSEIF
431 error {$$ = AslDoError(); yyclearin;}
432 ;
433
434 EventTerm
435 : PARSEOP_EVENT
436 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_EVENT);}
437 NameString
438 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,
439 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION));}
440 | PARSEOP_EVENT
441 PARSEOP_OPEN_PAREN
442 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
443 ;
444
445 ExternalTerm
446 : PARSEOP_EXTERNAL
447 PARSEOP_OPEN_PAREN
448 NameString
449 OptionalObjectTypeKeyword
450 OptionalParameterTypePackage
451 OptionalParameterTypesPackage
452 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
453 | PARSEOP_EXTERNAL
454 PARSEOP_OPEN_PAREN
455 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
456 ;
457
458 FatalTerm
459 : PARSEOP_FATAL
460 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FATAL);}
461 ByteConstExpr
462 ',' DWordConstExpr
463 TermArgItem
464 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
465 | PARSEOP_FATAL
466 PARSEOP_OPEN_PAREN
467 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
468 ;
469
470 FieldTerm
471 : PARSEOP_FIELD
472 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FIELD);}
473 NameString
474 OptionalAccessTypeKeyword
475 OptionalLockRuleKeyword
476 OptionalUpdateRuleKeyword
477 PARSEOP_CLOSE_PAREN '{'
478 FieldUnitList '}' {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
479 | PARSEOP_FIELD
480 PARSEOP_OPEN_PAREN
481 error PARSEOP_CLOSE_PAREN
482 '{' error '}' {$$ = AslDoError(); yyclearin;}
483 ;
484
485 FindSetLeftBitTerm
486 : PARSEOP_FINDSETLEFTBIT
487 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FINDSETLEFTBIT);}
488 TermArg
489 Target
490 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
491 | PARSEOP_FINDSETLEFTBIT
492 PARSEOP_OPEN_PAREN
493 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
494 ;
495
496 FindSetRightBitTerm
497 : PARSEOP_FINDSETRIGHTBIT
498 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FINDSETRIGHTBIT);}
499 TermArg
500 Target
501 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
502 | PARSEOP_FINDSETRIGHTBIT
503 PARSEOP_OPEN_PAREN
504 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
505 ;
506
507 /* Convert a For() loop to a While() loop */
508 ForTerm
509 : PARSEOP_FOR
510 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WHILE);}
511 OptionalTermArg ',' {}
512 OptionalPredicate ','
513 OptionalTermArg {$<n>$ = TrLinkPeerOp ($4,$<n>3);
514 TrSetOpParent ($9,$<n>3);} /* New parent is WHILE */
515 PARSEOP_CLOSE_PAREN
516 '{' TermList '}' {$<n>$ = TrLinkOpChildren ($<n>3,2,$7,$13);}
517 {$<n>$ = TrLinkPeerOp ($13,$9);
518 $$ = $<n>10;}
519 ;
520
521 OptionalPredicate
522 : {$$ = TrCreateValuedLeafOp (PARSEOP_INTEGER, 1);}
523 | TermArg {$$ = $1;}
524 ;
525
526 FprintfTerm
527 : PARSEOP_FPRINTF
528 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FPRINTF);}
529 TermArg ','
530 StringData
531 PrintfArgList
532 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
533 | PARSEOP_FPRINTF
534 PARSEOP_OPEN_PAREN
535 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
536 ;
537
538 FromBCDTerm
539 : PARSEOP_FROMBCD
540 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_FROMBCD);}
541 TermArg
542 Target
543 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
544 | PARSEOP_FROMBCD
545 PARSEOP_OPEN_PAREN
546 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
547 ;
548
549 FunctionTerm
550 : PARSEOP_FUNCTION
551 PARSEOP_OPEN_PAREN {COMMENT_CAPTURE_OFF; $<n>$ = TrCreateLeafOp (PARSEOP_METHOD); }
552 NameString
553 OptionalParameterTypePackage
554 OptionalParameterTypesPackage
555 PARSEOP_CLOSE_PAREN '{' {COMMENT_CAPTURE_ON; }
556 TermList '}' {$$ = TrLinkOpChildren ($<n>3,7,
557 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),
558 TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
559 TrCreateLeafOp (PARSEOP_SERIALIZERULE_NOTSERIAL),
560 TrCreateValuedLeafOp (PARSEOP_BYTECONST, 0),$5,$6,$10);}
561 | PARSEOP_FUNCTION
562 PARSEOP_OPEN_PAREN
563 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
564 ;
565
566 IfTerm
567 : PARSEOP_IF
568 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_IF);}
569 TermArg
570 PARSEOP_CLOSE_PAREN '{'
571 TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
572
573 | PARSEOP_IF
574 PARSEOP_OPEN_PAREN
575 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
576 ;
577
578 IncludeTerm
579 : PARSEOP_INCLUDE
580 PARSEOP_OPEN_PAREN
581 String
582 PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_INCLUDE, $3);
583 FlOpenIncludeFile ($3);}
584 ;
585
586 IncludeEndTerm
587 : PARSEOP_INCLUDE_END {$<n>$ = TrCreateLeafOp (PARSEOP_INCLUDE_END);
588 TrSetOpCurrentFilename ($$);}
589 ;
590
591 IncTerm
592 : PARSEOP_INCREMENT
593 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_INCREMENT);}
594 SuperName
595 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
596 | PARSEOP_INCREMENT
597 PARSEOP_OPEN_PAREN
598 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
599 ;
600
601 IndexFieldTerm
602 : PARSEOP_INDEXFIELD
603 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_INDEXFIELD);}
604 NameString
605 NameStringItem
606 OptionalAccessTypeKeyword
607 OptionalLockRuleKeyword
608 OptionalUpdateRuleKeyword
609 PARSEOP_CLOSE_PAREN '{'
610 FieldUnitList '}' {$$ = TrLinkOpChildren ($<n>3,6,$4,$5,$6,$7,$8,$11);}
611 | PARSEOP_INDEXFIELD
612 PARSEOP_OPEN_PAREN
613 error PARSEOP_CLOSE_PAREN
614 '{' error '}' {$$ = AslDoError(); yyclearin;}
615 ;
616
617 IndexTerm
618 : PARSEOP_INDEX
619 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_INDEX);}
620 TermArg
621 TermArgItem
622 Target
623 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
624 | PARSEOP_INDEX
625 PARSEOP_OPEN_PAREN
626 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
627 ;
628
629 LAndTerm
630 : PARSEOP_LAND
631 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LAND);}
632 TermArg
633 TermArgItem
634 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
635 | PARSEOP_LAND
636 PARSEOP_OPEN_PAREN
637 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
638 ;
639
640 LEqualTerm
641 : PARSEOP_LEQUAL
642 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LEQUAL);}
643 TermArg
644 TermArgItem
645 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
646 | PARSEOP_LEQUAL
647 PARSEOP_OPEN_PAREN
648 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
649 ;
650
651 LGreaterEqualTerm
652 : PARSEOP_LGREATEREQUAL
653 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LLESS);}
654 TermArg
655 TermArgItem
656 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_LNOT, 1,
657 TrLinkOpChildren ($<n>3,2,$4,$5));}
658 | PARSEOP_LGREATEREQUAL
659 PARSEOP_OPEN_PAREN
660 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
661 ;
662
663 LGreaterTerm
664 : PARSEOP_LGREATER
665 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LGREATER);}
666 TermArg
667 TermArgItem
668 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
669 | PARSEOP_LGREATER
670 PARSEOP_OPEN_PAREN
671 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
672 ;
673
674 LLessEqualTerm
675 : PARSEOP_LLESSEQUAL
676 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LGREATER);}
677 TermArg
678 TermArgItem
679 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_LNOT, 1,
680 TrLinkOpChildren ($<n>3,2,$4,$5));}
681 | PARSEOP_LLESSEQUAL
682 PARSEOP_OPEN_PAREN
683 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
684 ;
685
686 LLessTerm
687 : PARSEOP_LLESS
688 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LLESS);}
689 TermArg
690 TermArgItem
691 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
692 | PARSEOP_LLESS
693 PARSEOP_OPEN_PAREN
694 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
695 ;
696
697 LNotEqualTerm
698 : PARSEOP_LNOTEQUAL
699 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LEQUAL);}
700 TermArg
701 TermArgItem
702 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_LNOT, 1,
703 TrLinkOpChildren ($<n>3,2,$4,$5));}
704 | PARSEOP_LNOTEQUAL
705 PARSEOP_OPEN_PAREN
706 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
707 ;
708
709 LNotTerm
710 : PARSEOP_LNOT
711 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LNOT);}
712 TermArg
713 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
714 | PARSEOP_LNOT
715 PARSEOP_OPEN_PAREN
716 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
717 ;
718
719 LoadTableTerm
720 : PARSEOP_LOADTABLE
721 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LOADTABLE);}
722 TermArg
723 TermArgItem
724 TermArgItem
725 OptionalListString
726 OptionalListString
727 OptionalReference
728 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
729 | PARSEOP_LOADTABLE
730 PARSEOP_OPEN_PAREN
731 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
732 ;
733
734 LoadTerm
735 : PARSEOP_LOAD
736 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LOAD);}
737 NameString
738 RequiredTarget
739 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
740 | PARSEOP_LOAD
741 PARSEOP_OPEN_PAREN
742 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
743 ;
744
745 LocalTerm
746 : PARSEOP_LOCAL0 {$$ = TrCreateLeafOp (PARSEOP_LOCAL0);}
747 | PARSEOP_LOCAL1 {$$ = TrCreateLeafOp (PARSEOP_LOCAL1);}
748 | PARSEOP_LOCAL2 {$$ = TrCreateLeafOp (PARSEOP_LOCAL2);}
749 | PARSEOP_LOCAL3 {$$ = TrCreateLeafOp (PARSEOP_LOCAL3);}
750 | PARSEOP_LOCAL4 {$$ = TrCreateLeafOp (PARSEOP_LOCAL4);}
751 | PARSEOP_LOCAL5 {$$ = TrCreateLeafOp (PARSEOP_LOCAL5);}
752 | PARSEOP_LOCAL6 {$$ = TrCreateLeafOp (PARSEOP_LOCAL6);}
753 | PARSEOP_LOCAL7 {$$ = TrCreateLeafOp (PARSEOP_LOCAL7);}
754 ;
755
756 LOrTerm
757 : PARSEOP_LOR
758 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_LOR);}
759 TermArg
760 TermArgItem
761 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
762 | PARSEOP_LOR
763 PARSEOP_OPEN_PAREN
764 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
765 ;
766
767 MatchTerm
768 : PARSEOP_MATCH
769 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_MATCH);}
770 TermArg
771 ',' MatchOpKeyword
772 TermArgItem
773 ',' MatchOpKeyword
774 TermArgItem
775 TermArgItem
776 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
777 | PARSEOP_MATCH
778 PARSEOP_OPEN_PAREN
779 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
780 ;
781
782 MethodTerm
783 : PARSEOP_METHOD
784 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_METHOD); COMMENT_CAPTURE_OFF;}
785 NameString
786 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
787 OptionalSerializeRuleKeyword
788 OptionalByteConstExpr
789 OptionalParameterTypePackage
790 OptionalParameterTypesPackage
791 PARSEOP_CLOSE_PAREN '{' {COMMENT_CAPTURE_ON;}
792 TermList '}' {$$ = TrLinkOpChildren ($<n>3,7,
793 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),
794 $5,$7,$8,$9,$10,$14);}
795 | PARSEOP_METHOD
796 PARSEOP_OPEN_PAREN
797 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
798 ;
799
800 MidTerm
801 : PARSEOP_MID
802 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_MID);}
803 TermArg
804 TermArgItem
805 TermArgItem
806 Target
807 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,$4,$5,$6,$7);}
808 | PARSEOP_MID
809 PARSEOP_OPEN_PAREN
810 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
811 ;
812
813 ModTerm
814 : PARSEOP_MOD
815 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_MOD);}
816 TermArg
817 TermArgItem
818 Target
819 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
820 | PARSEOP_MOD
821 PARSEOP_OPEN_PAREN
822 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
823 ;
824
825 MultiplyTerm
826 : PARSEOP_MULTIPLY
827 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_MULTIPLY);}
828 TermArg
829 TermArgItem
830 Target
831 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
832 | PARSEOP_MULTIPLY
833 PARSEOP_OPEN_PAREN
834 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
835 ;
836
837 MutexTerm
838 : PARSEOP_MUTEX
839 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_MUTEX);}
840 NameString
841 OptionalSyncLevel
842 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,
843 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$5);}
844 | PARSEOP_MUTEX
845 PARSEOP_OPEN_PAREN
846 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
847 ;
848
849 NameTerm
850 : PARSEOP_NAME
851 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_NAME);}
852 NameString
853 ',' DataObject
854 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,
855 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$6);}
856 | PARSEOP_NAME
857 PARSEOP_OPEN_PAREN
858 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
859 ;
860
861 NAndTerm
862 : PARSEOP_NAND
863 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_NAND);}
864 TermArg
865 TermArgItem
866 Target
867 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
868 | PARSEOP_NAND
869 PARSEOP_OPEN_PAREN
870 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
871 ;
872
873 NoOpTerm
874 : PARSEOP_NOOP {$$ = TrCreateOp (PARSEOP_NOOP, 0);}
875 ;
876
877 NOrTerm
878 : PARSEOP_NOR
879 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_NOR);}
880 TermArg
881 TermArgItem
882 Target
883 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
884 | PARSEOP_NOR
885 PARSEOP_OPEN_PAREN
886 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
887 ;
888
889 NotifyTerm
890 : PARSEOP_NOTIFY
891 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_NOTIFY);}
892 SuperName
893 TermArgItem
894 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
895 | PARSEOP_NOTIFY
896 PARSEOP_OPEN_PAREN
897 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
898 ;
899
900 NotTerm
901 : PARSEOP_NOT
902 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_NOT);}
903 TermArg
904 Target
905 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
906 | PARSEOP_NOT
907 PARSEOP_OPEN_PAREN
908 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
909 ;
910
911 ObjectTypeTerm
912 : PARSEOP_OBJECTTYPE
913 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_OBJECTTYPE);}
914 ObjectTypeSource
915 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
916 | PARSEOP_OBJECTTYPE
917 PARSEOP_OPEN_PAREN
918 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
919 ;
920
921 OffsetTerm
922 : PARSEOP_OFFSET
923 PARSEOP_OPEN_PAREN
924 AmlPackageLengthTerm
925 PARSEOP_CLOSE_PAREN {$$ = TrCreateOp (PARSEOP_OFFSET,1,$3);}
926 | PARSEOP_OFFSET
927 PARSEOP_OPEN_PAREN
928 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
929 ;
930
931 OpRegionTerm
932 : PARSEOP_OPERATIONREGION
933 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_OPERATIONREGION);}
934 NameString
935 ',' OpRegionSpaceIdTerm
936 TermArgItem
937 TermArgItem
938 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,
939 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),
940 $6,$7,$8);}
941 | PARSEOP_OPERATIONREGION
942 PARSEOP_OPEN_PAREN
943 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
944 ;
945
946 OpRegionSpaceIdTerm
947 : RegionSpaceKeyword {}
948 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
949 ;
950
951 OrTerm
952 : PARSEOP_OR
953 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_OR);}
954 TermArg
955 TermArgItem
956 Target
957 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
958 | PARSEOP_OR
959 PARSEOP_OPEN_PAREN
960 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
961 ;
962
963 PackageTerm
964 : PARSEOP_PACKAGE {$<n>$ = TrCreateLeafOp (PARSEOP_VAR_PACKAGE);}
965 OptionalDataCount
966 '{' PackageList '}' {$$ = TrLinkOpChildren ($<n>2,2,$3,$5);}
967
968 PowerResTerm
969 : PARSEOP_POWERRESOURCE
970 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_POWERRESOURCE);}
971 NameString
972 ',' ByteConstExpr
973 ',' WordConstExpr
974 PARSEOP_CLOSE_PAREN '{'
975 TermList '}' {$$ = TrLinkOpChildren ($<n>3,4,
976 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),
977 $6,$8,$11);}
978 | PARSEOP_POWERRESOURCE
979 PARSEOP_OPEN_PAREN
980 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
981 ;
982
983 PrintfTerm
984 : PARSEOP_PRINTF
985 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_PRINTF);}
986 StringData
987 PrintfArgList
988 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
989 | PARSEOP_PRINTF
990 PARSEOP_OPEN_PAREN
991 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
992 ;
993
994 PrintfArgList
995 : {$$ = NULL;}
996 | TermArg {$$ = $1;}
997 | PrintfArgList ','
998 TermArg {$$ = TrLinkPeerOp ($1, $3);}
999 ;
1000
1001 ProcessorTerm
1002 : PARSEOP_PROCESSOR
1003 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_PROCESSOR);}
1004 NameString
1005 ',' ByteConstExpr
1006 OptionalDWordConstExpr
1007 OptionalByteConstExpr
1008 PARSEOP_CLOSE_PAREN '{'
1009 TermList '}' {$$ = TrLinkOpChildren ($<n>3,5,
1010 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),
1011 $6,$7,$8,$11);}
1012 | PARSEOP_PROCESSOR
1013 PARSEOP_OPEN_PAREN
1014 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1015 ;
1016
1017 RawDataBufferTerm
1018 : PARSEOP_DATABUFFER
1019 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DATABUFFER);}
1020 OptionalWordConst
1021 PARSEOP_CLOSE_PAREN '{'
1022 ByteList '}' {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
1023 | PARSEOP_DATABUFFER
1024 PARSEOP_OPEN_PAREN
1025 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1026 ;
1027
1028 /*
1029 * In RefOf, the node isn't really a target, but we can't keep track of it after
1030 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1031 */
1032 RefOfTerm
1033 : PARSEOP_REFOF
1034 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_REFOF);}
1035 RefOfSource
1036 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,
1037 TrSetOpFlags ($4, OP_IS_TARGET));}
1038 | PARSEOP_REFOF
1039 PARSEOP_OPEN_PAREN
1040 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1041 ;
1042
1043 ReleaseTerm
1044 : PARSEOP_RELEASE
1045 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_RELEASE);}
1046 SuperName
1047 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1048 | PARSEOP_RELEASE
1049 PARSEOP_OPEN_PAREN
1050 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1051 ;
1052
1053 ResetTerm
1054 : PARSEOP_RESET
1055 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_RESET);}
1056 SuperName
1057 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1058 | PARSEOP_RESET
1059 PARSEOP_OPEN_PAREN
1060 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1061 ;
1062
1063 ReturnTerm
1064 : PARSEOP_RETURN
1065 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_RETURN);}
1066 OptionalReturnArg
1067 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1068 | PARSEOP_RETURN {$$ = TrLinkOpChildren (
1069 TrCreateLeafOp (PARSEOP_RETURN),1,
1070 TrSetOpFlags (TrCreateLeafOp (PARSEOP_ZERO),
1071 OP_IS_NULL_RETURN));}
1072 | PARSEOP_RETURN
1073 PARSEOP_OPEN_PAREN
1074 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1075 ;
1076
1077 ScopeTerm
1078 : PARSEOP_SCOPE
1079 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SCOPE);}
1080 NameString
1081 PARSEOP_CLOSE_PAREN '{'
1082 TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,
1083 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$7);}
1084 | PARSEOP_SCOPE
1085 PARSEOP_OPEN_PAREN
1086 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1087 ;
1088
1089 ShiftLeftTerm
1090 : PARSEOP_SHIFTLEFT
1091 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SHIFTLEFT);}
1092 TermArg
1093 TermArgItem
1094 Target
1095 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
1096 | PARSEOP_SHIFTLEFT
1097 PARSEOP_OPEN_PAREN
1098 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1099 ;
1100
1101 ShiftRightTerm
1102 : PARSEOP_SHIFTRIGHT
1103 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SHIFTRIGHT);}
1104 TermArg
1105 TermArgItem
1106 Target
1107 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
1108 | PARSEOP_SHIFTRIGHT
1109 PARSEOP_OPEN_PAREN
1110 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1111 ;
1112
1113 SignalTerm
1114 : PARSEOP_SIGNAL
1115 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SIGNAL);}
1116 SuperName
1117 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1118 | PARSEOP_SIGNAL
1119 PARSEOP_OPEN_PAREN
1120 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1121 ;
1122
1123 SizeOfTerm
1124 : PARSEOP_SIZEOF
1125 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SIZEOF);}
1126 SuperName
1127 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1128 | PARSEOP_SIZEOF
1129 PARSEOP_OPEN_PAREN
1130 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1131 ;
1132
1133 SleepTerm
1134 : PARSEOP_SLEEP
1135 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SLEEP);}
1136 TermArg
1137 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1138 | PARSEOP_SLEEP
1139 PARSEOP_OPEN_PAREN
1140 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1141 ;
1142
1143 StallTerm
1144 : PARSEOP_STALL
1145 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_STALL);}
1146 TermArg
1147 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1148 | PARSEOP_STALL
1149 PARSEOP_OPEN_PAREN
1150 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1151 ;
1152
1153 StoreTerm
1154 : PARSEOP_STORE
1155 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_STORE);}
1156 TermArg
1157 ',' SuperName
1158 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,
1159 TrSetOpFlags ($6, OP_IS_TARGET));}
1160 | PARSEOP_STORE
1161 PARSEOP_OPEN_PAREN
1162 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1163 ;
1164
1165 SubtractTerm
1166 : PARSEOP_SUBTRACT
1167 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SUBTRACT);}
1168 TermArg
1169 TermArgItem
1170 Target
1171 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
1172 | PARSEOP_SUBTRACT
1173 PARSEOP_OPEN_PAREN
1174 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1175 ;
1176
1177 SwitchTerm
1178 : PARSEOP_SWITCH
1179 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_SWITCH);}
1180 TermArg
1181 PARSEOP_CLOSE_PAREN '{'
1182 CaseDefaultTermList '}' {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
1183 | PARSEOP_SWITCH
1184 PARSEOP_OPEN_PAREN
1185 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1186 ;
1187
1188 ThermalZoneTerm
1189 : PARSEOP_THERMALZONE
1190 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_THERMALZONE);}
1191 NameString
1192 PARSEOP_CLOSE_PAREN '{'
1193 TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,
1194 TrSetOpFlags ($4, OP_IS_NAME_DECLARATION),$7);}
1195 | PARSEOP_THERMALZONE
1196 PARSEOP_OPEN_PAREN
1197 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1198 ;
1199
1200 TimerTerm
1201 : PARSEOP_TIMER
1202 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TIMER);}
1203 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,0);}
1204 | PARSEOP_TIMER {$$ = TrLinkOpChildren (
1205 TrCreateLeafOp (PARSEOP_TIMER),0);}
1206 | PARSEOP_TIMER
1207 PARSEOP_OPEN_PAREN
1208 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1209 ;
1210
1211 ToBCDTerm
1212 : PARSEOP_TOBCD
1213 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOBCD);}
1214 TermArg
1215 Target
1216 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1217 | PARSEOP_TOBCD
1218 PARSEOP_OPEN_PAREN
1219 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1220 ;
1221
1222 ToBufferTerm
1223 : PARSEOP_TOBUFFER
1224 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOBUFFER);}
1225 TermArg
1226 Target
1227 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1228 | PARSEOP_TOBUFFER
1229 PARSEOP_OPEN_PAREN
1230 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1231 ;
1232
1233 ToDecimalStringTerm
1234 : PARSEOP_TODECIMALSTRING
1235 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TODECIMALSTRING);}
1236 TermArg
1237 Target
1238 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1239 | PARSEOP_TODECIMALSTRING
1240 PARSEOP_OPEN_PAREN
1241 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1242 ;
1243
1244 ToHexStringTerm
1245 : PARSEOP_TOHEXSTRING
1246 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOHEXSTRING);}
1247 TermArg
1248 Target
1249 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1250 | PARSEOP_TOHEXSTRING
1251 PARSEOP_OPEN_PAREN
1252 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1253 ;
1254
1255 ToIntegerTerm
1256 : PARSEOP_TOINTEGER
1257 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOINTEGER);}
1258 TermArg
1259 Target
1260 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1261 | PARSEOP_TOINTEGER
1262 PARSEOP_OPEN_PAREN
1263 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1264 ;
1265
1266 ToPLDTerm
1267 : PARSEOP_TOPLD
1268 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOPLD);}
1269 PldKeywordList
1270 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1271 | PARSEOP_TOPLD
1272 PARSEOP_OPEN_PAREN
1273 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1274 ;
1275
1276 PldKeywordList
1277 : {$$ = NULL;}
1278 | PldKeyword
1279 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkOpChildren ($1,1,$3);}
1280 | PldKeyword
1281 PARSEOP_EXP_EQUALS String {$$ = TrLinkOpChildren ($1,1,$3);}
1282 | PldKeywordList ',' /* Allows a trailing comma at list end */
1283 | PldKeywordList ','
1284 PldKeyword
1285 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerOp ($1,TrLinkOpChildren ($3,1,$5));}
1286 | PldKeywordList ','
1287 PldKeyword
1288 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerOp ($1,TrLinkOpChildren ($3,1,$5));}
1289 ;
1290
1291
1292 ToStringTerm
1293 : PARSEOP_TOSTRING
1294 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_TOSTRING);}
1295 TermArg
1296 OptionalCount
1297 Target
1298 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
1299 | PARSEOP_TOSTRING
1300 PARSEOP_OPEN_PAREN
1301 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1302 ;
1303
1304 ToUUIDTerm
1305 : PARSEOP_TOUUID
1306 PARSEOP_OPEN_PAREN
1307 StringData
1308 PARSEOP_CLOSE_PAREN {$$ = TrSetOpIntegerValue (PARSEOP_TOUUID, $3);}
1309 | PARSEOP_TOUUID
1310 PARSEOP_OPEN_PAREN
1311 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1312 ;
1313
1314 UnicodeTerm
1315 : PARSEOP_UNICODE
1316 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_UNICODE);}
1317 StringData
1318 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,0,$4);}
1319 | PARSEOP_UNICODE
1320 PARSEOP_OPEN_PAREN
1321 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1322 ;
1323
1324 UnloadTerm
1325 : PARSEOP_UNLOAD
1326 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_UNLOAD);}
1327 SuperName
1328 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,1,$4);}
1329 | PARSEOP_UNLOAD
1330 PARSEOP_OPEN_PAREN
1331 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1332 ;
1333
1334 WaitTerm
1335 : PARSEOP_WAIT
1336 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WAIT);}
1337 SuperName
1338 TermArgItem
1339 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
1340 | PARSEOP_WAIT
1341 PARSEOP_OPEN_PAREN
1342 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1343 ;
1344
1345 XOrTerm
1346 : PARSEOP_XOR
1347 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_XOR);}
1348 TermArg
1349 TermArgItem
1350 Target
1351 PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,3,$4,$5,$6);}
1352 | PARSEOP_XOR
1353 PARSEOP_OPEN_PAREN
1354 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1355 ;
1356
1357 WhileTerm
1358 : PARSEOP_WHILE
1359 PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WHILE);}
1360 TermArg
1361 PARSEOP_CLOSE_PAREN
1362 '{' TermList '}' {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
1363 | PARSEOP_WHILE
1364 PARSEOP_OPEN_PAREN
1365 error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
1366 ;
1367