Skip to main content

oak_cpp/language/
mod.rs

1use crate::{
2    lexer::{CppLexer, CppTokenType},
3    parser::CppElementType,
4};
5use oak_core::{Language, LanguageCategory};
6use serde::{Deserialize, Serialize};
7
8/// C++ 语言实现
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
10pub struct CppLanguage {}
11
12impl Language for CppLanguage {
13    const NAME: &'static str = "cpp";
14    const CATEGORY: LanguageCategory = LanguageCategory::Programming;
15
16    type TokenType = CppTokenType;
17    type ElementType = CppElementType;
18    type TypedRoot = ();
19}
20
21impl CppLanguage {
22    /// 创建新的 C++ 语言实例
23    pub fn new() -> Self {
24        Self {}
25    }
26
27    /// 创建 C++ 词法分析器
28    pub fn lexer(&self) -> CppLexer<'_> {
29        CppLexer::new(self)
30    }
31}
32
33impl Default for CppLanguage {
34    fn default() -> Self {
35        Self {}
36    }
37}