xref: /freebsd/sys/contrib/dev/acpica/compiler/aslrules.y (revision f8146b882bc156c1d8ddf14bbea67253ebc064bb)
1313a0c13SJung-uk Kim NoEcho('
2313a0c13SJung-uk Kim /******************************************************************************
3313a0c13SJung-uk Kim  *
4*f8146b88SJung-uk Kim  * Module Name: aslrules.y - Main Bison/Yacc production rules
5313a0c13SJung-uk Kim  *
6313a0c13SJung-uk Kim  *****************************************************************************/
7313a0c13SJung-uk Kim 
8313a0c13SJung-uk Kim /*
9*f8146b88SJung-uk Kim  * Copyright (C) 2000 - 2016, Intel Corp.
10313a0c13SJung-uk Kim  * All rights reserved.
11313a0c13SJung-uk Kim  *
12313a0c13SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
13313a0c13SJung-uk Kim  * modification, are permitted provided that the following conditions
14313a0c13SJung-uk Kim  * are met:
15313a0c13SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
16313a0c13SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
17313a0c13SJung-uk Kim  *    without modification.
18313a0c13SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19313a0c13SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
20313a0c13SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
21313a0c13SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
22313a0c13SJung-uk Kim  *    binary redistribution.
23313a0c13SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
24313a0c13SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
25313a0c13SJung-uk Kim  *    from this software without specific prior written permission.
26313a0c13SJung-uk Kim  *
27313a0c13SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
28313a0c13SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
29313a0c13SJung-uk Kim  * Software Foundation.
30313a0c13SJung-uk Kim  *
31313a0c13SJung-uk Kim  * NO WARRANTY
32313a0c13SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33313a0c13SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34313a0c13SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35313a0c13SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36313a0c13SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37313a0c13SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38313a0c13SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39313a0c13SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40313a0c13SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41313a0c13SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42313a0c13SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
43313a0c13SJung-uk Kim  */
44313a0c13SJung-uk Kim 
45313a0c13SJung-uk Kim ')
46313a0c13SJung-uk Kim 
47313a0c13SJung-uk Kim /*******************************************************************************
48313a0c13SJung-uk Kim  *
49*f8146b88SJung-uk Kim  * ASL Root and Secondary Terms
50313a0c13SJung-uk Kim  *
51313a0c13SJung-uk Kim  ******************************************************************************/
52313a0c13SJung-uk Kim 
53313a0c13SJung-uk Kim /*
54*f8146b88SJung-uk Kim  * Root term. Allow multiple #line directives before the definition block
55313a0c13SJung-uk Kim  * to handle output from preprocessors
56313a0c13SJung-uk Kim  */
57*f8146b88SJung-uk Kim AslCode
58*f8146b88SJung-uk Kim     : DefinitionBlockList           {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
59313a0c13SJung-uk Kim     | error                         {YYABORT; $$ = NULL;}
60313a0c13SJung-uk Kim     ;
61313a0c13SJung-uk Kim 
62313a0c13SJung-uk Kim 
63313a0c13SJung-uk Kim /*
64313a0c13SJung-uk Kim  * Note concerning support for "module-level code".
65313a0c13SJung-uk Kim  *
66313a0c13SJung-uk Kim  * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
67313a0c13SJung-uk Kim  * methods (the so-called module-level code.) This support was explicitly
68313a0c13SJung-uk Kim  * removed in ACPI 2.0, but this type of code continues to be created by
69313a0c13SJung-uk Kim  * BIOS vendors. In order to support the disassembly and recompilation of
70313a0c13SJung-uk Kim  * such code (and the porting of ASL code to iASL), iASL supports this
71313a0c13SJung-uk Kim  * code in violation of the current ACPI specification.
72313a0c13SJung-uk Kim  *
73313a0c13SJung-uk Kim  * The grammar change to support module-level code is to revert the
74313a0c13SJung-uk Kim  * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
75313a0c13SJung-uk Kim  * original use of {TermList} instead (see below.) This allows the use
76313a0c13SJung-uk Kim  * of Type1 and Type2 opcodes at module level.
77*f8146b88SJung-uk Kim  *
78*f8146b88SJung-uk Kim  * 04/2016: The module-level code is now allowed in the following terms:
79*f8146b88SJung-uk Kim  * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
80*f8146b88SJung-uk Kim  * The ObjectList term is obsolete and has been removed.
81313a0c13SJung-uk Kim  */
82313a0c13SJung-uk Kim DefinitionBlockTerm
83*f8146b88SJung-uk Kim     : PARSEOP_DEFINITION_BLOCK '('  {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK);}
84313a0c13SJung-uk Kim         String ','
85313a0c13SJung-uk Kim         String ','
86313a0c13SJung-uk Kim         ByteConst ','
87313a0c13SJung-uk Kim         String ','
88313a0c13SJung-uk Kim         String ','
89313a0c13SJung-uk Kim         DWordConst
90313a0c13SJung-uk Kim         ')'                         {TrSetEndLineNumber ($<n>3);}
91313a0c13SJung-uk Kim             '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
92313a0c13SJung-uk Kim     ;
93313a0c13SJung-uk Kim 
94*f8146b88SJung-uk Kim DefinitionBlockList
95*f8146b88SJung-uk Kim     : DefinitionBlockTerm
96*f8146b88SJung-uk Kim     | DefinitionBlockTerm
97*f8146b88SJung-uk Kim         DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
981c0e1b6dSJung-uk Kim     ;
991c0e1b6dSJung-uk Kim 
100*f8146b88SJung-uk Kim SuperName
101*f8146b88SJung-uk Kim     : NameString                    {}
102*f8146b88SJung-uk Kim     | ArgTerm                       {}
103*f8146b88SJung-uk Kim     | LocalTerm                     {}
104*f8146b88SJung-uk Kim     | DebugTerm                     {}
105*f8146b88SJung-uk Kim     | Type6Opcode                   {}
1061c0e1b6dSJung-uk Kim 
107*f8146b88SJung-uk Kim Target
108*f8146b88SJung-uk Kim     :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
109*f8146b88SJung-uk Kim     | ','                           {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
110*f8146b88SJung-uk Kim     | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
1111c0e1b6dSJung-uk Kim     ;
1121c0e1b6dSJung-uk Kim 
113313a0c13SJung-uk Kim TermArg
1147cf3e94aSJung-uk Kim     : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
115313a0c13SJung-uk Kim     | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
116313a0c13SJung-uk Kim     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
117313a0c13SJung-uk Kim     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
118313a0c13SJung-uk Kim     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
119313a0c13SJung-uk Kim     ;
120313a0c13SJung-uk Kim 
121*f8146b88SJung-uk Kim /*
122*f8146b88SJung-uk Kim  NOTE: Removed from TermArg due to reduce/reduce conflicts:
123*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
124*f8146b88SJung-uk Kim     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
125*f8146b88SJung-uk Kim     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
126*f8146b88SJung-uk Kim     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
127*f8146b88SJung-uk Kim 
128*f8146b88SJung-uk Kim */
129*f8146b88SJung-uk Kim 
130*f8146b88SJung-uk Kim MethodInvocationTerm
131*f8146b88SJung-uk Kim     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
132*f8146b88SJung-uk Kim         ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
133313a0c13SJung-uk Kim     ;
134313a0c13SJung-uk Kim 
135*f8146b88SJung-uk Kim /* OptionalCount must appear before ByteList or an incorrect reduction will result */
136*f8146b88SJung-uk Kim 
137*f8146b88SJung-uk Kim OptionalCount
138*f8146b88SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
139*f8146b88SJung-uk Kim     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
140*f8146b88SJung-uk Kim     | ',' TermArg                   {$$ = $2;}
141313a0c13SJung-uk Kim     ;
142313a0c13SJung-uk Kim 
143*f8146b88SJung-uk Kim VarPackageLengthTerm
144*f8146b88SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
145*f8146b88SJung-uk Kim     | TermArg                       {$$ = $1;}
146*f8146b88SJung-uk Kim     ;
147*f8146b88SJung-uk Kim 
148*f8146b88SJung-uk Kim 
149*f8146b88SJung-uk Kim /******* List Terms **************************************************/
150*f8146b88SJung-uk Kim 
151*f8146b88SJung-uk Kim ArgList
152*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
153*f8146b88SJung-uk Kim     | TermArg
154*f8146b88SJung-uk Kim     | ArgList ','                   /* Allows a trailing comma at list end */
155*f8146b88SJung-uk Kim     | ArgList ','
156*f8146b88SJung-uk Kim         TermArg                     {$$ = TrLinkPeerNode ($1,$3);}
157*f8146b88SJung-uk Kim     ;
158*f8146b88SJung-uk Kim 
159*f8146b88SJung-uk Kim ByteList
160*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
161*f8146b88SJung-uk Kim     | ByteConstExpr
162*f8146b88SJung-uk Kim     | ByteList ','                  /* Allows a trailing comma at list end */
163*f8146b88SJung-uk Kim     | ByteList ','
164*f8146b88SJung-uk Kim         ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
165*f8146b88SJung-uk Kim     ;
166*f8146b88SJung-uk Kim 
167*f8146b88SJung-uk Kim DWordList
168*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
169*f8146b88SJung-uk Kim     | DWordConstExpr
170*f8146b88SJung-uk Kim     | DWordList ','                 /* Allows a trailing comma at list end */
171*f8146b88SJung-uk Kim     | DWordList ','
172*f8146b88SJung-uk Kim         DWordConstExpr              {$$ = TrLinkPeerNode ($1,$3);}
173*f8146b88SJung-uk Kim     ;
174*f8146b88SJung-uk Kim 
175*f8146b88SJung-uk Kim FieldUnitList
176*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
177*f8146b88SJung-uk Kim     | FieldUnit
178*f8146b88SJung-uk Kim     | FieldUnitList ','             /* Allows a trailing comma at list end */
179*f8146b88SJung-uk Kim     | FieldUnitList ','
180*f8146b88SJung-uk Kim         FieldUnit                   {$$ = TrLinkPeerNode ($1,$3);}
181*f8146b88SJung-uk Kim     ;
182*f8146b88SJung-uk Kim 
183*f8146b88SJung-uk Kim FieldUnit
184*f8146b88SJung-uk Kim     : FieldUnitEntry                {}
185*f8146b88SJung-uk Kim     | OffsetTerm                    {}
186*f8146b88SJung-uk Kim     | AccessAsTerm                  {}
187*f8146b88SJung-uk Kim     | ConnectionTerm                {}
188*f8146b88SJung-uk Kim     ;
189*f8146b88SJung-uk Kim 
190*f8146b88SJung-uk Kim FieldUnitEntry
191*f8146b88SJung-uk Kim     : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
192*f8146b88SJung-uk Kim     | NameSeg ','
193*f8146b88SJung-uk Kim         AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
194*f8146b88SJung-uk Kim     ;
195*f8146b88SJung-uk Kim 
196*f8146b88SJung-uk Kim Object
197*f8146b88SJung-uk Kim     : CompilerDirective             {}
198*f8146b88SJung-uk Kim     | NamedObject                   {}
199*f8146b88SJung-uk Kim     | NameSpaceModifier             {}
200*f8146b88SJung-uk Kim     ;
201*f8146b88SJung-uk Kim 
202*f8146b88SJung-uk Kim PackageList
203*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
204*f8146b88SJung-uk Kim     | PackageElement
205*f8146b88SJung-uk Kim     | PackageList ','               /* Allows a trailing comma at list end */
206*f8146b88SJung-uk Kim     | PackageList ','
207*f8146b88SJung-uk Kim         PackageElement              {$$ = TrLinkPeerNode ($1,$3);}
208*f8146b88SJung-uk Kim     ;
209*f8146b88SJung-uk Kim 
210*f8146b88SJung-uk Kim PackageElement
211*f8146b88SJung-uk Kim     : DataObject                    {}
212*f8146b88SJung-uk Kim     | NameString                    {}
213313a0c13SJung-uk Kim     ;
214313a0c13SJung-uk Kim 
215313a0c13SJung-uk Kim     /* Rules for specifying the type of one method argument or return value */
216313a0c13SJung-uk Kim 
217313a0c13SJung-uk Kim ParameterTypePackage
218313a0c13SJung-uk Kim     :                               {$$ = NULL;}
219313a0c13SJung-uk Kim     | ObjectTypeKeyword             {$$ = $1;}
220313a0c13SJung-uk Kim     | ParameterTypePackage ','
221313a0c13SJung-uk Kim         ObjectTypeKeyword           {$$ = TrLinkPeerNodes (2,$1,$3);}
222313a0c13SJung-uk Kim     ;
223313a0c13SJung-uk Kim 
224313a0c13SJung-uk Kim ParameterTypePackageList
225313a0c13SJung-uk Kim     :                               {$$ = NULL;}
226313a0c13SJung-uk Kim     | ObjectTypeKeyword             {$$ = $1;}
227313a0c13SJung-uk Kim     | '{' ParameterTypePackage '}'  {$$ = $2;}
228313a0c13SJung-uk Kim     ;
229313a0c13SJung-uk Kim 
230313a0c13SJung-uk Kim OptionalParameterTypePackage
231313a0c13SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
232313a0c13SJung-uk Kim     | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
233313a0c13SJung-uk Kim     ;
234313a0c13SJung-uk Kim 
235313a0c13SJung-uk Kim     /* Rules for specifying the types for method arguments */
236313a0c13SJung-uk Kim 
237313a0c13SJung-uk Kim ParameterTypesPackage
238313a0c13SJung-uk Kim     : ParameterTypePackageList      {$$ = $1;}
239313a0c13SJung-uk Kim     | ParameterTypesPackage ','
240313a0c13SJung-uk Kim         ParameterTypePackageList    {$$ = TrLinkPeerNodes (2,$1,$3);}
241313a0c13SJung-uk Kim     ;
242313a0c13SJung-uk Kim 
243313a0c13SJung-uk Kim ParameterTypesPackageList
244313a0c13SJung-uk Kim     :                               {$$ = NULL;}
245313a0c13SJung-uk Kim     | ObjectTypeKeyword             {$$ = $1;}
246313a0c13SJung-uk Kim     | '{' ParameterTypesPackage '}' {$$ = $2;}
247313a0c13SJung-uk Kim     ;
248313a0c13SJung-uk Kim 
249313a0c13SJung-uk Kim OptionalParameterTypesPackage
250313a0c13SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
251313a0c13SJung-uk Kim     | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
252313a0c13SJung-uk Kim     ;
253313a0c13SJung-uk Kim 
254*f8146b88SJung-uk Kim     /* ACPI 3.0 -- allow semicolons between terms */
255*f8146b88SJung-uk Kim 
256*f8146b88SJung-uk Kim TermList
257*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
258*f8146b88SJung-uk Kim     | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
259*f8146b88SJung-uk Kim     | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
260*f8146b88SJung-uk Kim     | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
261*f8146b88SJung-uk Kim     | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
262*f8146b88SJung-uk Kim     ;
263*f8146b88SJung-uk Kim 
264*f8146b88SJung-uk Kim Term
265*f8146b88SJung-uk Kim     : Object                        {}
266*f8146b88SJung-uk Kim     | Type1Opcode                   {}
267*f8146b88SJung-uk Kim     | Type2Opcode                   {}
268*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
269*f8146b88SJung-uk Kim     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
270*f8146b88SJung-uk Kim     | Type2BufferOpcode             {}
271*f8146b88SJung-uk Kim     | Type2BufferOrStringOpcode     {}
272*f8146b88SJung-uk Kim     | error                         {$$ = AslDoError(); yyclearin;}
273*f8146b88SJung-uk Kim     ;
274*f8146b88SJung-uk Kim 
275*f8146b88SJung-uk Kim /*
276*f8146b88SJung-uk Kim  * Case-Default list; allow only one Default term and unlimited Case terms
277*f8146b88SJung-uk Kim  */
278*f8146b88SJung-uk Kim CaseDefaultTermList
279*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
280*f8146b88SJung-uk Kim     | CaseTerm  {}
281*f8146b88SJung-uk Kim     | DefaultTerm   {}
282*f8146b88SJung-uk Kim     | CaseDefaultTermList
283*f8146b88SJung-uk Kim         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
284*f8146b88SJung-uk Kim     | CaseDefaultTermList
285*f8146b88SJung-uk Kim         DefaultTerm                 {$$ = TrLinkPeerNode ($1,$2);}
286*f8146b88SJung-uk Kim 
287*f8146b88SJung-uk Kim /* Original - attempts to force zero or one default term within the switch */
288*f8146b88SJung-uk Kim 
289*f8146b88SJung-uk Kim /*
290*f8146b88SJung-uk Kim CaseDefaultTermList
291*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
292*f8146b88SJung-uk Kim     | CaseTermList
293*f8146b88SJung-uk Kim         DefaultTerm
294*f8146b88SJung-uk Kim         CaseTermList                {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
295*f8146b88SJung-uk Kim     | CaseTermList
296*f8146b88SJung-uk Kim         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
297*f8146b88SJung-uk Kim     ;
298*f8146b88SJung-uk Kim 
299*f8146b88SJung-uk Kim CaseTermList
300*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
301*f8146b88SJung-uk Kim     | CaseTerm                      {}
302*f8146b88SJung-uk Kim     | CaseTermList
303*f8146b88SJung-uk Kim         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
304*f8146b88SJung-uk Kim     ;
305*f8146b88SJung-uk Kim */
306*f8146b88SJung-uk Kim 
307*f8146b88SJung-uk Kim 
308*f8146b88SJung-uk Kim /*******************************************************************************
309*f8146b88SJung-uk Kim  *
310*f8146b88SJung-uk Kim  * ASL Data and Constant Terms
311*f8146b88SJung-uk Kim  *
312*f8146b88SJung-uk Kim  ******************************************************************************/
313*f8146b88SJung-uk Kim 
314*f8146b88SJung-uk Kim DataObject
315*f8146b88SJung-uk Kim     : BufferData                    {}
316*f8146b88SJung-uk Kim     | PackageData                   {}
317*f8146b88SJung-uk Kim     | IntegerData                   {}
318*f8146b88SJung-uk Kim     | StringData                    {}
319*f8146b88SJung-uk Kim     ;
320*f8146b88SJung-uk Kim 
321*f8146b88SJung-uk Kim BufferData
322*f8146b88SJung-uk Kim     : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
323*f8146b88SJung-uk Kim     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
324*f8146b88SJung-uk Kim     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
325*f8146b88SJung-uk Kim     | BufferTerm                    {}
326*f8146b88SJung-uk Kim     ;
327*f8146b88SJung-uk Kim 
328*f8146b88SJung-uk Kim PackageData
329*f8146b88SJung-uk Kim     : PackageTerm                   {}
330*f8146b88SJung-uk Kim     ;
331*f8146b88SJung-uk Kim 
332*f8146b88SJung-uk Kim IntegerData
333*f8146b88SJung-uk Kim     : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
334*f8146b88SJung-uk Kim     | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
335*f8146b88SJung-uk Kim     | Integer                       {}
336*f8146b88SJung-uk Kim     | ConstTerm                     {}
337*f8146b88SJung-uk Kim     ;
338*f8146b88SJung-uk Kim 
339*f8146b88SJung-uk Kim StringData
340*f8146b88SJung-uk Kim     : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
341*f8146b88SJung-uk Kim     | String                        {}
342*f8146b88SJung-uk Kim     ;
343*f8146b88SJung-uk Kim 
344*f8146b88SJung-uk Kim ByteConst
345*f8146b88SJung-uk Kim     : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
346*f8146b88SJung-uk Kim     ;
347*f8146b88SJung-uk Kim 
348*f8146b88SJung-uk Kim WordConst
349*f8146b88SJung-uk Kim     : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
350*f8146b88SJung-uk Kim     ;
351*f8146b88SJung-uk Kim 
352*f8146b88SJung-uk Kim DWordConst
353*f8146b88SJung-uk Kim     : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
354*f8146b88SJung-uk Kim     ;
355*f8146b88SJung-uk Kim 
356*f8146b88SJung-uk Kim QWordConst
357*f8146b88SJung-uk Kim     : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
358*f8146b88SJung-uk Kim     ;
359*f8146b88SJung-uk Kim 
360*f8146b88SJung-uk Kim /*
361*f8146b88SJung-uk Kim  * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
362*f8146b88SJung-uk Kim  * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
363*f8146b88SJung-uk Kim  * to simple integers. It is an error if these types of expressions cannot be
364*f8146b88SJung-uk Kim  * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
365*f8146b88SJung-uk Kim  * Note: The required byte length of the constant is passed through to the
366*f8146b88SJung-uk Kim  * constant folding code in the node AmlLength field.
367*f8146b88SJung-uk Kim  */
368*f8146b88SJung-uk Kim ByteConstExpr
369*f8146b88SJung-uk Kim     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
370*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
371*f8146b88SJung-uk Kim     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
372*f8146b88SJung-uk Kim     | ByteConst                     {}
373*f8146b88SJung-uk Kim     ;
374*f8146b88SJung-uk Kim 
375*f8146b88SJung-uk Kim WordConstExpr
376*f8146b88SJung-uk Kim     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
377*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
378*f8146b88SJung-uk Kim     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
379*f8146b88SJung-uk Kim     | WordConst                     {}
380*f8146b88SJung-uk Kim     ;
381*f8146b88SJung-uk Kim 
382*f8146b88SJung-uk Kim DWordConstExpr
383*f8146b88SJung-uk Kim     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
384*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
385*f8146b88SJung-uk Kim     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
386*f8146b88SJung-uk Kim     | DWordConst                    {}
387*f8146b88SJung-uk Kim     ;
388*f8146b88SJung-uk Kim 
389*f8146b88SJung-uk Kim QWordConstExpr
390*f8146b88SJung-uk Kim     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
391*f8146b88SJung-uk Kim     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
392*f8146b88SJung-uk Kim     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
393*f8146b88SJung-uk Kim     | QWordConst                    {}
394*f8146b88SJung-uk Kim     ;
395*f8146b88SJung-uk Kim 
396*f8146b88SJung-uk Kim ConstTerm
397*f8146b88SJung-uk Kim     : ConstExprTerm                 {}
398*f8146b88SJung-uk Kim     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
399*f8146b88SJung-uk Kim     ;
400*f8146b88SJung-uk Kim 
401*f8146b88SJung-uk Kim ConstExprTerm
402*f8146b88SJung-uk Kim     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
403*f8146b88SJung-uk Kim     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
404*f8146b88SJung-uk Kim     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
405*f8146b88SJung-uk Kim     | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
406*f8146b88SJung-uk Kim     | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
407*f8146b88SJung-uk Kim     | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
408*f8146b88SJung-uk Kim     | PARSEOP___PATH__              {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
409*f8146b88SJung-uk Kim     ;
410*f8146b88SJung-uk Kim 
411*f8146b88SJung-uk Kim Integer
412*f8146b88SJung-uk Kim     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
413*f8146b88SJung-uk Kim     ;
414*f8146b88SJung-uk Kim 
415*f8146b88SJung-uk Kim String
416*f8146b88SJung-uk Kim     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
417*f8146b88SJung-uk Kim     ;
418*f8146b88SJung-uk Kim 
419*f8146b88SJung-uk Kim 
420*f8146b88SJung-uk Kim /*******************************************************************************
421*f8146b88SJung-uk Kim  *
422*f8146b88SJung-uk Kim  * ASL Opcode Terms
423*f8146b88SJung-uk Kim  *
424*f8146b88SJung-uk Kim  ******************************************************************************/
425*f8146b88SJung-uk Kim 
426*f8146b88SJung-uk Kim CompilerDirective
427*f8146b88SJung-uk Kim     : IncludeTerm                   {}
428*f8146b88SJung-uk Kim     | IncludeEndTerm                {}
429*f8146b88SJung-uk Kim     | ExternalTerm                  {}
430*f8146b88SJung-uk Kim     ;
431*f8146b88SJung-uk Kim 
432*f8146b88SJung-uk Kim NamedObject
433*f8146b88SJung-uk Kim     : BankFieldTerm                 {}
434*f8146b88SJung-uk Kim     | CreateBitFieldTerm            {}
435*f8146b88SJung-uk Kim     | CreateByteFieldTerm           {}
436*f8146b88SJung-uk Kim     | CreateDWordFieldTerm          {}
437*f8146b88SJung-uk Kim     | CreateFieldTerm               {}
438*f8146b88SJung-uk Kim     | CreateQWordFieldTerm          {}
439*f8146b88SJung-uk Kim     | CreateWordFieldTerm           {}
440*f8146b88SJung-uk Kim     | DataRegionTerm                {}
441*f8146b88SJung-uk Kim     | DeviceTerm                    {}
442*f8146b88SJung-uk Kim     | EventTerm                     {}
443*f8146b88SJung-uk Kim     | FieldTerm                     {}
444*f8146b88SJung-uk Kim     | FunctionTerm                  {}
445*f8146b88SJung-uk Kim     | IndexFieldTerm                {}
446*f8146b88SJung-uk Kim     | MethodTerm                    {}
447*f8146b88SJung-uk Kim     | MutexTerm                     {}
448*f8146b88SJung-uk Kim     | OpRegionTerm                  {}
449*f8146b88SJung-uk Kim     | PowerResTerm                  {}
450*f8146b88SJung-uk Kim     | ProcessorTerm                 {}
451*f8146b88SJung-uk Kim     | ThermalZoneTerm               {}
452*f8146b88SJung-uk Kim     ;
453*f8146b88SJung-uk Kim 
454*f8146b88SJung-uk Kim NameSpaceModifier
455*f8146b88SJung-uk Kim     : AliasTerm                     {}
456*f8146b88SJung-uk Kim     | NameTerm                      {}
457*f8146b88SJung-uk Kim     | ScopeTerm                     {}
458*f8146b88SJung-uk Kim     ;
459*f8146b88SJung-uk Kim 
460*f8146b88SJung-uk Kim /* For ObjectType: SuperName except for MethodInvocationTerm */
461*f8146b88SJung-uk Kim 
462*f8146b88SJung-uk Kim ObjectTypeName
463*f8146b88SJung-uk Kim     : NameString                    {}
464*f8146b88SJung-uk Kim     | ArgTerm                       {}
465*f8146b88SJung-uk Kim     | LocalTerm                     {}
466*f8146b88SJung-uk Kim     | DebugTerm                     {}
467*f8146b88SJung-uk Kim     | RefOfTerm                     {}
468*f8146b88SJung-uk Kim     | DerefOfTerm                   {}
469*f8146b88SJung-uk Kim     | IndexTerm                     {}
470*f8146b88SJung-uk Kim /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
471*f8146b88SJung-uk Kim     ;
472*f8146b88SJung-uk Kim 
473*f8146b88SJung-uk Kim RequiredTarget
474*f8146b88SJung-uk Kim     : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
475*f8146b88SJung-uk Kim     ;
476*f8146b88SJung-uk Kim 
477*f8146b88SJung-uk Kim SimpleTarget
478*f8146b88SJung-uk Kim     : NameString                    {}
479*f8146b88SJung-uk Kim     | LocalTerm                     {}
480*f8146b88SJung-uk Kim     | ArgTerm                       {}
481*f8146b88SJung-uk Kim     ;
482313a0c13SJung-uk Kim 
483313a0c13SJung-uk Kim /* Opcode types */
484313a0c13SJung-uk Kim 
485313a0c13SJung-uk Kim Type1Opcode
486313a0c13SJung-uk Kim     : BreakTerm                     {}
487313a0c13SJung-uk Kim     | BreakPointTerm                {}
488313a0c13SJung-uk Kim     | ContinueTerm                  {}
489313a0c13SJung-uk Kim     | FatalTerm                     {}
490*f8146b88SJung-uk Kim     | ForTerm                       {}
491*f8146b88SJung-uk Kim     | ElseIfTerm                    {}
492313a0c13SJung-uk Kim     | LoadTerm                      {}
493313a0c13SJung-uk Kim     | NoOpTerm                      {}
494313a0c13SJung-uk Kim     | NotifyTerm                    {}
495313a0c13SJung-uk Kim     | ReleaseTerm                   {}
496313a0c13SJung-uk Kim     | ResetTerm                     {}
497313a0c13SJung-uk Kim     | ReturnTerm                    {}
498313a0c13SJung-uk Kim     | SignalTerm                    {}
499313a0c13SJung-uk Kim     | SleepTerm                     {}
500313a0c13SJung-uk Kim     | StallTerm                     {}
501313a0c13SJung-uk Kim     | SwitchTerm                    {}
502313a0c13SJung-uk Kim     | UnloadTerm                    {}
503313a0c13SJung-uk Kim     | WhileTerm                     {}
504313a0c13SJung-uk Kim     ;
505313a0c13SJung-uk Kim 
506313a0c13SJung-uk Kim Type2Opcode
507313a0c13SJung-uk Kim     : AcquireTerm                   {}
508313a0c13SJung-uk Kim     | CondRefOfTerm                 {}
509313a0c13SJung-uk Kim     | CopyObjectTerm                {}
510313a0c13SJung-uk Kim     | DerefOfTerm                   {}
511313a0c13SJung-uk Kim     | ObjectTypeTerm                {}
512313a0c13SJung-uk Kim     | RefOfTerm                     {}
513313a0c13SJung-uk Kim     | SizeOfTerm                    {}
514313a0c13SJung-uk Kim     | StoreTerm                     {}
5151c0e1b6dSJung-uk Kim     | EqualsTerm                    {}
516313a0c13SJung-uk Kim     | TimerTerm                     {}
517313a0c13SJung-uk Kim     | WaitTerm                      {}
5187cf3e94aSJung-uk Kim     | MethodInvocationTerm          {}
519313a0c13SJung-uk Kim     ;
520313a0c13SJung-uk Kim 
521313a0c13SJung-uk Kim /*
522313a0c13SJung-uk Kim  * Type 3/4/5 opcodes
523313a0c13SJung-uk Kim  */
524313a0c13SJung-uk Kim Type2IntegerOpcode                  /* "Type3" opcodes */
5257cf3e94aSJung-uk Kim     : Expression                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
5267cf3e94aSJung-uk Kim     | AddTerm                       {}
527313a0c13SJung-uk Kim     | AndTerm                       {}
528313a0c13SJung-uk Kim     | DecTerm                       {}
529313a0c13SJung-uk Kim     | DivideTerm                    {}
530313a0c13SJung-uk Kim     | FindSetLeftBitTerm            {}
531313a0c13SJung-uk Kim     | FindSetRightBitTerm           {}
532313a0c13SJung-uk Kim     | FromBCDTerm                   {}
533313a0c13SJung-uk Kim     | IncTerm                       {}
534313a0c13SJung-uk Kim     | IndexTerm                     {}
535313a0c13SJung-uk Kim     | LAndTerm                      {}
536313a0c13SJung-uk Kim     | LEqualTerm                    {}
537313a0c13SJung-uk Kim     | LGreaterTerm                  {}
538313a0c13SJung-uk Kim     | LGreaterEqualTerm             {}
539313a0c13SJung-uk Kim     | LLessTerm                     {}
540313a0c13SJung-uk Kim     | LLessEqualTerm                {}
541313a0c13SJung-uk Kim     | LNotTerm                      {}
542313a0c13SJung-uk Kim     | LNotEqualTerm                 {}
543313a0c13SJung-uk Kim     | LoadTableTerm                 {}
544313a0c13SJung-uk Kim     | LOrTerm                       {}
545313a0c13SJung-uk Kim     | MatchTerm                     {}
546313a0c13SJung-uk Kim     | ModTerm                       {}
547313a0c13SJung-uk Kim     | MultiplyTerm                  {}
548313a0c13SJung-uk Kim     | NAndTerm                      {}
549313a0c13SJung-uk Kim     | NOrTerm                       {}
550313a0c13SJung-uk Kim     | NotTerm                       {}
551313a0c13SJung-uk Kim     | OrTerm                        {}
552313a0c13SJung-uk Kim     | ShiftLeftTerm                 {}
553313a0c13SJung-uk Kim     | ShiftRightTerm                {}
554313a0c13SJung-uk Kim     | SubtractTerm                  {}
555313a0c13SJung-uk Kim     | ToBCDTerm                     {}
556313a0c13SJung-uk Kim     | ToIntegerTerm                 {}
557313a0c13SJung-uk Kim     | XOrTerm                       {}
558313a0c13SJung-uk Kim     ;
559313a0c13SJung-uk Kim 
560313a0c13SJung-uk Kim Type2StringOpcode                   /* "Type4" Opcodes */
561313a0c13SJung-uk Kim     : ToDecimalStringTerm           {}
562313a0c13SJung-uk Kim     | ToHexStringTerm               {}
563313a0c13SJung-uk Kim     | ToStringTerm                  {}
564313a0c13SJung-uk Kim     ;
565313a0c13SJung-uk Kim 
566313a0c13SJung-uk Kim Type2BufferOpcode                   /* "Type5" Opcodes */
567313a0c13SJung-uk Kim     : ToBufferTerm                  {}
568313a0c13SJung-uk Kim     | ConcatResTerm                 {}
569313a0c13SJung-uk Kim     ;
570313a0c13SJung-uk Kim 
571313a0c13SJung-uk Kim Type2BufferOrStringOpcode
5727cf3e94aSJung-uk Kim     : ConcatTerm                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
5731c0e1b6dSJung-uk Kim     | PrintfTerm                    {}
5741c0e1b6dSJung-uk Kim     | FprintfTerm                   {}
575313a0c13SJung-uk Kim     | MidTerm                       {}
576313a0c13SJung-uk Kim     ;
577313a0c13SJung-uk Kim 
578313a0c13SJung-uk Kim /*
579313a0c13SJung-uk Kim  * A type 3 opcode evaluates to an Integer and cannot have a destination operand
580313a0c13SJung-uk Kim  */
581313a0c13SJung-uk Kim Type3Opcode
582313a0c13SJung-uk Kim     : EISAIDTerm                    {}
583313a0c13SJung-uk Kim     ;
584313a0c13SJung-uk Kim 
585313a0c13SJung-uk Kim /* Obsolete
586313a0c13SJung-uk Kim Type4Opcode
587313a0c13SJung-uk Kim     : ConcatTerm                    {}
588313a0c13SJung-uk Kim     | ToDecimalStringTerm           {}
589313a0c13SJung-uk Kim     | ToHexStringTerm               {}
590313a0c13SJung-uk Kim     | MidTerm                       {}
591313a0c13SJung-uk Kim     | ToStringTerm                  {}
592313a0c13SJung-uk Kim     ;
593313a0c13SJung-uk Kim */
594313a0c13SJung-uk Kim 
595313a0c13SJung-uk Kim Type5Opcode
596313a0c13SJung-uk Kim     : ResourceTemplateTerm          {}
597313a0c13SJung-uk Kim     | UnicodeTerm                   {}
5981c0e1b6dSJung-uk Kim     | ToPLDTerm                     {}
599313a0c13SJung-uk Kim     | ToUUIDTerm                    {}
600313a0c13SJung-uk Kim     ;
601313a0c13SJung-uk Kim 
602313a0c13SJung-uk Kim Type6Opcode
603313a0c13SJung-uk Kim     : RefOfTerm                     {}
604313a0c13SJung-uk Kim     | DerefOfTerm                   {}
605313a0c13SJung-uk Kim     | IndexTerm                     {}
606*f8146b88SJung-uk Kim     | IndexExpTerm                  {}
6077cf3e94aSJung-uk Kim     | MethodInvocationTerm          {}
608313a0c13SJung-uk Kim     ;
609313a0c13SJung-uk Kim 
610313a0c13SJung-uk Kim 
611*f8146b88SJung-uk Kim /*******************************************************************************
612*f8146b88SJung-uk Kim  *
613*f8146b88SJung-uk Kim  * ASL Primary Terms
614*f8146b88SJung-uk Kim  *
615*f8146b88SJung-uk Kim  ******************************************************************************/
616313a0c13SJung-uk Kim 
617*f8146b88SJung-uk Kim AccessAsTerm
618*f8146b88SJung-uk Kim     : PARSEOP_ACCESSAS '('
619*f8146b88SJung-uk Kim         AccessTypeKeyword
620*f8146b88SJung-uk Kim         OptionalAccessAttribTerm
621*f8146b88SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
622*f8146b88SJung-uk Kim     | PARSEOP_ACCESSAS '('
623313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
624313a0c13SJung-uk Kim     ;
625313a0c13SJung-uk Kim 
626*f8146b88SJung-uk Kim AcquireTerm
627*f8146b88SJung-uk Kim     : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
628*f8146b88SJung-uk Kim         SuperName
629*f8146b88SJung-uk Kim         ',' WordConstExpr
630*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
631*f8146b88SJung-uk Kim     | PARSEOP_ACQUIRE '('
632*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
633*f8146b88SJung-uk Kim     ;
634313a0c13SJung-uk Kim 
635*f8146b88SJung-uk Kim AddTerm
636*f8146b88SJung-uk Kim     : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
637*f8146b88SJung-uk Kim         TermArg
638*f8146b88SJung-uk Kim         TermArgItem
639*f8146b88SJung-uk Kim         Target
640*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
641*f8146b88SJung-uk Kim     | PARSEOP_ADD '('
642*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
643*f8146b88SJung-uk Kim     ;
644313a0c13SJung-uk Kim 
645*f8146b88SJung-uk Kim AliasTerm
646*f8146b88SJung-uk Kim     : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
647*f8146b88SJung-uk Kim         NameString
648*f8146b88SJung-uk Kim         NameStringItem
649*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
650*f8146b88SJung-uk Kim                                         TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
651*f8146b88SJung-uk Kim     | PARSEOP_ALIAS '('
652*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
653*f8146b88SJung-uk Kim     ;
654*f8146b88SJung-uk Kim 
655*f8146b88SJung-uk Kim AndTerm
656*f8146b88SJung-uk Kim     : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
657*f8146b88SJung-uk Kim         TermArg
658*f8146b88SJung-uk Kim         TermArgItem
659*f8146b88SJung-uk Kim         Target
660*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
661*f8146b88SJung-uk Kim     | PARSEOP_AND '('
662*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
663*f8146b88SJung-uk Kim     ;
664*f8146b88SJung-uk Kim 
665*f8146b88SJung-uk Kim ArgTerm
666*f8146b88SJung-uk Kim     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
667*f8146b88SJung-uk Kim     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
668*f8146b88SJung-uk Kim     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
669*f8146b88SJung-uk Kim     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
670*f8146b88SJung-uk Kim     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
671*f8146b88SJung-uk Kim     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
672*f8146b88SJung-uk Kim     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
673*f8146b88SJung-uk Kim     ;
674313a0c13SJung-uk Kim 
675313a0c13SJung-uk Kim BankFieldTerm
676313a0c13SJung-uk Kim     : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
677313a0c13SJung-uk Kim         NameString
678313a0c13SJung-uk Kim         NameStringItem
679313a0c13SJung-uk Kim         TermArgItem
680313a0c13SJung-uk Kim         ',' AccessTypeKeyword
681313a0c13SJung-uk Kim         ',' LockRuleKeyword
682313a0c13SJung-uk Kim         ',' UpdateRuleKeyword
683313a0c13SJung-uk Kim         ')' '{'
684313a0c13SJung-uk Kim             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
685313a0c13SJung-uk Kim     | PARSEOP_BANKFIELD '('
686313a0c13SJung-uk Kim         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
687313a0c13SJung-uk Kim     ;
688313a0c13SJung-uk Kim 
689*f8146b88SJung-uk Kim BreakTerm
690*f8146b88SJung-uk Kim     : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
691313a0c13SJung-uk Kim     ;
692313a0c13SJung-uk Kim 
693*f8146b88SJung-uk Kim BreakPointTerm
694*f8146b88SJung-uk Kim     : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
695313a0c13SJung-uk Kim     ;
696313a0c13SJung-uk Kim 
697*f8146b88SJung-uk Kim BufferTerm
698*f8146b88SJung-uk Kim     : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
699*f8146b88SJung-uk Kim         OptionalBufferLength
700*f8146b88SJung-uk Kim         ')' '{'
701*f8146b88SJung-uk Kim             BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
702*f8146b88SJung-uk Kim     | PARSEOP_BUFFER '('
703313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
704313a0c13SJung-uk Kim     ;
705313a0c13SJung-uk Kim 
706*f8146b88SJung-uk Kim BufferTermData
707*f8146b88SJung-uk Kim     : ByteList                      {}
708*f8146b88SJung-uk Kim     | StringData                    {}
709*f8146b88SJung-uk Kim     ;
710*f8146b88SJung-uk Kim 
711*f8146b88SJung-uk Kim CaseTerm
712*f8146b88SJung-uk Kim     : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
713*f8146b88SJung-uk Kim         DataObject
714*f8146b88SJung-uk Kim         ')' '{'
715*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
716*f8146b88SJung-uk Kim     | PARSEOP_CASE '('
717*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
718*f8146b88SJung-uk Kim     ;
719*f8146b88SJung-uk Kim 
720*f8146b88SJung-uk Kim ConcatTerm
721*f8146b88SJung-uk Kim     : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
722*f8146b88SJung-uk Kim         TermArg
723*f8146b88SJung-uk Kim         TermArgItem
724*f8146b88SJung-uk Kim         Target
725*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
726*f8146b88SJung-uk Kim     | PARSEOP_CONCATENATE '('
727*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
728*f8146b88SJung-uk Kim     ;
729*f8146b88SJung-uk Kim 
730*f8146b88SJung-uk Kim ConcatResTerm
731*f8146b88SJung-uk Kim     : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
732*f8146b88SJung-uk Kim         TermArg
733*f8146b88SJung-uk Kim         TermArgItem
734*f8146b88SJung-uk Kim         Target
735*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
736*f8146b88SJung-uk Kim     | PARSEOP_CONCATENATERESTEMPLATE '('
737313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
738313a0c13SJung-uk Kim     ;
739313a0c13SJung-uk Kim 
740313a0c13SJung-uk Kim ConnectionTerm
741313a0c13SJung-uk Kim     : PARSEOP_CONNECTION '('
742313a0c13SJung-uk Kim         NameString
743313a0c13SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
744313a0c13SJung-uk Kim     | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
745313a0c13SJung-uk Kim         ResourceMacroTerm
746313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3, 1,
747313a0c13SJung-uk Kim                                             TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
748313a0c13SJung-uk Kim                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
749313a0c13SJung-uk Kim                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
750313a0c13SJung-uk Kim                                                 $4));}
751313a0c13SJung-uk Kim     | PARSEOP_CONNECTION '('
752313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
753313a0c13SJung-uk Kim     ;
754313a0c13SJung-uk Kim 
755*f8146b88SJung-uk Kim CondRefOfTerm
756*f8146b88SJung-uk Kim     : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
757*f8146b88SJung-uk Kim         SuperName
758*f8146b88SJung-uk Kim         Target
759*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
760*f8146b88SJung-uk Kim     | PARSEOP_CONDREFOF '('
761*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
762*f8146b88SJung-uk Kim     ;
763*f8146b88SJung-uk Kim 
764*f8146b88SJung-uk Kim ContinueTerm
765*f8146b88SJung-uk Kim     : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
766*f8146b88SJung-uk Kim     ;
767*f8146b88SJung-uk Kim 
768*f8146b88SJung-uk Kim CopyObjectTerm
769*f8146b88SJung-uk Kim     : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
770*f8146b88SJung-uk Kim         TermArg
771*f8146b88SJung-uk Kim         ',' SimpleTarget
772*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
773*f8146b88SJung-uk Kim     | PARSEOP_COPYOBJECT '('
774*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
775*f8146b88SJung-uk Kim     ;
776*f8146b88SJung-uk Kim 
777313a0c13SJung-uk Kim CreateBitFieldTerm
778313a0c13SJung-uk Kim     : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
779313a0c13SJung-uk Kim         TermArg
780313a0c13SJung-uk Kim         TermArgItem
781313a0c13SJung-uk Kim         NameStringItem
782313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
783313a0c13SJung-uk Kim     | PARSEOP_CREATEBITFIELD '('
784313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
785313a0c13SJung-uk Kim     ;
786313a0c13SJung-uk Kim 
787313a0c13SJung-uk Kim CreateByteFieldTerm
788313a0c13SJung-uk Kim     : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
789313a0c13SJung-uk Kim         TermArg
790313a0c13SJung-uk Kim         TermArgItem
791313a0c13SJung-uk Kim         NameStringItem
792313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
793313a0c13SJung-uk Kim     | PARSEOP_CREATEBYTEFIELD '('
794313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
795313a0c13SJung-uk Kim     ;
796313a0c13SJung-uk Kim 
797313a0c13SJung-uk Kim CreateDWordFieldTerm
798313a0c13SJung-uk Kim     : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
799313a0c13SJung-uk Kim         TermArg
800313a0c13SJung-uk Kim         TermArgItem
801313a0c13SJung-uk Kim         NameStringItem
802313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
803313a0c13SJung-uk Kim     | PARSEOP_CREATEDWORDFIELD '('
804313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
805313a0c13SJung-uk Kim     ;
806313a0c13SJung-uk Kim 
807313a0c13SJung-uk Kim CreateFieldTerm
808313a0c13SJung-uk Kim     : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
809313a0c13SJung-uk Kim         TermArg
810313a0c13SJung-uk Kim         TermArgItem
811313a0c13SJung-uk Kim         TermArgItem
812313a0c13SJung-uk Kim         NameStringItem
813313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
814313a0c13SJung-uk Kim     | PARSEOP_CREATEFIELD '('
815313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
816313a0c13SJung-uk Kim     ;
817313a0c13SJung-uk Kim 
818313a0c13SJung-uk Kim CreateQWordFieldTerm
819313a0c13SJung-uk Kim     : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
820313a0c13SJung-uk Kim         TermArg
821313a0c13SJung-uk Kim         TermArgItem
822313a0c13SJung-uk Kim         NameStringItem
823313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
824313a0c13SJung-uk Kim     | PARSEOP_CREATEQWORDFIELD '('
825313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
826313a0c13SJung-uk Kim     ;
827313a0c13SJung-uk Kim 
828313a0c13SJung-uk Kim CreateWordFieldTerm
829313a0c13SJung-uk Kim     : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
830313a0c13SJung-uk Kim         TermArg
831313a0c13SJung-uk Kim         TermArgItem
832313a0c13SJung-uk Kim         NameStringItem
833313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
834313a0c13SJung-uk Kim     | PARSEOP_CREATEWORDFIELD '('
835313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
836313a0c13SJung-uk Kim     ;
837313a0c13SJung-uk Kim 
838313a0c13SJung-uk Kim DataRegionTerm
839313a0c13SJung-uk Kim     : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
840313a0c13SJung-uk Kim         NameString
841313a0c13SJung-uk Kim         TermArgItem
842313a0c13SJung-uk Kim         TermArgItem
843313a0c13SJung-uk Kim         TermArgItem
844313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
845313a0c13SJung-uk Kim     | PARSEOP_DATATABLEREGION '('
846313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
847313a0c13SJung-uk Kim     ;
848313a0c13SJung-uk Kim 
849*f8146b88SJung-uk Kim DebugTerm
850*f8146b88SJung-uk Kim     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
851*f8146b88SJung-uk Kim     ;
852*f8146b88SJung-uk Kim 
853*f8146b88SJung-uk Kim DecTerm
854*f8146b88SJung-uk Kim     : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
855*f8146b88SJung-uk Kim         SuperName
856*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
857*f8146b88SJung-uk Kim     | PARSEOP_DECREMENT '('
858*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
859*f8146b88SJung-uk Kim     ;
860*f8146b88SJung-uk Kim 
861*f8146b88SJung-uk Kim DefaultTerm
862*f8146b88SJung-uk Kim     : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
863*f8146b88SJung-uk Kim         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
864*f8146b88SJung-uk Kim     | PARSEOP_DEFAULT '{'
865*f8146b88SJung-uk Kim         error '}'                   {$$ = AslDoError(); yyclearin;}
866*f8146b88SJung-uk Kim     ;
867*f8146b88SJung-uk Kim 
868*f8146b88SJung-uk Kim DerefOfTerm
869*f8146b88SJung-uk Kim     : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
870*f8146b88SJung-uk Kim         TermArg
871*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
872*f8146b88SJung-uk Kim     | PARSEOP_DEREFOF '('
873*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
874*f8146b88SJung-uk Kim     ;
875*f8146b88SJung-uk Kim 
876313a0c13SJung-uk Kim DeviceTerm
877313a0c13SJung-uk Kim     : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
878313a0c13SJung-uk Kim         NameString
879313a0c13SJung-uk Kim         ')' '{'
880*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
881313a0c13SJung-uk Kim     | PARSEOP_DEVICE '('
882313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
883313a0c13SJung-uk Kim     ;
884313a0c13SJung-uk Kim 
885*f8146b88SJung-uk Kim DivideTerm
886*f8146b88SJung-uk Kim     : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
887313a0c13SJung-uk Kim         TermArg
888*f8146b88SJung-uk Kim         TermArgItem
889*f8146b88SJung-uk Kim         Target
890*f8146b88SJung-uk Kim         Target
891*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
892*f8146b88SJung-uk Kim     | PARSEOP_DIVIDE '('
893313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
894313a0c13SJung-uk Kim     ;
895313a0c13SJung-uk Kim 
896*f8146b88SJung-uk Kim EISAIDTerm
897*f8146b88SJung-uk Kim     : PARSEOP_EISAID '('
898*f8146b88SJung-uk Kim         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
899*f8146b88SJung-uk Kim     | PARSEOP_EISAID '('
900*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
901*f8146b88SJung-uk Kim     ;
902*f8146b88SJung-uk Kim 
903*f8146b88SJung-uk Kim ElseIfTerm
904*f8146b88SJung-uk Kim     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
905*f8146b88SJung-uk Kim     ;
906*f8146b88SJung-uk Kim 
907313a0c13SJung-uk Kim ElseTerm
908313a0c13SJung-uk Kim     :                               {$$ = NULL;}
909313a0c13SJung-uk Kim     | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
910313a0c13SJung-uk Kim         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
911313a0c13SJung-uk Kim 
912313a0c13SJung-uk Kim     | PARSEOP_ELSE '{'
913313a0c13SJung-uk Kim         error '}'                   {$$ = AslDoError(); yyclearin;}
914313a0c13SJung-uk Kim 
915313a0c13SJung-uk Kim     | PARSEOP_ELSE
916313a0c13SJung-uk Kim         error                       {$$ = AslDoError(); yyclearin;}
917313a0c13SJung-uk Kim 
918313a0c13SJung-uk Kim     | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
919313a0c13SJung-uk Kim         TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
920313a0c13SJung-uk Kim         ')' '{'
921313a0c13SJung-uk Kim             TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
922313a0c13SJung-uk Kim         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
923313a0c13SJung-uk Kim                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
924313a0c13SJung-uk Kim 
925313a0c13SJung-uk Kim     | PARSEOP_ELSEIF '('
926313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
927313a0c13SJung-uk Kim 
928313a0c13SJung-uk Kim     | PARSEOP_ELSEIF
929313a0c13SJung-uk Kim         error                       {$$ = AslDoError(); yyclearin;}
930313a0c13SJung-uk Kim     ;
931313a0c13SJung-uk Kim 
932*f8146b88SJung-uk Kim EventTerm
933*f8146b88SJung-uk Kim     : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
934313a0c13SJung-uk Kim         NameString
935*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
936*f8146b88SJung-uk Kim     | PARSEOP_EVENT '('
937313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
938313a0c13SJung-uk Kim     ;
939313a0c13SJung-uk Kim 
940*f8146b88SJung-uk Kim ExternalTerm
941*f8146b88SJung-uk Kim     : PARSEOP_EXTERNAL '('
942*f8146b88SJung-uk Kim         NameString
943*f8146b88SJung-uk Kim         OptionalObjectTypeKeyword
944*f8146b88SJung-uk Kim         OptionalParameterTypePackage
945*f8146b88SJung-uk Kim         OptionalParameterTypesPackage
946*f8146b88SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
947*f8146b88SJung-uk Kim     | PARSEOP_EXTERNAL '('
948*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
949313a0c13SJung-uk Kim     ;
950313a0c13SJung-uk Kim 
951*f8146b88SJung-uk Kim FatalTerm
952*f8146b88SJung-uk Kim     : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
953*f8146b88SJung-uk Kim         ByteConstExpr
954*f8146b88SJung-uk Kim         ',' DWordConstExpr
955313a0c13SJung-uk Kim         TermArgItem
956*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
957*f8146b88SJung-uk Kim     | PARSEOP_FATAL '('
958313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
959313a0c13SJung-uk Kim     ;
960313a0c13SJung-uk Kim 
961*f8146b88SJung-uk Kim FieldTerm
962*f8146b88SJung-uk Kim     : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
963*f8146b88SJung-uk Kim         NameString
964*f8146b88SJung-uk Kim         ',' AccessTypeKeyword
965*f8146b88SJung-uk Kim         ',' LockRuleKeyword
966*f8146b88SJung-uk Kim         ',' UpdateRuleKeyword
967313a0c13SJung-uk Kim         ')' '{'
968*f8146b88SJung-uk Kim             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
969*f8146b88SJung-uk Kim     | PARSEOP_FIELD '('
970*f8146b88SJung-uk Kim         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
971313a0c13SJung-uk Kim     ;
972313a0c13SJung-uk Kim 
973313a0c13SJung-uk Kim FindSetLeftBitTerm
974313a0c13SJung-uk Kim     : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
975313a0c13SJung-uk Kim         TermArg
976313a0c13SJung-uk Kim         Target
977313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
978313a0c13SJung-uk Kim     | PARSEOP_FINDSETLEFTBIT '('
979313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
980313a0c13SJung-uk Kim     ;
981313a0c13SJung-uk Kim 
982313a0c13SJung-uk Kim FindSetRightBitTerm
983313a0c13SJung-uk Kim     : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
984313a0c13SJung-uk Kim         TermArg
985313a0c13SJung-uk Kim         Target
986313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
987313a0c13SJung-uk Kim     | PARSEOP_FINDSETRIGHTBIT '('
988313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
989313a0c13SJung-uk Kim     ;
990313a0c13SJung-uk Kim 
991*f8146b88SJung-uk Kim     /* Convert a For() loop to a While() loop */
992*f8146b88SJung-uk Kim ForTerm
993*f8146b88SJung-uk Kim     : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
994*f8146b88SJung-uk Kim         OptionalTermArg ','         {}
995*f8146b88SJung-uk Kim         OptionalPredicate ','
996*f8146b88SJung-uk Kim         OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
997*f8146b88SJung-uk Kim                                         TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
998*f8146b88SJung-uk Kim         ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
999*f8146b88SJung-uk Kim                                     {$<n>$ = TrLinkPeerNode ($13,$9);
1000*f8146b88SJung-uk Kim                                         $$ = $<n>10;}
1001*f8146b88SJung-uk Kim     ;
1002*f8146b88SJung-uk Kim 
1003*f8146b88SJung-uk Kim OptionalPredicate
1004*f8146b88SJung-uk Kim     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
1005*f8146b88SJung-uk Kim     | TermArg                       {$$ = $1;}
1006*f8146b88SJung-uk Kim     ;
1007*f8146b88SJung-uk Kim 
1008*f8146b88SJung-uk Kim FprintfTerm
1009*f8146b88SJung-uk Kim     : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
1010*f8146b88SJung-uk Kim         TermArg ','
1011*f8146b88SJung-uk Kim         StringData
1012*f8146b88SJung-uk Kim         PrintfArgList
1013*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1014*f8146b88SJung-uk Kim     | PARSEOP_FPRINTF '('
1015*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1016*f8146b88SJung-uk Kim     ;
1017*f8146b88SJung-uk Kim 
1018313a0c13SJung-uk Kim FromBCDTerm
1019313a0c13SJung-uk Kim     : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1020313a0c13SJung-uk Kim         TermArg
1021313a0c13SJung-uk Kim         Target
1022313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1023313a0c13SJung-uk Kim     | PARSEOP_FROMBCD '('
1024313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1025313a0c13SJung-uk Kim     ;
1026313a0c13SJung-uk Kim 
1027*f8146b88SJung-uk Kim FunctionTerm
1028*f8146b88SJung-uk Kim     : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1029*f8146b88SJung-uk Kim         NameString
1030*f8146b88SJung-uk Kim         OptionalParameterTypePackage
1031*f8146b88SJung-uk Kim         OptionalParameterTypesPackage
1032*f8146b88SJung-uk Kim         ')' '{'
1033*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1034*f8146b88SJung-uk Kim                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1035*f8146b88SJung-uk Kim                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1036*f8146b88SJung-uk Kim                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1037*f8146b88SJung-uk Kim     | PARSEOP_FUNCTION '('
1038*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1039*f8146b88SJung-uk Kim     ;
1040*f8146b88SJung-uk Kim 
1041*f8146b88SJung-uk Kim IfTerm
1042*f8146b88SJung-uk Kim     : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1043*f8146b88SJung-uk Kim         TermArg
1044*f8146b88SJung-uk Kim         ')' '{'
1045*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1046*f8146b88SJung-uk Kim 
1047*f8146b88SJung-uk Kim     | PARSEOP_IF '('
1048*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1049*f8146b88SJung-uk Kim     ;
1050*f8146b88SJung-uk Kim 
1051*f8146b88SJung-uk Kim IncludeTerm
1052*f8146b88SJung-uk Kim     : PARSEOP_INCLUDE '('
1053*f8146b88SJung-uk Kim         String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
1054*f8146b88SJung-uk Kim                                         FlOpenIncludeFile ($3);}
1055*f8146b88SJung-uk Kim     ;
1056*f8146b88SJung-uk Kim 
1057*f8146b88SJung-uk Kim IncludeEndTerm
1058*f8146b88SJung-uk Kim     : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
1059*f8146b88SJung-uk Kim     ;
1060*f8146b88SJung-uk Kim 
1061313a0c13SJung-uk Kim IncTerm
1062313a0c13SJung-uk Kim     : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1063313a0c13SJung-uk Kim         SuperName
1064313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1065313a0c13SJung-uk Kim     | PARSEOP_INCREMENT '('
1066313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1067313a0c13SJung-uk Kim     ;
1068313a0c13SJung-uk Kim 
1069*f8146b88SJung-uk Kim IndexFieldTerm
1070*f8146b88SJung-uk Kim     : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1071*f8146b88SJung-uk Kim         NameString
1072*f8146b88SJung-uk Kim         NameStringItem
1073*f8146b88SJung-uk Kim         ',' AccessTypeKeyword
1074*f8146b88SJung-uk Kim         ',' LockRuleKeyword
1075*f8146b88SJung-uk Kim         ',' UpdateRuleKeyword
1076*f8146b88SJung-uk Kim         ')' '{'
1077*f8146b88SJung-uk Kim             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1078*f8146b88SJung-uk Kim     | PARSEOP_INDEXFIELD '('
1079*f8146b88SJung-uk Kim         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
1080*f8146b88SJung-uk Kim     ;
1081*f8146b88SJung-uk Kim 
1082313a0c13SJung-uk Kim IndexTerm
1083313a0c13SJung-uk Kim     : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1084313a0c13SJung-uk Kim         TermArg
1085313a0c13SJung-uk Kim         TermArgItem
1086313a0c13SJung-uk Kim         Target
1087313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1088313a0c13SJung-uk Kim     | PARSEOP_INDEX '('
1089313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1090313a0c13SJung-uk Kim     ;
1091313a0c13SJung-uk Kim 
1092313a0c13SJung-uk Kim LAndTerm
1093313a0c13SJung-uk Kim     : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1094313a0c13SJung-uk Kim         TermArg
1095313a0c13SJung-uk Kim         TermArgItem
1096313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1097313a0c13SJung-uk Kim     | PARSEOP_LAND '('
1098313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1099313a0c13SJung-uk Kim     ;
1100313a0c13SJung-uk Kim 
1101313a0c13SJung-uk Kim LEqualTerm
1102313a0c13SJung-uk Kim     : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1103313a0c13SJung-uk Kim         TermArg
1104313a0c13SJung-uk Kim         TermArgItem
1105313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1106313a0c13SJung-uk Kim     | PARSEOP_LEQUAL '('
1107313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1108313a0c13SJung-uk Kim     ;
1109313a0c13SJung-uk Kim 
1110313a0c13SJung-uk Kim LGreaterEqualTerm
1111313a0c13SJung-uk Kim     : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1112313a0c13SJung-uk Kim         TermArg
1113313a0c13SJung-uk Kim         TermArgItem
1114313a0c13SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1115313a0c13SJung-uk Kim     | PARSEOP_LGREATEREQUAL '('
1116313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1117313a0c13SJung-uk Kim     ;
1118313a0c13SJung-uk Kim 
1119*f8146b88SJung-uk Kim LGreaterTerm
1120*f8146b88SJung-uk Kim     : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1121313a0c13SJung-uk Kim         TermArg
1122313a0c13SJung-uk Kim         TermArgItem
1123313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1124*f8146b88SJung-uk Kim     | PARSEOP_LGREATER '('
1125313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1126313a0c13SJung-uk Kim     ;
1127313a0c13SJung-uk Kim 
1128313a0c13SJung-uk Kim LLessEqualTerm
1129313a0c13SJung-uk Kim     : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1130313a0c13SJung-uk Kim         TermArg
1131313a0c13SJung-uk Kim         TermArgItem
1132313a0c13SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1133313a0c13SJung-uk Kim     | PARSEOP_LLESSEQUAL '('
1134313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1135313a0c13SJung-uk Kim     ;
1136313a0c13SJung-uk Kim 
1137*f8146b88SJung-uk Kim LLessTerm
1138*f8146b88SJung-uk Kim     : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1139313a0c13SJung-uk Kim         TermArg
1140*f8146b88SJung-uk Kim         TermArgItem
1141*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1142*f8146b88SJung-uk Kim     | PARSEOP_LLESS '('
1143313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1144313a0c13SJung-uk Kim     ;
1145313a0c13SJung-uk Kim 
1146313a0c13SJung-uk Kim LNotEqualTerm
1147313a0c13SJung-uk Kim     : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1148313a0c13SJung-uk Kim         TermArg
1149313a0c13SJung-uk Kim         TermArgItem
1150313a0c13SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1151313a0c13SJung-uk Kim     | PARSEOP_LNOTEQUAL '('
1152313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1153313a0c13SJung-uk Kim     ;
1154313a0c13SJung-uk Kim 
1155*f8146b88SJung-uk Kim LNotTerm
1156*f8146b88SJung-uk Kim     : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1157*f8146b88SJung-uk Kim         TermArg
1158*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1159*f8146b88SJung-uk Kim     | PARSEOP_LNOT '('
1160*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1161*f8146b88SJung-uk Kim     ;
1162*f8146b88SJung-uk Kim 
1163313a0c13SJung-uk Kim LoadTableTerm
1164313a0c13SJung-uk Kim     : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1165313a0c13SJung-uk Kim         TermArg
1166313a0c13SJung-uk Kim         TermArgItem
1167313a0c13SJung-uk Kim         TermArgItem
1168313a0c13SJung-uk Kim         OptionalListString
1169313a0c13SJung-uk Kim         OptionalListString
1170313a0c13SJung-uk Kim         OptionalReference
1171313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1172313a0c13SJung-uk Kim     | PARSEOP_LOADTABLE '('
1173313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1174313a0c13SJung-uk Kim     ;
1175313a0c13SJung-uk Kim 
1176*f8146b88SJung-uk Kim LoadTerm
1177*f8146b88SJung-uk Kim     : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1178*f8146b88SJung-uk Kim         NameString
1179*f8146b88SJung-uk Kim         RequiredTarget
1180*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1181*f8146b88SJung-uk Kim     | PARSEOP_LOAD '('
1182*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1183*f8146b88SJung-uk Kim     ;
1184*f8146b88SJung-uk Kim 
1185*f8146b88SJung-uk Kim LocalTerm
1186*f8146b88SJung-uk Kim     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1187*f8146b88SJung-uk Kim     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1188*f8146b88SJung-uk Kim     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1189*f8146b88SJung-uk Kim     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1190*f8146b88SJung-uk Kim     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1191*f8146b88SJung-uk Kim     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1192*f8146b88SJung-uk Kim     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1193*f8146b88SJung-uk Kim     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1194*f8146b88SJung-uk Kim     ;
1195*f8146b88SJung-uk Kim 
1196313a0c13SJung-uk Kim LOrTerm
1197313a0c13SJung-uk Kim     : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1198313a0c13SJung-uk Kim         TermArg
1199313a0c13SJung-uk Kim         TermArgItem
1200313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1201313a0c13SJung-uk Kim     | PARSEOP_LOR '('
1202313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1203313a0c13SJung-uk Kim     ;
1204313a0c13SJung-uk Kim 
1205313a0c13SJung-uk Kim MatchTerm
1206313a0c13SJung-uk Kim     : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1207313a0c13SJung-uk Kim         TermArg
1208313a0c13SJung-uk Kim         ',' MatchOpKeyword
1209313a0c13SJung-uk Kim         TermArgItem
1210313a0c13SJung-uk Kim         ',' MatchOpKeyword
1211313a0c13SJung-uk Kim         TermArgItem
1212313a0c13SJung-uk Kim         TermArgItem
1213313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1214313a0c13SJung-uk Kim     | PARSEOP_MATCH '('
1215313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1216313a0c13SJung-uk Kim     ;
1217313a0c13SJung-uk Kim 
1218*f8146b88SJung-uk Kim MethodTerm
1219*f8146b88SJung-uk Kim     : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1220*f8146b88SJung-uk Kim         NameString
1221*f8146b88SJung-uk Kim         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
1222*f8146b88SJung-uk Kim         OptionalSerializeRuleKeyword
1223*f8146b88SJung-uk Kim         OptionalByteConstExpr
1224*f8146b88SJung-uk Kim         OptionalParameterTypePackage
1225*f8146b88SJung-uk Kim         OptionalParameterTypesPackage
1226*f8146b88SJung-uk Kim         ')' '{'
1227*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1228*f8146b88SJung-uk Kim     | PARSEOP_METHOD '('
1229*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1230*f8146b88SJung-uk Kim     ;
1231*f8146b88SJung-uk Kim 
1232313a0c13SJung-uk Kim MidTerm
1233313a0c13SJung-uk Kim     : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1234313a0c13SJung-uk Kim         TermArg
1235313a0c13SJung-uk Kim         TermArgItem
1236313a0c13SJung-uk Kim         TermArgItem
1237313a0c13SJung-uk Kim         Target
1238313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1239313a0c13SJung-uk Kim     | PARSEOP_MID '('
1240313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1241313a0c13SJung-uk Kim     ;
1242313a0c13SJung-uk Kim 
1243313a0c13SJung-uk Kim ModTerm
1244313a0c13SJung-uk Kim     : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1245313a0c13SJung-uk Kim         TermArg
1246313a0c13SJung-uk Kim         TermArgItem
1247313a0c13SJung-uk Kim         Target
1248313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1249313a0c13SJung-uk Kim     | PARSEOP_MOD '('
1250313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1251313a0c13SJung-uk Kim     ;
1252313a0c13SJung-uk Kim 
1253313a0c13SJung-uk Kim MultiplyTerm
1254313a0c13SJung-uk Kim     : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1255313a0c13SJung-uk Kim         TermArg
1256313a0c13SJung-uk Kim         TermArgItem
1257313a0c13SJung-uk Kim         Target
1258313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1259313a0c13SJung-uk Kim     | PARSEOP_MULTIPLY '('
1260313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1261313a0c13SJung-uk Kim     ;
1262313a0c13SJung-uk Kim 
1263*f8146b88SJung-uk Kim MutexTerm
1264*f8146b88SJung-uk Kim     : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1265*f8146b88SJung-uk Kim         NameString
1266*f8146b88SJung-uk Kim         ',' ByteConstExpr
1267*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1268*f8146b88SJung-uk Kim     | PARSEOP_MUTEX '('
1269*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1270*f8146b88SJung-uk Kim     ;
1271*f8146b88SJung-uk Kim 
1272*f8146b88SJung-uk Kim NameTerm
1273*f8146b88SJung-uk Kim     : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1274*f8146b88SJung-uk Kim         NameString
1275*f8146b88SJung-uk Kim         ',' DataObject
1276*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1277*f8146b88SJung-uk Kim     | PARSEOP_NAME '('
1278*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1279*f8146b88SJung-uk Kim     ;
1280*f8146b88SJung-uk Kim 
1281313a0c13SJung-uk Kim NAndTerm
1282313a0c13SJung-uk Kim     : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1283313a0c13SJung-uk Kim         TermArg
1284313a0c13SJung-uk Kim         TermArgItem
1285313a0c13SJung-uk Kim         Target
1286313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1287313a0c13SJung-uk Kim     | PARSEOP_NAND '('
1288313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1289313a0c13SJung-uk Kim     ;
1290313a0c13SJung-uk Kim 
1291*f8146b88SJung-uk Kim NoOpTerm
1292*f8146b88SJung-uk Kim     : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1293*f8146b88SJung-uk Kim     ;
1294*f8146b88SJung-uk Kim 
1295313a0c13SJung-uk Kim NOrTerm
1296313a0c13SJung-uk Kim     : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1297313a0c13SJung-uk Kim         TermArg
1298313a0c13SJung-uk Kim         TermArgItem
1299313a0c13SJung-uk Kim         Target
1300313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1301313a0c13SJung-uk Kim     | PARSEOP_NOR '('
1302313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1303313a0c13SJung-uk Kim     ;
1304313a0c13SJung-uk Kim 
1305*f8146b88SJung-uk Kim NotifyTerm
1306*f8146b88SJung-uk Kim     : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1307*f8146b88SJung-uk Kim         SuperName
1308*f8146b88SJung-uk Kim         TermArgItem
1309*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1310*f8146b88SJung-uk Kim     | PARSEOP_NOTIFY '('
1311*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1312*f8146b88SJung-uk Kim     ;
1313*f8146b88SJung-uk Kim 
1314313a0c13SJung-uk Kim NotTerm
1315313a0c13SJung-uk Kim     : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1316313a0c13SJung-uk Kim         TermArg
1317313a0c13SJung-uk Kim         Target
1318313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1319313a0c13SJung-uk Kim     | PARSEOP_NOT '('
1320313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1321313a0c13SJung-uk Kim     ;
1322313a0c13SJung-uk Kim 
1323313a0c13SJung-uk Kim ObjectTypeTerm
1324313a0c13SJung-uk Kim     : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1325313a0c13SJung-uk Kim         ObjectTypeName
1326313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1327313a0c13SJung-uk Kim     | PARSEOP_OBJECTTYPE '('
1328313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1329313a0c13SJung-uk Kim     ;
1330313a0c13SJung-uk Kim 
1331*f8146b88SJung-uk Kim OffsetTerm
1332*f8146b88SJung-uk Kim     : PARSEOP_OFFSET '('
1333*f8146b88SJung-uk Kim         AmlPackageLengthTerm
1334*f8146b88SJung-uk Kim         ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1335*f8146b88SJung-uk Kim     | PARSEOP_OFFSET '('
1336*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1337*f8146b88SJung-uk Kim     ;
1338*f8146b88SJung-uk Kim 
1339*f8146b88SJung-uk Kim OpRegionTerm
1340*f8146b88SJung-uk Kim     : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1341*f8146b88SJung-uk Kim         NameString
1342*f8146b88SJung-uk Kim         ',' OpRegionSpaceIdTerm
1343*f8146b88SJung-uk Kim         TermArgItem
1344*f8146b88SJung-uk Kim         TermArgItem
1345*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1346*f8146b88SJung-uk Kim     | PARSEOP_OPERATIONREGION '('
1347*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1348*f8146b88SJung-uk Kim     ;
1349*f8146b88SJung-uk Kim 
1350*f8146b88SJung-uk Kim OpRegionSpaceIdTerm
1351*f8146b88SJung-uk Kim     : RegionSpaceKeyword            {}
1352*f8146b88SJung-uk Kim     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1353*f8146b88SJung-uk Kim     ;
1354*f8146b88SJung-uk Kim 
1355313a0c13SJung-uk Kim OrTerm
1356313a0c13SJung-uk Kim     : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1357313a0c13SJung-uk Kim         TermArg
1358313a0c13SJung-uk Kim         TermArgItem
1359313a0c13SJung-uk Kim         Target
1360313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1361313a0c13SJung-uk Kim     | PARSEOP_OR '('
1362313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1363313a0c13SJung-uk Kim     ;
1364313a0c13SJung-uk Kim 
1365*f8146b88SJung-uk Kim PackageTerm
1366*f8146b88SJung-uk Kim     : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
1367*f8146b88SJung-uk Kim         VarPackageLengthTerm
1368*f8146b88SJung-uk Kim         ')' '{'
1369*f8146b88SJung-uk Kim             PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1370*f8146b88SJung-uk Kim     | PARSEOP_PACKAGE '('
1371*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1372*f8146b88SJung-uk Kim     ;
1373*f8146b88SJung-uk Kim 
1374*f8146b88SJung-uk Kim PowerResTerm
1375*f8146b88SJung-uk Kim     : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1376*f8146b88SJung-uk Kim         NameString
1377*f8146b88SJung-uk Kim         ',' ByteConstExpr
1378*f8146b88SJung-uk Kim         ',' WordConstExpr
1379*f8146b88SJung-uk Kim         ')' '{'
1380*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1381*f8146b88SJung-uk Kim     | PARSEOP_POWERRESOURCE '('
1382*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1383*f8146b88SJung-uk Kim     ;
1384*f8146b88SJung-uk Kim 
1385*f8146b88SJung-uk Kim PrintfTerm
1386*f8146b88SJung-uk Kim     : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
1387*f8146b88SJung-uk Kim         StringData
1388*f8146b88SJung-uk Kim         PrintfArgList
1389*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1390*f8146b88SJung-uk Kim     | PARSEOP_PRINTF '('
1391*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1392*f8146b88SJung-uk Kim     ;
1393*f8146b88SJung-uk Kim 
1394*f8146b88SJung-uk Kim PrintfArgList
1395*f8146b88SJung-uk Kim     :                               {$$ = NULL;}
1396*f8146b88SJung-uk Kim     | TermArg                       {$$ = $1;}
1397*f8146b88SJung-uk Kim     | PrintfArgList ','
1398*f8146b88SJung-uk Kim        TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
1399*f8146b88SJung-uk Kim     ;
1400*f8146b88SJung-uk Kim 
1401*f8146b88SJung-uk Kim ProcessorTerm
1402*f8146b88SJung-uk Kim     : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1403*f8146b88SJung-uk Kim         NameString
1404*f8146b88SJung-uk Kim         ',' ByteConstExpr
1405*f8146b88SJung-uk Kim         OptionalDWordConstExpr
1406*f8146b88SJung-uk Kim         OptionalByteConstExpr
1407*f8146b88SJung-uk Kim         ')' '{'
1408*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1409*f8146b88SJung-uk Kim     | PARSEOP_PROCESSOR '('
1410*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1411*f8146b88SJung-uk Kim     ;
1412*f8146b88SJung-uk Kim 
1413*f8146b88SJung-uk Kim RawDataBufferTerm
1414*f8146b88SJung-uk Kim     : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
1415*f8146b88SJung-uk Kim         OptionalWordConst
1416*f8146b88SJung-uk Kim         ')' '{'
1417*f8146b88SJung-uk Kim             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1418*f8146b88SJung-uk Kim     | PARSEOP_DATABUFFER '('
1419*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1420*f8146b88SJung-uk Kim     ;
1421*f8146b88SJung-uk Kim 
1422313a0c13SJung-uk Kim /*
1423313a0c13SJung-uk Kim  * In RefOf, the node isn't really a target, but we can't keep track of it after
1424313a0c13SJung-uk Kim  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1425313a0c13SJung-uk Kim  */
1426313a0c13SJung-uk Kim RefOfTerm
1427313a0c13SJung-uk Kim     : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1428313a0c13SJung-uk Kim         SuperName
1429313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1430313a0c13SJung-uk Kim     | PARSEOP_REFOF '('
1431313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1432313a0c13SJung-uk Kim     ;
1433313a0c13SJung-uk Kim 
1434*f8146b88SJung-uk Kim ReleaseTerm
1435*f8146b88SJung-uk Kim     : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1436*f8146b88SJung-uk Kim         SuperName
1437*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1438*f8146b88SJung-uk Kim     | PARSEOP_RELEASE '('
1439*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1440*f8146b88SJung-uk Kim     ;
1441*f8146b88SJung-uk Kim 
1442*f8146b88SJung-uk Kim ResetTerm
1443*f8146b88SJung-uk Kim     : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1444*f8146b88SJung-uk Kim         SuperName
1445*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1446*f8146b88SJung-uk Kim     | PARSEOP_RESET '('
1447*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1448*f8146b88SJung-uk Kim     ;
1449*f8146b88SJung-uk Kim 
1450*f8146b88SJung-uk Kim ReturnTerm
1451*f8146b88SJung-uk Kim     : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1452*f8146b88SJung-uk Kim         OptionalReturnArg
1453*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1454*f8146b88SJung-uk Kim     | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1455*f8146b88SJung-uk Kim     | PARSEOP_RETURN '('
1456*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1457*f8146b88SJung-uk Kim     ;
1458*f8146b88SJung-uk Kim 
1459*f8146b88SJung-uk Kim ScopeTerm
1460*f8146b88SJung-uk Kim     : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1461*f8146b88SJung-uk Kim         NameString
1462*f8146b88SJung-uk Kim         ')' '{'
1463*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1464*f8146b88SJung-uk Kim     | PARSEOP_SCOPE '('
1465*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1466*f8146b88SJung-uk Kim     ;
1467*f8146b88SJung-uk Kim 
1468313a0c13SJung-uk Kim ShiftLeftTerm
1469313a0c13SJung-uk Kim     : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1470313a0c13SJung-uk Kim         TermArg
1471313a0c13SJung-uk Kim         TermArgItem
1472313a0c13SJung-uk Kim         Target
1473313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1474313a0c13SJung-uk Kim     | PARSEOP_SHIFTLEFT '('
1475313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1476313a0c13SJung-uk Kim     ;
1477313a0c13SJung-uk Kim 
1478313a0c13SJung-uk Kim ShiftRightTerm
1479313a0c13SJung-uk Kim     : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1480313a0c13SJung-uk Kim         TermArg
1481313a0c13SJung-uk Kim         TermArgItem
1482313a0c13SJung-uk Kim         Target
1483313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1484313a0c13SJung-uk Kim     | PARSEOP_SHIFTRIGHT '('
1485313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1486313a0c13SJung-uk Kim     ;
1487313a0c13SJung-uk Kim 
1488*f8146b88SJung-uk Kim SignalTerm
1489*f8146b88SJung-uk Kim     : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1490*f8146b88SJung-uk Kim         SuperName
1491*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1492*f8146b88SJung-uk Kim     | PARSEOP_SIGNAL '('
1493*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1494*f8146b88SJung-uk Kim     ;
1495*f8146b88SJung-uk Kim 
1496313a0c13SJung-uk Kim SizeOfTerm
1497313a0c13SJung-uk Kim     : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1498313a0c13SJung-uk Kim         SuperName
1499313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1500313a0c13SJung-uk Kim     | PARSEOP_SIZEOF '('
1501313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1502313a0c13SJung-uk Kim     ;
1503313a0c13SJung-uk Kim 
1504*f8146b88SJung-uk Kim SleepTerm
1505*f8146b88SJung-uk Kim     : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1506*f8146b88SJung-uk Kim         TermArg
1507*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1508*f8146b88SJung-uk Kim     | PARSEOP_SLEEP '('
1509*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1510*f8146b88SJung-uk Kim     ;
1511*f8146b88SJung-uk Kim 
1512*f8146b88SJung-uk Kim StallTerm
1513*f8146b88SJung-uk Kim     : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1514*f8146b88SJung-uk Kim         TermArg
1515*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1516*f8146b88SJung-uk Kim     | PARSEOP_STALL '('
1517*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1518*f8146b88SJung-uk Kim     ;
1519*f8146b88SJung-uk Kim 
1520313a0c13SJung-uk Kim StoreTerm
1521313a0c13SJung-uk Kim     : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1522313a0c13SJung-uk Kim         TermArg
1523313a0c13SJung-uk Kim         ',' SuperName
1524313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1525313a0c13SJung-uk Kim     | PARSEOP_STORE '('
1526313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1527313a0c13SJung-uk Kim     ;
1528313a0c13SJung-uk Kim 
1529313a0c13SJung-uk Kim SubtractTerm
1530313a0c13SJung-uk Kim     : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1531313a0c13SJung-uk Kim         TermArg
1532313a0c13SJung-uk Kim         TermArgItem
1533313a0c13SJung-uk Kim         Target
1534313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1535313a0c13SJung-uk Kim     | PARSEOP_SUBTRACT '('
1536313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1537313a0c13SJung-uk Kim     ;
1538*f8146b88SJung-uk Kim SwitchTerm
1539*f8146b88SJung-uk Kim     : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1540*f8146b88SJung-uk Kim         TermArg
1541*f8146b88SJung-uk Kim         ')' '{'
1542*f8146b88SJung-uk Kim             CaseDefaultTermList '}'
1543*f8146b88SJung-uk Kim                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1544*f8146b88SJung-uk Kim     | PARSEOP_SWITCH '('
1545*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1546*f8146b88SJung-uk Kim     ;
1547*f8146b88SJung-uk Kim 
1548*f8146b88SJung-uk Kim ThermalZoneTerm
1549*f8146b88SJung-uk Kim     : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1550*f8146b88SJung-uk Kim         NameString
1551*f8146b88SJung-uk Kim         ')' '{'
1552*f8146b88SJung-uk Kim             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1553*f8146b88SJung-uk Kim     | PARSEOP_THERMALZONE '('
1554*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1555*f8146b88SJung-uk Kim     ;
1556313a0c13SJung-uk Kim 
1557313a0c13SJung-uk Kim TimerTerm
1558313a0c13SJung-uk Kim     : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1559313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
1560313a0c13SJung-uk Kim     | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1561313a0c13SJung-uk Kim     | PARSEOP_TIMER '('
1562313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1563313a0c13SJung-uk Kim     ;
1564313a0c13SJung-uk Kim 
1565313a0c13SJung-uk Kim ToBCDTerm
1566313a0c13SJung-uk Kim     : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1567313a0c13SJung-uk Kim         TermArg
1568313a0c13SJung-uk Kim         Target
1569313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1570313a0c13SJung-uk Kim     | PARSEOP_TOBCD '('
1571313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1572313a0c13SJung-uk Kim     ;
1573313a0c13SJung-uk Kim 
1574313a0c13SJung-uk Kim ToBufferTerm
1575313a0c13SJung-uk Kim     : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1576313a0c13SJung-uk Kim         TermArg
1577313a0c13SJung-uk Kim         Target
1578313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1579313a0c13SJung-uk Kim     | PARSEOP_TOBUFFER '('
1580313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1581313a0c13SJung-uk Kim     ;
1582313a0c13SJung-uk Kim 
1583313a0c13SJung-uk Kim ToDecimalStringTerm
1584313a0c13SJung-uk Kim     : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1585313a0c13SJung-uk Kim         TermArg
1586313a0c13SJung-uk Kim         Target
1587313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1588313a0c13SJung-uk Kim     | PARSEOP_TODECIMALSTRING '('
1589313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1590313a0c13SJung-uk Kim     ;
1591313a0c13SJung-uk Kim 
1592313a0c13SJung-uk Kim ToHexStringTerm
1593313a0c13SJung-uk Kim     : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1594313a0c13SJung-uk Kim         TermArg
1595313a0c13SJung-uk Kim         Target
1596313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1597313a0c13SJung-uk Kim     | PARSEOP_TOHEXSTRING '('
1598313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1599313a0c13SJung-uk Kim     ;
1600313a0c13SJung-uk Kim 
1601313a0c13SJung-uk Kim ToIntegerTerm
1602313a0c13SJung-uk Kim     : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1603313a0c13SJung-uk Kim         TermArg
1604313a0c13SJung-uk Kim         Target
1605313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1606313a0c13SJung-uk Kim     | PARSEOP_TOINTEGER '('
1607313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1608313a0c13SJung-uk Kim     ;
1609313a0c13SJung-uk Kim 
1610*f8146b88SJung-uk Kim ToPLDTerm
1611*f8146b88SJung-uk Kim     : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
1612*f8146b88SJung-uk Kim         PldKeywordList
1613*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1614*f8146b88SJung-uk Kim     | PARSEOP_TOPLD '('
1615*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
16161c0e1b6dSJung-uk Kim     ;
16171c0e1b6dSJung-uk Kim 
16181c0e1b6dSJung-uk Kim PldKeywordList
16191c0e1b6dSJung-uk Kim     :                               {$$ = NULL;}
16201c0e1b6dSJung-uk Kim     | PldKeyword
16211c0e1b6dSJung-uk Kim         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
16221c0e1b6dSJung-uk Kim     | PldKeyword
16231c0e1b6dSJung-uk Kim         PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
16241c0e1b6dSJung-uk Kim     | PldKeywordList ','            /* Allows a trailing comma at list end */
16251c0e1b6dSJung-uk Kim     | PldKeywordList ','
16261c0e1b6dSJung-uk Kim         PldKeyword
16271c0e1b6dSJung-uk Kim         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
16281c0e1b6dSJung-uk Kim     | PldKeywordList ','
16291c0e1b6dSJung-uk Kim         PldKeyword
16301c0e1b6dSJung-uk Kim         PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
16311c0e1b6dSJung-uk Kim     ;
16321c0e1b6dSJung-uk Kim 
16331c0e1b6dSJung-uk Kim 
1634313a0c13SJung-uk Kim ToStringTerm
1635313a0c13SJung-uk Kim     : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1636313a0c13SJung-uk Kim         TermArg
1637313a0c13SJung-uk Kim         OptionalCount
1638313a0c13SJung-uk Kim         Target
1639313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1640313a0c13SJung-uk Kim     | PARSEOP_TOSTRING '('
1641313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1642313a0c13SJung-uk Kim     ;
1643313a0c13SJung-uk Kim 
1644313a0c13SJung-uk Kim ToUUIDTerm
1645313a0c13SJung-uk Kim     : PARSEOP_TOUUID '('
1646313a0c13SJung-uk Kim         StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1647313a0c13SJung-uk Kim     | PARSEOP_TOUUID '('
1648313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1649313a0c13SJung-uk Kim     ;
1650313a0c13SJung-uk Kim 
1651*f8146b88SJung-uk Kim UnicodeTerm
1652*f8146b88SJung-uk Kim     : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
1653*f8146b88SJung-uk Kim         StringData
1654*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
1655*f8146b88SJung-uk Kim     | PARSEOP_UNICODE '('
1656*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1657*f8146b88SJung-uk Kim     ;
1658*f8146b88SJung-uk Kim 
1659*f8146b88SJung-uk Kim UnloadTerm
1660*f8146b88SJung-uk Kim     : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1661*f8146b88SJung-uk Kim         SuperName
1662*f8146b88SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
1663*f8146b88SJung-uk Kim     | PARSEOP_UNLOAD '('
1664*f8146b88SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1665*f8146b88SJung-uk Kim     ;
1666*f8146b88SJung-uk Kim 
1667313a0c13SJung-uk Kim WaitTerm
1668313a0c13SJung-uk Kim     : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1669313a0c13SJung-uk Kim         SuperName
1670313a0c13SJung-uk Kim         TermArgItem
1671313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1672313a0c13SJung-uk Kim     | PARSEOP_WAIT '('
1673313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1674313a0c13SJung-uk Kim     ;
1675313a0c13SJung-uk Kim 
1676313a0c13SJung-uk Kim XOrTerm
1677313a0c13SJung-uk Kim     : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1678313a0c13SJung-uk Kim         TermArg
1679313a0c13SJung-uk Kim         TermArgItem
1680313a0c13SJung-uk Kim         Target
1681313a0c13SJung-uk Kim         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1682313a0c13SJung-uk Kim     | PARSEOP_XOR '('
1683313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1684313a0c13SJung-uk Kim     ;
1685313a0c13SJung-uk Kim 
1686*f8146b88SJung-uk Kim WhileTerm
1687*f8146b88SJung-uk Kim     : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1688*f8146b88SJung-uk Kim         TermArg
1689*f8146b88SJung-uk Kim         ')' '{' TermList '}'
1690*f8146b88SJung-uk Kim                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1691*f8146b88SJung-uk Kim     | PARSEOP_WHILE '('
1692313a0c13SJung-uk Kim         error ')'                   {$$ = AslDoError(); yyclearin;}
1693313a0c13SJung-uk Kim     ;
1694313a0c13SJung-uk Kim 
1695313a0c13SJung-uk Kim 
1696*f8146b88SJung-uk Kim /*******************************************************************************
1697*f8146b88SJung-uk Kim  *
1698*f8146b88SJung-uk Kim  * ASL Helper Terms
1699*f8146b88SJung-uk Kim  *
1700*f8146b88SJung-uk Kim  ******************************************************************************/
1701313a0c13SJung-uk Kim 
1702313a0c13SJung-uk Kim AmlPackageLengthTerm
1703313a0c13SJung-uk Kim     : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
1704313a0c13SJung-uk Kim     ;
1705313a0c13SJung-uk Kim 
1706313a0c13SJung-uk Kim NameStringItem
1707313a0c13SJung-uk Kim     : ',' NameString                {$$ = $2;}
1708313a0c13SJung-uk Kim     | ',' error                     {$$ = AslDoError (); yyclearin;}
1709313a0c13SJung-uk Kim     ;
1710313a0c13SJung-uk Kim 
1711313a0c13SJung-uk Kim TermArgItem
1712313a0c13SJung-uk Kim     : ',' TermArg                   {$$ = $2;}
1713313a0c13SJung-uk Kim     | ',' error                     {$$ = AslDoError (); yyclearin;}
1714313a0c13SJung-uk Kim     ;
1715313a0c13SJung-uk Kim 
1716313a0c13SJung-uk Kim OptionalReference
1717313a0c13SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
1718313a0c13SJung-uk Kim     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
1719313a0c13SJung-uk Kim     | ',' TermArg                   {$$ = $2;}
1720313a0c13SJung-uk Kim     ;
1721313a0c13SJung-uk Kim 
1722313a0c13SJung-uk Kim OptionalReturnArg
1723313a0c13SJung-uk Kim     :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
1724313a0c13SJung-uk Kim     | TermArg                       {$$ = $1;}
1725313a0c13SJung-uk Kim     ;
1726313a0c13SJung-uk Kim 
1727313a0c13SJung-uk Kim OptionalSerializeRuleKeyword
1728313a0c13SJung-uk Kim     :                               {$$ = NULL;}
1729313a0c13SJung-uk Kim     | ','                           {$$ = NULL;}
1730313a0c13SJung-uk Kim     | ',' SerializeRuleKeyword      {$$ = $2;}
1731313a0c13SJung-uk Kim     ;
1732313a0c13SJung-uk Kim 
1733313a0c13SJung-uk Kim OptionalTermArg
1734*f8146b88SJung-uk Kim     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1735313a0c13SJung-uk Kim     | TermArg                       {$$ = $1;}
1736313a0c13SJung-uk Kim     ;
1737313a0c13SJung-uk Kim 
1738*f8146b88SJung-uk Kim OptionalBufferLength
1739313a0c13SJung-uk Kim     :                               {$$ = NULL;}
1740*f8146b88SJung-uk Kim     | TermArg                       {$$ = $1;}
1741313a0c13SJung-uk Kim     ;
1742313a0c13SJung-uk Kim 
1743313a0c13SJung-uk Kim OptionalWordConst
1744313a0c13SJung-uk Kim     :                               {$$ = NULL;}
1745313a0c13SJung-uk Kim     | WordConst                     {$$ = $1;}
1746313a0c13SJung-uk Kim     ;
1747