PackCC is a parser generator for C. Its main features are as follows:
Generates a parser in written C from a grammar described in a PEG,
Gives a parser great efficiency by packrat parsing,
Supports direct and indirect left-recursive grammar rules,
Generates a thread-safe and reentrant parser,
Consists of just a single compact source file.
The grammar of an output parser can be described in a PEG (Parsing Expression Grammar). The PEG is a top-down parsing language, and is similar to the regular expression grammar. Compared with a bottom-up parsing language, like Yacc's one, the PEG is much more intuitive and cannot be ambiguous. The PEG does not require tokenization to be a separate step, and tokenization rules can be written in the same way as any other grammar rules.
The generated parser can parse inputs very efficiently by packrat parsing. The packrat parsing is the recursive descent parsing algorithm that is accelerated using memoization. By using packrat parsing, any input can be parsed in linear time. Without it, however, the resulting parser could exhibit exponential time performance in the worst case due to the unlimited look-ahead capability.
Unlike common packrat parsers, PackCC can support direct and indirect left-recursive grammar rules.[1] This makes grammar rules much more intuitive.
The generated code is beautified and as ease-of-understanding as possible. Actually, it uses many goto statements, but the control flows are much more traceable than goto spaghetti storms generated by some other parser generators.
PackCC itself is under MIT license, but the generated code can be distributed under any license or can be used in proprietary software.
^"Packrat Parsers Can Support Left Recursion" authored by A. Warth, J. R. Douglass, and T. Millstein
PackCC is a parser generator for C. Its main features are as follows: Generates a parser in written C from a grammar described in a PEG, Gives a parser...
languages with JavaCC". InfoWorld. Retrieved 2023-11-04. "JavaCC". JavaCC. Retrieved 2023-11-04. "Building parsers for the web with JavaCC & GWT (Part one)"...
(modified, partial memoization) JavaScript, Squeak, Python Mixed All Free, MIT PackCC Packrat (modified, left-recursion support) C Mixed All Free, MIT Packrat...
The EuroPowerPack is the combination of the MTU MT883 Ka-500/501 diesel engine delivering over 1100 kW (1500 PS) shaft power with the ten-speed (five forward...
A blister pack is any of several types of pre-formed plastic packaging used for small consumer goods, foods, and for pharmaceuticals. The primary component...
competitions by limiting two-stroke displacement at 125 cc for the 250 cc class and 250 cc for the 450 cc class. While other manufacturers have decided to discontinue...
downloadable content packs, namely fifteen expansion packs, twelve game packs, and several stuff packs and kits. The most recent expansion pack, The Sims 4: For...
This article incorporates text from a free content work. Licensed under CC BY 4.0. Text taken from Anatomy and Physiology, J. Gordon Betts et al, Openstax...
strainer, and problems with the injectors, coil packs and the NOx sensor. The N43B16 has a displacement of 1,599 cc (97.6 cu in) and produces 90 kW (121 bhp)...
GFDL designed specifically to allow Wikipedia to relicense its content to CC BY-SA by August 1, 2009. In April 2009, Wikipedia and its sister projects...
9 ft) and 2.0 m (6.6 ft) respectively, and engine displacement under 660 cc (40.3 cu in). A 'gentleman's agreement' for a maximum power of 64 PS (63 hp;...
693 cc) 3RZ-FE and, new in Prado models, the 3.4 L (3,378 cc) V6 5VZ-FE. Diesel engines included the 2.8 L (2,776 cc) 3L engine, the 3.0 L (2,986 cc) 5L...
carburetor. The 429 Super Cobra Jet, which was part of a Drag Pack option, was a 429 cu in (7,030 cc) four-barrel with dual exhaust and Ram Air induction, but...
Battlefield: 1942: The Road to Rome (2003 expansion pack) Battlefield: 1942: Secret Weapons of WWII (2003 expansion pack) Battlefield Vietnam World War II Mod (Mod...
Nissan RB Engine: RB20 - 2.0 L (1,998 cc), bore x stroke: 78 mm × 69.7 mm (3.07 in × 2.74 in) RB24 - 2.4 L (2,428 cc), bore x stroke: 86 mm × 69.7 mm (3...
a wooden frame named "CX-Generation". It is powered by an original 1,998 cc (2.0 L; 121.9 cu in) BMW TwinPower petrol engine producing 259 PS (190 kW;...
shipped to all 100 members of the United States Senate. The Trump Pack, an expansion pack for Secret Hitler, which replaces the fascists' cards with Donald...
GeoTagging Sample packs Remix tree Similarity search Sound Bookmarks Forum Follow users and tags Waveform display HTML5/Flash preview RESTful API CC licensing...