blob: eb568190cc10f16b27098d45089edb9f818038ea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//! This file implements the function to read a grammar from a string,
//! in the [augmented Backus Naur
//! form](https://en.wikipedia.org/wiki/Augmented_Backus–Naur_form).
//! See [RFC5234](https://www.rfc-editor.org/rfc/rfc5234) for its
//! specifications.
//!
//! In fact, the rules of ABNF are considered to be too strict. For
//! example, only ASCII characters are allowed in the format, even
//! within comments. I think any character should be allowed within
//! comments, so the implementation here does that.
use super::*;
/// The type of errors encountered during parsing a grammar in the
/// ABNF format. See the function [`abnf_to_grammar`] for the parsing
/// function.
#[derive(Debug, Clone, Copy)]
pub enum Error {
/// Something invalid has occurred.
Invalid,
}
impl core::fmt::Display for Error {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Error::Invalid => write!(f, "invalid"),
}
}
}
#[allow(unused)]
/// This function converts a string to a grammar.
pub fn abnf_to_grammar(str: impl AsRef<str>) -> Result<Grammar, Error> {
let str = str.as_ref();
todo!()
}
|