fortformat 0.1.2

Parse Fortran format strings and formatted data
Documentation
// Based syntax on the Oracle F77 docs: https://docs.oracle.com/cd/E19957-01/805-4939/z40007437a2e/index.html
// This section deals with parsing the format specification, e.g. (i8,1x,...)
WHITESPACE = _{ " " | "\t" | "\r" | "\n"}
repeat = { ASCII_DIGIT+ }
width = { ASCII_DIGIT+ }
prec = { ASCII_DIGIT+ }
signed = @{ ("-" | "+")? ~ ASCII_DIGIT+ }

skip = ${ ^"x" }
char = ${ ^"a" ~ width? }

logical = ${ ^"l" ~ width }

integer = ${ ^"i" ~ width ~ ("." ~ prec)? }
octal = ${ ^"o" ~ width ~ ("." ~ prec)? }
hex = ${ ^"z" ~ width ~ ("." ~ prec)? }

real = ${ ^"f" ~ (width ~ ("." ~ prec)?)? }
realorexp = ${ ^"g" ~ (width ~ ("." ~ prec)?)? }
exponential = ${ ^"e" ~ (width ~ ("." ~ prec)?)? }
expdouble = ${ ^"d" ~ (width ~ ("." ~ prec)?)? }

scale = ${ signed? ~ ^"p" }
field = ${ repeat? ~ (skip | char | integer | logical | octal | hex | real | realorexp | exponential | expdouble ) }
expr = { "(" ~ element ~ (","? ~ element)* ~ ")" }
element = { scale | field | (repeat? ~ expr) }
format = { SOI ~ element ~ EOI}