Skip to main content

oak_lean/parser/
element_type.rs

1use oak_core::{ElementType, Parser, UniversalElementRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5/// Element types for the Lean language.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8pub enum LeanElementType {
9    /// Root node of the Lean AST.
10    Root,
11    /// Error node for representing syntax errors.
12    Error,
13}
14
15impl ElementType for LeanElementType {
16    type Role = UniversalElementRole;
17
18    fn role(&self) -> Self::Role {
19        match self {
20            _ => UniversalElementRole::None,
21        }
22    }
23}
24
25impl From<crate::lexer::token_type::LeanTokenType> for LeanElementType {
26    fn from(token: crate::lexer::token_type::LeanTokenType) -> Self {
27        use crate::lexer::token_type::LeanTokenType;
28        match token {
29            LeanTokenType::Root => LeanElementType::Root,
30            _ => LeanElementType::Error,
31        }
32    }
33}