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