Token
Token structure produced my the tokenizer.
Properties
struct {
token: Tag
location: Location
}
Location
Properties
struct {
start: usize
end: usize
}
Tag
Properties
enum {
identifier
value
value_int
eof
invalid
}
Location
Properties
struct {
start: usize
end: usize
}
Tag
Properties
enum {
identifier
value
value_int
eof
invalid
}
Offset
Index used to know token starts and ends.
u32
TokenIndex
Index used to know token tags.
u32
TokenList
MultiArrayList used to generate the neccessary information for the parser to use.
std.MultiArrayList(struct {
tag: Token.Tag,
start: Offset,
})
Tokenizer
Tokenizer that will produce lexicar tokens so that the
parser can consume and load it to the EnvMap
.
Properties
struct {
/// The source that will be used to produce tokens.
buffer: [:0]const u8
/// Current index into the source
index: usize
}
Init
Sets the initial state.
Signature
pub fn init(source: [:0]const u8) Tokenizer
Next
Advances the tokenizer's state and produces a single token.
Signature
pub fn next(self: *Tokenizer) Token
ParserEnv
Parses the enviroment variables strings and loads them
into a EnvMap
.
Properties
struct {
/// Slice of produced token tags from the tokenizer.
token_tags: []const Token.Tag
/// Slice of produced token starts from the tokenizer.
token_starts: []const Offset
/// The current index in any of the previous slices.
token_index: TokenIndex
/// The source that will be used to load values from.
source: [:0]const u8
/// The enviroment map that will be used to load the variables to.
env_map: *EnvMap
}
ParseAndLoad
Parses all token tags and loads the all into the EnvMap
.
Signature
pub fn parseAndLoad(self: *ParserEnv) !void
ParseAndLoadOne
Parses a single line and load it to memory. IDENT -> VALUE/VALUE_INT
Signature
pub fn parseAndLoadOne(self: *ParserEnv) (Allocator.Error || error{UnexpectedToken})!void
ParseIdentifier
Parses the identifier token.
Returns and error if the current token is not a identifier
one.
Signature
pub fn parseIdentifier(self: *ParserEnv) error{UnexpectedToken}!TokenIndex
ParseIntValue
Parses the value_int token.
Returns null if the current token is not a value_int
one.
Signature
pub fn parseIntValue(self: *ParserEnv) ?TokenIndex
ParseValue
Parses the value or value_int token.
Returns and error if the current token is not a value
or value_int
one.
Signature
pub fn parseValue(self: *ParserEnv) error{UnexpectedToken}!TokenIndex
ParseToEnviromentVariables
Parses and loads all possible enviroment variables from the
provided source
.
Can error if the parser encounters unexpected token values.
Signature
pub fn parseToEnviromentVariables(
allocator: Allocator,
source: [:0]const u8,
env_map: *EnvMap,
) (Allocator.Error || error{UnexpectedToken})!void