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}