1use crate::{
2 lexer::{CppLexer, CppTokenType},
3 parser::CppElementType,
4};
5use oak_core::{Language, LanguageCategory};
6use serde::{Deserialize, Serialize};
7
8#[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 pub fn new() -> Self {
24 Self {}
25 }
26
27 pub fn lexer(&self) -> CppLexer<'_> {
29 CppLexer::new(self)
30 }
31}
32
33impl Default for CppLanguage {
34 fn default() -> Self {
35 Self {}
36 }
37}