oak_cpp/language/
mod.rs

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