mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
enh(generic-snmp): lexer carries numbers values
This commit is contained in:
parent
d11c4c3e89
commit
29d8949621
@ -5,7 +5,7 @@ pub type Spanned<Tok, Loc, Error> = Result<(Loc, Tok, Loc), Error>;
|
|||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub enum Tok {
|
pub enum Tok {
|
||||||
Num,
|
Num(f32),
|
||||||
Id,
|
Id,
|
||||||
OpStar,
|
OpStar,
|
||||||
OpSlash,
|
OpSlash,
|
||||||
@ -57,7 +57,11 @@ impl<'input> Lexer<'input> {
|
|||||||
str::from_utf8(&chars[start..end]).unwrap_or("Bad value")
|
str::from_utf8(&chars[start..end]).unwrap_or("Bad value")
|
||||||
);
|
);
|
||||||
self.offset = end;
|
self.offset = end;
|
||||||
Some(Ok((start, Tok::Num, end)))
|
let value = str::from_utf8(&chars[start..end])
|
||||||
|
.unwrap_or("Bad value")
|
||||||
|
.parse::<f32>()
|
||||||
|
.unwrap_or(0.0);
|
||||||
|
Some(Ok((start, Tok::Num(value), end)))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn identifier(
|
fn identifier(
|
||||||
@ -147,9 +151,9 @@ mod Test {
|
|||||||
fn test_lexer_num_id_num() {
|
fn test_lexer_num_id_num() {
|
||||||
let input = "123 abc 456";
|
let input = "123 abc 456";
|
||||||
let mut lexer = Lexer::new(input);
|
let mut lexer = Lexer::new(input);
|
||||||
assert_eq!(lexer.next(), Some(Ok((0, Tok::Num, 3))));
|
assert_eq!(lexer.next(), Some(Ok((0, Tok::Num(123_f32), 3))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((4, Tok::Id, 7))));
|
assert_eq!(lexer.next(), Some(Ok((4, Tok::Id, 7))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((8, Tok::Num, 11))));
|
assert_eq!(lexer.next(), Some(Ok((8, Tok::Num(456_f32), 11))));
|
||||||
assert_eq!(lexer.next(), None);
|
assert_eq!(lexer.next(), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +162,7 @@ mod Test {
|
|||||||
let input = "abc 123 def";
|
let input = "abc 123 def";
|
||||||
let mut lexer = Lexer::new(input);
|
let mut lexer = Lexer::new(input);
|
||||||
assert_eq!(lexer.next(), Some(Ok((0, Tok::Id, 3))));
|
assert_eq!(lexer.next(), Some(Ok((0, Tok::Id, 3))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((4, Tok::Num, 7))));
|
assert_eq!(lexer.next(), Some(Ok((4, Tok::Num(123_f32), 7))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((8, Tok::Id, 11))));
|
assert_eq!(lexer.next(), Some(Ok((8, Tok::Id, 11))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,11 +170,11 @@ mod Test {
|
|||||||
fn test_lexer_num_op() {
|
fn test_lexer_num_op() {
|
||||||
let input = "1+2*3";
|
let input = "1+2*3";
|
||||||
let mut lexer = Lexer::new(input);
|
let mut lexer = Lexer::new(input);
|
||||||
assert_eq!(lexer.next(), Some(Ok((0, Tok::Num, 1))));
|
assert_eq!(lexer.next(), Some(Ok((0, Tok::Num(1_f32), 1))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((1, Tok::OpPlus, 2))));
|
assert_eq!(lexer.next(), Some(Ok((1, Tok::OpPlus, 2))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((2, Tok::Num, 3))));
|
assert_eq!(lexer.next(), Some(Ok((2, Tok::Num(2_f32), 3))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((3, Tok::OpStar, 4))));
|
assert_eq!(lexer.next(), Some(Ok((3, Tok::OpStar, 4))));
|
||||||
assert_eq!(lexer.next(), Some(Ok((4, Tok::Num, 5))));
|
assert_eq!(lexer.next(), Some(Ok((4, Tok::Num(3_f32), 5))));
|
||||||
assert_eq!(lexer.next(), None);
|
assert_eq!(lexer.next(), None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user