Expand description
A lightweight, self-contained s-expression parser and data format.
Use parse to get an s-expression from its string representation, and the
Display trait to serialize it, potentially by doing sexp.to_string().
Atoms is a basic S-expression parser. It parses strings and produces
a tree of Cons-cells and atomic values of discrete type. Currently, only
the following primitive types are available, and are represented with the
Value enum:
NilConsSymbolStringIntFloat
The trees are, as expected, formed by Cons cells.
§Parsing
Parsing expressions requires a parser to be attached to the given string.
use atoms::{Parser, StringValue};
let text = "(this is a series of symbols)";
let parser = Parser::new(&text);
let parsed = parser.parse_basic().unwrap();
assert_eq!(
StringValue::into_list(
vec!["this", "is", "a", "series", "of", "symbols"],
|s| StringValue::symbol(s).unwrap()
),
parsed
);Custom parsing of symbols can be fairly easily defined allowing for
restricted symbol sets with parsing errors. See
Parser::parse for more.
§Rendering
To render out an S-expression, simply use ToString or display it
directly.
use atoms::StringValue;
let value = StringValue::cons(
StringValue::symbol("this").unwrap(),
StringValue::cons(
StringValue::string("is"),
StringValue::cons(
StringValue::int(4),
StringValue::symbol("s-expression").unwrap(),
)
)
);
assert_eq!(value.to_string(), "(this \"is\" 4 . s-expression)");Macros§
- s_tree
- Inlining s-expressions
Structs§
- Parser
- A parser for a particular
str
Enums§
- Parse
Error - Error that occurs when parsing s-expression.
- Value
- A single value with a variable representation of symbols.
Type Aliases§
- Parse
Result - The result of parsing an s-expression.
- String
Value - A single values with symbols represented using
String.