ast/
literal.rs

1//! Literal value representation for the SAP language.
2//!
3//! A literal can be an integer, float, string, or boolean value.
4use serde::Serialize;
5use shared::span::{GetSpan, Span};
6
7/// Represents a literal value in the SAP language.
8///
9/// A literal can be an integer, float, string, or boolean value.
10#[derive(Debug, Serialize, PartialEq, Clone)]
11#[serde(tag = "type")]
12pub enum Literal {
13    Integer { value: i64, span: Span },
14    Float { value: f64, span: Span },
15    String { value: String, span: Span },
16    Boolean { value: bool, span: Span },
17}
18
19impl GetSpan for Literal {
20    fn span(&self) -> &Span {
21        match self {
22            Self::Integer { span, .. } => span,
23            Self::Float { span, .. } => span,
24            Self::String { span, .. } => span,
25            Self::Boolean { span, .. } => span,
26        }
27    }
28}