tiny.chant.parse.state.cursor
Defined in parse.state.
API (5)
Actions
Public operations.
Source
Source: lib/chant/src/parse/state/cursor.zig
zig
const std = @import("std");const chant = @import("../../root.zig");const types = @import("types.zig");const diagnostic = @import("diagnostic.zig");const Error = @import("../root.zig").Error;const Token = chant.token.Token;const Kind = chant.token.Kind;const Parser = types.Parser;pub fn peek(parser: *const Parser) Token { return parser.tokens[parser.index];}pub fn ahead(parser: *const Parser, offset: usize) Token { const at = @min(parser.index + offset, parser.tokens.len - 1); return parser.tokens[at];}pub fn advance(parser: *Parser) Token { const tok = parser.tokens[parser.index]; if (tok.kind != .eof) parser.index += 1; return tok;}pub fn consume(parser: *Parser, expected: Kind) bool { if (peek(parser).kind == expected) { _ = advance(parser); return true; } return false;}pub fn expect(parser: *Parser, expected: Kind) Error!Token { if (peek(parser).kind != expected) { return diagnostic.fail(parser, error.UnexpectedToken, "unexpected token"); } return advance(parser);}test "cursor moves through tokens" { var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena_state.deinit(); const arena = arena_state.allocator(); const tokens = [_]Token{ .{ .kind = .kw_int, .text = "int", .file = "test.c", .line = 1, .column = 1 }, .{ .kind = .identifier, .text = "value", .file = "test.c", .line = 1, .column = 5 }, .{ .kind = .eof, .text = "", .file = "test.c", .line = 1, .column = 10 }, }; var parser = try @import("test.zig").initParser(arena, &tokens); try std.testing.expectEqual(.identifier, ahead(&parser, 1).kind); try std.testing.expect(consume(&parser, .kw_int)); _ = try expect(&parser, .identifier);}Source: lib/chant/src/parse/state/root.zig:4
zig
pub const cursor = @import("cursor.zig");Complete caller list for parse.state.cursor.advance
26 direct callers.
lib.chant.src.parse.expression.parseAlignof[function] — private source atlib/chant/src/parse/expression.zig:328in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.expression.parseAssignment[function] atlib/chant/src/parse/expression.zig:21lib.chant.src.parse.expression.parseBinary[function] — private source atlib/chant/src/parse/expression.zig:89in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePostfixChain[function] — private source atlib/chant/src/parse/expression.zig:346in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePrimary[function] — private source atlib/chant/src/parse/expression.zig:369in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseSizeof[function] — private source atlib/chant/src/parse/expression.zig:310in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseUnary[function] — private source atlib/chant/src/parse/expression.zig:101in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.state.cursor.consume[function] atlib/chant/src/parse/state/cursor.zig:26tiny.chant.parse.state.cursor.expect[function] atlib/chant/src/parse/state/cursor.zig:34tiny.chant.parse.parseStatement[function] atlib/chant/src/parse/statement.zig:17lib.chant.src.parse.type.declarator.parse[function] — private source atlib/chant/src/parse/type/declarator.zig:15in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.parseSuffixes[function] — private source atlib/chant/src/parse/type/declarator.zig:72in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.skipBalancedParens[function] — private source atlib/chant/src/parse/type/declarator.zig:58in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.spec.parse[function] — private source atlib/chant/src/parse/type/spec.zig:48in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAlignas[function] — private source atlib/chant/src/parse/type/spec.zig:264in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttribute[function] — private source atlib/chant/src/parse/type/spec.zig:655in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeIdentifier[function] — private source atlib/chant/src/parse/type/spec.zig:683in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:635in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseBitIntWidth[function] — private source atlib/chant/src/parse/type/spec.zig:251in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnum[function] — private source atlib/chant/src/parse/type/spec.zig:305in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseTypeof[function] — private source atlib/chant/src/parse/type/spec.zig:240in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.skipBalancedGroup[function] — private source atlib/chant/src/parse/type/spec.zig:701in nearest public ownerlib.chant.src.parse.type.speclib.sql.src.search.engine.Search.phrasePairVerifiedHits[method] — private source atlib/sql/src/search/engine.zig:1222in nearest public ownerlib.sql.src.search.enginelib.sql.src.search.rank.DocumentLengthCursor.init[function] — private source atlib/sql/src/search/rank.zig:26in nearest public ownerlib.sql.src.search.ranklib.sql.src.search.rank.nextExactOrHit[function] — private source atlib/sql/src/search/rank.zig:307in nearest public ownerlib.sql.src.search.ranklib.sql.src.search.rank.postingCursorFrequencyAt[function] — private source atlib/sql/src/search/rank.zig:342in nearest public ownerlib.sql.src.search.rank
Complete caller list for parse.state.cursor.ahead
9 direct callers.
lib.chant.src.parse.state.cursor.test_cursor_moves_through_tokens[function] — test source atlib/chant/src/parse/state/cursor.zig:41in nearest public ownertiny.chant.parse.state.cursortiny.chant.parse.state.start.declaration[function] atlib/chant/src/parse/state/start.zig:11tiny.chant.parse.state.start.typename[function] atlib/chant/src/parse/state/start.zig:51lib.chant.src.parse.statement.isLabel[function] — private source atlib/chant/src/parse/statement.zig:87in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.type.declarator.isDeclaratorParen[function] — private source atlib/chant/src/parse/type/declarator.zig:49in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.parseSuffixes[function] — private source atlib/chant/src/parse/type/declarator.zig:72in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.spec.parseAttribute[function] — private source atlib/chant/src/parse/type/spec.zig:655in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:635in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.startsAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:631in nearest public ownerlib.chant.src.parse.type.spec
Complete caller list for parse.state.cursor.consume
20 direct callers.
tiny.chant.parse.assertion.consume[function] atlib/chant/src/parse/assert.zig:10lib.chant.src.parse.declaration.parseLocal[function] — private source atlib/chant/src/parse/declaration.zig:18in nearest public ownerlib.chant.src.parse.declarationlib.chant.src.parse.expression.parseConditional[function] — private source atlib/chant/src/parse/expression.zig:42in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePrimary[function] — private source atlib/chant/src/parse/expression.zig:369in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.parseExternal[function] atlib/chant/src/parse/external.zig:20tiny.chant.parse.initializer.parse[function] atlib/chant/src/parse/initializer.zig:12lib.chant.src.parse.initializer.parseDesignator[function] — private source atlib/chant/src/parse/initializer.zig:53in nearest public ownertiny.chant.parse.initializerlib.chant.src.parse.state.cursor.test_cursor_moves_through_tokens[function] — test source atlib/chant/src/parse/state/cursor.zig:41in nearest public ownertiny.chant.parse.state.cursorlib.chant.src.parse.statement.parseFor[function] — private source atlib/chant/src/parse/statement.zig:118in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseIf[function] — private source atlib/chant/src/parse/statement.zig:101in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.type.declarator.parse[function] — private source atlib/chant/src/parse/type/declarator.zig:15in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.parseSuffixes[function] — private source atlib/chant/src/parse/type/declarator.zig:72in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.spec.consumeAttributeDeclaration[function] — private source atlib/chant/src/parse/type/spec.zig:616in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:635in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnum[function] — private source atlib/chant/src/parse/type/spec.zig:305in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnumerators[function] — private source atlib/chant/src/parse/type/spec.zig:434in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseStringAttributeArgument[function] — private source atlib/chant/src/parse/type/spec.zig:692in nearest public ownerlib.chant.src.parse.type.spectiny.chant.parse.parseTranslationUnit[method] atlib/chant/src/parse/unit.zig:12lib.memtrace.src.event.parseCanonical[function] — private source atlib/memtrace/src/event.zig:597in nearest public ownertiny.memtrace.eventlib.memtrace.src.event.parseSparseCanonical[function] — private source atlib/memtrace/src/event.zig:331in nearest public ownertiny.memtrace.event
Complete caller list for parse.state.cursor.expect
32 direct callers.
tiny.chant.parse.assertion.consume[function] atlib/chant/src/parse/assert.zig:10lib.chant.src.parse.declaration.parseLocal[function] — private source atlib/chant/src/parse/declaration.zig:18in nearest public ownerlib.chant.src.parse.declarationlib.chant.src.parse.expression.parseAlignof[function] — private source atlib/chant/src/parse/expression.zig:328in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseConditional[function] — private source atlib/chant/src/parse/expression.zig:42in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePostfixChain[function] — private source atlib/chant/src/parse/expression.zig:346in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePrimary[function] — private source atlib/chant/src/parse/expression.zig:369in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseSizeof[function] — private source atlib/chant/src/parse/expression.zig:310in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseUnary[function] — private source atlib/chant/src/parse/expression.zig:101in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.parseExternal[function] atlib/chant/src/parse/external.zig:20tiny.chant.parse.initializer.parse[function] atlib/chant/src/parse/initializer.zig:12lib.chant.src.parse.initializer.parseDesignator[function] — private source atlib/chant/src/parse/initializer.zig:53in nearest public ownertiny.chant.parse.initializerlib.chant.src.parse.statement.parseCompound[function] — private source atlib/chant/src/parse/statement.zig:56in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseDo[function] — private source atlib/chant/src/parse/statement.zig:164in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseFor[function] — private source atlib/chant/src/parse/statement.zig:118in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseIf[function] — private source atlib/chant/src/parse/statement.zig:101in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseLabel[function] — private source atlib/chant/src/parse/statement.zig:91in nearest public ownerlib.chant.src.parse.statementtiny.chant.parse.parseStatement[function] atlib/chant/src/parse/statement.zig:17lib.chant.src.parse.statement.parseWhile[function] — private source atlib/chant/src/parse/statement.zig:155in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.type.declarator.parse[function] — private source atlib/chant/src/parse/type/declarator.zig:15in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.parseSuffixes[function] — private source atlib/chant/src/parse/type/declarator.zig:72in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.skipBalancedParens[function] — private source atlib/chant/src/parse/type/declarator.zig:58in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.spec.parse[function] — private source atlib/chant/src/parse/type/spec.zig:48in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAlignas[function] — private source atlib/chant/src/parse/type/spec.zig:264in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:635in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseBitIntWidth[function] — private source atlib/chant/src/parse/type/spec.zig:251in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnum[function] — private source atlib/chant/src/parse/type/spec.zig:305in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnumerators[function] — private source atlib/chant/src/parse/type/spec.zig:434in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseStringAttributeArgument[function] — private source atlib/chant/src/parse/type/spec.zig:692in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseTypeof[function] — private source atlib/chant/src/parse/type/spec.zig:240in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.skipBalancedGroup[function] — private source atlib/chant/src/parse/type/spec.zig:701in nearest public ownerlib.chant.src.parse.type.speclib.memtrace.src.event.parseCanonical[function] — private source atlib/memtrace/src/event.zig:597in nearest public ownertiny.memtrace.eventlib.memtrace.src.event.parseSparseCanonical[function] — private source atlib/memtrace/src/event.zig:331in nearest public ownertiny.memtrace.event
Complete caller list for parse.state.cursor.peek
32 direct callers.
lib.chant.src.parse.expression.parseAlignof[function] — private source atlib/chant/src/parse/expression.zig:328in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.expression.parseAssignment[function] atlib/chant/src/parse/expression.zig:21lib.chant.src.parse.expression.parseBinary[function] — private source atlib/chant/src/parse/expression.zig:89in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePostfixChain[function] — private source atlib/chant/src/parse/expression.zig:346in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parsePrimary[function] — private source atlib/chant/src/parse/expression.zig:369in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseSizeof[function] — private source atlib/chant/src/parse/expression.zig:310in nearest public ownertiny.chant.parse.expressionlib.chant.src.parse.expression.parseUnary[function] — private source atlib/chant/src/parse/expression.zig:101in nearest public ownertiny.chant.parse.expressiontiny.chant.parse.parseExternal[function] atlib/chant/src/parse/external.zig:20tiny.chant.parse.state.cursor.consume[function] atlib/chant/src/parse/state/cursor.zig:26tiny.chant.parse.state.cursor.expect[function] atlib/chant/src/parse/state/cursor.zig:34tiny.chant.parse.state.start.declaration[function] atlib/chant/src/parse/state/start.zig:11lib.chant.src.parse.statement.isLabel[function] — private source atlib/chant/src/parse/statement.zig:87in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseCompound[function] — private source atlib/chant/src/parse/statement.zig:56in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseFor[function] — private source atlib/chant/src/parse/statement.zig:118in nearest public ownerlib.chant.src.parse.statementlib.chant.src.parse.statement.parseLabel[function] — private source atlib/chant/src/parse/statement.zig:91in nearest public ownerlib.chant.src.parse.statementtiny.chant.parse.parseStatement[function] atlib/chant/src/parse/statement.zig:17lib.chant.src.parse.type.declarator.parse[function] — private source atlib/chant/src/parse/type/declarator.zig:15in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.parseSuffixes[function] — private source atlib/chant/src/parse/type/declarator.zig:72in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.declarator.skipBalancedParens[function] — private source atlib/chant/src/parse/type/declarator.zig:58in nearest public ownerlib.chant.src.parse.type.declaratorlib.chant.src.parse.type.spec.parse[function] — private source atlib/chant/src/parse/type/spec.zig:48in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttribute[function] — private source atlib/chant/src/parse/type/spec.zig:655in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeIdentifier[function] — private source atlib/chant/src/parse/type/spec.zig:683in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:635in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseEnum[function] — private source atlib/chant/src/parse/type/spec.zig:305in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.parseStringAttributeArgument[function] — private source atlib/chant/src/parse/type/spec.zig:692in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.skipBalancedGroup[function] — private source atlib/chant/src/parse/type/spec.zig:701in nearest public ownerlib.chant.src.parse.type.speclib.chant.src.parse.type.spec.startsAttributeSpecifier[function] — private source atlib/chant/src/parse/type/spec.zig:631in nearest public ownerlib.chant.src.parse.type.spectiny.chant.parse.parseTranslationUnit[method] atlib/chant/src/parse/unit.zig:12lib.xkb.src.compose.parser.parseEscapedInteger[function] — private source atlib/xkb/src/compose/parser.zig:348in nearest public ownerlib.xkb.src.compose.parserlib.xkb.src.compose.parser.parseInclude[function] — private source atlib/xkb/src/compose/parser.zig:280in nearest public ownerlib.xkb.src.compose.parserlib.xkb.src.compose.parser.parseLine[function] — private source atlib/xkb/src/compose/parser.zig:195in nearest public ownerlib.xkb.src.compose.parserlib.xkb.src.compose.parser.parseString[function] — private source atlib/xkb/src/compose/parser.zig:313in nearest public ownerlib.xkb.src.compose.parser
Audit
| Definitions | 6 |
|---|---|
| Public names | 6 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |