Skip to main content

vihaco_stdlib/program/
operand.rs

1// SPDX-FileCopyrightText: 2026 The vihaco Authors
2// SPDX-License-Identifier: MIT
3
4//! Retained syntax operands for program lowering.
5
6use vihaco_parser::{Ident, QuotedString};
7
8/// An executable address or function index, or a symbol to resolve during loading.
9#[derive(vihaco_parser_derive::Parse, Clone, Debug, PartialEq)]
10#[syntax_class(value)]
11pub enum Target {
12    #[pattern = "$0"]
13    Resolved(u32),
14    #[pattern = "`@` $0"]
15    Symbol(Ident),
16}
17
18/// An existing string-table index or a string literal to intern during loading.
19#[derive(vihaco_parser_derive::Parse, Clone, Debug, PartialEq)]
20#[syntax_class(value)]
21pub enum StringOperand {
22    #[pattern = "$0"]
23    Literal(QuotedString),
24    #[pattern = "$0"]
25    Resolved(u32),
26}