Skip to main content

oak_dhall/language/
mod.rs

1#![doc = include_str!("readme.md")]
2use crate::ast::DHallRoot;
3use oak_core::{Language, LanguageCategory};
4
5/// DHall language definition.
6#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub struct DHallLanguage {
9    /// Allow unicode identifiers
10    pub unicode_identifiers: bool,
11}
12
13impl DHallLanguage {
14    /// Creates a new `DHallLanguage`.
15    pub fn new() -> Self {
16        Self::default()
17    }
18}
19
20impl Default for DHallLanguage {
21    fn default() -> Self {
22        Self { unicode_identifiers: true }
23    }
24}
25
26impl Language for DHallLanguage {
27    const NAME: &'static str = "dhall";
28    const CATEGORY: LanguageCategory = LanguageCategory::Programming;
29
30    type TokenType = crate::lexer::token_type::DHallTokenType;
31    type ElementType = crate::parser::element_type::DHallElementType;
32    type TypedRoot = DHallRoot;
33}