ripex 0.3.0

Multi-language structural parsing and fact extraction.
Documentation
use super::expr::ExprRef;
use super::node::AstNode;
use crate::span::Span;

#[derive(Debug, Clone)]
pub enum Lit {
    Str(StrLit),
    Num(NumLit),
    Bool(BoolLit),
    Null(NullLit),
    BigInt(BigIntLit),
    RegExp(RegExpLit),
    Template(TemplateLit),
}

#[derive(Debug, Clone)]
pub struct StrLit {
    pub span: Span,
    pub value: String,
    pub raw: String,
}

#[derive(Debug, Clone)]
pub struct NumLit {
    pub span: Span,
    pub value: f64,
    pub raw: String,
}

#[derive(Debug, Clone)]
pub struct BoolLit {
    pub span: Span,
    pub value: bool,
}

#[derive(Debug, Clone)]
pub struct NullLit {
    pub span: Span,
}

#[derive(Debug, Clone)]
pub struct BigIntLit {
    pub span: Span,
    pub value: String,
    pub raw: String,
}

#[derive(Debug, Clone)]
pub struct RegExpLit {
    pub span: Span,
    pub pattern: String,
    pub flags: String,
}

#[derive(Debug, Clone)]
pub struct TemplateLit {
    pub span: Span,
    pub quasis: Vec<TemplateElement>,
    pub expressions: Vec<ExprRef>,
}

#[derive(Debug, Clone)]
pub struct TemplateElement {
    pub span: Span,
    pub value: String,
    pub tail: bool,
}

impl AstNode for StrLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for NumLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for BoolLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for NullLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for BigIntLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for RegExpLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for TemplateLit {
    fn span(&self) -> Span {
        self.span
    }
}
impl AstNode for TemplateElement {
    fn span(&self) -> Span {
        self.span
    }
}