xref: /netbsd-src/sys/external/bsd/acpica/dist/compiler/asltypes.y (revision c7960b37466ae0fd417c32e6acbb4b956ac7a121)
1 NoEcho('
2 /******************************************************************************
3  *
4  * Module Name: asltypes.y - Bison/Yacc production types/names
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2023, Intel Corp.
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions, and the following disclaimer,
17  *    without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  *    substantially similar to the "NO WARRANTY" disclaimer below
20  *    ("Disclaimer") and any redistribution must be conditioned upon
21  *    including a substantially similar Disclaimer requirement for further
22  *    binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  *    of any contributors may be used to endorse or promote products derived
25  *    from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44 
45 ')
46 
47 /******************************************************************************
48  *
49  * Production names
50  *
51  *****************************************************************************/
52 
53 %type <n> ArgList
54 %type <n> AslCode
55 %type <n> BufferData
56 %type <n> BufferTermData
57 %type <n> CompilerDirective
58 %type <n> DataObject
59 %type <n> DefinitionBlockTerm
60 %type <n> DefinitionBlockList
61 %type <n> IntegerData
62 %type <n> NamedObject
63 %type <n> NameSpaceModifier
64 %type <n> Object
65 %type <n> PackageData
66 %type <n> ParameterTypePackage
67 %type <n> ParameterTypePackageList
68 %type <n> ParameterTypesPackage
69 %type <n> ParameterTypesPackageList
70 /*
71 %type <n> RequiredTarget
72 */
73 %type <n> SimpleName
74 %type <n> StringData
75 %type <n> StringLiteral
76 %type <n> Target
77 %type <n> Term
78 %type <n> TermArg
79 %type <n> TermList
80 %type <n> MethodInvocationTerm
81 
82 /* Type4Opcode is obsolete */
83 
84 %type <n> Type1Opcode
85 %type <n> Type2BufferOpcode
86 %type <n> Type2BufferOrStringOpcode
87 %type <n> Type2IntegerOpcode
88 %type <n> Type2Opcode
89 %type <n> Type2StringOpcode
90 %type <n> Type3Opcode
91 %type <n> Type5Opcode
92 %type <n> Type6Opcode
93 
94 %type <n> AccessAsTerm
95 %type <n> ExternalTerm
96 %type <n> FieldUnit
97 %type <n> FieldUnitEntry
98 %type <n> FieldUnitList
99 %type <n> IncludeTerm
100 %type <n> OffsetTerm
101 %type <n> OptionalAccessAttribTerm
102 
103 /* Named Objects */
104 
105 %type <n> BankFieldTerm
106 %type <n> CreateBitFieldTerm
107 %type <n> CreateByteFieldTerm
108 %type <n> CreateDWordFieldTerm
109 %type <n> CreateFieldTerm
110 %type <n> CreateQWordFieldTerm
111 %type <n> CreateWordFieldTerm
112 %type <n> DataRegionTerm
113 %type <n> DeviceTerm
114 %type <n> EventTerm
115 %type <n> FieldTerm
116 %type <n> FunctionTerm
117 %type <n> IndexFieldTerm
118 %type <n> MethodTerm
119 %type <n> MutexTerm
120 %type <n> OpRegionTerm
121 %type <n> OpRegionSpaceIdTerm
122 %type <n> PowerResTerm
123 %type <n> ProcessorTerm
124 %type <n> ThermalZoneTerm
125 
126 /* Namespace modifiers */
127 
128 %type <n> AliasTerm
129 %type <n> NameTerm
130 %type <n> ScopeTerm
131 
132 /* Type 1 opcodes */
133 
134 %type <n> BreakPointTerm
135 %type <n> BreakTerm
136 %type <n> CaseDefaultTermList
137 %type <n> CaseTerm
138 %type <n> ContinueTerm
139 %type <n> DefaultTerm
140 %type <n> ElseTerm
141 %type <n> FatalTerm
142 %type <n> ElseIfTerm
143 %type <n> IfTerm
144 %type <n> LoadTerm
145 %type <n> NoOpTerm
146 %type <n> NotifyTerm
147 %type <n> ReleaseTerm
148 %type <n> ResetTerm
149 %type <n> ReturnTerm
150 %type <n> SignalTerm
151 %type <n> SleepTerm
152 %type <n> StallTerm
153 %type <n> SwitchTerm
154 %type <n> UnloadTerm
155 %type <n> WhileTerm
156 /* %type <n> CaseTermList */
157 
158 /* Type 2 opcodes */
159 
160 %type <n> AcquireTerm
161 %type <n> AddTerm
162 %type <n> AndTerm
163 %type <n> ConcatResTerm
164 %type <n> ConcatTerm
165 %type <n> CondRefOfTerm
166 %type <n> CopyObjectTerm
167 %type <n> DecTerm
168 %type <n> DerefOfTerm
169 %type <n> DivideTerm
170 %type <n> FindSetLeftBitTerm
171 %type <n> FindSetRightBitTerm
172 %type <n> FromBCDTerm
173 %type <n> IncTerm
174 %type <n> IndexTerm
175 %type <n> LAndTerm
176 %type <n> LEqualTerm
177 %type <n> LGreaterEqualTerm
178 %type <n> LGreaterTerm
179 %type <n> LLessEqualTerm
180 %type <n> LLessTerm
181 %type <n> LNotEqualTerm
182 %type <n> LNotTerm
183 %type <n> LoadTableTerm
184 %type <n> LOrTerm
185 %type <n> MatchTerm
186 %type <n> MidTerm
187 %type <n> ModTerm
188 %type <n> MultiplyTerm
189 %type <n> NAndTerm
190 %type <n> NOrTerm
191 %type <n> NotTerm
192 %type <n> ObjectTypeTerm
193 %type <n> OrTerm
194 %type <n> RawDataBufferTerm
195 %type <n> RefOfTerm
196 %type <n> ShiftLeftTerm
197 %type <n> ShiftRightTerm
198 %type <n> SizeOfTerm
199 %type <n> StoreTerm
200 %type <n> SubtractTerm
201 %type <n> TimerTerm
202 %type <n> ToBCDTerm
203 %type <n> ToBufferTerm
204 %type <n> ToDecimalStringTerm
205 %type <n> ToHexStringTerm
206 %type <n> ToIntegerTerm
207 %type <n> ToStringTerm
208 %type <n> WaitTerm
209 %type <n> XOrTerm
210 
211 /* Keywords */
212 
213 %type <n> AccessAttribKeyword
214 %type <n> AccessTypeKeyword
215 %type <n> AddressingModeKeyword
216 %type <n> AddressKeyword
217 %type <n> AddressSpaceKeyword
218 %type <n> BitsPerByteKeyword
219 %type <n> ClockPhaseKeyword
220 %type <n> ClockPolarityKeyword
221 %type <n> DecodeKeyword
222 %type <n> DevicePolarityKeyword
223 %type <n> DMATypeKeyword
224 %type <n> EndianKeyword
225 %type <n> FlowControlKeyword
226 %type <n> InterruptLevel
227 %type <n> InterruptTypeKeyword
228 %type <n> IODecodeKeyword
229 %type <n> IoRestrictionKeyword
230 %type <n> LockRuleKeyword
231 %type <n> MatchOpKeyword
232 %type <n> MaxKeyword
233 %type <n> MemTypeKeyword
234 %type <n> MinKeyword
235 %type <n> ObjectTypeKeyword
236 %type <n> OptionalBusMasterKeyword
237 %type <n> OptionalReadWriteKeyword
238 %type <n> ParityTypeKeyword
239 %type <n> PinConfigByte
240 %type <n> PinConfigKeyword
241 %type <n> RangeTypeKeyword
242 %type <n> RegionSpaceKeyword
243 %type <n> ResourceTypeKeyword
244 %type <n> SerializeRuleKeyword
245 %type <n> ShareTypeKeyword
246 %type <n> SlaveModeKeyword
247 %type <n> StopBitsKeyword
248 %type <n> TranslationKeyword
249 %type <n> TypeKeyword
250 %type <n> UpdateRuleKeyword
251 %type <n> WireModeKeyword
252 %type <n> XferSizeKeyword
253 %type <n> XferTypeKeyword
254 %type <n> ClockScaleKeyword
255 %type <n> ClockModeKeyword
256 
257 /* Types */
258 
259 %type <n> SuperName
260 %type <n> ObjectTypeSource
261 %type <n> DerefOfSource
262 %type <n> RefOfSource
263 %type <n> CondRefOfSource
264 %type <n> ArgTerm
265 %type <n> LocalTerm
266 %type <n> DebugTerm
267 
268 %type <n> Integer
269 %type <n> ByteConst
270 %type <n> WordConst
271 %type <n> DWordConst
272 %type <n> QWordConst
273 %type <n> String
274 
275 %type <n> ConstTerm
276 %type <n> ConstExprTerm
277 %type <n> ByteConstExpr
278 %type <n> WordConstExpr
279 %type <n> DWordConstExpr
280 %type <n> QWordConstExpr
281 
282 %type <n> DWordList
283 %type <n> BufferTerm
284 %type <n> ByteList
285 
286 %type <n> PackageElement
287 %type <n> PackageList
288 %type <n> PackageTerm
289 
290 /* Macros */
291 
292 %type <n> EISAIDTerm
293 %type <n> ResourceMacroList
294 %type <n> ResourceMacroTerm
295 %type <n> ResourceTemplateTerm
296 %type <n> PldKeyword
297 %type <n> PldKeywordList
298 %type <n> ToPLDTerm
299 %type <n> ToUUIDTerm
300 %type <n> UnicodeTerm
301 %type <n> PrintfArgList
302 %type <n> PrintfTerm
303 %type <n> FprintfTerm
304 %type <n> ForTerm
305 
306 /* Resource Descriptors */
307 
308 %type <n> ClockInputTerm
309 %type <n> ConnectionTerm
310 %type <n> Csi2SerialBusTerm
311 %type <n> DMATerm
312 %type <n> DWordIOTerm
313 %type <n> DWordMemoryTerm
314 %type <n> DWordPccTerm
315 %type <n> DWordSpaceTerm
316 %type <n> EndDependentFnTerm
317 %type <n> ExtendedIOTerm
318 %type <n> ExtendedMemoryTerm
319 %type <n> ExtendedSpaceTerm
320 %type <n> FixedDmaTerm
321 %type <n> FixedIOTerm
322 %type <n> GpioIntTerm
323 %type <n> GpioIoTerm
324 %type <n> I2cSerialBusTerm
325 %type <n> I2cSerialBusTermV2
326 %type <n> InterruptTerm
327 %type <n> IOTerm
328 %type <n> IRQNoFlagsTerm
329 %type <n> IRQTerm
330 %type <n> Memory24Term
331 %type <n> Memory32FixedTerm
332 %type <n> Memory32Term
333 %type <n> NameSeg
334 %type <n> NameString
335 %type <n> PinConfigTerm
336 %type <n> PinFunctionTerm
337 %type <n> PinGroupTerm
338 %type <n> PinGroupConfigTerm
339 %type <n> PinGroupFunctionTerm
340 %type <n> QWordIOTerm
341 %type <n> QWordMemoryTerm
342 %type <n> QWordPccTerm
343 %type <n> QWordSpaceTerm
344 %type <n> RegisterTerm
345 %type <n> SpiSerialBusTerm
346 %type <n> SpiSerialBusTermV2
347 %type <n> StartDependentFnNoPriTerm
348 %type <n> StartDependentFnTerm
349 %type <n> UartSerialBusTerm
350 %type <n> UartSerialBusTermV2
351 %type <n> VendorLongTerm
352 %type <n> VendorShortTerm
353 %type <n> WordBusNumberTerm
354 %type <n> WordIOTerm
355 %type <n> WordPccTerm
356 %type <n> WordSpaceTerm
357 
358 /* Local types that help construct the AML, not in ACPI spec */
359 
360 %type <n> AmlPackageLengthTerm
361 %type <n> IncludeEndTerm
362 %type <n> NameStringItem
363 %type <n> TermArgItem
364 
365 %type <n> OptionalAccessSize
366 %type <n> OptionalAccessTypeKeyword
367 %type <n> OptionalAddressingMode
368 %type <n> OptionalAddressRange
369 %type <n> OptionalBitsPerByte
370 %type <n> OptionalBuffer_Last
371 %type <n> OptionalByteConstExpr
372 %type <n> OptionalCount
373 %type <n> OptionalDataCount
374 %type <n> OptionalDecodeType
375 %type <n> OptionalDevicePolarity
376 %type <n> OptionalDWordConstExpr
377 %type <n> OptionalEndian
378 %type <n> OptionalFlowControl
379 %type <n> OptionalIoRestriction
380 %type <n> OptionalListString
381 %type <n> OptionalLockRuleKeyword
382 %type <n> OptionalMaxType
383 %type <n> OptionalMemType
384 %type <n> OptionalMinType
385 %type <n> OptionalNameString
386 %type <n> OptionalNameString_First
387 %type <n> OptionalNameString_Last
388 %type <n> OptionalObjectTypeKeyword
389 %type <n> OptionalParameterTypePackage
390 %type <n> OptionalParameterTypesPackage
391 %type <n> OptionalParentheses
392 %type <n> OptionalParityType
393 %type <n> OptionalPredicate
394 %type <n> OptionalQWordConstExpr
395 %type <n> OptionalRangeType
396 %type <n> OptionalReference
397 %type <n> OptionalResourceType
398 %type <n> OptionalResourceType_First
399 %type <n> OptionalProducerResourceType
400 %type <n> OptionalReturnArg
401 %type <n> OptionalSerializeRuleKeyword
402 %type <n> OptionalShareType
403 %type <n> OptionalShareType_First
404 %type <n> OptionalSlaveMode
405 %type <n> OptionalSlaveMode_First
406 %type <n> OptionalStopBits
407 %type <n> OptionalStringData
408 %type <n> OptionalSyncLevel
409 %type <n> OptionalTermArg
410 %type <n> OptionalTranslationType_Last
411 %type <n> OptionalType
412 %type <n> OptionalType_Last
413 %type <n> OptionalUpdateRuleKeyword
414 %type <n> OptionalWireMode
415 %type <n> OptionalWordConst
416 %type <n> OptionalWordConstExpr
417 %type <n> OptionalXferSize
418 
419 /*
420  * ASL+ (C-style) parser
421  */
422 
423 /* Expressions and symbolic operators */
424 
425 %type <n> Expression
426 %type <n> EqualsTerm
427 %type <n> IndexExpTerm
428 
429 /* ASL+ Named object declaration support */
430 /*
431 %type <n> NameTermAslPlus
432 
433 %type <n> BufferBegin
434 %type <n> BufferEnd
435 %type <n> PackageBegin
436 %type <n> PackageEnd
437 %type <n> OptionalLength
438 */
439 /* ASL+ Structure declarations */
440 /*
441 %type <n> StructureTerm
442 %type <n> StructureTermBegin
443 %type <n> StructureType
444 %type <n> StructureTag
445 %type <n> StructureElementList
446 %type <n> StructureElement
447 %type <n> StructureElementType
448 %type <n> OptionalStructureElementType
449 %type <n> StructureId
450 */
451 /* Structure instantiantion */
452 /*
453 %type <n> StructureInstanceTerm
454 %type <n> StructureTagReference
455 %type <n> StructureInstanceEnd
456 */
457 /* Pseudo-instantiantion for method Args/Locals */
458 /*
459 %type <n> MethodStructureTerm
460 %type <n> LocalStructureName
461 */
462 /* Direct structure references via the Index operator */
463 /*
464 %type <n> StructureReference
465 %type <n> StructureIndexTerm
466 %type <n> StructurePointerTerm
467 %type <n> StructurePointerReference
468 %type <n> OptionalDefinePointer
469 */
470