Overview of Spicy parser generator
mainSpicy is a parser generator designed to create robust C++ parsers for network protocols, file formats, and other structured data. It uses an attributed grammar approach, allowing developers to define both the syntax and semantics of an input format within a single domain-specific language.
Key features include:
- Incremental Parsing: Parsing proceeds incrementally on input streams of arbitrary size.
- Concurrency: Supports highly concurrent parsing.
- Flexible Compilation:
- Just-in-Time (JIT): Parsers are compiled at startup via a C++ compiler.
- Ahead-of-Time (AOT): Parsers can be pre-compiled into shared libraries or generated as C++ code for direct linking into applications.
- Zeek Integration: A dedicated Zeek plugin allows adding protocol and file analyzers to Zeek without writing C++ code, simply by defining the grammar and specifying Zeek events.