Skip to main content

oak_j/language/
mod.rs

1#![doc = include_str!("readme.md")]
2#[doc = include_str!("../readme.md")]
3use crate::ast::JRoot;
4use oak_core::{Language, LanguageCategory};
5#[cfg(feature = "serde")]
6use serde::{Deserialize, Serialize};
7
8/// J 语言配置和元数据
9#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
10#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11pub struct JLanguage {
12    /// 是否启用严格模式
13    pub strict_mode: bool,
14}
15
16impl JLanguage {
17    /// 鍒涘缓鏂扮殑 J 璇█閰嶇疆
18    pub fn new() -> Self {
19        Self { strict_mode: false }
20    }
21}
22
23impl Default for JLanguage {
24    fn default() -> Self {
25        Self::new()
26    }
27}
28
29impl Language for JLanguage {
30    const NAME: &'static str = "j";
31    const CATEGORY: LanguageCategory = LanguageCategory::Programming;
32
33    type TokenType = crate::lexer::token_type::JTokenType;
34    type ElementType = crate::parser::element_type::JElementType;
35    type TypedRoot = JRoot;
36}