mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Generate token for ints and floats
This commit is contained in:
parent
2c408c68a4
commit
3820b26a93
2 changed files with 47 additions and 1 deletions
|
@ -89,3 +89,45 @@ impl AstToken for RawString {
|
||||||
}
|
}
|
||||||
fn syntax(&self) -> &SyntaxToken { &self.syntax }
|
fn syntax(&self) -> &SyntaxToken { &self.syntax }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
pub struct IntNumber {
|
||||||
|
pub(crate) syntax: SyntaxToken,
|
||||||
|
}
|
||||||
|
impl std::fmt::Display for IntNumber {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
std::fmt::Display::fmt(&self.syntax, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl AstToken for IntNumber {
|
||||||
|
fn can_cast(kind: SyntaxKind) -> bool { kind == INT_NUMBER }
|
||||||
|
fn cast(syntax: SyntaxToken) -> Option<Self> {
|
||||||
|
if Self::can_cast(syntax.kind()) {
|
||||||
|
Some(Self { syntax })
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn syntax(&self) -> &SyntaxToken { &self.syntax }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
pub struct FloatNumber {
|
||||||
|
pub(crate) syntax: SyntaxToken,
|
||||||
|
}
|
||||||
|
impl std::fmt::Display for FloatNumber {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
std::fmt::Display::fmt(&self.syntax, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl AstToken for FloatNumber {
|
||||||
|
fn can_cast(kind: SyntaxKind) -> bool { kind == FLOAT_NUMBER }
|
||||||
|
fn cast(syntax: SyntaxToken) -> Option<Self> {
|
||||||
|
if Self::can_cast(syntax.kind()) {
|
||||||
|
Some(Self { syntax })
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn syntax(&self) -> &SyntaxToken { &self.syntax }
|
||||||
|
}
|
||||||
|
|
|
@ -504,7 +504,11 @@ impl Field {
|
||||||
|
|
||||||
fn lower(grammar: &Grammar) -> AstSrc {
|
fn lower(grammar: &Grammar) -> AstSrc {
|
||||||
let mut res = AstSrc::default();
|
let mut res = AstSrc::default();
|
||||||
res.tokens = vec!["Whitespace".into(), "Comment".into(), "String".into(), "RawString".into()];
|
|
||||||
|
res.tokens = "Whitespace Comment String RawString IntNumber FloatNumber"
|
||||||
|
.split_ascii_whitespace()
|
||||||
|
.map(|it| it.to_string())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let nodes = grammar.iter().collect::<Vec<_>>();
|
let nodes = grammar.iter().collect::<Vec<_>>();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue