use oak_core::{ElementType, UniversalElementRole};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CoqElementType {
Whitespace,
Newline,
Comment,
StringLiteral,
NumberLiteral,
Identifier,
Theorem,
Lemma,
Remark,
Fact,
Corollary,
Proposition,
Definition,
Example,
Fixpoint,
CoFixpoint,
Inductive,
CoInductive,
Record,
Structure,
Variant,
Module,
Section,
End,
Require,
Import,
Export,
Proof,
Qed,
Defined,
Admitted,
If,
Then,
Else,
Type,
Prop,
Set,
Check,
Print,
Search,
Locate,
About,
Match,
With,
Forall,
Exists,
Fun,
Let,
In,
Class,
Instance,
Intros,
Simpl,
Reflexivity,
Rewrite,
Apply,
Exact,
Assumption,
Auto,
Trivial,
Discriminate,
Injection,
Inversion,
Destruct,
Induction,
Generalize,
Clear,
Unfold,
Fold,
Compute,
Eval,
Show,
Goal,
Goals,
Undo,
Restart,
Admit,
Abort,
Parameter,
Axiom,
Variable,
Hypothesis,
Chapter,
Open,
Close,
Scope,
Notation,
Infix,
Reserved,
Bind,
Delimit,
Arguments,
Implicit,
Coercion,
Identity,
Canonical,
Arrow,
DoubleArrow,
Colon,
Semicolon,
Comma,
Dot,
Pipe,
Underscore,
Equal,
Plus,
Minus,
Star,
Slash,
Percent,
Less,
Greater,
LessEqual,
GreaterEqual,
NotEqual,
Tilde,
At,
Question,
Exclamation,
Ampersand,
Hash,
Dollar,
Backslash,
Caret,
LeftParen,
RightParen,
LeftBracket,
RightBracket,
LeftBrace,
RightBrace,
DoubleColon,
DoubleColonEqual,
ColonEqual,
Turnstile,
And,
Or,
LeftArrow,
Root,
Declaration,
Statement,
Expression,
Error,
Eof,
}
impl ElementType for CoqElementType {
type Role = UniversalElementRole;
fn role(&self) -> Self::Role {
match self {
_ => UniversalElementRole::None,
}
}
}
impl From<crate::lexer::token_type::CoqTokenType> for CoqElementType {
fn from(token: crate::lexer::token_type::CoqTokenType) -> Self {
match token {
crate::lexer::token_type::CoqTokenType::Whitespace => CoqElementType::Whitespace,
crate::lexer::token_type::CoqTokenType::Newline => CoqElementType::Newline,
crate::lexer::token_type::CoqTokenType::Comment => CoqElementType::Comment,
crate::lexer::token_type::CoqTokenType::StringLiteral => CoqElementType::StringLiteral,
crate::lexer::token_type::CoqTokenType::NumberLiteral => CoqElementType::NumberLiteral,
crate::lexer::token_type::CoqTokenType::Identifier => CoqElementType::Identifier,
crate::lexer::token_type::CoqTokenType::Theorem => CoqElementType::Theorem,
crate::lexer::token_type::CoqTokenType::Lemma => CoqElementType::Lemma,
crate::lexer::token_type::CoqTokenType::Remark => CoqElementType::Remark,
crate::lexer::token_type::CoqTokenType::Fact => CoqElementType::Fact,
crate::lexer::token_type::CoqTokenType::Corollary => CoqElementType::Corollary,
crate::lexer::token_type::CoqTokenType::Proposition => CoqElementType::Proposition,
crate::lexer::token_type::CoqTokenType::Definition => CoqElementType::Definition,
crate::lexer::token_type::CoqTokenType::Example => CoqElementType::Example,
crate::lexer::token_type::CoqTokenType::Fixpoint => CoqElementType::Fixpoint,
crate::lexer::token_type::CoqTokenType::CoFixpoint => CoqElementType::CoFixpoint,
crate::lexer::token_type::CoqTokenType::Inductive => CoqElementType::Inductive,
crate::lexer::token_type::CoqTokenType::CoInductive => CoqElementType::CoInductive,
crate::lexer::token_type::CoqTokenType::Record => CoqElementType::Record,
crate::lexer::token_type::CoqTokenType::Structure => CoqElementType::Structure,
crate::lexer::token_type::CoqTokenType::Variant => CoqElementType::Variant,
crate::lexer::token_type::CoqTokenType::Module => CoqElementType::Module,
crate::lexer::token_type::CoqTokenType::Section => CoqElementType::Section,
crate::lexer::token_type::CoqTokenType::End => CoqElementType::End,
crate::lexer::token_type::CoqTokenType::Require => CoqElementType::Require,
crate::lexer::token_type::CoqTokenType::Import => CoqElementType::Import,
crate::lexer::token_type::CoqTokenType::Export => CoqElementType::Export,
crate::lexer::token_type::CoqTokenType::Proof => CoqElementType::Proof,
crate::lexer::token_type::CoqTokenType::Qed => CoqElementType::Qed,
crate::lexer::token_type::CoqTokenType::Defined => CoqElementType::Defined,
crate::lexer::token_type::CoqTokenType::Admitted => CoqElementType::Admitted,
crate::lexer::token_type::CoqTokenType::If => CoqElementType::If,
crate::lexer::token_type::CoqTokenType::Then => CoqElementType::Then,
crate::lexer::token_type::CoqTokenType::Else => CoqElementType::Else,
crate::lexer::token_type::CoqTokenType::Type => CoqElementType::Type,
crate::lexer::token_type::CoqTokenType::Prop => CoqElementType::Prop,
crate::lexer::token_type::CoqTokenType::Set => CoqElementType::Set,
crate::lexer::token_type::CoqTokenType::Check => CoqElementType::Check,
crate::lexer::token_type::CoqTokenType::Print => CoqElementType::Print,
crate::lexer::token_type::CoqTokenType::Search => CoqElementType::Search,
crate::lexer::token_type::CoqTokenType::Locate => CoqElementType::Locate,
crate::lexer::token_type::CoqTokenType::About => CoqElementType::About,
crate::lexer::token_type::CoqTokenType::Match => CoqElementType::Match,
crate::lexer::token_type::CoqTokenType::With => CoqElementType::With,
crate::lexer::token_type::CoqTokenType::Forall => CoqElementType::Forall,
crate::lexer::token_type::CoqTokenType::Exists => CoqElementType::Exists,
crate::lexer::token_type::CoqTokenType::Fun => CoqElementType::Fun,
crate::lexer::token_type::CoqTokenType::Let => CoqElementType::Let,
crate::lexer::token_type::CoqTokenType::In => CoqElementType::In,
crate::lexer::token_type::CoqTokenType::Class => CoqElementType::Class,
crate::lexer::token_type::CoqTokenType::Instance => CoqElementType::Instance,
crate::lexer::token_type::CoqTokenType::Intros => CoqElementType::Intros,
crate::lexer::token_type::CoqTokenType::Simpl => CoqElementType::Simpl,
crate::lexer::token_type::CoqTokenType::Reflexivity => CoqElementType::Reflexivity,
crate::lexer::token_type::CoqTokenType::Rewrite => CoqElementType::Rewrite,
crate::lexer::token_type::CoqTokenType::Apply => CoqElementType::Apply,
crate::lexer::token_type::CoqTokenType::Exact => CoqElementType::Exact,
crate::lexer::token_type::CoqTokenType::Assumption => CoqElementType::Assumption,
crate::lexer::token_type::CoqTokenType::Auto => CoqElementType::Auto,
crate::lexer::token_type::CoqTokenType::Trivial => CoqElementType::Trivial,
crate::lexer::token_type::CoqTokenType::Discriminate => CoqElementType::Discriminate,
crate::lexer::token_type::CoqTokenType::Injection => CoqElementType::Injection,
crate::lexer::token_type::CoqTokenType::Inversion => CoqElementType::Inversion,
crate::lexer::token_type::CoqTokenType::Destruct => CoqElementType::Destruct,
crate::lexer::token_type::CoqTokenType::Induction => CoqElementType::Induction,
crate::lexer::token_type::CoqTokenType::Generalize => CoqElementType::Generalize,
crate::lexer::token_type::CoqTokenType::Clear => CoqElementType::Clear,
crate::lexer::token_type::CoqTokenType::Unfold => CoqElementType::Unfold,
crate::lexer::token_type::CoqTokenType::Fold => CoqElementType::Fold,
crate::lexer::token_type::CoqTokenType::Compute => CoqElementType::Compute,
crate::lexer::token_type::CoqTokenType::Eval => CoqElementType::Eval,
crate::lexer::token_type::CoqTokenType::Show => CoqElementType::Show,
crate::lexer::token_type::CoqTokenType::Goal => CoqElementType::Goal,
crate::lexer::token_type::CoqTokenType::Goals => CoqElementType::Goals,
crate::lexer::token_type::CoqTokenType::Undo => CoqElementType::Undo,
crate::lexer::token_type::CoqTokenType::Restart => CoqElementType::Restart,
crate::lexer::token_type::CoqTokenType::Admit => CoqElementType::Admit,
crate::lexer::token_type::CoqTokenType::Abort => CoqElementType::Abort,
crate::lexer::token_type::CoqTokenType::Parameter => CoqElementType::Parameter,
crate::lexer::token_type::CoqTokenType::Axiom => CoqElementType::Axiom,
crate::lexer::token_type::CoqTokenType::Variable => CoqElementType::Variable,
crate::lexer::token_type::CoqTokenType::Hypothesis => CoqElementType::Hypothesis,
crate::lexer::token_type::CoqTokenType::Chapter => CoqElementType::Chapter,
crate::lexer::token_type::CoqTokenType::Open => CoqElementType::Open,
crate::lexer::token_type::CoqTokenType::Close => CoqElementType::Close,
crate::lexer::token_type::CoqTokenType::Scope => CoqElementType::Scope,
crate::lexer::token_type::CoqTokenType::Notation => CoqElementType::Notation,
crate::lexer::token_type::CoqTokenType::Infix => CoqElementType::Infix,
crate::lexer::token_type::CoqTokenType::Reserved => CoqElementType::Reserved,
crate::lexer::token_type::CoqTokenType::Bind => CoqElementType::Bind,
crate::lexer::token_type::CoqTokenType::Delimit => CoqElementType::Delimit,
crate::lexer::token_type::CoqTokenType::Arguments => CoqElementType::Arguments,
crate::lexer::token_type::CoqTokenType::Implicit => CoqElementType::Implicit,
crate::lexer::token_type::CoqTokenType::Coercion => CoqElementType::Coercion,
crate::lexer::token_type::CoqTokenType::Identity => CoqElementType::Identity,
crate::lexer::token_type::CoqTokenType::Canonical => CoqElementType::Canonical,
crate::lexer::token_type::CoqTokenType::Arrow => CoqElementType::Arrow,
crate::lexer::token_type::CoqTokenType::DoubleArrow => CoqElementType::DoubleArrow,
crate::lexer::token_type::CoqTokenType::Colon => CoqElementType::Colon,
crate::lexer::token_type::CoqTokenType::Semicolon => CoqElementType::Semicolon,
crate::lexer::token_type::CoqTokenType::Comma => CoqElementType::Comma,
crate::lexer::token_type::CoqTokenType::Dot => CoqElementType::Dot,
crate::lexer::token_type::CoqTokenType::Pipe => CoqElementType::Pipe,
crate::lexer::token_type::CoqTokenType::Underscore => CoqElementType::Underscore,
crate::lexer::token_type::CoqTokenType::Equal => CoqElementType::Equal,
crate::lexer::token_type::CoqTokenType::Plus => CoqElementType::Plus,
crate::lexer::token_type::CoqTokenType::Minus => CoqElementType::Minus,
crate::lexer::token_type::CoqTokenType::Star => CoqElementType::Star,
crate::lexer::token_type::CoqTokenType::Slash => CoqElementType::Slash,
crate::lexer::token_type::CoqTokenType::Percent => CoqElementType::Percent,
crate::lexer::token_type::CoqTokenType::Less => CoqElementType::Less,
crate::lexer::token_type::CoqTokenType::Greater => CoqElementType::Greater,
crate::lexer::token_type::CoqTokenType::LessEqual => CoqElementType::LessEqual,
crate::lexer::token_type::CoqTokenType::GreaterEqual => CoqElementType::GreaterEqual,
crate::lexer::token_type::CoqTokenType::NotEqual => CoqElementType::NotEqual,
crate::lexer::token_type::CoqTokenType::Tilde => CoqElementType::Tilde,
crate::lexer::token_type::CoqTokenType::At => CoqElementType::At,
crate::lexer::token_type::CoqTokenType::Question => CoqElementType::Question,
crate::lexer::token_type::CoqTokenType::Exclamation => CoqElementType::Exclamation,
crate::lexer::token_type::CoqTokenType::Ampersand => CoqElementType::Ampersand,
crate::lexer::token_type::CoqTokenType::Hash => CoqElementType::Hash,
crate::lexer::token_type::CoqTokenType::Dollar => CoqElementType::Dollar,
crate::lexer::token_type::CoqTokenType::Backslash => CoqElementType::Backslash,
crate::lexer::token_type::CoqTokenType::Caret => CoqElementType::Caret,
crate::lexer::token_type::CoqTokenType::LeftParen => CoqElementType::LeftParen,
crate::lexer::token_type::CoqTokenType::RightParen => CoqElementType::RightParen,
crate::lexer::token_type::CoqTokenType::LeftBracket => CoqElementType::LeftBracket,
crate::lexer::token_type::CoqTokenType::RightBracket => CoqElementType::RightBracket,
crate::lexer::token_type::CoqTokenType::LeftBrace => CoqElementType::LeftBrace,
crate::lexer::token_type::CoqTokenType::RightBrace => CoqElementType::RightBrace,
crate::lexer::token_type::CoqTokenType::DoubleColon => CoqElementType::DoubleColon,
crate::lexer::token_type::CoqTokenType::DoubleColonEqual => CoqElementType::DoubleColonEqual,
crate::lexer::token_type::CoqTokenType::ColonEqual => CoqElementType::ColonEqual,
crate::lexer::token_type::CoqTokenType::Turnstile => CoqElementType::Turnstile,
crate::lexer::token_type::CoqTokenType::And => CoqElementType::And,
crate::lexer::token_type::CoqTokenType::Or => CoqElementType::Or,
crate::lexer::token_type::CoqTokenType::LeftArrow => CoqElementType::LeftArrow,
crate::lexer::token_type::CoqTokenType::Root => CoqElementType::Root,
crate::lexer::token_type::CoqTokenType::Declaration => CoqElementType::Declaration,
crate::lexer::token_type::CoqTokenType::Statement => CoqElementType::Statement,
crate::lexer::token_type::CoqTokenType::Expression => CoqElementType::Expression,
crate::lexer::token_type::CoqTokenType::Error => CoqElementType::Error,
crate::lexer::token_type::CoqTokenType::Eof => CoqElementType::Eof,
}
}
}