From a4a9b68c8ce0733af2d7953f296cd2758b97dba6 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 18 Jan 2021 21:05:20 +0100 Subject: [PATCH 1/2] Document current format parameter syntax --- parser/src/lib.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/parser/src/lib.rs b/parser/src/lib.rs index dcd898d2..a99a85a2 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -50,6 +50,24 @@ pub enum Fragment<'f> { Parameter(Parameter), } +/// A parsed formatting parameter (contents of `{` `}` block). +/// +/// # Syntax +/// +/// ```notrust +/// param := '{' [ argument ] [ '=' argtype ] [ ':' format_spec ] '}' +/// argument := integer +/// +/// argtype := bitfield | '?' | format-array | '[?]' | byte-array | '[u8]' | 'istr' | 'str' | +/// 'bool' | 'char' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'usize' | 'i8' | 'i16' | 'i32' | +/// 'i64' | 'i128 | 'isize' | 'f32' +/// bitfield := integer '..' integer +/// format-array := '[?;' ' '* integer ']' +/// byte-array := '[u8;' ' '* integer ']' +/// +/// format_spec := type +/// type := 'a' | 'b' | 'o' | 'x' | 'X' | '?' | 'µs' +/// ``` #[derive(Debug, PartialEq)] struct Param { index: Option, @@ -92,7 +110,7 @@ pub enum Type { U64, U128, Usize, - /// Byte slice `{:[u8]}`. + /// Byte slice `{=[u8]}`. U8Slice, U8Array(usize), // FIXME: This `usize` is not the target's `usize`; use `u64` instead? F32, From 26b51c1cd5ddcfd896dc4ef703572c0f765d5ae5 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 19 Jan 2021 15:32:48 +0100 Subject: [PATCH 2/2] Clarify spaces before array lengths --- parser/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/parser/src/lib.rs b/parser/src/lib.rs index a99a85a2..49cf0b22 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -62,8 +62,9 @@ pub enum Fragment<'f> { /// 'bool' | 'char' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'usize' | 'i8' | 'i16' | 'i32' | /// 'i64' | 'i128 | 'isize' | 'f32' /// bitfield := integer '..' integer -/// format-array := '[?;' ' '* integer ']' -/// byte-array := '[u8;' ' '* integer ']' +/// format-array := '[?;' spaces integer ']' +/// byte-array := '[u8;' spaces integer ']' +/// spaces := ' '* /// /// format_spec := type /// type := 'a' | 'b' | 'o' | 'x' | 'X' | '?' | 'µs'