86 lines
1.1 KiB
Rust
86 lines
1.1 KiB
Rust
use super::types::SourceSpan;
|
|
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum Op {
|
|
PushInt(i64, Option<SourceSpan>),
|
|
PushFloat(f64, Option<SourceSpan>),
|
|
PushStr(String, Option<SourceSpan>),
|
|
Dup,
|
|
Dupn,
|
|
Drop,
|
|
Swap,
|
|
Over,
|
|
Rot,
|
|
Nip,
|
|
Tuck,
|
|
Add,
|
|
Sub,
|
|
Mul,
|
|
Div,
|
|
Mod,
|
|
Neg,
|
|
Abs,
|
|
Floor,
|
|
Ceil,
|
|
Round,
|
|
Min,
|
|
Max,
|
|
Eq,
|
|
Ne,
|
|
Lt,
|
|
Gt,
|
|
Le,
|
|
Ge,
|
|
And,
|
|
Or,
|
|
Not,
|
|
BranchIfZero(usize, Option<SourceSpan>, Option<SourceSpan>),
|
|
Branch(usize),
|
|
NewCmd,
|
|
SetParam(String),
|
|
Emit,
|
|
Get,
|
|
Set,
|
|
GetContext(String),
|
|
Rand,
|
|
Seed,
|
|
Cycle,
|
|
Choose,
|
|
ChanceExec,
|
|
ProbExec,
|
|
Coin,
|
|
Mtof,
|
|
Ftom,
|
|
ListStart,
|
|
ListEnd,
|
|
ListEndCycle,
|
|
PCycle,
|
|
ListEndPCycle,
|
|
At,
|
|
Window,
|
|
Scale,
|
|
Pop,
|
|
Subdivide,
|
|
SetTempo,
|
|
Each,
|
|
Every,
|
|
Quotation(Vec<Op>, Option<SourceSpan>),
|
|
When,
|
|
Unless,
|
|
Adsr,
|
|
Ad,
|
|
Stack,
|
|
For,
|
|
LocalCycleEnd,
|
|
Echo,
|
|
Necho,
|
|
Apply,
|
|
Ramp,
|
|
Range,
|
|
Noise,
|
|
Chain,
|
|
Loop,
|
|
Degree(&'static [i64]),
|
|
Oct,
|
|
}
|