7 releases
0.2.4 | Oct 27, 2022 |
---|---|
0.2.3 | Oct 21, 2022 |
0.1.1 | Oct 14, 2022 |
22 downloads per month
44KB
1.5K
SLoC
parseal
parsing and handling of different file formats
This is a library to create parsers in a simple manner.
Examples
Quick Start
Say you want to parse a Point, e.g. (10, 14)
, the easy way to do that is like this:
// some code
#[derive(Parsable, Debug)]
struct Point {
x: Number,
y: Number
}
pub fn some_func(buffer: &mut CharStream) {
let value = Point::parse(buffer);
println!("value: {:#?}", value);
}
Note that the attributes of point are of type Number
, instead of something like u32
. This is because Number
stores additional parsing information for the abstract syntax tree, like the span.
Types
This is a list of the types that you can use from this library, with an explanation of each of them.
CharStream
The parse
function from the Parse trait uses this type, instead of a string.
The CharStream
struct has some additional functionality to deal with parsing:
- It has multiple options on how it deals with whitespace.
- It keeps track of the current position in the buffer.
- It is possible to go to a specific position in the buffer (but only if the new position is after the current one).
Creation
To create a CharStream
you can do the following:
let value = "Hello, World!"
let stream = CharStream::new(value).build();
we call build here because the new
function returns a CharStreamBuilder
Functions
name | description | args |
---|---|---|
new |
creates a CharStreamBuilder |
value : the String buffer to create the CharStream from |
set_whitespace |
sets the white space mode | type : the WhitespaceType to set the stream to |
position |
returns the current position | |
indent |
returns the current indent level (indent is only kept track of when WhitespaceType is set to Indent |
Position
This is the struct that stores a position in a CharStream
buffer.
Span
This is the struct that stores a beginning and an end Position
from a CharStream
buffer.
CharStreamBuilder
This is the struct that is used to create a CharStream
.
ParseError
Any error that can be returned by parsing.
Traits
This is a list of the traits that you can use from this library.
Parse
Used for any parsable value.
Functions
name | description | args | return type |
---|---|---|---|
parse |
try to parse a value of the type that implements the trait | value: &mut CharStream |
Result<Self, ParseError> |
span |
get the Span of the current object |
&self |
Span |
Dependencies
~240–540KB
~11K SLoC