tokensToSpan
Function parameters
Parameters
- tree:*const Ast
- start:Ast.TokenIndex
- end:Ast.TokenIndex
- main:Ast.TokenIndex
Index into `tokens`, or null.
Types
- OptionalTokenIndex
- Index into `tokens`, or null.
- TokenOffset
- A relative token index.
- OptionalTokenOffset
- A relative token index, or null.
- full
- Fully assembled AST node information.
- ExtraIndex
- Index into `extra_data`.
Functions in this namespace
Functions
- parse
- Result should be freed with tree.deinit() when there are
- renderAlloc
- `gpa` is used for allocating the resulting formatted source code.
- errorOffset
- Returns an extra offset for column and byte offset of errors that
- legacyAsm
- To be deleted after 0.15.0 is tagged
Source
Implementation
pub fn tokensToSpan(tree: *const Ast, start: Ast.TokenIndex, end: Ast.TokenIndex, main: Ast.TokenIndex) Span {
var start_tok = start;
var end_tok = end;
if (tree.tokensOnSameLine(start, end)) {
// do nothing
} else if (tree.tokensOnSameLine(start, main)) {
end_tok = main;
} else if (tree.tokensOnSameLine(main, end)) {
start_tok = main;
} else {
start_tok = main;
end_tok = main;
}
const start_off = tree.tokenStart(start_tok);
const end_off = tree.tokenStart(end_tok) + @as(u32, @intCast(tree.tokenSlice(end_tok).len));
return Span{ .start = start_off, .end = end_off, .main = tree.tokenStart(main) };
}