1use crate::{
2 lexer::{CppLexer, CppTokenType},
3 parser::CppElementType,
4};
5use oak_core::{Language, LanguageCategory};
6
7#[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 pub fn new() -> Self {
23 Self
24 }
25
26 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}