Fix more parser bugs
This commit is contained in:
parent
fc463d3807
commit
9c0f60b6ce
@ -470,7 +470,7 @@ peg::parser! {
|
||||
bin_literal() / hex_literal() / unmarked_literal()
|
||||
|
||||
rule unmarked_literal() -> ExpressionKind =
|
||||
digits:digits() { ExpressionKind::NatLiteral(digits.parse().unwrap()) }
|
||||
digits:digits() { let n = digits.chars().filter(|ch| *ch != '_').collect::<String>().parse().unwrap(); ExpressionKind::NatLiteral(n) }
|
||||
|
||||
rule bin_literal() -> ExpressionKind =
|
||||
"0b" digits:bin_digits() {? parse_binary(digits).map(ExpressionKind::NatLiteral) }
|
||||
@ -482,12 +482,12 @@ peg::parser! {
|
||||
ds:$( digits() "." digits()? / "." digits() ) { ExpressionKind::FloatLiteral(ds.parse().unwrap()) }
|
||||
|
||||
rule digits() -> &'input str = $((digit_group() "_"*)+)
|
||||
rule bin_digits() -> &'input str = $((bin_digit_group() "_"*)+)
|
||||
rule hex_digits() -> &'input str = $((hex_digit_group() "_"*)+)
|
||||
rule bin_digits() -> &'input str = $((bin_digit_group() "_"*)+)
|
||||
rule hex_digits() -> &'input str = $((hex_digit_group() "_"*)+)
|
||||
|
||||
rule digit_group() -> &'input str = $(['0'..='9']+)
|
||||
rule bin_digit_group() -> &'input str = $(['0' | '1']+)
|
||||
rule hex_digit_group() -> &'input str = $(['0'..='9' | 'a'..='f' | 'A'..='F']+)
|
||||
rule digit_group() -> &'input str = $(['0'..='9']+)
|
||||
rule bin_digit_group() -> &'input str = $(['0' | '1']+)
|
||||
rule hex_digit_group() -> &'input str = $(['0'..='9' | 'a'..='f' | 'A'..='F']+)
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1383,7 +1383,6 @@ fn blocks() {
|
||||
|
||||
assert_block!("{}", vec![].into());
|
||||
|
||||
//TODO this case is broken in the peg version
|
||||
let source = r#"{
|
||||
|
||||
//hella
|
||||
@ -1391,11 +1390,8 @@ fn blocks() {
|
||||
11; /*chutney*/0xf
|
||||
}"#;
|
||||
|
||||
let mut parser = Parser::new();
|
||||
let block = parser.block_comb(source);
|
||||
|
||||
assert_eq!(
|
||||
block.unwrap(),
|
||||
assert_block!(
|
||||
source,
|
||||
vec![
|
||||
Statement {
|
||||
id: Default::default(),
|
||||
|
Loading…
Reference in New Issue
Block a user