feat(lexer): add type system keywords

Added four keywords for new type system:
- concept: Base type definition
- sub_concept: Enum/record sub-type definition
- concept_comparison: Compile-time enum mapping
- any: Universal type for dynamic contexts

Also added:
- CLAUDE.md with project instructions and commit guidelines
- Test coverage for new keywords
- Crate-level deny directives for unused variables and dead code

Fixed pre-existing clippy issues to pass pre-commit hooks.
This commit is contained in:
2026-02-13 22:31:56 +00:00
parent 16deb5d237
commit f258a526e3
14 changed files with 151 additions and 74 deletions

View File

@@ -31,6 +31,14 @@ pub enum Token {
Species,
#[token("enum")]
Enum,
#[token("concept")]
Concept,
#[token("sub_concept")]
SubConcept,
#[token("concept_comparison")]
ConceptComparison,
#[token("any")]
Any,
#[token("state")]
State,
#[token("on")]
@@ -509,4 +517,21 @@ Second prose block content.
vec![Token::IntLit(20), Token::DotDot, Token::IntLit(40),]
);
}
#[test]
fn test_type_system_keywords() {
let input = "concept sub_concept concept_comparison any";
let lexer = Lexer::new(input);
let tokens: Vec<Token> = lexer.map(|(_, tok, _)| tok).collect();
assert_eq!(
tokens,
vec![
Token::Concept,
Token::SubConcept,
Token::ConceptComparison,
Token::Any,
]
);
}
}