1 2 %{ 3 /****************************************************************************** 4 * 5 * Module Name: aslcompiler.l - Flex input file 6 * 7 *****************************************************************************/ 8 9 /****************************************************************************** 10 * 11 * 1. Copyright Notice 12 * 13 * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. 14 * All rights reserved. 15 * 16 * 2. License 17 * 18 * 2.1. This is your license from Intel Corp. under its intellectual property 19 * rights. You may have additional license terms from the party that provided 20 * you this software, covering your right to use that party's intellectual 21 * property rights. 22 * 23 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 24 * copy of the source code appearing in this file ("Covered Code") an 25 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 26 * base code distributed originally by Intel ("Original Intel Code") to copy, 27 * make derivatives, distribute, use and display any portion of the Covered 28 * Code in any form, with the right to sublicense such rights; and 29 * 30 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 31 * license (with the right to sublicense), under only those claims of Intel 32 * patents that are infringed by the Original Intel Code, to make, use, sell, 33 * offer to sell, and import the Covered Code and derivative works thereof 34 * solely to the minimum extent necessary to exercise the above copyright 35 * license, and in no event shall the patent license extend to any additions 36 * to or modifications of the Original Intel Code. No other license or right 37 * is granted directly or by implication, estoppel or otherwise; 38 * 39 * The above copyright and patent license is granted only if the following 40 * conditions are met: 41 * 42 * 3. Conditions 43 * 44 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 45 * Redistribution of source code of any substantial portion of the Covered 46 * Code or modification with rights to further distribute source must include 47 * the above Copyright Notice, the above License, this list of Conditions, 48 * and the following Disclaimer and Export Compliance provision. In addition, 49 * Licensee must cause all Covered Code to which Licensee contributes to 50 * contain a file documenting the changes Licensee made to create that Covered 51 * Code and the date of any change. Licensee must include in that file the 52 * documentation of any changes made by any predecessor Licensee. Licensee 53 * must include a prominent statement that the modification is derived, 54 * directly or indirectly, from Original Intel Code. 55 * 56 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 57 * Redistribution of source code of any substantial portion of the Covered 58 * Code or modification without rights to further distribute source must 59 * include the following Disclaimer and Export Compliance provision in the 60 * documentation and/or other materials provided with distribution. In 61 * addition, Licensee may not authorize further sublicense of source of any 62 * portion of the Covered Code, and must include terms to the effect that the 63 * license from Licensee to its licensee is limited to the intellectual 64 * property embodied in the software Licensee provides to its licensee, and 65 * not to intellectual property embodied in modifications its licensee may 66 * make. 67 * 68 * 3.3. Redistribution of Executable. Redistribution in executable form of any 69 * substantial portion of the Covered Code or modification must reproduce the 70 * above Copyright Notice, and the following Disclaimer and Export Compliance 71 * provision in the documentation and/or other materials provided with the 72 * distribution. 73 * 74 * 3.4. Intel retains all right, title, and interest in and to the Original 75 * Intel Code. 76 * 77 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 78 * Intel shall be used in advertising or otherwise to promote the sale, use or 79 * other dealings in products derived from or relating to the Covered Code 80 * without prior written authorization from Intel. 81 * 82 * 4. Disclaimer and Export Compliance 83 * 84 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 85 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 86 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 87 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 88 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 89 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 90 * PARTICULAR PURPOSE. 91 * 92 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 93 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 94 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 95 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 96 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 97 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 98 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 99 * LIMITED REMEDY. 100 * 101 * 4.3. Licensee shall not export, either directly or indirectly, any of this 102 * software or system incorporating such software without first obtaining any 103 * required license or other approval from the U. S. Department of Commerce or 104 * any other agency or department of the United States Government. In the 105 * event Licensee exports any such software from the United States or 106 * re-exports any such software from a foreign destination, Licensee shall 107 * ensure that the distribution and export/re-export of the software is in 108 * compliance with all laws, regulations, orders, or other restrictions of the 109 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 110 * any of its subsidiaries will export/re-export any technical data, process, 111 * software, or service, directly or indirectly, to any country for which the 112 * United States government or any agency thereof requires an export license, 113 * other governmental approval, or letter of assurance, without first obtaining 114 * such license, approval or letter. 115 * 116 *****************************************************************************/ 117 118 119 #include <stdlib.h> 120 #include <string.h> 121 #include <contrib/dev/acpica/compiler/aslcompiler.h> 122 #include "aslcompiler.y.h" 123 YYSTYPE AslCompilerlval; 124 125 /* 126 * Generation: Use the following command line: 127 * 128 * flex.exe -PAslCompiler -i -o$(InputPath).c $(InputPath) 129 * 130 * -i: Scanner must be case-insensitive 131 */ 132 133 #define _COMPONENT ACPI_COMPILER 134 ACPI_MODULE_NAME ("aslscan") 135 char 136 comment (void); 137 char 138 comment2 (void); 139 void 140 count (int type); 141 char 142 literal (void); 143 void 144 copy (void); 145 146 /*! [Begin] no source code translation */ 147 148 %} 149 150 151 LeadNameChar [A-Za-z_] 152 DigitChar [0-9] 153 HexDigitChar [A-Fa-f0-9] 154 RootChar [\\] 155 Nothing [] 156 157 NameChar [A-Za-z_0-9] 158 NameSeg1 {LeadNameChar}{NameChar} 159 NameSeg2 {LeadNameChar}{NameChar}{NameChar} 160 NameSeg3 {LeadNameChar}{NameChar}{NameChar}{NameChar} 161 NameSeg {LeadNameChar}|{NameSeg1}|{NameSeg2}|{NameSeg3} 162 163 NameString {RootChar}|{RootChar}{NamePath}|[\^]+{NamePath}|{NonEmptyNamePath} 164 NamePath {NonEmptyNamePath}? 165 NonEmptyNamePath {NameSeg}{NamePathTail}* 166 NamePathTail [.]{NameSeg} 167 168 %% 169 170 [ ] { count (0); } 171 [\n] { count (0); } /* Handle files with both LF and CR/LF */ 172 [\r] { count (0); } /* termination on both Unix and Windows */ 173 [ \t] { count (0); } 174 175 176 "/*" { if (!comment ()) yyterminate (); } 177 "//" { if (!comment2 ()) yyterminate (); } 178 179 "\"" { if (literal ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); } 180 181 182 0[xX]{HexDigitChar}+ | 183 {DigitChar}+ { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext); 184 count (1); return (PARSEOP_INTEGER); } 185 186 "Include" { count (1); return (PARSEOP_INCLUDE); } 187 "#include" { count (1); return (PARSEOP_INCLUDE_CSTYLE); } 188 "#line" { count (1); return (PARSEOP_LINE_CSTYLE); } 189 "External" { count (1); return (PARSEOP_EXTERNAL); } 190 191 192 "Ones" { count (1); return (PARSEOP_ONES); } 193 "One" { count (1); return (PARSEOP_ONE); } 194 "Zero" { count (1); return (PARSEOP_ZERO); } 195 "Revision" { count (1); return (PARSEOP_REVISION); } 196 197 "Offset" { count (1); return (PARSEOP_OFFSET); } 198 "AccessAs" { count (1); return (PARSEOP_ACCESSAS); } 199 "BankField" { count (2); return (PARSEOP_BANKFIELD); } 200 "CreateBitField" { count (2); return (PARSEOP_CREATEBITFIELD); } 201 "CreateByteField" { count (2); return (PARSEOP_CREATEBYTEFIELD); } 202 "CreateDWordField" { count (2); return (PARSEOP_CREATEDWORDFIELD); } 203 "CreateField" { count (2); return (PARSEOP_CREATEFIELD); } 204 "CreateQWordField" { count (2); return (PARSEOP_CREATEQWORDFIELD); } 205 "CreateWordField" { count (2); return (PARSEOP_CREATEWORDFIELD); } 206 "DataTableRegion" { count (2); return (PARSEOP_DATATABLEREGION); } 207 "Device" { count (2); return (PARSEOP_DEVICE); } 208 "Event" { count (2); return (PARSEOP_EVENT); } 209 "Field" { count (2); return (PARSEOP_FIELD); } 210 "Function" { count (2); return (PARSEOP_FUNCTION); } 211 "IndexField" { count (2); return (PARSEOP_INDEXFIELD); } 212 "Method" { count (2); return (PARSEOP_METHOD); } 213 "Mutex" { count (2); return (PARSEOP_MUTEX); } 214 "OperationRegion" { count (2); return (PARSEOP_OPERATIONREGION); } 215 "PowerResource" { count (2); return (PARSEOP_POWERRESOURCE); } 216 "Processor" { count (2); return (PARSEOP_PROCESSOR); } 217 "ThermalZone" { count (2); return (PARSEOP_THERMALZONE); } 218 "Alias" { count (2); return (PARSEOP_ALIAS); } 219 "Name" { count (2); return (PARSEOP_NAME); } 220 "Scope" { count (2); return (PARSEOP_SCOPE); } 221 "Break" { count (3); return (PARSEOP_BREAK); } 222 "BreakPoint" { count (3); return (PARSEOP_BREAKPOINT); } 223 "Continue" { count (3); return (PARSEOP_CONTINUE); } 224 "Fatal" { count (3); return (PARSEOP_FATAL); } 225 "If" { count (3); return (PARSEOP_IF); } 226 "Else" { count (3); return (PARSEOP_ELSE); } 227 "ElseIf" { count (3); return (PARSEOP_ELSEIF); } 228 "Load" { count (3); return (PARSEOP_LOAD); } 229 "Noop" { count (3); return (PARSEOP_NOOP); } 230 "Notify" { count (3); return (PARSEOP_NOTIFY); } 231 "Release" { count (3); return (PARSEOP_RELEASE); } 232 "Reset" { count (3); return (PARSEOP_RESET); } 233 "Return" { count (3); return (PARSEOP_RETURN); } 234 "Signal" { count (3); return (PARSEOP_SIGNAL); } 235 "Sleep" { count (3); return (PARSEOP_SLEEP); } 236 "Stall" { count (3); return (PARSEOP_STALL); } 237 "Switch" { count (3); return (PARSEOP_SWITCH); } 238 "Case" { count (3); return (PARSEOP_CASE); } 239 "Default" { count (3); return (PARSEOP_DEFAULT); } 240 "Unload" { count (3); return (PARSEOP_UNLOAD); } 241 "While" { count (3); return (PARSEOP_WHILE); } 242 243 "Acquire" { count (3); return (PARSEOP_ACQUIRE); } 244 "Add" { count (3); return (PARSEOP_ADD); } 245 "And" { count (3); return (PARSEOP_AND); } 246 "Concatenate" { count (3); return (PARSEOP_CONCATENATE); } 247 "ConcatenateResTemplate" { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); } 248 "CondRefOf" { count (3); return (PARSEOP_CONDREFOF); } 249 "CopyObject" { count (3); return (PARSEOP_COPYOBJECT); } 250 "Decrement" { count (3); return (PARSEOP_DECREMENT); } 251 "DeRefOf" { count (3); return (PARSEOP_DEREFOF); } 252 "Divide" { count (3); return (PARSEOP_DIVIDE); } 253 "FindSetLeftBit" { count (3); return (PARSEOP_FINDSETLEFTBIT); } 254 "FindSetRightBit" { count (3); return (PARSEOP_FINDSETRIGHTBIT); } 255 "FromBCD" { count (3); return (PARSEOP_FROMBCD); } 256 "Increment" { count (3); return (PARSEOP_INCREMENT); } 257 "Index" { count (3); return (PARSEOP_INDEX); } 258 "LAnd" { count (3); return (PARSEOP_LAND); } 259 "LEqual" { count (3); return (PARSEOP_LEQUAL); } 260 "LGreater" { count (3); return (PARSEOP_LGREATER); } 261 "LGreaterEqual" { count (3); return (PARSEOP_LGREATEREQUAL); } 262 "LLess" { count (3); return (PARSEOP_LLESS); } 263 "LLessEqual" { count (3); return (PARSEOP_LLESSEQUAL); } 264 "LNot" { count (3); return (PARSEOP_LNOT); } 265 "LNotEqual" { count (3); return (PARSEOP_LNOTEQUAL); } 266 "LoadTable" { count (3); return (PARSEOP_LOADTABLE); } 267 "LOr" { count (3); return (PARSEOP_LOR); } 268 "Match" { count (3); return (PARSEOP_MATCH); } 269 "Mid" { count (3); return (PARSEOP_MID); } 270 "Mod" { count (3); return (PARSEOP_MOD); } 271 "Multiply" { count (3); return (PARSEOP_MULTIPLY); } 272 "NAnd" { count (3); return (PARSEOP_NAND); } 273 "NOr" { count (3); return (PARSEOP_NOR); } 274 "Not" { count (3); return (PARSEOP_NOT); } 275 "ObjectType" { count (3); return (PARSEOP_OBJECTTYPE); } 276 "Or" { count (3); return (PARSEOP_OR); } 277 "RefOf" { count (3); return (PARSEOP_REFOF); } 278 "ShiftLeft" { count (3); return (PARSEOP_SHIFTLEFT); } 279 "ShiftRight" { count (3); return (PARSEOP_SHIFTRIGHT); } 280 "SizeOf" { count (3); return (PARSEOP_SIZEOF); } 281 "Store" { count (3); return (PARSEOP_STORE); } 282 "Subtract" { count (3); return (PARSEOP_SUBTRACT); } 283 "Timer" { count (3); return (PARSEOP_TIMER); } 284 "ToBCD" { count (3); return (PARSEOP_TOBCD); } 285 "ToBuffer" { count (3); return (PARSEOP_TOBUFFER); } 286 "ToDecimalString" { count (3); return (PARSEOP_TODECIMALSTRING); } 287 "ToHexString" { count (3); return (PARSEOP_TOHEXSTRING); } 288 "ToInteger" { count (3); return (PARSEOP_TOINTEGER); } 289 "ToString" { count (3); return (PARSEOP_TOSTRING); } 290 "Wait" { count (3); return (PARSEOP_WAIT); } 291 "XOr" { count (3); return (PARSEOP_XOR); } 292 293 "Arg0" { count (1); return (PARSEOP_ARG0); } 294 "Arg1" { count (1); return (PARSEOP_ARG1); } 295 "Arg2" { count (1); return (PARSEOP_ARG2); } 296 "Arg3" { count (1); return (PARSEOP_ARG3); } 297 "Arg4" { count (1); return (PARSEOP_ARG4); } 298 "Arg5" { count (1); return (PARSEOP_ARG5); } 299 "Arg6" { count (1); return (PARSEOP_ARG6); } 300 301 "Local0" { count (1); return (PARSEOP_LOCAL0); } 302 "Local1" { count (1); return (PARSEOP_LOCAL1); } 303 "Local2" { count (1); return (PARSEOP_LOCAL2); } 304 "Local3" { count (1); return (PARSEOP_LOCAL3); } 305 "Local4" { count (1); return (PARSEOP_LOCAL4); } 306 "Local5" { count (1); return (PARSEOP_LOCAL5); } 307 "Local6" { count (1); return (PARSEOP_LOCAL6); } 308 "Local7" { count (1); return (PARSEOP_LOCAL7); } 309 310 "Debug" { count (1); return (PARSEOP_DEBUG); } 311 312 "DefinitionBlock" { count (1); return (PARSEOP_DEFINITIONBLOCK); } 313 "Buffer" { count (1); return (PARSEOP_BUFFER); } 314 "Package" { count (1); return (PARSEOP_PACKAGE); } 315 316 "EISAID" { count (1); return (PARSEOP_EISAID); } 317 "ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); } 318 "ToUUID" { count (1); return (PARSEOP_TOUUID); } 319 "Unicode" { count (1); return (PARSEOP_UNICODE); } 320 "DMA" { count (1); return (PARSEOP_DMA); } 321 "DWordIO" { count (1); return (PARSEOP_DWORDIO); } 322 "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); } 323 "DWordSpace" { count (1); return (PARSEOP_DWORDSPACE); } 324 "EndDependentFn" { count (1); return (PARSEOP_ENDDEPENDENTFN); } 325 "ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); } 326 "ExtendedMemory" { count (1); return (PARSEOP_EXTENDEDMEMORY); } 327 "ExtendedSpace" { count (1); return (PARSEOP_EXTENDEDSPACE); } 328 "FixedIO" { count (1); return (PARSEOP_FIXEDIO); } 329 "Interrupt" { count (1); return (PARSEOP_INTERRUPT); } 330 "IO" { count (1); return (PARSEOP_IO); } 331 "IRQNoFlags" { count (1); return (PARSEOP_IRQNOFLAGS); } 332 "IRQ" { count (1); return (PARSEOP_IRQ); } 333 "Memory24" { count (1); return (PARSEOP_MEMORY24); } 334 "Memory32Fixed" { count (1); return (PARSEOP_MEMORY32FIXED); } 335 "Memory32" { count (1); return (PARSEOP_MEMORY32); } 336 "QWordIO" { count (1); return (PARSEOP_QWORDIO); } 337 "QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); } 338 "QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); } 339 "Register" { count (1); return (PARSEOP_REGISTER); } 340 "StartDependentFn" { count (1); return (PARSEOP_STARTDEPENDENTFN); } 341 "StartDependentFnNoPri" { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); } 342 "VendorLong" { count (1); return (PARSEOP_VENDORLONG); } 343 "VendorShort" { count (1); return (PARSEOP_VENDORSHORT); } 344 "WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); } 345 "WordIO" { count (1); return (PARSEOP_WORDIO); } 346 "WordSpace" { count (1); return (PARSEOP_WORDSPACE); } 347 348 "UnknownObj" { count (0); return (PARSEOP_OBJECTTYPE_UNK); } 349 "IntObj" { count (0); return (PARSEOP_OBJECTTYPE_INT); } 350 "StrObj" { count (0); return (PARSEOP_OBJECTTYPE_STR); } 351 "BuffObj" { count (0); return (PARSEOP_OBJECTTYPE_BUF); } 352 "PkgObj" { count (0); return (PARSEOP_OBJECTTYPE_PKG); } 353 "FieldUnitObj" { count (0); return (PARSEOP_OBJECTTYPE_FLD); } 354 "DeviceObj" { count (0); return (PARSEOP_OBJECTTYPE_DEV); } 355 "EventObj" { count (0); return (PARSEOP_OBJECTTYPE_EVT); } 356 "MethodObj" { count (0); return (PARSEOP_OBJECTTYPE_MTH); } 357 "MutexObj" { count (0); return (PARSEOP_OBJECTTYPE_MTX); } 358 "OpRegionObj" { count (0); return (PARSEOP_OBJECTTYPE_OPR); } 359 "PowerResObj" { count (0); return (PARSEOP_OBJECTTYPE_POW); } 360 "ProcessorObj" { count (0); return (PARSEOP_OBJECTTYPE_PRO); } 361 "ThermalZoneObj" { count (0); return (PARSEOP_OBJECTTYPE_THZ); } 362 "BuffFieldObj" { count (0); return (PARSEOP_OBJECTTYPE_BFF); } 363 "DDBHandleObj" { count (0); return (PARSEOP_OBJECTTYPE_DDB); } 364 365 "AnyAcc" { count (0); return (PARSEOP_ACCESSTYPE_ANY); } 366 "ByteAcc" { count (0); return (PARSEOP_ACCESSTYPE_BYTE); } 367 "WordAcc" { count (0); return (PARSEOP_ACCESSTYPE_WORD); } 368 "DWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_DWORD); } 369 "QWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_QWORD); } 370 "BufferAcc" { count (0); return (PARSEOP_ACCESSTYPE_BUF); } 371 372 "Lock" { count (0); return (PARSEOP_LOCKRULE_LOCK); } 373 "NoLock" { count (0); return (PARSEOP_LOCKRULE_NOLOCK); } 374 375 "Preserve" { count (0); return (PARSEOP_UPDATERULE_PRESERVE); } 376 "WriteAsOnes" { count (0); return (PARSEOP_UPDATERULE_ONES); } 377 "WriteAsZeros" { count (0); return (PARSEOP_UPDATERULE_ZEROS); } 378 379 "Serialized" { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); } 380 "NotSerialized" { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); } 381 382 "SystemIO" { count (0); return (PARSEOP_REGIONSPACE_IO); } 383 "SystemMemory" { count (0); return (PARSEOP_REGIONSPACE_MEM); } 384 "PCI_Config" { count (0); return (PARSEOP_REGIONSPACE_PCI); } 385 "EmbeddedControl" { count (0); return (PARSEOP_REGIONSPACE_EC); } 386 "SMBus" { count (0); return (PARSEOP_REGIONSPACE_SMBUS); } 387 "SystemCMOS" { count (0); return (PARSEOP_REGIONSPACE_CMOS); } 388 "PciBarTarget" { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); } 389 "IPMI" { count (0); return (PARSEOP_REGIONSPACE_IPMI); } 390 391 "FFixedHW" { count (0); return (PARSEOP_ADDRESSSPACE_FFIXEDHW); } 392 393 "SMBQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); } 394 "SMBSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); } 395 "SMBByte" { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); } 396 "SMBWord" { count (0); return (PARSEOP_ACCESSATTRIB_WORD); } 397 "SMBBlock" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); } 398 "SMBProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); } 399 "SMBBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); } 400 401 "MTR" { count (0); return (PARSEOP_MATCHTYPE_MTR); } 402 "MEQ" { count (0); return (PARSEOP_MATCHTYPE_MEQ); } 403 "MLE" { count (0); return (PARSEOP_MATCHTYPE_MLE); } 404 "MLT" { count (0); return (PARSEOP_MATCHTYPE_MLT); } 405 "MGE" { count (0); return (PARSEOP_MATCHTYPE_MGE); } 406 "MGT" { count (0); return (PARSEOP_MATCHTYPE_MGT); } 407 408 "Compatibility" { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); } 409 "TypeA" { count (0); return (PARSEOP_DMATYPE_A); } 410 "TypeB" { count (0); return (PARSEOP_DMATYPE_B); } 411 "TypeF" { count (0); return (PARSEOP_DMATYPE_F); } 412 413 "BusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); } 414 "NotBusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); } 415 416 "Transfer8" { count (0); return (PARSEOP_XFERTYPE_8); } 417 "Transfer8_16" { count (0); return (PARSEOP_XFERTYPE_8_16); } 418 "Transfer16" { count (0); return (PARSEOP_XFERTYPE_16); } 419 420 "ResourceConsumer" { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); } 421 "ResourceProducer" { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); } 422 423 "MinFixed" { count (0); return (PARSEOP_MINTYPE_FIXED); } 424 "MinNotFixed" { count (0); return (PARSEOP_MINTYPE_NOTFIXED); } 425 426 "MaxFixed" { count (0); return (PARSEOP_MAXTYPE_FIXED); } 427 "MaxNotFixed" { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); } 428 429 "PosDecode" { count (0); return (PARSEOP_DECODETYPE_POS); } 430 "SubDecode" { count (0); return (PARSEOP_DECODETYPE_SUB); } 431 432 "ISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_ISAONLY); } 433 "NonISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); } 434 "EntireRange" { count (0); return (PARSEOP_RANGETYPE_ENTIRE); } 435 436 "Cacheable" { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); } 437 "WriteCombining" { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); } 438 "Prefetchable" { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); } 439 "NonCacheable" { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); } 440 441 "ReadWrite" { count (0); return (PARSEOP_READWRITETYPE_BOTH); } 442 "ReadOnly" { count (0); return (PARSEOP_READWRITETYPE_READONLY); } 443 444 "Edge" { count (0); return (PARSEOP_INTTYPE_EDGE); } 445 "Level" { count (0); return (PARSEOP_INTTYPE_LEVEL); } 446 447 "ActiveHigh" { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); } 448 "ActiveLow" { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); } 449 450 "Shared" { count (0); return (PARSEOP_SHARETYPE_SHARED); } 451 "Exclusive" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); } 452 453 "Decode10" { count (0); return (PARSEOP_IODECODETYPE_10); } 454 "Decode16" { count (0); return (PARSEOP_IODECODETYPE_16); } 455 456 "TypeTranslation" { count (0); return (PARSEOP_TYPE_TRANSLATION); } 457 "TypeStatic" { count (0); return (PARSEOP_TYPE_STATIC); } 458 459 "SparseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); } 460 "DenseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); } 461 462 "AddressRangeMemory" { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); } 463 "AddressRangeReserved" { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); } 464 "AddressRangeNVS" { count (0); return (PARSEOP_ADDRESSTYPE_NVS); } 465 "AddressRangeACPI" { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); } 466 467 468 "{" { count (0); return('{'); } 469 "}" { count (0); return('}'); } 470 "," { count (0); return(','); } 471 "(" { count (0); return('('); } 472 ")" { count (0); return(')'); } 473 474 475 {NameSeg} { char *s; 476 count (0); 477 s=malloc (ACPI_NAME_SIZE + 1); 478 if (strcmp (AslCompilertext, "\\")) 479 { 480 strcpy (s, "____"); 481 AcpiUtStrupr (AslCompilertext); 482 } 483 memcpy (s, AslCompilertext, strlen (AslCompilertext)); 484 AslCompilerlval.s = s; 485 DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s); 486 return (PARSEOP_NAMESEG); } 487 488 {NameString} { char *s; 489 count (0); 490 s=malloc (strlen (AslCompilertext)+1); 491 AcpiUtStrupr (AslCompilertext); 492 strcpy (s, AslCompilertext); 493 s[strlen (AslCompilertext)] = 0; 494 AslCompilerlval.s = s; 495 DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s); 496 return (PARSEOP_NAMESTRING); } 497 498 "*" | 499 "/" { count (1); 500 AslCompilererror ("Parse error, expecting ASL keyword or name");} 501 502 . { count (1); 503 sprintf (MsgBuffer, 504 "Invalid character (0x%2.2X), expecting ASL keyword or name", 505 *AslCompilertext); 506 AslCompilererror (MsgBuffer);} 507 508 <<EOF>> { if (AslPopInputFileStack ()) 509 yyterminate(); 510 else 511 return (PARSEOP_INCLUDE_END);}; 512 513 %% 514 515 /*! [End] no source code translation !*/ 516 517 typedef struct asl_file_node 518 { 519 FILE *File; 520 UINT32 CurrentLineNumber; 521 YY_BUFFER_STATE State; 522 char *Filename; 523 struct asl_file_node *Next; 524 525 } ASL_FILE_NODE; 526 527 ASL_FILE_NODE *InputStack = NULL; 528 529 530 /******************************************************************************* 531 * 532 * FUNCTION: AslPopInputFileStack 533 * 534 * PARAMETERS: None 535 * 536 * RETURN: 0 if a node was popped, -1 otherwise 537 * 538 * DESCRIPTION: Pop the top of the input file stack and point the parser to 539 * the saved parse buffer contained in the fnode. Also, set the 540 * global line counters to the saved values. This function is 541 * called when an include file reaches EOF. 542 * 543 ******************************************************************************/ 544 545 int 546 AslPopInputFileStack ( 547 void) 548 { 549 ASL_FILE_NODE *Fnode; 550 FILE *InputFile = NULL; 551 552 553 Fnode = InputStack; 554 DbgPrint (ASL_PARSE_OUTPUT, "\nPop InputFile Stack, Fnode %p\n\n", Fnode); 555 556 557 if (!Fnode) 558 { 559 return -1; 560 } 561 562 /* Close the current include file */ 563 564 fclose (yyin); 565 566 /* Update the top-of-stack */ 567 568 InputStack = Fnode->Next; 569 InputFile = Fnode->File; 570 571 /* Reset global line counter and filename */ 572 573 Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename; 574 Gbl_CurrentLineNumber = Fnode->CurrentLineNumber; 575 576 /* Point the parser to the popped file */ 577 578 yy_delete_buffer (YY_CURRENT_BUFFER); 579 yy_switch_to_buffer (Fnode->State); 580 581 /* All done with this node */ 582 583 ACPI_FREE (Fnode); 584 return 0; 585 } 586 587 588 /******************************************************************************* 589 * 590 * FUNCTION: AslPushInputFileStack 591 * 592 * PARAMETERS: InputFile - Open file pointer 593 * Filename - Name of the file 594 * 595 * RETURN: None 596 * 597 * DESCRIPTION: Push the InputFile onto the file stack, and point the parser 598 * to this file. Called when an include file is successfully 599 * opened. 600 * 601 ******************************************************************************/ 602 603 void 604 AslPushInputFileStack ( 605 FILE *InputFile, 606 char *Filename) 607 { 608 ASL_FILE_NODE *Fnode; 609 YY_BUFFER_STATE State; 610 611 612 /* Save the current state in an Fnode */ 613 614 Fnode = UtLocalCalloc (sizeof (ASL_FILE_NODE)); 615 616 Fnode->File = yyin; 617 Fnode->Next = InputStack; 618 Fnode->State = YY_CURRENT_BUFFER; 619 Fnode->CurrentLineNumber = Gbl_CurrentLineNumber; 620 Fnode->Filename = Gbl_Files[ASL_FILE_INPUT].Filename; 621 622 /* Push it on the stack */ 623 624 InputStack = Fnode; 625 626 /* Point the parser to this file */ 627 628 State = yy_create_buffer (InputFile, YY_BUF_SIZE); 629 yy_switch_to_buffer (State); 630 631 DbgPrint (ASL_PARSE_OUTPUT, "\nPush InputFile Stack, returning %p\n\n", InputFile); 632 633 /* Reset the global line count and filename */ 634 635 Gbl_Files[ASL_FILE_INPUT].Filename = Filename; 636 Gbl_CurrentLineNumber = 1; 637 yyin = InputFile; 638 } 639 640 641 /******************************************************************************* 642 * 643 * FUNCTION: ResetCurrentLineBuffer 644 * 645 * PARAMETERS: None 646 * 647 * RETURN: None 648 * 649 * DESCRIPTION: Reset the Line Buffer to zero, increment global line numbers. 650 * 651 ******************************************************************************/ 652 653 void 654 ResetCurrentLineBuffer ( 655 void) 656 { 657 658 if (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle) 659 { 660 FlWriteFile (ASL_FILE_SOURCE_OUTPUT, Gbl_CurrentLineBuffer, 661 Gbl_LineBufPtr - Gbl_CurrentLineBuffer); 662 } 663 664 Gbl_CurrentLineOffset += Gbl_CurrentColumn; 665 Gbl_CurrentColumn = 0; 666 667 Gbl_CurrentLineNumber++; 668 Gbl_LogicalLineNumber++; 669 Gbl_LineBufPtr = Gbl_CurrentLineBuffer; 670 } 671 672 673 /******************************************************************************* 674 * 675 * FUNCTION: InsertLineBuffer 676 * 677 * PARAMETERS: SourceChar - One char from the input ASL source file 678 * 679 * RETURN: None 680 * 681 * DESCRIPTION: Put one character of the source file into the temp line buffer 682 * 683 ******************************************************************************/ 684 685 #define ASL_SPACES_PER_TAB 4 686 687 void 688 InsertLineBuffer ( 689 int SourceChar) 690 { 691 UINT32 i; 692 UINT32 Count = 1; 693 694 695 if (SourceChar == EOF) 696 { 697 return; 698 } 699 700 Gbl_InputByteCount++; 701 702 /* Handle tabs. Convert to spaces */ 703 704 if (SourceChar == '\t') 705 { 706 SourceChar = ' '; 707 Count = ASL_SPACES_PER_TAB - 708 (Gbl_CurrentColumn & (ASL_SPACES_PER_TAB-1)); 709 } 710 711 712 for (i = 0; i < Count; i++) 713 { 714 Gbl_CurrentColumn++; 715 716 /* Insert the character into the line buffer */ 717 718 *Gbl_LineBufPtr = (UINT8) SourceChar; 719 Gbl_LineBufPtr++; 720 721 if (Gbl_LineBufPtr > (Gbl_CurrentLineBuffer + (ASL_LINE_BUFFER_SIZE - 1))) 722 { 723 #if 0 724 /* 725 * Warning if we have split a long source line. 726 * <Probably overkill> 727 */ 728 sprintf (MsgBuffer, "Max %d", ASL_LINE_BUFFER_SIZE); 729 AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE, 730 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 731 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 732 Gbl_Files[ASL_FILE_INPUT].Filename, MsgBuffer); 733 #endif 734 735 ResetCurrentLineBuffer (); 736 } 737 else if (SourceChar == '\n') 738 { 739 /* End of line */ 740 741 ResetCurrentLineBuffer (); 742 } 743 } 744 } 745 746 747 /******************************************************************************* 748 * 749 * FUNCTION: count 750 * 751 * PARAMETERS: yytext - Contains the matched keyword. 752 * Type - Keyword/Character type: 753 * 0 = anything except a keyword 754 * 1 = pseudo-keywords 755 * 2 = non-executable ASL keywords 756 * 3 = executable ASL keywords 757 * 758 * RETURN: None 759 * 760 * DESCRIPTION: Count keywords and put them into the line buffer 761 * 762 ******************************************************************************/ 763 764 void 765 count ( 766 int Type) 767 { 768 int i; 769 770 771 switch (Type) 772 { 773 case 2: 774 TotalKeywords++; 775 TotalNamedObjects++; 776 break; 777 778 case 3: 779 TotalKeywords++; 780 TotalExecutableOpcodes++; 781 break; 782 } 783 784 for (i = 0; (yytext[i] != 0) && (yytext[i] != EOF); i++) 785 { 786 InsertLineBuffer (yytext[i]); 787 *Gbl_LineBufPtr = 0; 788 } 789 } 790 791 792 /******************************************************************************* 793 * 794 * FUNCTION: comment 795 * 796 * PARAMETERS: none 797 * 798 * RETURN: none 799 * 800 * DESCRIPTION: Process a standard comment. 801 * 802 ******************************************************************************/ 803 804 char 805 comment (void) 806 { 807 char c; 808 char c1 = 0; 809 810 811 InsertLineBuffer ('/'); 812 InsertLineBuffer ('*'); 813 814 loop: 815 816 /* Eat chars until end-of-comment */ 817 818 while ((c = (char) input()) != '*' && c != EOF) 819 { 820 InsertLineBuffer (c); 821 c1 = c; 822 } 823 824 if (c == EOF) 825 { 826 goto EarlyEOF; 827 } 828 829 /* 830 * Check for nested comment -- can help catch cases where a previous 831 * comment was accidently left unterminated 832 */ 833 if ((c1 == '/') && (c == '*')) 834 { 835 AslCommonError (ASL_WARNING, ASL_MSG_NESTED_COMMENT, 836 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 837 Gbl_InputByteCount, Gbl_CurrentColumn, 838 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 839 } 840 841 /* Comment is closed only if the NEXT character is a slash */ 842 843 InsertLineBuffer (c); 844 845 if ((c1 = (char) input()) != '/' && c1 != EOF) 846 { 847 unput(c1); 848 goto loop; 849 } 850 851 if (c1 == EOF) 852 { 853 goto EarlyEOF; 854 } 855 856 InsertLineBuffer (c1); 857 return TRUE; 858 859 860 EarlyEOF: 861 /* 862 * Premature End-Of-File 863 */ 864 AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, 865 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 866 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 867 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 868 return (FALSE); 869 } 870 871 872 /******************************************************************************* 873 * 874 * FUNCTION: comment 875 * 876 * PARAMETERS: none 877 * 878 * RETURN: none 879 * 880 * DESCRIPTION: Process a new "//" comment. 881 * 882 ******************************************************************************/ 883 884 char 885 comment2 (void) 886 { 887 char c; 888 889 890 InsertLineBuffer ('/'); 891 InsertLineBuffer ('/'); 892 893 while ((c = (char) input()) != '\n' && c != EOF) 894 { 895 InsertLineBuffer (c); 896 } 897 898 if (c == EOF) 899 { 900 /* End of file is OK, change to newline. Let parser detect EOF later */ 901 902 c = '\n'; 903 } 904 905 InsertLineBuffer (c); 906 return (TRUE); 907 } 908 909 910 /******************************************************************************* 911 * 912 * FUNCTION: literal 913 * 914 * PARAMETERS: none 915 * 916 * RETURN: none 917 * 918 * DESCRIPTION: Process a string literal (surrounded by quotes) 919 * 920 ******************************************************************************/ 921 922 #define ASL_NORMAL_CHAR 0 923 #define ASL_ESCAPE_SEQUENCE 1 924 #define ASL_OCTAL_CONSTANT 2 925 #define ASL_HEX_CONSTANT 3 926 927 char 928 literal (void) 929 { 930 char *StringBuffer = MsgBuffer; 931 char *EndBuffer = MsgBuffer + ASL_MSG_BUFFER_SIZE; 932 char *CleanString; 933 char StringChar; 934 UINT32 State = ASL_NORMAL_CHAR; 935 UINT32 i = 0; 936 UINT8 Digit; 937 char ConvertBuffer[4]; 938 939 940 /* 941 * Eat chars until end-of-literal. 942 * NOTE: Put back the original surrounding quotes into the 943 * source line buffer. 944 */ 945 InsertLineBuffer ('\"'); 946 while ((StringChar = (char) input()) != EOF) 947 { 948 InsertLineBuffer (StringChar); 949 950 DoCharacter: 951 952 switch (State) 953 { 954 case ASL_NORMAL_CHAR: 955 956 switch (StringChar) 957 { 958 case '\\': 959 /* 960 * Special handling for backslash-escape sequence. We will 961 * toss the backslash and translate the escape char(s). 962 */ 963 State = ASL_ESCAPE_SEQUENCE; 964 continue; 965 966 case '\"': 967 968 /* String terminator */ 969 970 goto CompletedString; 971 } 972 break; 973 974 975 case ASL_ESCAPE_SEQUENCE: 976 977 State = ASL_NORMAL_CHAR; 978 switch (StringChar) 979 { 980 case 'a': 981 StringChar = 0x07; /* BELL */ 982 break; 983 984 case 'b': 985 StringChar = 0x08; /* BACKSPACE */ 986 break; 987 988 case 'f': 989 StringChar = 0x0C; /* FORMFEED */ 990 break; 991 992 case 'n': 993 StringChar = 0x0A; /* LINEFEED */ 994 break; 995 996 case 'r': 997 StringChar = 0x0D; /* CARRIAGE RETURN*/ 998 break; 999 1000 case 't': 1001 StringChar = 0x09; /* HORIZONTAL TAB */ 1002 break; 1003 1004 case 'v': 1005 StringChar = 0x0B; /* VERTICAL TAB */ 1006 break; 1007 1008 case 'x': 1009 State = ASL_HEX_CONSTANT; 1010 i = 0; 1011 continue; 1012 1013 case '\'': /* Single Quote */ 1014 case '\"': /* Double Quote */ 1015 case '\\': /* Backslash */ 1016 break; 1017 1018 default: 1019 1020 /* Check for an octal digit (0-7) */ 1021 1022 if (ACPI_IS_OCTAL_DIGIT (StringChar)) 1023 { 1024 State = ASL_OCTAL_CONSTANT; 1025 ConvertBuffer[0] = StringChar; 1026 i = 1; 1027 continue; 1028 } 1029 1030 /* Unknown escape sequence issue warning, but use the character */ 1031 1032 AslCommonError (ASL_WARNING, ASL_MSG_INVALID_ESCAPE, 1033 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1034 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1035 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 1036 break; 1037 } 1038 break; 1039 1040 1041 case ASL_OCTAL_CONSTANT: 1042 1043 /* Up to three octal digits allowed */ 1044 1045 if (!ACPI_IS_OCTAL_DIGIT (StringChar) || 1046 (i > 2)) 1047 { 1048 /* 1049 * Reached end of the constant. Convert the assembled ASCII 1050 * string and resume processing of the next character 1051 */ 1052 ConvertBuffer[i] = 0; 1053 Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8); 1054 1055 /* Check for NULL or non-ascii character (ignore if so) */ 1056 1057 if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) 1058 { 1059 AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, 1060 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1061 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1062 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 1063 } 1064 else 1065 { 1066 *StringBuffer = (char) Digit; 1067 StringBuffer++; 1068 if (StringBuffer >= EndBuffer) 1069 { 1070 goto BufferOverflow; 1071 } 1072 } 1073 1074 State = ASL_NORMAL_CHAR; 1075 goto DoCharacter; 1076 break; 1077 } 1078 1079 /* Append another digit of the constant */ 1080 1081 ConvertBuffer[i] = StringChar; 1082 i++; 1083 continue; 1084 1085 1086 case ASL_HEX_CONSTANT: 1087 1088 /* Up to two hex digits allowed */ 1089 1090 if (!ACPI_IS_XDIGIT (StringChar) || 1091 (i > 1)) 1092 { 1093 /* 1094 * Reached end of the constant. Convert the assembled ASCII 1095 * string and resume processing of the next character 1096 */ 1097 ConvertBuffer[i] = 0; 1098 Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16); 1099 1100 /* Check for NULL or non-ascii character (ignore if so) */ 1101 1102 if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) 1103 { 1104 AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, 1105 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1106 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1107 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 1108 } 1109 else 1110 { 1111 *StringBuffer = (char) Digit; 1112 StringBuffer++; 1113 if (StringBuffer >= EndBuffer) 1114 { 1115 goto BufferOverflow; 1116 } 1117 } 1118 1119 State = ASL_NORMAL_CHAR; 1120 goto DoCharacter; 1121 break; 1122 } 1123 1124 /* Append another digit of the constant */ 1125 1126 ConvertBuffer[i] = StringChar; 1127 i++; 1128 continue; 1129 } 1130 1131 /* Save the finished character */ 1132 1133 *StringBuffer = StringChar; 1134 StringBuffer++; 1135 if (StringBuffer >= EndBuffer) 1136 { 1137 goto BufferOverflow; 1138 } 1139 } 1140 1141 /* 1142 * Premature End-Of-File 1143 */ 1144 AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, 1145 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1146 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1147 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 1148 return (FALSE); 1149 1150 1151 CompletedString: 1152 /* 1153 * Null terminate the input string and copy string to a new buffer 1154 */ 1155 *StringBuffer = 0; 1156 1157 CleanString = UtGetStringBuffer (strlen (MsgBuffer) + 1); 1158 if (!CleanString) 1159 { 1160 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, 1161 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1162 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1163 Gbl_Files[ASL_FILE_INPUT].Filename, NULL); 1164 return (FALSE); 1165 } 1166 1167 ACPI_STRCPY (CleanString, MsgBuffer); 1168 AslCompilerlval.s = CleanString; 1169 return (TRUE); 1170 1171 1172 BufferOverflow: 1173 1174 /* Literal was too long */ 1175 1176 AslCommonError (ASL_ERROR, ASL_MSG_STRING_LENGTH, 1177 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, 1178 Gbl_CurrentLineOffset, Gbl_CurrentColumn, 1179 Gbl_Files[ASL_FILE_INPUT].Filename, "Max length 4096"); 1180 return (FALSE); 1181 } 1182 1183 1184