Sfsexp

Jul 20, 2023

Small Fast S-Expression Library

The sfsexp library is intended for developers who wish to manipulate read, parse, modify, and create symbolic expressions from C or C++ programs. A symbolic expression, or s-expression, is essentially a LISP-like expression such as a b c. S-expressions are able to represent complex, structured data without requiring additional meta-data describing the structure. They are recursively defined an s-expression is a list of either atoms or s-expressions. In the example above, the expression contains an atom “a” and an s-expression, which in turn contains two atoms, “b” and “c”. They are simple, useful, and well understood.

This library is designed to provide a minimal set of functions and data structures for the four functions listed above reading s-expressions I/O, parsing strings containing them into an AST equivalent, modifying the AST representation, and converting the AST back into a well formatted string. The primary goals are efficiency and simplicity. This library forms the basis of the data representation and transmission protocol for the Supermon high-speed cluster monitoring system from the LANL Advanced Computing Laboratory. The usefulness and lack of choice in available, open source s-expression libraries around 2003 motivated the independent from supermon release of this library.



Checkout these related ports:
  • Zziplib - Library to provide transparent read access to zipped files
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • Zycore-c - Support library with platform independent types, macros, etc for Zydis
  • Zthread - Platform-independent object-oriented C++ threading library
  • Zookeeper - Coordination Service for Distributed Applications
  • Zls - Zig LSP implementation + Zig Language Server
  • Zfp - High throughput library for compressed floating-point arrays
  • Zeal - Offline documentation browser
  • Zapcc - C++ caching compiler based on clang
  • Zanata-platform - Web-based translation platform
  • Zanata-cli - Zanata Java command line client
  • Z88dk - Complete Z80/Z180 development kit
  • Z80ex - ZiLOG Z80 CPU emulator library
  • Z80asm - Assembler for the Z80 microprocessor
  • Z80-asm - Z80 assembly code assembler and disassembler