aslrules.y revision 1.1.1.1.2.6 1 1.1 christos NoEcho('
2 1.1 christos /******************************************************************************
3 1.1 christos *
4 1.1.1.1.2.2 skrll * Module Name: aslrules.y - Main Bison/Yacc production rules
5 1.1.1.1.2.6 skrll * - Keep this file synched with the
6 1.1.1.1.2.6 skrll * CvParseOpBlockType function in cvcompiler.c
7 1.1 christos *
8 1.1 christos *****************************************************************************/
9 1.1 christos
10 1.1 christos /*
11 1.1.1.1.2.5 skrll * Copyright (C) 2000 - 2017, Intel Corp.
12 1.1 christos * All rights reserved.
13 1.1 christos *
14 1.1 christos * Redistribution and use in source and binary forms, with or without
15 1.1 christos * modification, are permitted provided that the following conditions
16 1.1 christos * are met:
17 1.1 christos * 1. Redistributions of source code must retain the above copyright
18 1.1 christos * notice, this list of conditions, and the following disclaimer,
19 1.1 christos * without modification.
20 1.1 christos * 2. Redistributions in binary form must reproduce at minimum a disclaimer
21 1.1 christos * substantially similar to the "NO WARRANTY" disclaimer below
22 1.1 christos * ("Disclaimer") and any redistribution must be conditioned upon
23 1.1 christos * including a substantially similar Disclaimer requirement for further
24 1.1 christos * binary redistribution.
25 1.1 christos * 3. Neither the names of the above-listed copyright holders nor the names
26 1.1 christos * of any contributors may be used to endorse or promote products derived
27 1.1 christos * from this software without specific prior written permission.
28 1.1 christos *
29 1.1 christos * Alternatively, this software may be distributed under the terms of the
30 1.1 christos * GNU General Public License ("GPL") version 2 as published by the Free
31 1.1 christos * Software Foundation.
32 1.1 christos *
33 1.1 christos * NO WARRANTY
34 1.1 christos * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35 1.1 christos * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36 1.1 christos * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
37 1.1 christos * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
38 1.1 christos * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39 1.1 christos * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 1.1 christos * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41 1.1 christos * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
42 1.1 christos * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
43 1.1 christos * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44 1.1 christos * POSSIBILITY OF SUCH DAMAGES.
45 1.1 christos */
46 1.1 christos
47 1.1 christos ')
48 1.1 christos
49 1.1 christos /*******************************************************************************
50 1.1 christos *
51 1.1.1.1.2.2 skrll * ASL Root and Secondary Terms
52 1.1 christos *
53 1.1 christos ******************************************************************************/
54 1.1 christos
55 1.1 christos /*
56 1.1.1.1.2.2 skrll * Root term. Allow multiple #line directives before the definition block
57 1.1 christos * to handle output from preprocessors
58 1.1 christos */
59 1.1.1.1.2.2 skrll AslCode
60 1.1.1.1.2.4 skrll : DefinitionBlockList {$<n>$ = TrLinkChildren (
61 1.1.1.1.2.4 skrll TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
62 1.1 christos | error {YYABORT; $$ = NULL;}
63 1.1 christos ;
64 1.1 christos
65 1.1 christos
66 1.1 christos /*
67 1.1 christos * Note concerning support for "module-level code".
68 1.1 christos *
69 1.1 christos * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
70 1.1 christos * methods (the so-called module-level code.) This support was explicitly
71 1.1 christos * removed in ACPI 2.0, but this type of code continues to be created by
72 1.1 christos * BIOS vendors. In order to support the disassembly and recompilation of
73 1.1 christos * such code (and the porting of ASL code to iASL), iASL supports this
74 1.1 christos * code in violation of the current ACPI specification.
75 1.1 christos *
76 1.1 christos * The grammar change to support module-level code is to revert the
77 1.1 christos * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
78 1.1 christos * original use of {TermList} instead (see below.) This allows the use
79 1.1 christos * of Type1 and Type2 opcodes at module level.
80 1.1.1.1.2.3 skrll *
81 1.1.1.1.2.3 skrll * 04/2016: The module-level code is now allowed in the following terms:
82 1.1.1.1.2.3 skrll * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
83 1.1.1.1.2.3 skrll * The ObjectList term is obsolete and has been removed.
84 1.1 christos */
85 1.1 christos DefinitionBlockTerm
86 1.1.1.1.2.5 skrll : PARSEOP_DEFINITION_BLOCK
87 1.1.1.1.2.6 skrll PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK); COMMENT_CAPTURE_OFF;}
88 1.1 christos String ','
89 1.1 christos String ','
90 1.1 christos ByteConst ','
91 1.1 christos String ','
92 1.1 christos String ','
93 1.1 christos DWordConst
94 1.1.1.1.2.6 skrll PARSEOP_CLOSE_PAREN {TrSetEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}
95 1.1.1.1.2.4 skrll '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,
96 1.1.1.1.2.4 skrll $4,$6,$8,$10,$12,$14,$18);}
97 1.1 christos ;
98 1.1 christos
99 1.1.1.1.2.2 skrll DefinitionBlockList
100 1.1.1.1.2.2 skrll : DefinitionBlockTerm
101 1.1.1.1.2.2 skrll | DefinitionBlockTerm
102 1.1.1.1.2.2 skrll DefinitionBlockList {$$ = TrLinkPeerNodes (2, $1,$2);}
103 1.1.1.1.2.1 skrll ;
104 1.1.1.1.2.1 skrll
105 1.1.1.1.2.5 skrll
106 1.1.1.1.2.5 skrll /******* Basic ASCII identifiers **************************************************/
107 1.1.1.1.2.5 skrll
108 1.1.1.1.2.4 skrll /* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
109 1.1.1.1.2.4 skrll
110 1.1.1.1.2.4 skrll NameString
111 1.1.1.1.2.4 skrll : NameSeg {}
112 1.1.1.1.2.4 skrll | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) $1);}
113 1.1.1.1.2.4 skrll | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
114 1.1.1.1.2.4 skrll | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
115 1.1.1.1.2.4 skrll | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
116 1.1.1.1.2.4 skrll | PARSEOP_FOR {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "FOR");}
117 1.1.1.1.2.4 skrll ;
118 1.1.1.1.2.4 skrll /*
119 1.1.1.1.2.4 skrll NameSeg
120 1.1.1.1.2.4 skrll : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
121 1.1.1.1.2.5 skrll TrNormalizeNameSeg ($1));}
122 1.1.1.1.2.4 skrll ;
123 1.1.1.1.2.4 skrll */
124 1.1.1.1.2.4 skrll
125 1.1.1.1.2.4 skrll NameSeg
126 1.1.1.1.2.4 skrll : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
127 1.1.1.1.2.5 skrll (ACPI_NATIVE_INT) AslCompilerlval.s);}
128 1.1.1.1.2.4 skrll ;
129 1.1.1.1.2.4 skrll
130 1.1.1.1.2.4 skrll
131 1.1.1.1.2.5 skrll /******* Fundamental argument/statement types ***********************************/
132 1.1.1.1.2.5 skrll
133 1.1.1.1.2.5 skrll Term
134 1.1.1.1.2.5 skrll : Object {}
135 1.1.1.1.2.5 skrll | Type1Opcode {}
136 1.1.1.1.2.5 skrll | Type2Opcode {}
137 1.1.1.1.2.5 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
138 1.1.1.1.2.5 skrll | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
139 1.1.1.1.2.5 skrll | Type2BufferOpcode {}
140 1.1.1.1.2.5 skrll | Type2BufferOrStringOpcode {}
141 1.1.1.1.2.5 skrll | error {$$ = AslDoError(); yyclearin;}
142 1.1.1.1.2.5 skrll ;
143 1.1.1.1.2.5 skrll
144 1.1.1.1.2.2 skrll SuperName
145 1.1.1.1.2.5 skrll : SimpleName {}
146 1.1.1.1.2.2 skrll | DebugTerm {}
147 1.1.1.1.2.2 skrll | Type6Opcode {}
148 1.1.1.1.2.4 skrll ;
149 1.1.1.1.2.1 skrll
150 1.1.1.1.2.2 skrll Target
151 1.1.1.1.2.2 skrll : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
152 1.1.1.1.2.2 skrll | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
153 1.1.1.1.2.2 skrll | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
154 1.1 christos ;
155 1.1 christos
156 1.1.1.1.2.5 skrll RequiredTarget
157 1.1.1.1.2.5 skrll : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
158 1.1.1.1.2.5 skrll ;
159 1.1.1.1.2.5 skrll
160 1.1.1.1.2.2 skrll TermArg
161 1.1.1.1.2.5 skrll : SimpleName {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
162 1.1.1.1.2.5 skrll | Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
163 1.1.1.1.2.2 skrll | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
164 1.1.1.1.2.5 skrll /*
165 1.1.1.1.2.5 skrll | PARSEOP_OPEN_PAREN
166 1.1.1.1.2.5 skrll TermArg
167 1.1.1.1.2.5 skrll PARSEOP_CLOSE_PAREN {}
168 1.1.1.1.2.5 skrll */
169 1.1 christos ;
170 1.1 christos
171 1.1.1.1.2.2 skrll /*
172 1.1.1.1.2.2 skrll NOTE: Removed from TermArg due to reduce/reduce conflicts:
173 1.1.1.1.2.2 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
174 1.1.1.1.2.2 skrll | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
175 1.1.1.1.2.2 skrll | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
176 1.1.1.1.2.2 skrll | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
177 1.1 christos
178 1.1.1.1.2.2 skrll */
179 1.1 christos
180 1.1.1.1.2.2 skrll MethodInvocationTerm
181 1.1.1.1.2.5 skrll : NameString
182 1.1.1.1.2.6 skrll PARSEOP_OPEN_PAREN {TrUpdateNode (PARSEOP_METHODCALL, $1); COMMENT_CAPTURE_OFF;}
183 1.1.1.1.2.5 skrll ArgList
184 1.1.1.1.2.6 skrll PARSEOP_CLOSE_PAREN {$$ = TrLinkChildNode ($1,$4); COMMENT_CAPTURE_ON;}
185 1.1 christos ;
186 1.1 christos
187 1.1.1.1.2.2 skrll /* OptionalCount must appear before ByteList or an incorrect reduction will result */
188 1.1 christos
189 1.1.1.1.2.2 skrll OptionalCount
190 1.1.1.1.2.2 skrll : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
191 1.1.1.1.2.2 skrll | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
192 1.1.1.1.2.2 skrll | ',' TermArg {$$ = $2;}
193 1.1 christos ;
194 1.1 christos
195 1.1.1.1.2.4 skrll /*
196 1.1.1.1.2.4 skrll * Data count for buffers and packages (byte count for buffers,
197 1.1.1.1.2.4 skrll * element count for packages).
198 1.1.1.1.2.4 skrll */
199 1.1.1.1.2.4 skrll OptionalDataCount
200 1.1.1.1.2.4 skrll
201 1.1.1.1.2.4 skrll /* Legacy ASL */
202 1.1.1.1.2.4 skrll : {$$ = NULL;}
203 1.1.1.1.2.5 skrll | PARSEOP_OPEN_PAREN
204 1.1.1.1.2.5 skrll TermArg
205 1.1.1.1.2.5 skrll PARSEOP_CLOSE_PAREN {$$ = $2;}
206 1.1.1.1.2.5 skrll | PARSEOP_OPEN_PAREN
207 1.1.1.1.2.5 skrll PARSEOP_CLOSE_PAREN {$$ = NULL;}
208 1.1.1.1.2.4 skrll
209 1.1.1.1.2.4 skrll /* C-style (ASL+) -- adds equals term */
210 1.1.1.1.2.4 skrll
211 1.1.1.1.2.4 skrll | PARSEOP_EXP_EQUALS {$$ = NULL;}
212 1.1.1.1.2.4 skrll
213 1.1.1.1.2.5 skrll | PARSEOP_OPEN_PAREN
214 1.1.1.1.2.5 skrll TermArg
215 1.1.1.1.2.5 skrll PARSEOP_CLOSE_PAREN
216 1.1.1.1.2.4 skrll PARSEOP_EXP_EQUALS {$$ = $2;}
217 1.1.1.1.2.4 skrll
218 1.1.1.1.2.5 skrll | PARSEOP_OPEN_PAREN
219 1.1.1.1.2.5 skrll PARSEOP_CLOSE_PAREN
220 1.1.1.1.2.5 skrll String
221 1.1.1.1.2.4 skrll PARSEOP_EXP_EQUALS {$$ = NULL;}
222 1.1 christos ;
223 1.1 christos
224 1.1 christos
225 1.1.1.1.2.2 skrll /******* List Terms **************************************************/
226 1.1 christos
227 1.1.1.1.2.5 skrll /* ACPI 3.0 -- allow semicolons between terms */
228 1.1.1.1.2.5 skrll
229 1.1.1.1.2.5 skrll TermList
230 1.1.1.1.2.5 skrll : {$$ = NULL;}
231 1.1.1.1.2.5 skrll | TermList Term {$$ = TrLinkPeerNode (
232 1.1.1.1.2.5 skrll TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
233 1.1.1.1.2.5 skrll | TermList Term ';' {$$ = TrLinkPeerNode (
234 1.1.1.1.2.5 skrll TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
235 1.1.1.1.2.5 skrll | TermList ';' Term {$$ = TrLinkPeerNode (
236 1.1.1.1.2.5 skrll TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
237 1.1.1.1.2.5 skrll | TermList ';' Term ';' {$$ = TrLinkPeerNode (
238 1.1.1.1.2.5 skrll TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
239 1.1.1.1.2.5 skrll ;
240 1.1.1.1.2.5 skrll
241 1.1.1.1.2.2 skrll ArgList
242 1.1.1.1.2.2 skrll : {$$ = NULL;}
243 1.1.1.1.2.2 skrll | TermArg
244 1.1.1.1.2.2 skrll | ArgList ',' /* Allows a trailing comma at list end */
245 1.1.1.1.2.2 skrll | ArgList ','
246 1.1.1.1.2.2 skrll TermArg {$$ = TrLinkPeerNode ($1,$3);}
247 1.1 christos ;
248 1.1 christos
249 1.1.1.1.2.2 skrll ByteList
250 1.1.1.1.2.2 skrll : {$$ = NULL;}
251 1.1.1.1.2.2 skrll | ByteConstExpr
252 1.1.1.1.2.2 skrll | ByteList ',' /* Allows a trailing comma at list end */
253 1.1.1.1.2.2 skrll | ByteList ','
254 1.1.1.1.2.2 skrll ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
255 1.1 christos ;
256 1.1 christos
257 1.1.1.1.2.2 skrll DWordList
258 1.1.1.1.2.2 skrll : {$$ = NULL;}
259 1.1.1.1.2.2 skrll | DWordConstExpr
260 1.1.1.1.2.2 skrll | DWordList ',' /* Allows a trailing comma at list end */
261 1.1.1.1.2.2 skrll | DWordList ','
262 1.1.1.1.2.2 skrll DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
263 1.1 christos ;
264 1.1 christos
265 1.1.1.1.2.2 skrll FieldUnitList
266 1.1 christos : {$$ = NULL;}
267 1.1.1.1.2.2 skrll | FieldUnit
268 1.1.1.1.2.2 skrll | FieldUnitList ',' /* Allows a trailing comma at list end */
269 1.1.1.1.2.2 skrll | FieldUnitList ','
270 1.1.1.1.2.2 skrll FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
271 1.1 christos ;
272 1.1 christos
273 1.1.1.1.2.2 skrll FieldUnit
274 1.1.1.1.2.2 skrll : FieldUnitEntry {}
275 1.1.1.1.2.2 skrll | OffsetTerm {}
276 1.1.1.1.2.2 skrll | AccessAsTerm {}
277 1.1.1.1.2.2 skrll | ConnectionTerm {}
278 1.1.1.1.2.2 skrll ;
279 1.1 christos
280 1.1.1.1.2.2 skrll FieldUnitEntry
281 1.1.1.1.2.2 skrll : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
282 1.1.1.1.2.2 skrll | NameSeg ','
283 1.1.1.1.2.2 skrll AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
284 1.1.1.1.2.2 skrll ;
285 1.1 christos
286 1.1.1.1.2.2 skrll Object
287 1.1.1.1.2.2 skrll : CompilerDirective {}
288 1.1.1.1.2.2 skrll | NamedObject {}
289 1.1.1.1.2.2 skrll | NameSpaceModifier {}
290 1.1.1.1.2.4 skrll // | StructureTerm {}
291 1.1 christos ;
292 1.1 christos
293 1.1.1.1.2.2 skrll PackageList
294 1.1.1.1.2.2 skrll : {$$ = NULL;}
295 1.1.1.1.2.2 skrll | PackageElement
296 1.1.1.1.2.2 skrll | PackageList ',' /* Allows a trailing comma at list end */
297 1.1.1.1.2.2 skrll | PackageList ','
298 1.1.1.1.2.2 skrll PackageElement {$$ = TrLinkPeerNode ($1,$3);}
299 1.1 christos ;
300 1.1 christos
301 1.1.1.1.2.2 skrll PackageElement
302 1.1.1.1.2.2 skrll : DataObject {}
303 1.1.1.1.2.2 skrll | NameString {}
304 1.1 christos ;
305 1.1 christos
306 1.1.1.1.2.2 skrll /* Rules for specifying the type of one method argument or return value */
307 1.1 christos
308 1.1 christos ParameterTypePackage
309 1.1 christos : {$$ = NULL;}
310 1.1 christos | ObjectTypeKeyword {$$ = $1;}
311 1.1 christos | ParameterTypePackage ','
312 1.1 christos ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
313 1.1 christos ;
314 1.1 christos
315 1.1 christos ParameterTypePackageList
316 1.1 christos : {$$ = NULL;}
317 1.1 christos | ObjectTypeKeyword {$$ = $1;}
318 1.1 christos | '{' ParameterTypePackage '}' {$$ = $2;}
319 1.1 christos ;
320 1.1 christos
321 1.1 christos OptionalParameterTypePackage
322 1.1 christos : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
323 1.1.1.1.2.4 skrll | ',' ParameterTypePackageList {$$ = TrLinkChildren (
324 1.1.1.1.2.4 skrll TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
325 1.1 christos ;
326 1.1 christos
327 1.1.1.1.2.2 skrll /* Rules for specifying the types for method arguments */
328 1.1 christos
329 1.1 christos ParameterTypesPackage
330 1.1 christos : ParameterTypePackageList {$$ = $1;}
331 1.1 christos | ParameterTypesPackage ','
332 1.1 christos ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
333 1.1 christos ;
334 1.1 christos
335 1.1 christos ParameterTypesPackageList
336 1.1 christos : {$$ = NULL;}
337 1.1 christos | ObjectTypeKeyword {$$ = $1;}
338 1.1 christos | '{' ParameterTypesPackage '}' {$$ = $2;}
339 1.1 christos ;
340 1.1 christos
341 1.1 christos OptionalParameterTypesPackage
342 1.1 christos : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
343 1.1.1.1.2.4 skrll | ',' ParameterTypesPackageList {$$ = TrLinkChildren (
344 1.1.1.1.2.4 skrll TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
345 1.1 christos ;
346 1.1 christos
347 1.1 christos /*
348 1.1.1.1.2.2 skrll * Case-Default list; allow only one Default term and unlimited Case terms
349 1.1 christos */
350 1.1.1.1.2.2 skrll CaseDefaultTermList
351 1.1.1.1.2.2 skrll : {$$ = NULL;}
352 1.1.1.1.2.5 skrll | CaseTerm {}
353 1.1.1.1.2.5 skrll | DefaultTerm {}
354 1.1.1.1.2.2 skrll | CaseDefaultTermList
355 1.1.1.1.2.2 skrll CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
356 1.1.1.1.2.2 skrll | CaseDefaultTermList
357 1.1.1.1.2.2 skrll DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
358 1.1 christos
359 1.1.1.1.2.2 skrll /* Original - attempts to force zero or one default term within the switch */
360 1.1.1.1.2.2 skrll
361 1.1.1.1.2.2 skrll /*
362 1.1.1.1.2.2 skrll CaseDefaultTermList
363 1.1.1.1.2.2 skrll : {$$ = NULL;}
364 1.1.1.1.2.2 skrll | CaseTermList
365 1.1.1.1.2.2 skrll DefaultTerm
366 1.1.1.1.2.2 skrll CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
367 1.1.1.1.2.2 skrll | CaseTermList
368 1.1.1.1.2.2 skrll CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
369 1.1.1.1.2.2 skrll ;
370 1.1.1.1.2.2 skrll
371 1.1.1.1.2.2 skrll CaseTermList
372 1.1.1.1.2.2 skrll : {$$ = NULL;}
373 1.1.1.1.2.2 skrll | CaseTerm {}
374 1.1.1.1.2.2 skrll | CaseTermList
375 1.1.1.1.2.2 skrll CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
376 1.1.1.1.2.2 skrll ;
377 1.1.1.1.2.2 skrll */
378 1.1.1.1.2.2 skrll
379 1.1.1.1.2.2 skrll
380 1.1.1.1.2.2 skrll /*******************************************************************************
381 1.1.1.1.2.2 skrll *
382 1.1.1.1.2.2 skrll * ASL Data and Constant Terms
383 1.1.1.1.2.2 skrll *
384 1.1.1.1.2.2 skrll ******************************************************************************/
385 1.1.1.1.2.2 skrll
386 1.1.1.1.2.2 skrll DataObject
387 1.1.1.1.2.2 skrll : BufferData {}
388 1.1.1.1.2.2 skrll | PackageData {}
389 1.1.1.1.2.2 skrll | IntegerData {}
390 1.1.1.1.2.2 skrll | StringData {}
391 1.1.1.1.2.2 skrll ;
392 1.1.1.1.2.2 skrll
393 1.1.1.1.2.2 skrll BufferData
394 1.1.1.1.2.2 skrll : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
395 1.1.1.1.2.2 skrll | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
396 1.1.1.1.2.2 skrll | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
397 1.1.1.1.2.2 skrll | BufferTerm {}
398 1.1.1.1.2.2 skrll ;
399 1.1.1.1.2.2 skrll
400 1.1.1.1.2.2 skrll PackageData
401 1.1.1.1.2.2 skrll : PackageTerm {}
402 1.1.1.1.2.2 skrll ;
403 1.1.1.1.2.2 skrll
404 1.1.1.1.2.2 skrll IntegerData
405 1.1.1.1.2.2 skrll : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
406 1.1.1.1.2.2 skrll | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
407 1.1.1.1.2.2 skrll | Integer {}
408 1.1.1.1.2.2 skrll | ConstTerm {}
409 1.1.1.1.2.2 skrll ;
410 1.1.1.1.2.2 skrll
411 1.1.1.1.2.2 skrll StringData
412 1.1.1.1.2.2 skrll : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
413 1.1.1.1.2.2 skrll | String {}
414 1.1.1.1.2.2 skrll ;
415 1.1.1.1.2.2 skrll
416 1.1.1.1.2.2 skrll ByteConst
417 1.1.1.1.2.2 skrll : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
418 1.1.1.1.2.2 skrll ;
419 1.1.1.1.2.2 skrll
420 1.1.1.1.2.2 skrll WordConst
421 1.1.1.1.2.2 skrll : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
422 1.1.1.1.2.2 skrll ;
423 1.1.1.1.2.2 skrll
424 1.1.1.1.2.2 skrll DWordConst
425 1.1.1.1.2.2 skrll : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
426 1.1.1.1.2.2 skrll ;
427 1.1.1.1.2.2 skrll
428 1.1.1.1.2.2 skrll QWordConst
429 1.1.1.1.2.2 skrll : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
430 1.1.1.1.2.2 skrll ;
431 1.1.1.1.2.2 skrll
432 1.1.1.1.2.2 skrll /*
433 1.1.1.1.2.2 skrll * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
434 1.1.1.1.2.2 skrll * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
435 1.1.1.1.2.2 skrll * to simple integers. It is an error if these types of expressions cannot be
436 1.1.1.1.2.2 skrll * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
437 1.1.1.1.2.2 skrll * Note: The required byte length of the constant is passed through to the
438 1.1.1.1.2.2 skrll * constant folding code in the node AmlLength field.
439 1.1.1.1.2.2 skrll */
440 1.1.1.1.2.2 skrll ByteConstExpr
441 1.1.1.1.2.4 skrll : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
442 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 1);}
443 1.1.1.1.2.4 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
444 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 1);}
445 1.1.1.1.2.2 skrll | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
446 1.1.1.1.2.2 skrll | ByteConst {}
447 1.1.1.1.2.2 skrll ;
448 1.1.1.1.2.2 skrll
449 1.1.1.1.2.2 skrll WordConstExpr
450 1.1.1.1.2.4 skrll : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
451 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 2);}
452 1.1.1.1.2.4 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
453 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 2);}
454 1.1.1.1.2.2 skrll | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
455 1.1.1.1.2.2 skrll | WordConst {}
456 1.1.1.1.2.2 skrll ;
457 1.1.1.1.2.2 skrll
458 1.1.1.1.2.2 skrll DWordConstExpr
459 1.1.1.1.2.4 skrll : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
460 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 4);}
461 1.1.1.1.2.4 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
462 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 4);}
463 1.1.1.1.2.2 skrll | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
464 1.1.1.1.2.2 skrll | DWordConst {}
465 1.1.1.1.2.2 skrll ;
466 1.1.1.1.2.2 skrll
467 1.1.1.1.2.2 skrll QWordConstExpr
468 1.1.1.1.2.4 skrll : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
469 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 8);}
470 1.1.1.1.2.4 skrll | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
471 1.1.1.1.2.4 skrll TrSetNodeAmlLength ($1, 8);}
472 1.1.1.1.2.2 skrll | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
473 1.1.1.1.2.2 skrll | QWordConst {}
474 1.1.1.1.2.2 skrll ;
475 1.1.1.1.2.2 skrll
476 1.1.1.1.2.2 skrll ConstTerm
477 1.1.1.1.2.2 skrll : ConstExprTerm {}
478 1.1.1.1.2.2 skrll | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
479 1.1.1.1.2.2 skrll ;
480 1.1.1.1.2.2 skrll
481 1.1.1.1.2.2 skrll ConstExprTerm
482 1.1.1.1.2.2 skrll : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
483 1.1.1.1.2.2 skrll | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
484 1.1.1.1.2.2 skrll | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
485 1.1.1.1.2.2 skrll | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
486 1.1.1.1.2.2 skrll | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
487 1.1.1.1.2.2 skrll | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
488 1.1.1.1.2.2 skrll | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
489 1.1.1.1.2.2 skrll ;
490 1.1.1.1.2.2 skrll
491 1.1.1.1.2.2 skrll Integer
492 1.1.1.1.2.4 skrll : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER,
493 1.1.1.1.2.4 skrll AslCompilerlval.i);}
494 1.1.1.1.2.2 skrll ;
495 1.1.1.1.2.2 skrll
496 1.1.1.1.2.2 skrll String
497 1.1.1.1.2.4 skrll : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
498 1.1.1.1.2.4 skrll (ACPI_NATIVE_INT) AslCompilerlval.s);}
499 1.1.1.1.2.2 skrll ;
500 1.1.1.1.2.2 skrll
501 1.1.1.1.2.2 skrll
502 1.1.1.1.2.2 skrll /*******************************************************************************
503 1.1.1.1.2.2 skrll *
504 1.1.1.1.2.2 skrll * ASL Opcode Terms
505 1.1.1.1.2.2 skrll *
506 1.1.1.1.2.2 skrll ******************************************************************************/
507 1.1.1.1.2.2 skrll
508 1.1.1.1.2.2 skrll CompilerDirective
509 1.1.1.1.2.2 skrll : IncludeTerm {}
510 1.1.1.1.2.2 skrll | IncludeEndTerm {}
511 1.1.1.1.2.2 skrll | ExternalTerm {}
512 1.1.1.1.2.2 skrll ;
513 1.1.1.1.2.2 skrll
514 1.1.1.1.2.2 skrll NamedObject
515 1.1.1.1.2.2 skrll : BankFieldTerm {}
516 1.1.1.1.2.2 skrll | CreateBitFieldTerm {}
517 1.1.1.1.2.2 skrll | CreateByteFieldTerm {}
518 1.1.1.1.2.2 skrll | CreateDWordFieldTerm {}
519 1.1.1.1.2.2 skrll | CreateFieldTerm {}
520 1.1.1.1.2.2 skrll | CreateQWordFieldTerm {}
521 1.1.1.1.2.2 skrll | CreateWordFieldTerm {}
522 1.1.1.1.2.2 skrll | DataRegionTerm {}
523 1.1.1.1.2.2 skrll | DeviceTerm {}
524 1.1.1.1.2.2 skrll | EventTerm {}
525 1.1.1.1.2.2 skrll | FieldTerm {}
526 1.1.1.1.2.2 skrll | FunctionTerm {}
527 1.1.1.1.2.2 skrll | IndexFieldTerm {}
528 1.1.1.1.2.2 skrll | MethodTerm {}
529 1.1.1.1.2.2 skrll | MutexTerm {}
530 1.1.1.1.2.2 skrll | OpRegionTerm {}
531 1.1.1.1.2.2 skrll | PowerResTerm {}
532 1.1.1.1.2.2 skrll | ProcessorTerm {}
533 1.1.1.1.2.2 skrll | ThermalZoneTerm {}
534 1.1.1.1.2.2 skrll ;
535 1.1.1.1.2.2 skrll
536 1.1.1.1.2.2 skrll NameSpaceModifier
537 1.1.1.1.2.2 skrll : AliasTerm {}
538 1.1.1.1.2.2 skrll | NameTerm {}
539 1.1.1.1.2.4 skrll // | NameTermAslPlus {}
540 1.1.1.1.2.2 skrll | ScopeTerm {}
541 1.1.1.1.2.2 skrll ;
542 1.1.1.1.2.2 skrll
543 1.1.1.1.2.5 skrll SimpleName
544 1.1.1.1.2.2 skrll : NameString {}
545 1.1.1.1.2.2 skrll | LocalTerm {}
546 1.1.1.1.2.5 skrll | ArgTerm {}
547 1.1.1.1.2.5 skrll ;
548 1.1.1.1.2.5 skrll
549 1.1.1.1.2.5 skrll /* For ObjectType(), SuperName except for MethodInvocationTerm */
550 1.1.1.1.2.5 skrll
551 1.1.1.1.2.5 skrll ObjectTypeSource
552 1.1.1.1.2.5 skrll : SimpleName {}
553 1.1.1.1.2.2 skrll | DebugTerm {}
554 1.1.1.1.2.2 skrll | RefOfTerm {}
555 1.1.1.1.2.2 skrll | DerefOfTerm {}
556 1.1.1.1.2.2 skrll | IndexTerm {}
557 1.1.1.1.2.4 skrll | IndexExpTerm {}
558 1.1.1.1.2.2 skrll ;
559 1.1.1.1.2.2 skrll
560 1.1.1.1.2.5 skrll /* For DeRefOf(), SuperName except for DerefOf and Debug */
561 1.1.1.1.2.5 skrll
562 1.1.1.1.2.5 skrll DerefOfSource
563 1.1.1.1.2.5 skrll : SimpleName {}
564 1.1.1.1.2.5 skrll | RefOfTerm {}
565 1.1.1.1.2.5 skrll | DerefOfTerm {}
566 1.1.1.1.2.5 skrll | IndexTerm {}
567 1.1.1.1.2.5 skrll | IndexExpTerm {}
568 1.1.1.1.2.5 skrll | StoreTerm {}
569 1.1.1.1.2.5 skrll | EqualsTerm {}
570 1.1.1.1.2.5 skrll | MethodInvocationTerm {}
571 1.1.1.1.2.2 skrll ;
572 1.1.1.1.2.2 skrll
573 1.1.1.1.2.5 skrll /* For RefOf(), SuperName except for RefOf and MethodInvocationTerm */
574 1.1.1.1.2.5 skrll
575 1.1.1.1.2.5 skrll RefOfSource
576 1.1.1.1.2.5 skrll : SimpleName {}
577 1.1.1.1.2.5 skrll | DebugTerm {}
578 1.1.1.1.2.5 skrll | DerefOfTerm {}
579 1.1.1.1.2.5 skrll | IndexTerm {}
580 1.1.1.1.2.5 skrll | IndexExpTerm {}
581 1.1.1.1.2.2 skrll ;
582 1.1.1.1.2.2 skrll
583 1.1.1.1.2.5 skrll /* For CondRefOf(), SuperName except for RefOf and MethodInvocationTerm */
584 1.1.1.1.2.5 skrll
585 1.1.1.1.2.5 skrll CondRefOfSource
586 1.1.1.1.2.5 skrll : SimpleName {}
587 1.1.1.1.2.5 skrll | DebugTerm {}
588 1.1.1.1.2.5 skrll | DerefOfTerm {}
589 1.1.1.1.2.5 skrll | IndexTerm {}
590 1.1.1.1.2.5 skrll | IndexExpTerm {}
591 1.1.1.1.2.5 skrll ;
592 1.1.1.1.2.2 skrll
593 1.1.1.1.2.5 skrll /*
594 1.1.1.1.2.5 skrll * Opcode types, as defined in the ACPI specification
595 1.1.1.1.2.5 skrll */
596 1.1.1.1.2.2 skrll Type1Opcode
597 1.1.1.1.2.2 skrll : BreakTerm {}
598 1.1.1.1.2.2 skrll | BreakPointTerm {}
599 1.1.1.1.2.2 skrll | ContinueTerm {}
600 1.1.1.1.2.2 skrll | FatalTerm {}
601 1.1.1.1.2.3 skrll | ForTerm {}
602 1.1.1.1.2.2 skrll | ElseIfTerm {}
603 1.1.1.1.2.2 skrll | LoadTerm {}
604 1.1.1.1.2.2 skrll | NoOpTerm {}
605 1.1.1.1.2.2 skrll | NotifyTerm {}
606 1.1.1.1.2.2 skrll | ReleaseTerm {}
607 1.1.1.1.2.2 skrll | ResetTerm {}
608 1.1.1.1.2.2 skrll | ReturnTerm {}
609 1.1.1.1.2.2 skrll | SignalTerm {}
610 1.1.1.1.2.2 skrll | SleepTerm {}
611 1.1.1.1.2.2 skrll | StallTerm {}
612 1.1.1.1.2.2 skrll | SwitchTerm {}
613 1.1.1.1.2.2 skrll | UnloadTerm {}
614 1.1.1.1.2.2 skrll | WhileTerm {}
615 1.1.1.1.2.2 skrll ;
616 1.1.1.1.2.2 skrll
617 1.1.1.1.2.2 skrll Type2Opcode
618 1.1.1.1.2.2 skrll : AcquireTerm {}
619 1.1.1.1.2.2 skrll | CondRefOfTerm {}
620 1.1.1.1.2.2 skrll | CopyObjectTerm {}
621 1.1.1.1.2.2 skrll | DerefOfTerm {}
622 1.1.1.1.2.2 skrll | ObjectTypeTerm {}
623 1.1.1.1.2.2 skrll | RefOfTerm {}
624 1.1.1.1.2.2 skrll | SizeOfTerm {}
625 1.1.1.1.2.2 skrll | StoreTerm {}
626 1.1.1.1.2.2 skrll | EqualsTerm {}
627 1.1.1.1.2.2 skrll | TimerTerm {}
628 1.1.1.1.2.2 skrll | WaitTerm {}
629 1.1.1.1.2.2 skrll | MethodInvocationTerm {}
630 1.1.1.1.2.2 skrll ;
631 1.1.1.1.2.2 skrll
632 1.1.1.1.2.2 skrll /*
633 1.1.1.1.2.2 skrll * Type 3/4/5 opcodes
634 1.1.1.1.2.2 skrll */
635 1.1.1.1.2.2 skrll Type2IntegerOpcode /* "Type3" opcodes */
636 1.1.1.1.2.2 skrll : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
637 1.1.1.1.2.2 skrll | AddTerm {}
638 1.1.1.1.2.2 skrll | AndTerm {}
639 1.1 christos | DecTerm {}
640 1.1 christos | DivideTerm {}
641 1.1 christos | FindSetLeftBitTerm {}
642 1.1 christos | FindSetRightBitTerm {}
643 1.1 christos | FromBCDTerm {}
644 1.1 christos | IncTerm {}
645 1.1 christos | IndexTerm {}
646 1.1.1.1.2.4 skrll // | StructureIndexTerm {}
647 1.1.1.1.2.4 skrll // | StructurePointerTerm {}
648 1.1 christos | LAndTerm {}
649 1.1 christos | LEqualTerm {}
650 1.1 christos | LGreaterTerm {}
651 1.1 christos | LGreaterEqualTerm {}
652 1.1 christos | LLessTerm {}
653 1.1 christos | LLessEqualTerm {}
654 1.1 christos | LNotTerm {}
655 1.1 christos | LNotEqualTerm {}
656 1.1 christos | LoadTableTerm {}
657 1.1 christos | LOrTerm {}
658 1.1 christos | MatchTerm {}
659 1.1 christos | ModTerm {}
660 1.1 christos | MultiplyTerm {}
661 1.1 christos | NAndTerm {}
662 1.1 christos | NOrTerm {}
663 1.1 christos | NotTerm {}
664 1.1 christos | OrTerm {}
665 1.1 christos | ShiftLeftTerm {}
666 1.1 christos | ShiftRightTerm {}
667 1.1 christos | SubtractTerm {}
668 1.1 christos | ToBCDTerm {}
669 1.1 christos | ToIntegerTerm {}
670 1.1 christos | XOrTerm {}
671 1.1 christos ;
672 1.1 christos
673 1.1 christos Type2StringOpcode /* "Type4" Opcodes */
674 1.1 christos : ToDecimalStringTerm {}
675 1.1 christos | ToHexStringTerm {}
676 1.1 christos | ToStringTerm {}
677 1.1 christos ;
678 1.1 christos
679 1.1 christos Type2BufferOpcode /* "Type5" Opcodes */
680 1.1 christos : ToBufferTerm {}
681 1.1 christos | ConcatResTerm {}
682 1.1 christos ;
683 1.1 christos
684 1.1 christos Type2BufferOrStringOpcode
685 1.1.1.1.2.1 skrll : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
686 1.1.1.1.2.1 skrll | PrintfTerm {}
687 1.1.1.1.2.1 skrll | FprintfTerm {}
688 1.1 christos | MidTerm {}
689 1.1 christos ;
690 1.1 christos
691 1.1 christos /*
692 1.1 christos * A type 3 opcode evaluates to an Integer and cannot have a destination operand
693 1.1 christos */
694 1.1 christos Type3Opcode
695 1.1 christos : EISAIDTerm {}
696 1.1 christos ;
697 1.1 christos
698 1.1 christos /* Obsolete
699 1.1 christos Type4Opcode
700 1.1 christos : ConcatTerm {}
701 1.1 christos | ToDecimalStringTerm {}
702 1.1 christos | ToHexStringTerm {}
703 1.1 christos | MidTerm {}
704 1.1 christos | ToStringTerm {}
705 1.1 christos ;
706 1.1 christos */
707 1.1 christos
708 1.1.1.1.2.4 skrll /* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
709 1.1.1.1.2.4 skrll
710 1.1 christos Type5Opcode
711 1.1 christos : ResourceTemplateTerm {}
712 1.1 christos | UnicodeTerm {}
713 1.1.1.1.2.1 skrll | ToPLDTerm {}
714 1.1 christos | ToUUIDTerm {}
715 1.1 christos ;
716 1.1 christos
717 1.1 christos Type6Opcode
718 1.1 christos : RefOfTerm {}
719 1.1 christos | DerefOfTerm {}
720 1.1 christos | IndexTerm {}
721 1.1.1.1.2.2 skrll | IndexExpTerm {}
722 1.1.1.1.2.4 skrll // | StructureIndexTerm {}
723 1.1.1.1.2.4 skrll // | StructurePointerTerm {}
724 1.1.1.1.2.1 skrll | MethodInvocationTerm {}
725 1.1 christos ;
726 1.1 christos
727 1.1 christos
728 1.1.1.1.2.2 skrll /*******************************************************************************
729 1.1.1.1.2.2 skrll *
730 1.1.1.1.2.2 skrll * ASL Helper Terms
731 1.1.1.1.2.2 skrll *
732 1.1.1.1.2.2 skrll ******************************************************************************/
733 1.1 christos
734 1.1 christos AmlPackageLengthTerm
735 1.1.1.1.2.4 skrll : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,
736 1.1.1.1.2.4 skrll (ACPI_PARSE_OBJECT *) $1);}
737 1.1 christos ;
738 1.1 christos
739 1.1 christos NameStringItem
740 1.1 christos : ',' NameString {$$ = $2;}
741 1.1 christos | ',' error {$$ = AslDoError (); yyclearin;}
742 1.1 christos ;
743 1.1 christos
744 1.1 christos TermArgItem
745 1.1 christos : ',' TermArg {$$ = $2;}
746 1.1 christos | ',' error {$$ = AslDoError (); yyclearin;}
747 1.1 christos ;
748 1.1 christos
749 1.1 christos OptionalReference
750 1.1 christos : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
751 1.1 christos | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
752 1.1 christos | ',' TermArg {$$ = $2;}
753 1.1 christos ;
754 1.1 christos
755 1.1 christos OptionalReturnArg
756 1.1.1.1.2.4 skrll : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
757 1.1.1.1.2.4 skrll NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
758 1.1 christos | TermArg {$$ = $1;}
759 1.1 christos ;
760 1.1 christos
761 1.1 christos OptionalSerializeRuleKeyword
762 1.1 christos : {$$ = NULL;}
763 1.1 christos | ',' {$$ = NULL;}
764 1.1 christos | ',' SerializeRuleKeyword {$$ = $2;}
765 1.1 christos ;
766 1.1 christos
767 1.1 christos OptionalTermArg
768 1.1.1.1.2.3 skrll : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
769 1.1.1.1.2.3 skrll | TermArg {$$ = $1;}
770 1.1.1.1.2.3 skrll ;
771 1.1.1.1.2.3 skrll
772 1.1 christos OptionalWordConst
773 1.1 christos : {$$ = NULL;}
774 1.1 christos | WordConst {$$ = $1;}
775 1.1 christos ;
776