diff --git a/bootstrap/bin/hmc/hmc.ml b/bootstrap/bin/hmc/hmc.ml index b61fb2aca..d4a39aa6e 100644 --- a/bootstrap/bin/hmc/hmc.ml +++ b/bootstrap/bin/hmc/hmc.ml @@ -4,18 +4,14 @@ open Hmc let scan_file path = let rec fn scanner = begin - let scanner', ctok = Scan.next scanner in - let atok = Scan.ConcreteToken.atok ctok in - let source = Scan.ConcreteToken.source ctok in + let scanner', tok = Scan.next scanner in File.Fmt.stdout |> Fmt.fmt " " - |> Source.Slice.pp source - |> Fmt.fmt " : " - |> Scan.AbstractToken.pp atok + |> Scan.Token.pp tok |> Fmt.fmt "\n" |> ignore; - match atok with - | Scan.AbstractToken.Tok_end_of_input -> () + match tok with + | Scan.Token.Tok_end_of_input _ -> () | _ -> fn scanner' end in let () = match File.of_path path with diff --git a/bootstrap/bin/hocc/Parse.hmh b/bootstrap/bin/hocc/Parse.hmh index a050423bb..9a331d966 100644 --- a/bootstrap/bin/hocc/Parse.hmh +++ b/bootstrap/bin/hocc/Parse.hmh @@ -36,7 +36,7 @@ module Error = struct {source=Scan.Token.source token_; msg} let init_mal mal = - let open Hmc.Scan.AbstractToken.Rendition.Malformation in + let open Hmc.Scan.Token.Rendition.Malformation in {source=source mal; msg=description mal} let init_scanner scanner msg = @@ -641,60 +641,57 @@ let rec scan scanner = match Scan.Token.malformations scan_token with | [] -> begin let token_opt = match scan_token with - | Scan.Token.HmcToken {atok; _} -> begin - match atok with - | Tok_whitespace - | Tok_hash_comment + | Scan.Token.HmcToken tok -> begin + match tok with + | Tok_whitespace _ + | Tok_hash_comment _ | Tok_paren_comment _ -> None (* Swallow. *) | Tok_uident _ -> Some (Token.UIDENT (UIDENT {token_=scan_token})) | Tok_cident _ -> Some (Token.CIDENT (CIDENT {token_=scan_token})) - | Tok_uscore -> Some (Token.USCORE (USCORE {token_=scan_token})) + | Tok_uscore _ -> Some (Token.USCORE (USCORE {token_=scan_token})) | Tok_istring _ -> Some (Token.ISTRING (ISTRING {token_=scan_token})) - | Tok_of -> Some (Token.OF (OF {token_=scan_token})) - | Tok_colon -> Some (Token.COLON (COLON {token_=scan_token})) - | Tok_dot -> Some (Token.DOT (DOT {token_=scan_token})) - | Tok_arrow -> Some (Token.ARROW (ARROW {token_=scan_token})) - | Tok_bar -> Some (Token.BAR (BAR {token_=scan_token})) - | Tok_lt -> Some (Token.LT (LT {token_=scan_token})) - | Tok_comma -> Some (Token.COMMA (COMMA {token_=scan_token})) - | Tok_semi -> Some (Token.SEMI (SEMI {token_=scan_token})) - | Tok_line_delim -> Some (Token.LINE_DELIM (LINE_DELIM {token_=scan_token})) + | Tok_of _ -> Some (Token.OF (OF {token_=scan_token})) + | Tok_colon _ -> Some (Token.COLON (COLON {token_=scan_token})) + | Tok_dot _ -> Some (Token.DOT (DOT {token_=scan_token})) + | Tok_arrow _ -> Some (Token.ARROW (ARROW {token_=scan_token})) + | Tok_bar _ -> Some (Token.BAR (BAR {token_=scan_token})) + | Tok_lt _ -> Some (Token.LT (LT {token_=scan_token})) + | Tok_comma _ -> Some (Token.COMMA (COMMA {token_=scan_token})) + | Tok_semi _ -> Some (Token.SEMI (SEMI {token_=scan_token})) + | Tok_line_delim _ -> Some (Token.LINE_DELIM (LINE_DELIM {token_=scan_token})) | Tok_indent _ -> Some (Token.INDENT (INDENT {token_=scan_token})) | Tok_dedent _ -> Some (Token.DEDENT (DEDENT {token_=scan_token})) - | Tok_lparen -> Some (Token.LPAREN (LPAREN {token_=scan_token})) - | Tok_rparen -> Some (Token.RPAREN (RPAREN {token_=scan_token})) - | Tok_lcapture -> Some (Token.LCAPTURE (LCAPTURE {token_=scan_token})) - | Tok_rcapture -> Some (Token.RCAPTURE (RCAPTURE {token_=scan_token})) - | Tok_lbrack -> Some (Token.LBRACK (LBRACK {token_=scan_token})) - | Tok_rbrack -> Some (Token.RBRACK (RBRACK {token_=scan_token})) - | Tok_larray -> Some (Token.LARRAY (LARRAY {token_=scan_token})) - | Tok_rarray -> Some (Token.RARRAY (RARRAY {token_=scan_token})) - | Tok_lcurly -> Some (Token.LCURLY (LCURLY {token_=scan_token})) - | Tok_rcurly -> Some (Token.RCURLY (RCURLY {token_=scan_token})) - | Tok_end_of_input -> Some (Token.EOI (EOI {token_=scan_token})) + | Tok_lparen _ -> Some (Token.LPAREN (LPAREN {token_=scan_token})) + | Tok_rparen _ -> Some (Token.RPAREN (RPAREN {token_=scan_token})) + | Tok_lcapture _ -> Some (Token.LCAPTURE (LCAPTURE {token_=scan_token})) + | Tok_rcapture _ -> Some (Token.RCAPTURE (RCAPTURE {token_=scan_token})) + | Tok_lbrack _ -> Some (Token.LBRACK (LBRACK {token_=scan_token})) + | Tok_rbrack _ -> Some (Token.RBRACK (RBRACK {token_=scan_token})) + | Tok_larray _ -> Some (Token.LARRAY (LARRAY {token_=scan_token})) + | Tok_rarray _ -> Some (Token.RARRAY (RARRAY {token_=scan_token})) + | Tok_lcurly _ -> Some (Token.LCURLY (LCURLY {token_=scan_token})) + | Tok_rcurly _ -> Some (Token.RCURLY (RCURLY {token_=scan_token})) + | Tok_end_of_input _ -> Some (Token.EOI (EOI {token_=scan_token})) | _ -> Some (Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token})) end - | HoccToken {atok; _} -> begin - match atok with - | Tok_hocc -> Some (Token.HOCC (HOCC {token_=scan_token})) - | Tok_token -> Some (Token.TOKEN (TOKEN {token_=scan_token})) - | Tok_nonterm -> Some (Token.NONTERM (NONTERM {token_=scan_token})) - | Tok_start -> Some (Token.START (START {token_=scan_token})) - | Tok_epsilon -> Some (Token.EPSILON_ (EPSILON {token_=scan_token})) - | Tok_neutral -> Some (Token.NEUTRAL (NEUTRAL {token_=scan_token})) - | Tok_left -> Some (Token.LEFT (LEFT {token_=scan_token})) - | Tok_right -> Some (Token.RIGHT (RIGHT {token_=scan_token})) - | Tok_prec -> Some (Token.PREC (PREC {token_=scan_token})) - | Tok_colon_colon_eq -> - Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token_=scan_token})) - end in + | Tok_hocc _ -> Some (Token.HOCC (HOCC {token_=scan_token})) + | Tok_token _ -> Some (Token.TOKEN (TOKEN {token_=scan_token})) + | Tok_nonterm _ -> Some (Token.NONTERM (NONTERM {token_=scan_token})) + | Tok_start _ -> Some (Token.START (START {token_=scan_token})) + | Tok_epsilon _ -> Some (Token.EPSILON_ (EPSILON {token_=scan_token})) + | Tok_neutral _ -> Some (Token.NEUTRAL (NEUTRAL {token_=scan_token})) + | Tok_left _ -> Some (Token.LEFT (LEFT {token_=scan_token})) + | Tok_right _ -> Some (Token.RIGHT (RIGHT {token_=scan_token})) + | Tok_prec _ -> Some (Token.PREC (PREC {token_=scan_token})) + | Tok_colon_colon_eq _ -> Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token_=scan_token})) + in match token_opt with | Some token_ -> scanner, scan_token, token_, [] | None -> scan scanner end | mal :: [] -> begin (* Try to pass e.g. 42L through as a u64 token to support OCaml syntax. *) - let u64_opt = match Hmc.Scan.AbstractToken.Rendition.Malformation.description mal with + let u64_opt = match Hmc.Scan.Token.Rendition.Malformation.description mal with | "Invalid numerical constant" -> begin let source = Scan.Token.source scan_token in Hmc.Source.Slice.to_string source @@ -709,12 +706,12 @@ let rec scan scanner = in match u64_opt with | Some x -> begin - let rendition = Hmc.Scan.AbstractToken.Rendition.Constant x in - let ctok = Hmc.Scan.ConcreteToken.{ - atok=Hmc.Scan.AbstractToken.Tok_u64 rendition; - source=Scan.Token.source scan_token + let rendition = Hmc.Scan.Token.Rendition.Constant x in + let tok = Hmc.Scan.Token.Tok_u64 { + source=Scan.Token.source scan_token; + u64=rendition } in - let scan_token = Scan.Token.HmcToken ctok in + let scan_token = Scan.Token.HmcToken tok in scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [] end | None -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [mal] @@ -1800,11 +1797,7 @@ let min_comment_indentation_of_hocc_block = function let base_of_code code = let of_token token_ = - let open Scan.Token in - let source = match token_ with - | HmcToken ctok -> ctok |> Hmc.Scan.ConcreteToken.source - | HoccToken ctok -> ctok |> Scan.ConcreteToken.source - in + let source = Scan.Token.source token_ in Hmc.Source.Slice.base source in let rec of_delimited = function @@ -1860,11 +1853,7 @@ let last_token_of_code code = let past_of_code code = let of_token token_ = - let open Scan.Token in - let source = match token_ with - | HmcToken ctok -> ctok |> Hmc.Scan.ConcreteToken.source - | HoccToken ctok -> ctok |> Scan.ConcreteToken.source - in + let source = Scan.Token.source token_ in Hmc.Source.Slice.past source in last_token_of_code code |> of_token diff --git a/bootstrap/bin/hocc/code.ml b/bootstrap/bin/hocc/code.ml index 6745ffdfa..2b3e2748e 100644 --- a/bootstrap/bin/hocc/code.ml +++ b/bootstrap/bin/hocc/code.ml @@ -23,8 +23,8 @@ let line_context_indentation line_context = raw_indentation - (raw_indentation % 4L) let indentation_of_hocc = function - | Scan.Token.HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.line_context source |> line_context_indentation + | Scan.Token.Tok_hocc {source} -> Hmc.Source.Slice.line_context source |> line_context_indentation + | _ -> not_reached () let macro_of_line line = let open String.C in @@ -476,14 +476,8 @@ let generate_hmi conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> (fun formatter -> match prelude with | Parse.Matter {token_; _} -> begin - let base = match token_ with - | HmcToken {source; _} -> Hmc.Source.Slice.base source - | HoccToken _ -> not_reached () - in - let past = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.base source - in + let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) end @@ -494,14 +488,8 @@ let generate_hmi conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> (fun formatter -> match postlude with | Parse.Matter _ -> begin - let base = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.past source - in - let past = match eoi with - | HmcToken {source; _} -> Hmc.Source.Slice.past source - | HoccToken _ -> not_reached () - in + let base = Scan.Token.source hocc_ |> Hmc.Source.Slice.past in + let past = Scan.Token.source eoi |> Hmc.Source.Slice.past in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> fmt_source_directive indentation source @@ -1853,14 +1841,8 @@ let generate_hm conf |> (fun formatter -> match prelude with | Parse.Matter {token_; _} -> begin - let base = match token_ with - | HmcToken {source; _} -> Hmc.Source.Slice.base source - | HoccToken _ -> not_reached () - in - let past = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.base source - in + let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) end @@ -1872,10 +1854,7 @@ let generate_hm conf match postlude with | Parse.Matter _ -> begin let base = Parse.postlude_base_of_hocc hocc_block in - let past = match eoi with - | HmcToken {source; _} -> Hmc.Source.Slice.past source - | HoccToken _ -> not_reached () - in + let past = Scan.Token.source eoi |> Hmc.Source.Slice.past in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> fmt_source_directive indentation source @@ -2299,14 +2278,8 @@ let generate_mli conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> (fun formatter -> match prelude with | Parse.Matter {token_; _} -> begin - let base = match token_ with - | HmcToken {source; _} -> Hmc.Source.Slice.base source - | HoccToken _ -> not_reached () - in - let past = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.base source - in + let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) end @@ -2316,14 +2289,8 @@ let generate_mli conf Parse.(Hmhi {prelude; hocc_; postlude; eoi}) io spec = |> (fun formatter -> match postlude with | Parse.Matter _ -> begin - let base = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.past source - in - let past = match eoi with - | HmcToken {source; _} -> Hmc.Source.Slice.past source - | HoccToken _ -> not_reached () - in + let base = Scan.Token.source hocc_ |> Hmc.Source.Slice.past in + let past = Scan.Token.source eoi |> Hmc.Source.Slice.past in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> fmt_ml_source_directive source @@ -3712,14 +3679,8 @@ let generate_ml conf |> (fun formatter -> match prelude with | Parse.Matter {token_; _} -> begin - let base = match token_ with - | HmcToken {source; _} -> Hmc.Source.Slice.base source - | HoccToken _ -> not_reached () - in - let past = match hocc_ with - | HmcToken _ -> not_reached () - | HoccToken {source; _} -> Hmc.Source.Slice.base source - in + let base = Scan.Token.source token_ |> Hmc.Source.Slice.base in + let past = Scan.Token.source hocc_ |> Hmc.Source.Slice.base in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> Fmt.fmt (Hmc.Source.Slice.to_string source) end @@ -3730,10 +3691,7 @@ let generate_ml conf match postlude with | Parse.Matter _ -> begin let base = Parse.postlude_base_of_hocc hocc_block in - let past = match eoi with - | HmcToken {source; _} -> Hmc.Source.Slice.past source - | HoccToken _ -> not_reached () - in + let past = Scan.Token.source eoi |> Hmc.Source.Slice.past in let source = Hmc.Source.Slice.of_cursors ~base ~past in formatter |> fmt_ml_source_directive source diff --git a/bootstrap/bin/hocc/parse.ml b/bootstrap/bin/hocc/parse.ml index 322d5e3c9..a2775a622 100644 --- a/bootstrap/bin/hocc/parse.ml +++ b/bootstrap/bin/hocc/parse.ml @@ -1,4 +1,4 @@ -(* This file was generated by `hocc` based on "ParseLR.hmh" *) +(* This file was generated by `hocc` based on "Parse.hmh" *) open Basis open! Basis.Rudiments @@ -37,7 +37,7 @@ module Error = struct {source=Scan.Token.source token_; msg} let init_mal mal = - let open Hmc.Scan.AbstractToken.Rendition.Malformation in + let open Hmc.Scan.Token.Rendition.Malformation in {source=source mal; msg=description mal} let init_scanner scanner msg = @@ -12177,7 +12177,7 @@ include struct | Elm.{symbol=Symbol.Token (UIDENT uident); _} :: tl -> Symbol.Nonterm (Uident ( (*______________________________________________________________________________*) -#309 "./ParseLR.hmh" +#309 "./Parse.hmh" let X.(UIDENT {token_=uident}) = uident in Uident {uident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12188,7 +12188,7 @@ let X.(UIDENT {token_=uident}) = uident in | Elm.{symbol=Symbol.Token (CIDENT cident); _} :: tl -> Symbol.Nonterm (Cident ( (*______________________________________________________________________________*) -#314 "./ParseLR.hmh" +#314 "./Parse.hmh" let X.(CIDENT {token_=cident}) = cident in Cident {cident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12199,7 +12199,7 @@ let X.(CIDENT {token_=cident}) = cident in | Elm.{symbol=Symbol.Nonterm (Uident uident); _} :: tl -> Symbol.Nonterm (Ident ( (*______________________________________________________________________________*) -#318 "./ParseLR.hmh" +#318 "./Parse.hmh" IdentUident {uident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12209,7 +12209,7 @@ IdentUident {uident} | Elm.{symbol=Symbol.Nonterm (Cident cident); _} :: tl -> Symbol.Nonterm (Ident ( (*______________________________________________________________________________*) -#319 "./ParseLR.hmh" +#319 "./Parse.hmh" IdentCident {cident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12219,7 +12219,7 @@ IdentCident {cident} | Elm.{symbol=Symbol.Token (USCORE uscore); _} :: tl -> Symbol.Nonterm (Ident ( (*______________________________________________________________________________*) -#321 "./ParseLR.hmh" +#321 "./Parse.hmh" let X.(USCORE {token_=uscore}) = uscore in IdentUscore {uscore} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12232,7 +12232,7 @@ let X.(USCORE {token_=uscore}) = uscore in :: Elm.{symbol=Symbol.Token (COMMA comma); _} :: tl -> Symbol.Nonterm (PrecsTl ( (*______________________________________________________________________________*) -#326 "./ParseLR.hmh" +#326 "./Parse.hmh" let X.(COMMA {token_=comma}) = comma in PrecsTlCommaUident {comma; uident; precs_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12242,7 +12242,7 @@ let X.(COMMA {token_=comma}) = comma in (* 6 *) (function tl -> Symbol.Nonterm (PrecsTl ( (*______________________________________________________________________________*) -#328 "./ParseLR.hmh" +#328 "./Parse.hmh" PrecsTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12252,7 +12252,7 @@ PrecsTlEpsilon :: Elm.{symbol=Symbol.Nonterm (Uident uident); _} :: tl -> Symbol.Nonterm (Precs ( (*______________________________________________________________________________*) -#331 "./ParseLR.hmh" +#331 "./Parse.hmh" Precs {uident; precs_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12263,7 +12263,7 @@ Precs {uident; precs_tl} :: Elm.{symbol=Symbol.Token (LT lt); _} :: tl -> Symbol.Nonterm (PrecRels ( (*______________________________________________________________________________*) -#335 "./ParseLR.hmh" +#335 "./Parse.hmh" let X.(LT {token_=lt}) = lt in PrecRelsLtPrecs {lt; precs} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12273,7 +12273,7 @@ let X.(LT {token_=lt}) = lt in (* 9 *) (function tl -> Symbol.Nonterm (PrecRels ( (*______________________________________________________________________________*) -#337 "./ParseLR.hmh" +#337 "./Parse.hmh" PrecRelsEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12282,7 +12282,7 @@ PrecRelsEpsilon | Elm.{symbol=Symbol.Token (NEUTRAL neutral_); _} :: tl -> Symbol.Nonterm (PrecType ( (*______________________________________________________________________________*) -#341 "./ParseLR.hmh" +#341 "./Parse.hmh" let X.(NEUTRAL {token_=neutral_}) = neutral_ in PrecTypeNeutral {neutral_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12293,7 +12293,7 @@ let X.(NEUTRAL {token_=neutral_}) = neutral_ in | Elm.{symbol=Symbol.Token (LEFT left_); _} :: tl -> Symbol.Nonterm (PrecType ( (*______________________________________________________________________________*) -#344 "./ParseLR.hmh" +#344 "./Parse.hmh" let X.(LEFT {token_=left_}) = left_ in PrecTypeLeft {left_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12304,7 +12304,7 @@ let X.(LEFT {token_=left_}) = left_ in | Elm.{symbol=Symbol.Token (RIGHT right_); _} :: tl -> Symbol.Nonterm (PrecType ( (*______________________________________________________________________________*) -#347 "./ParseLR.hmh" +#347 "./Parse.hmh" let X.(RIGHT {token_=right_}) = right_ in PrecTypeRight {right_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12317,7 +12317,7 @@ let X.(RIGHT {token_=right_}) = right_ in :: Elm.{symbol=Symbol.Nonterm (PrecType prec_type); _} :: tl -> Symbol.Nonterm (Prec ( (*______________________________________________________________________________*) -#351 "./ParseLR.hmh" +#351 "./Parse.hmh" Prec {prec_type; uident; prec_rels} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12330,7 +12330,7 @@ Prec {prec_type; uident; prec_rels} :: Elm.{symbol=Symbol.Token (OF of_); _} :: tl -> Symbol.Nonterm (OfType ( (*______________________________________________________________________________*) -#355 "./ParseLR.hmh" +#355 "./Parse.hmh" let X.(OF {token_=of_}) = of_ in let X.(DOT {token_=dot}) = dot in OfType {of_; type_module; dot; type_type} @@ -12342,7 +12342,7 @@ let X.(OF {token_=of_}) = of_ in | Elm.{symbol=Symbol.Nonterm (OfType of_type); _} :: tl -> Symbol.Nonterm (OfType0 ( (*______________________________________________________________________________*) -#360 "./ParseLR.hmh" +#360 "./Parse.hmh" OfType0OfType {of_type} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12351,7 +12351,7 @@ OfType0OfType {of_type} (* 16 *) (function tl -> Symbol.Nonterm (OfType0 ( (*______________________________________________________________________________*) -#361 "./ParseLR.hmh" +#361 "./Parse.hmh" OfType0Epsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12361,7 +12361,7 @@ OfType0Epsilon :: Elm.{symbol=Symbol.Token (PREC prec_); _} :: tl -> Symbol.Nonterm (PrecRef ( (*______________________________________________________________________________*) -#365 "./ParseLR.hmh" +#365 "./Parse.hmh" let X.(PREC {token_=prec_}) = prec_ in PrecRefPrecUident {prec_; uident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12371,7 +12371,7 @@ let X.(PREC {token_=prec_}) = prec_ in (* 18 *) (function tl -> Symbol.Nonterm (PrecRef ( (*______________________________________________________________________________*) -#367 "./ParseLR.hmh" +#367 "./Parse.hmh" PrecRefEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12380,7 +12380,7 @@ PrecRefEpsilon | Elm.{symbol=Symbol.Token (ISTRING alias); _} :: tl -> Symbol.Nonterm (TokenAlias ( (*______________________________________________________________________________*) -#371 "./ParseLR.hmh" +#371 "./Parse.hmh" let X.(ISTRING {token_=alias}) = alias in TokenAlias {alias} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12390,7 +12390,7 @@ let X.(ISTRING {token_=alias}) = alias in (* 20 *) (function tl -> Symbol.Nonterm (TokenAlias ( (*______________________________________________________________________________*) -#373 "./ParseLR.hmh" +#373 "./Parse.hmh" TokenAliasEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12403,7 +12403,7 @@ TokenAliasEpsilon :: Elm.{symbol=Symbol.Token (TOKEN token_); _} :: tl -> Symbol.Nonterm (Token ( (*______________________________________________________________________________*) -#377 "./ParseLR.hmh" +#377 "./Parse.hmh" let X.(TOKEN {token_}) = token_ in Token {token_; cident; token_alias; of_type0; prec_ref} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12414,7 +12414,7 @@ let X.(TOKEN {token_}) = token_ in | Elm.{symbol=Symbol.Token (LINE_DELIM line_delim); _} :: tl -> Symbol.Nonterm (Sep ( (*______________________________________________________________________________*) -#382 "./ParseLR.hmh" +#382 "./Parse.hmh" let X.(LINE_DELIM {token_=line_delim}) = line_delim in SepLineDelim {line_delim} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12425,7 +12425,7 @@ let X.(LINE_DELIM {token_=line_delim}) = line_delim in | Elm.{symbol=Symbol.Token (SEMI semi); _} :: tl -> Symbol.Nonterm (Sep ( (*______________________________________________________________________________*) -#385 "./ParseLR.hmh" +#385 "./Parse.hmh" let X.(SEMI {token_=semi}) = semi in SepSemi {semi} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12436,7 +12436,7 @@ let X.(SEMI {token_=semi}) = semi in | Elm.{symbol=Symbol.Token (BAR bar); _} :: tl -> Symbol.Nonterm (Sep ( (*______________________________________________________________________________*) -#388 "./ParseLR.hmh" +#388 "./Parse.hmh" let X.(BAR {token_=bar}) = bar in SepBar {bar} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12449,7 +12449,7 @@ let X.(BAR {token_=bar}) = bar in :: Elm.{symbol=Symbol.Nonterm (Sep sep); _} :: tl -> Symbol.Nonterm (CodesTl ( (*______________________________________________________________________________*) -#392 "./ParseLR.hmh" +#392 "./Parse.hmh" CodesTlSepCode {sep; code; codes_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12458,7 +12458,7 @@ CodesTlSepCode {sep; code; codes_tl} (* 26 *) (function tl -> Symbol.Nonterm (CodesTl ( (*______________________________________________________________________________*) -#393 "./ParseLR.hmh" +#393 "./Parse.hmh" CodesTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12468,7 +12468,7 @@ CodesTlEpsilon :: Elm.{symbol=Symbol.Nonterm (Code code); _} :: tl -> Symbol.Nonterm (Codes ( (*______________________________________________________________________________*) -#396 "./ParseLR.hmh" +#396 "./Parse.hmh" Codes {code; codes_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12478,7 +12478,7 @@ Codes {code; codes_tl} | Elm.{symbol=Symbol.Nonterm (Codes codes); _} :: tl -> Symbol.Nonterm (Codes0 ( (*______________________________________________________________________________*) -#399 "./ParseLR.hmh" +#399 "./Parse.hmh" Codes0Codes {codes} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12487,7 +12487,7 @@ Codes0Codes {codes} (* 29 *) (function tl -> Symbol.Nonterm (Codes0 ( (*______________________________________________________________________________*) -#400 "./ParseLR.hmh" +#400 "./Parse.hmh" Codes0Epsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12498,7 +12498,7 @@ Codes0Epsilon :: Elm.{symbol=Symbol.Token (INDENT indent); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#404 "./ParseLR.hmh" +#404 "./Parse.hmh" let X.(INDENT {token_=indent}) = indent in let X.(DEDENT {token_=dedent}) = dedent in DelimitedBlock {indent; codes; dedent} @@ -12512,7 +12512,7 @@ let X.(INDENT {token_=indent}) = indent in :: Elm.{symbol=Symbol.Token (LPAREN lparen); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#408 "./ParseLR.hmh" +#408 "./Parse.hmh" let X.(LPAREN {token_=lparen}) = lparen in let X.(RPAREN {token_=rparen}) = rparen in DelimitedParen {lparen; codes0; rparen} @@ -12526,7 +12526,7 @@ let X.(LPAREN {token_=lparen}) = lparen in :: Elm.{symbol=Symbol.Token (LCAPTURE lcapture); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#412 "./ParseLR.hmh" +#412 "./Parse.hmh" let X.(LCAPTURE {token_=lcapture}) = lcapture in let X.(RCAPTURE {token_=rcapture}) = rcapture in DelimitedCapture {lcapture; codes0; rcapture} @@ -12540,7 +12540,7 @@ let X.(LCAPTURE {token_=lcapture}) = lcapture in :: Elm.{symbol=Symbol.Token (LBRACK lbrack); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#416 "./ParseLR.hmh" +#416 "./Parse.hmh" let X.(LBRACK {token_=lbrack}) = lbrack in let X.(RBRACK {token_=rbrack}) = rbrack in DelimitedList {lbrack; codes0; rbrack} @@ -12554,7 +12554,7 @@ let X.(LBRACK {token_=lbrack}) = lbrack in :: Elm.{symbol=Symbol.Token (LARRAY larray); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#420 "./ParseLR.hmh" +#420 "./Parse.hmh" let X.(LARRAY {token_=larray}) = larray in let X.(RARRAY {token_=rarray}) = rarray in DelimitedArray {larray; codes0; rarray} @@ -12568,7 +12568,7 @@ let X.(LARRAY {token_=larray}) = larray in :: Elm.{symbol=Symbol.Token (LCURLY lcurly); _} :: tl -> Symbol.Nonterm (Delimited ( (*______________________________________________________________________________*) -#424 "./ParseLR.hmh" +#424 "./Parse.hmh" let X.(LCURLY {token_=lcurly}) = lcurly in let X.(RCURLY {token_=rcurly}) = rcurly in DelimitedModule {lcurly; codes0; rcurly} @@ -12580,7 +12580,7 @@ let X.(LCURLY {token_=lcurly}) = lcurly in | Elm.{symbol=Symbol.Token (OTHER_TOKEN token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#430 "./ParseLR.hmh" +#430 "./Parse.hmh" let X.(OTHER_TOKEN {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12591,7 +12591,7 @@ let X.(OTHER_TOKEN {token_}) = token_ in | Elm.{symbol=Symbol.Token (UIDENT token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#433 "./ParseLR.hmh" +#433 "./Parse.hmh" let X.(UIDENT {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12602,7 +12602,7 @@ let X.(UIDENT {token_}) = token_ in | Elm.{symbol=Symbol.Token (CIDENT token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#436 "./ParseLR.hmh" +#436 "./Parse.hmh" let X.(CIDENT {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12613,7 +12613,7 @@ let X.(CIDENT {token_}) = token_ in | Elm.{symbol=Symbol.Token (USCORE token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#439 "./ParseLR.hmh" +#439 "./Parse.hmh" let X.(USCORE {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12624,7 +12624,7 @@ let X.(USCORE {token_}) = token_ in | Elm.{symbol=Symbol.Token (ISTRING token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#442 "./ParseLR.hmh" +#442 "./Parse.hmh" let X.(ISTRING {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12635,7 +12635,7 @@ let X.(ISTRING {token_}) = token_ in | Elm.{symbol=Symbol.Token (OF token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#445 "./ParseLR.hmh" +#445 "./Parse.hmh" let X.(OF {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12646,7 +12646,7 @@ let X.(OF {token_}) = token_ in | Elm.{symbol=Symbol.Token (COLON token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#448 "./ParseLR.hmh" +#448 "./Parse.hmh" let X.(COLON {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12657,7 +12657,7 @@ let X.(COLON {token_}) = token_ in | Elm.{symbol=Symbol.Token (DOT token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#451 "./ParseLR.hmh" +#451 "./Parse.hmh" let X.(DOT {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12668,7 +12668,7 @@ let X.(DOT {token_}) = token_ in | Elm.{symbol=Symbol.Token (ARROW token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#454 "./ParseLR.hmh" +#454 "./Parse.hmh" let X.(ARROW {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12679,7 +12679,7 @@ let X.(ARROW {token_}) = token_ in | Elm.{symbol=Symbol.Token (LT token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#457 "./ParseLR.hmh" +#457 "./Parse.hmh" let X.(LT {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12690,7 +12690,7 @@ let X.(LT {token_}) = token_ in | Elm.{symbol=Symbol.Token (COMMA token_); _} :: tl -> Symbol.Nonterm (CodeToken ( (*______________________________________________________________________________*) -#460 "./ParseLR.hmh" +#460 "./Parse.hmh" let X.(COMMA {token_}) = token_ in CodeToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12702,7 +12702,7 @@ let X.(COMMA {token_}) = token_ in :: Elm.{symbol=Symbol.Nonterm (Delimited delimited); _} :: tl -> Symbol.Nonterm (CodeTl ( (*______________________________________________________________________________*) -#464 "./ParseLR.hmh" +#464 "./Parse.hmh" CodeTlDelimited {delimited; code_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12713,7 +12713,7 @@ CodeTlDelimited {delimited; code_tl} :: Elm.{symbol=Symbol.Nonterm (CodeToken code_token); _} :: tl -> Symbol.Nonterm (CodeTl ( (*______________________________________________________________________________*) -#466 "./ParseLR.hmh" +#466 "./Parse.hmh" let X.(CodeToken {token_}) = code_token in CodeTlToken {token_; code_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12723,7 +12723,7 @@ let X.(CodeToken {token_}) = code_token in (* 49 *) (function tl -> Symbol.Nonterm (CodeTl ( (*______________________________________________________________________________*) -#468 "./ParseLR.hmh" +#468 "./Parse.hmh" CodeTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12733,7 +12733,7 @@ CodeTlEpsilon :: Elm.{symbol=Symbol.Nonterm (Delimited delimited); _} :: tl -> Symbol.Nonterm (Code ( (*______________________________________________________________________________*) -#471 "./ParseLR.hmh" +#471 "./Parse.hmh" CodeDelimited {delimited; code_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12744,7 +12744,7 @@ CodeDelimited {delimited; code_tl} :: Elm.{symbol=Symbol.Nonterm (CodeToken code_token); _} :: tl -> Symbol.Nonterm (Code ( (*______________________________________________________________________________*) -#473 "./ParseLR.hmh" +#473 "./Parse.hmh" let X.(CodeToken {token_}) = code_token in CodeCodeToken {token_; code_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12755,7 +12755,7 @@ let X.(CodeToken {token_}) = code_token in | Elm.{symbol=Symbol.Nonterm (Cident cident); _} :: tl -> Symbol.Nonterm (ProdParamSymbol ( (*______________________________________________________________________________*) -#477 "./ParseLR.hmh" +#477 "./Parse.hmh" ProdParamSymbolCident {cident} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12765,7 +12765,7 @@ ProdParamSymbolCident {cident} | Elm.{symbol=Symbol.Token (ISTRING alias); _} :: tl -> Symbol.Nonterm (ProdParamSymbol ( (*______________________________________________________________________________*) -#479 "./ParseLR.hmh" +#479 "./Parse.hmh" let X.(ISTRING {token_=alias}) = alias in ProdParamSymbolAlias {alias} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12778,7 +12778,7 @@ let X.(ISTRING {token_=alias}) = alias in :: Elm.{symbol=Symbol.Nonterm (Ident ident); _} :: tl -> Symbol.Nonterm (ProdParam ( (*______________________________________________________________________________*) -#484 "./ParseLR.hmh" +#484 "./Parse.hmh" let X.(COLON {token_=colon}) = colon in ProdParamBinding {ident; colon; prod_param_symbol} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12789,7 +12789,7 @@ let X.(COLON {token_=colon}) = colon in | Elm.{symbol=Symbol.Nonterm (ProdParamSymbol prod_param_symbol); _} :: tl -> Symbol.Nonterm (ProdParam ( (*______________________________________________________________________________*) -#486 "./ParseLR.hmh" +#486 "./Parse.hmh" ProdParam {prod_param_symbol} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12800,7 +12800,7 @@ ProdParam {prod_param_symbol} :: Elm.{symbol=Symbol.Nonterm (ProdParam prod_param); _} :: tl -> Symbol.Nonterm (ProdParamsTl ( (*______________________________________________________________________________*) -#490 "./ParseLR.hmh" +#490 "./Parse.hmh" ProdParamsTlProdParam {prod_param; prod_params_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12809,7 +12809,7 @@ ProdParamsTlProdParam {prod_param; prod_params_tl} (* 57 *) (function tl -> Symbol.Nonterm (ProdParamsTl ( (*______________________________________________________________________________*) -#491 "./ParseLR.hmh" +#491 "./Parse.hmh" ProdParamsTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12819,7 +12819,7 @@ ProdParamsTlEpsilon :: Elm.{symbol=Symbol.Nonterm (ProdParam prod_param); _} :: tl -> Symbol.Nonterm (ProdParams ( (*______________________________________________________________________________*) -#495 "./ParseLR.hmh" +#495 "./Parse.hmh" ProdParamsProdParam {prod_param; prod_params_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12829,7 +12829,7 @@ ProdParamsProdParam {prod_param; prod_params_tl} | Elm.{symbol=Symbol.Nonterm (ProdParams prod_params); _} :: tl -> Symbol.Nonterm (ProdPattern ( (*______________________________________________________________________________*) -#498 "./ParseLR.hmh" +#498 "./Parse.hmh" ProdPatternParams {prod_params} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12839,7 +12839,7 @@ ProdPatternParams {prod_params} | Elm.{symbol=Symbol.Token (EPSILON_ epsilon_); _} :: tl -> Symbol.Nonterm (ProdPattern ( (*______________________________________________________________________________*) -#500 "./ParseLR.hmh" +#500 "./Parse.hmh" let X.(EPSILON {token_=epsilon_}) = epsilon_ in ProdPatternEpsilon {epsilon_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12851,7 +12851,7 @@ let X.(EPSILON {token_=epsilon_}) = epsilon_ in :: Elm.{symbol=Symbol.Nonterm (ProdPattern prod_pattern); _} :: tl -> Symbol.Nonterm (Prod ( (*______________________________________________________________________________*) -#504 "./ParseLR.hmh" +#504 "./Parse.hmh" Prod {prod_pattern; prec_ref} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12863,7 +12863,7 @@ Prod {prod_pattern; prec_ref} :: Elm.{symbol=Symbol.Token (BAR bar); _} :: tl -> Symbol.Nonterm (ProdsTl ( (*______________________________________________________________________________*) -#508 "./ParseLR.hmh" +#508 "./Parse.hmh" let X.(BAR {token_=bar}) = bar in ProdsTlBarProd {bar; prod; prods_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12873,7 +12873,7 @@ let X.(BAR {token_=bar}) = bar in (* 63 *) (function tl -> Symbol.Nonterm (ProdsTl ( (*______________________________________________________________________________*) -#510 "./ParseLR.hmh" +#510 "./Parse.hmh" ProdsTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12884,7 +12884,7 @@ ProdsTlEpsilon :: Elm.{symbol=Symbol.Token (BAR bar); _} :: tl -> Symbol.Nonterm (Prods ( (*______________________________________________________________________________*) -#514 "./ParseLR.hmh" +#514 "./Parse.hmh" let X.(BAR {token_=bar}) = bar in ProdsBarProd {bar; prod; prods_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12896,7 +12896,7 @@ let X.(BAR {token_=bar}) = bar in :: Elm.{symbol=Symbol.Nonterm (Prod prod); _} :: tl -> Symbol.Nonterm (Prods ( (*______________________________________________________________________________*) -#516 "./ParseLR.hmh" +#516 "./Parse.hmh" ProdsProd {prod; prods_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12908,7 +12908,7 @@ ProdsProd {prod; prods_tl} :: Elm.{symbol=Symbol.Nonterm (Prods prods); _} :: tl -> Symbol.Nonterm (Reduction ( (*______________________________________________________________________________*) -#520 "./ParseLR.hmh" +#520 "./Parse.hmh" let X.(ARROW {token_=arrow}) = arrow in Reduction {prods; arrow; code} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12921,7 +12921,7 @@ let X.(ARROW {token_=arrow}) = arrow in :: Elm.{symbol=Symbol.Token (BAR bar); _} :: tl -> Symbol.Nonterm (ReductionsTl ( (*______________________________________________________________________________*) -#525 "./ParseLR.hmh" +#525 "./Parse.hmh" let X.(BAR {token_=bar}) = bar in ReductionsTlBarReduction {bar; reduction; reductions_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12931,7 +12931,7 @@ let X.(BAR {token_=bar}) = bar in (* 68 *) (function tl -> Symbol.Nonterm (ReductionsTl ( (*______________________________________________________________________________*) -#527 "./ParseLR.hmh" +#527 "./Parse.hmh" ReductionsTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12941,7 +12941,7 @@ ReductionsTlEpsilon :: Elm.{symbol=Symbol.Nonterm (Reduction reduction); _} :: tl -> Symbol.Nonterm (Reductions ( (*______________________________________________________________________________*) -#531 "./ParseLR.hmh" +#531 "./Parse.hmh" ReductionsReduction {reduction; reductions_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -12951,7 +12951,7 @@ ReductionsReduction {reduction; reductions_tl} | Elm.{symbol=Symbol.Token (NONTERM nonterm_); _} :: tl -> Symbol.Nonterm (NontermType ( (*______________________________________________________________________________*) -#535 "./ParseLR.hmh" +#535 "./Parse.hmh" let X.(NONTERM {token_=nonterm_}) = nonterm_ in NontermTypeNonterm {nonterm_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12962,7 +12962,7 @@ let X.(NONTERM {token_=nonterm_}) = nonterm_ in | Elm.{symbol=Symbol.Token (START start_); _} :: tl -> Symbol.Nonterm (NontermType ( (*______________________________________________________________________________*) -#538 "./ParseLR.hmh" +#538 "./Parse.hmh" let X.(START {token_=start_}) = start_ in NontermTypeStart {start_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12977,7 +12977,7 @@ let X.(START {token_=start_}) = start_ in :: Elm.{symbol=Symbol.Nonterm (NontermType nonterm_type); _} :: tl -> Symbol.Nonterm (Nonterm ( (*______________________________________________________________________________*) -#543 "./ParseLR.hmh" +#543 "./Parse.hmh" let X.(COLON_COLON_EQ {token_=cce}) = cce in NontermProds {nonterm_type; cident; prec_ref; cce; prods} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -12993,7 +12993,7 @@ let X.(COLON_COLON_EQ {token_=cce}) = cce in :: Elm.{symbol=Symbol.Nonterm (NontermType nonterm_type); _} :: tl -> Symbol.Nonterm (Nonterm ( (*______________________________________________________________________________*) -#547 "./ParseLR.hmh" +#547 "./Parse.hmh" let X.(COLON_COLON_EQ {token_=cce}) = cce in NontermReductions {nonterm_type; cident; of_type; prec_ref; cce; reductions} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13004,7 +13004,7 @@ let X.(COLON_COLON_EQ {token_=cce}) = cce in | Elm.{symbol=Symbol.Nonterm (Prec prec_); _} :: tl -> Symbol.Nonterm (Stmt ( (*______________________________________________________________________________*) -#551 "./ParseLR.hmh" +#551 "./Parse.hmh" StmtPrec {prec_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13014,7 +13014,7 @@ StmtPrec {prec_} | Elm.{symbol=Symbol.Nonterm (Token token_); _} :: tl -> Symbol.Nonterm (Stmt ( (*______________________________________________________________________________*) -#552 "./ParseLR.hmh" +#552 "./Parse.hmh" StmtToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13024,7 +13024,7 @@ StmtToken {token_} | Elm.{symbol=Symbol.Nonterm (Nonterm nonterm_); _} :: tl -> Symbol.Nonterm (Stmt ( (*______________________________________________________________________________*) -#553 "./ParseLR.hmh" +#553 "./Parse.hmh" StmtNonterm {nonterm_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13034,7 +13034,7 @@ StmtNonterm {nonterm_} | Elm.{symbol=Symbol.Nonterm (Code code); _} :: tl -> Symbol.Nonterm (Stmt ( (*______________________________________________________________________________*) -#554 "./ParseLR.hmh" +#554 "./Parse.hmh" StmtCode {code} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13046,7 +13046,7 @@ StmtCode {code} :: Elm.{symbol=Symbol.Token (LINE_DELIM line_delim); _} :: tl -> Symbol.Nonterm (StmtsTl ( (*______________________________________________________________________________*) -#558 "./ParseLR.hmh" +#558 "./Parse.hmh" let X.(LINE_DELIM {token_=line_delim}) = line_delim in StmtsTl {line_delim; stmt; stmts_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13056,7 +13056,7 @@ let X.(LINE_DELIM {token_=line_delim}) = line_delim in (* 79 *) (function tl -> Symbol.Nonterm (StmtsTl ( (*______________________________________________________________________________*) -#560 "./ParseLR.hmh" +#560 "./Parse.hmh" StmtsTlEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13066,7 +13066,7 @@ StmtsTlEpsilon :: Elm.{symbol=Symbol.Nonterm (Stmt stmt); _} :: tl -> Symbol.Nonterm (Stmts ( (*______________________________________________________________________________*) -#563 "./ParseLR.hmh" +#563 "./Parse.hmh" Stmts {stmt; stmts_tl} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13079,7 +13079,7 @@ Stmts {stmt; stmts_tl} :: Elm.{symbol=Symbol.Token (HOCC hocc_); _} :: tl -> Symbol.Nonterm (Hocc ( (*______________________________________________________________________________*) -#567 "./ParseLR.hmh" +#567 "./Parse.hmh" let X.(HOCC {token_=hocc_}) = hocc_ in let X.(INDENT {token_=indent}) = indent in let X.(DEDENT {token_=dedent}) = dedent in @@ -13092,7 +13092,7 @@ let X.(HOCC {token_=hocc_}) = hocc_ in | Elm.{symbol=Symbol.Nonterm (CodeToken code_token); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#574 "./ParseLR.hmh" +#574 "./Parse.hmh" let X.(CodeToken {token_}) = code_token in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13103,7 +13103,7 @@ let X.(CodeToken {token_}) = code_token in | Elm.{symbol=Symbol.Nonterm (Sep sep); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#577 "./ParseLR.hmh" +#577 "./Parse.hmh" let token_ = match sep with | SepLineDelim {line_delim=token_} | SepSemi {semi=token_} @@ -13119,7 +13119,7 @@ let token_ = match sep with | Elm.{symbol=Symbol.Token (INDENT token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#585 "./ParseLR.hmh" +#585 "./Parse.hmh" let X.(INDENT {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13130,7 +13130,7 @@ let X.(INDENT {token_}) = token_ in | Elm.{symbol=Symbol.Token (DEDENT token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#588 "./ParseLR.hmh" +#588 "./Parse.hmh" let X.(DEDENT {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13141,7 +13141,7 @@ let X.(DEDENT {token_}) = token_ in | Elm.{symbol=Symbol.Token (LPAREN token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#591 "./ParseLR.hmh" +#591 "./Parse.hmh" let X.(LPAREN {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13152,7 +13152,7 @@ let X.(LPAREN {token_}) = token_ in | Elm.{symbol=Symbol.Token (RPAREN token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#594 "./ParseLR.hmh" +#594 "./Parse.hmh" let X.(RPAREN {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13163,7 +13163,7 @@ let X.(RPAREN {token_}) = token_ in | Elm.{symbol=Symbol.Token (LCAPTURE token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#597 "./ParseLR.hmh" +#597 "./Parse.hmh" let X.(LCAPTURE {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13174,7 +13174,7 @@ let X.(LCAPTURE {token_}) = token_ in | Elm.{symbol=Symbol.Token (RCAPTURE token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#600 "./ParseLR.hmh" +#600 "./Parse.hmh" let X.(RCAPTURE {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13185,7 +13185,7 @@ let X.(RCAPTURE {token_}) = token_ in | Elm.{symbol=Symbol.Token (LBRACK token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#603 "./ParseLR.hmh" +#603 "./Parse.hmh" let X.(LBRACK {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13196,7 +13196,7 @@ let X.(LBRACK {token_}) = token_ in | Elm.{symbol=Symbol.Token (RBRACK token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#606 "./ParseLR.hmh" +#606 "./Parse.hmh" let X.(RBRACK {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13207,7 +13207,7 @@ let X.(RBRACK {token_}) = token_ in | Elm.{symbol=Symbol.Token (LARRAY token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#609 "./ParseLR.hmh" +#609 "./Parse.hmh" let X.(LARRAY {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13218,7 +13218,7 @@ let X.(LARRAY {token_}) = token_ in | Elm.{symbol=Symbol.Token (RARRAY token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#612 "./ParseLR.hmh" +#612 "./Parse.hmh" let X.(RARRAY {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13229,7 +13229,7 @@ let X.(RARRAY {token_}) = token_ in | Elm.{symbol=Symbol.Token (LCURLY token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#615 "./ParseLR.hmh" +#615 "./Parse.hmh" let X.(LCURLY {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13240,7 +13240,7 @@ let X.(LCURLY {token_}) = token_ in | Elm.{symbol=Symbol.Token (RCURLY token_); _} :: tl -> Symbol.Nonterm (MatterToken ( (*______________________________________________________________________________*) -#618 "./ParseLR.hmh" +#618 "./Parse.hmh" let X.(RCURLY {token_}) = token_ in MatterToken {token_} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13252,7 +13252,7 @@ let X.(RCURLY {token_}) = token_ in :: Elm.{symbol=Symbol.Nonterm (MatterToken matter_token); _} :: tl -> Symbol.Nonterm (Matter ( (*______________________________________________________________________________*) -#623 "./ParseLR.hmh" +#623 "./Parse.hmh" let X.(MatterToken {token_}) = matter_token in Matter {token_; matter} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13262,7 +13262,7 @@ let X.(MatterToken {token_}) = matter_token in (* 97 *) (function tl -> Symbol.Nonterm (Matter ( (*______________________________________________________________________________*) -#625 "./ParseLR.hmh" +#625 "./Parse.hmh" MatterEpsilon (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) )), tl @@ -13274,7 +13274,7 @@ MatterEpsilon :: Elm.{symbol=Symbol.Nonterm (Matter prelude); _} :: tl -> Symbol.Nonterm (Hmh ( (*______________________________________________________________________________*) -#629 "./ParseLR.hmh" +#629 "./Parse.hmh" let X.(EOI {token_=eoi}) = eoi in Hmh {prelude; hocc_; postlude; eoi} (*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*) @@ -13289,7 +13289,7 @@ let X.(EOI {token_=eoi}) = eoi in :: Elm.{symbol=Symbol.Nonterm (Matter prelude); _} :: tl -> Symbol.Nonterm (Hmhi ( (*______________________________________________________________________________*) -#634 "./ParseLR.hmh" +#634 "./Parse.hmh" let X.(HOCC {token_=hocc_}) = hocc_ in let X.(EOI {token_=eoi}) = eoi in Hmhi {prelude; hocc_; postlude; eoi} @@ -13504,7 +13504,7 @@ let X.(HOCC {token_=hocc_}) = hocc_ in | Status.Prefix -> t |> feed token |> walk | _ -> not_reached () end -#637 "./ParseLR.hmh" +#637 "./Parse.hmh" include X (* XXX Work around qualified type syntax limitations. *) let rec scan scanner = @@ -13512,60 +13512,57 @@ let rec scan scanner = match Scan.Token.malformations scan_token with | [] -> begin let token_opt = match scan_token with - | Scan.Token.HmcToken {atok; _} -> begin - match atok with - | Tok_whitespace - | Tok_hash_comment + | Scan.Token.HmcToken tok -> begin + match tok with + | Tok_whitespace _ + | Tok_hash_comment _ | Tok_paren_comment _ -> None (* Swallow. *) | Tok_uident _ -> Some (Token.UIDENT (UIDENT {token_=scan_token})) | Tok_cident _ -> Some (Token.CIDENT (CIDENT {token_=scan_token})) - | Tok_uscore -> Some (Token.USCORE (USCORE {token_=scan_token})) + | Tok_uscore _ -> Some (Token.USCORE (USCORE {token_=scan_token})) | Tok_istring _ -> Some (Token.ISTRING (ISTRING {token_=scan_token})) - | Tok_of -> Some (Token.OF (OF {token_=scan_token})) - | Tok_colon -> Some (Token.COLON (COLON {token_=scan_token})) - | Tok_dot -> Some (Token.DOT (DOT {token_=scan_token})) - | Tok_arrow -> Some (Token.ARROW (ARROW {token_=scan_token})) - | Tok_bar -> Some (Token.BAR (BAR {token_=scan_token})) - | Tok_lt -> Some (Token.LT (LT {token_=scan_token})) - | Tok_comma -> Some (Token.COMMA (COMMA {token_=scan_token})) - | Tok_semi -> Some (Token.SEMI (SEMI {token_=scan_token})) - | Tok_line_delim -> Some (Token.LINE_DELIM (LINE_DELIM {token_=scan_token})) + | Tok_of _ -> Some (Token.OF (OF {token_=scan_token})) + | Tok_colon _ -> Some (Token.COLON (COLON {token_=scan_token})) + | Tok_dot _ -> Some (Token.DOT (DOT {token_=scan_token})) + | Tok_arrow _ -> Some (Token.ARROW (ARROW {token_=scan_token})) + | Tok_bar _ -> Some (Token.BAR (BAR {token_=scan_token})) + | Tok_lt _ -> Some (Token.LT (LT {token_=scan_token})) + | Tok_comma _ -> Some (Token.COMMA (COMMA {token_=scan_token})) + | Tok_semi _ -> Some (Token.SEMI (SEMI {token_=scan_token})) + | Tok_line_delim _ -> Some (Token.LINE_DELIM (LINE_DELIM {token_=scan_token})) | Tok_indent _ -> Some (Token.INDENT (INDENT {token_=scan_token})) | Tok_dedent _ -> Some (Token.DEDENT (DEDENT {token_=scan_token})) - | Tok_lparen -> Some (Token.LPAREN (LPAREN {token_=scan_token})) - | Tok_rparen -> Some (Token.RPAREN (RPAREN {token_=scan_token})) - | Tok_lcapture -> Some (Token.LCAPTURE (LCAPTURE {token_=scan_token})) - | Tok_rcapture -> Some (Token.RCAPTURE (RCAPTURE {token_=scan_token})) - | Tok_lbrack -> Some (Token.LBRACK (LBRACK {token_=scan_token})) - | Tok_rbrack -> Some (Token.RBRACK (RBRACK {token_=scan_token})) - | Tok_larray -> Some (Token.LARRAY (LARRAY {token_=scan_token})) - | Tok_rarray -> Some (Token.RARRAY (RARRAY {token_=scan_token})) - | Tok_lcurly -> Some (Token.LCURLY (LCURLY {token_=scan_token})) - | Tok_rcurly -> Some (Token.RCURLY (RCURLY {token_=scan_token})) - | Tok_end_of_input -> Some (Token.EOI (EOI {token_=scan_token})) + | Tok_lparen _ -> Some (Token.LPAREN (LPAREN {token_=scan_token})) + | Tok_rparen _ -> Some (Token.RPAREN (RPAREN {token_=scan_token})) + | Tok_lcapture _ -> Some (Token.LCAPTURE (LCAPTURE {token_=scan_token})) + | Tok_rcapture _ -> Some (Token.RCAPTURE (RCAPTURE {token_=scan_token})) + | Tok_lbrack _ -> Some (Token.LBRACK (LBRACK {token_=scan_token})) + | Tok_rbrack _ -> Some (Token.RBRACK (RBRACK {token_=scan_token})) + | Tok_larray _ -> Some (Token.LARRAY (LARRAY {token_=scan_token})) + | Tok_rarray _ -> Some (Token.RARRAY (RARRAY {token_=scan_token})) + | Tok_lcurly _ -> Some (Token.LCURLY (LCURLY {token_=scan_token})) + | Tok_rcurly _ -> Some (Token.RCURLY (RCURLY {token_=scan_token})) + | Tok_end_of_input _ -> Some (Token.EOI (EOI {token_=scan_token})) | _ -> Some (Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token})) end - | HoccToken {atok; _} -> begin - match atok with - | Tok_hocc -> Some (Token.HOCC (HOCC {token_=scan_token})) - | Tok_token -> Some (Token.TOKEN (TOKEN {token_=scan_token})) - | Tok_nonterm -> Some (Token.NONTERM (NONTERM {token_=scan_token})) - | Tok_start -> Some (Token.START (START {token_=scan_token})) - | Tok_epsilon -> Some (Token.EPSILON_ (EPSILON {token_=scan_token})) - | Tok_neutral -> Some (Token.NEUTRAL (NEUTRAL {token_=scan_token})) - | Tok_left -> Some (Token.LEFT (LEFT {token_=scan_token})) - | Tok_right -> Some (Token.RIGHT (RIGHT {token_=scan_token})) - | Tok_prec -> Some (Token.PREC (PREC {token_=scan_token})) - | Tok_colon_colon_eq -> - Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token_=scan_token})) - end in + | Tok_hocc _ -> Some (Token.HOCC (HOCC {token_=scan_token})) + | Tok_token _ -> Some (Token.TOKEN (TOKEN {token_=scan_token})) + | Tok_nonterm _ -> Some (Token.NONTERM (NONTERM {token_=scan_token})) + | Tok_start _ -> Some (Token.START (START {token_=scan_token})) + | Tok_epsilon _ -> Some (Token.EPSILON_ (EPSILON {token_=scan_token})) + | Tok_neutral _ -> Some (Token.NEUTRAL (NEUTRAL {token_=scan_token})) + | Tok_left _ -> Some (Token.LEFT (LEFT {token_=scan_token})) + | Tok_right _ -> Some (Token.RIGHT (RIGHT {token_=scan_token})) + | Tok_prec _ -> Some (Token.PREC (PREC {token_=scan_token})) + | Tok_colon_colon_eq _ -> Some (Token.COLON_COLON_EQ (COLON_COLON_EQ {token_=scan_token})) + in match token_opt with | Some token_ -> scanner, scan_token, token_, [] | None -> scan scanner end | mal :: [] -> begin (* Try to pass e.g. 42L through as a u64 token to support OCaml syntax. *) - let u64_opt = match Hmc.Scan.AbstractToken.Rendition.Malformation.description mal with + let u64_opt = match Hmc.Scan.Token.Rendition.Malformation.description mal with | "Invalid numerical constant" -> begin let source = Scan.Token.source scan_token in Hmc.Source.Slice.to_string source @@ -13580,12 +13577,12 @@ let rec scan scanner = in match u64_opt with | Some x -> begin - let rendition = Hmc.Scan.AbstractToken.Rendition.Constant x in - let ctok = Hmc.Scan.ConcreteToken.{ - atok=Hmc.Scan.AbstractToken.Tok_u64 rendition; - source=Scan.Token.source scan_token + let rendition = Hmc.Scan.Token.Rendition.Constant x in + let tok = Hmc.Scan.Token.Tok_u64 { + source=Scan.Token.source scan_token; + u64=rendition } in - let scan_token = Scan.Token.HmcToken ctok in + let scan_token = Scan.Token.HmcToken tok in scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [] end | None -> scanner, scan_token, Token.OTHER_TOKEN (OTHER_TOKEN {token_=scan_token}), [mal] @@ -14671,11 +14668,7 @@ let min_comment_indentation_of_hocc_block = function let base_of_code code = let of_token token_ = - let open Scan.Token in - let source = match token_ with - | HmcToken ctok -> ctok |> Hmc.Scan.ConcreteToken.source - | HoccToken ctok -> ctok |> Scan.ConcreteToken.source - in + let source = Scan.Token.source token_ in Hmc.Source.Slice.base source in let rec of_delimited = function @@ -14731,11 +14724,7 @@ let last_token_of_code code = let past_of_code code = let of_token token_ = - let open Scan.Token in - let source = match token_ with - | HmcToken ctok -> ctok |> Hmc.Scan.ConcreteToken.source - | HoccToken ctok -> ctok |> Scan.ConcreteToken.source - in + let source = Scan.Token.source token_ in Hmc.Source.Slice.past source in last_token_of_code code |> of_token diff --git a/bootstrap/bin/hocc/scan.ml b/bootstrap/bin/hocc/scan.ml index 7cce69d3e..5fa42e181 100644 --- a/bootstrap/bin/hocc/scan.ml +++ b/bootstrap/bin/hocc/scan.ml @@ -1,75 +1,61 @@ open Basis open! Basis.Rudiments -module AbstractToken = struct - type t = - | Tok_hocc - | Tok_token - | Tok_nonterm - | Tok_start - | Tok_epsilon - | Tok_neutral - | Tok_left - | Tok_right - | Tok_prec - | Tok_colon_colon_eq - - let pp t formatter = - formatter |> Fmt.fmt (match t with - | Tok_hocc -> "Tok_hocc" - | Tok_token -> "Tok_token" - | Tok_nonterm -> "Tok_nonterm" - | Tok_start -> "Tok_start" - | Tok_epsilon -> "Tok_epsilon" - | Tok_neutral -> "Tok_neutral" - | Tok_left -> "Tok_left" - | Tok_right -> "Tok_right" - | Tok_prec -> "Tok_prec" - | Tok_colon_colon_eq -> "::=" - ) - - let malformations = function - | Tok_hocc | Tok_token | Tok_nonterm | Tok_start | Tok_epsilon - | Tok_neutral | Tok_left | Tok_right | Tok_prec | Tok_colon_colon_eq - -> [] -end - -module ConcreteToken = struct - type t = { - atok: AbstractToken.t; - source: Hmc.Source.Slice.t; - } - - let atok t = - t.atok - - let source t = - t.source - - let pp t formatter = - formatter - |> Fmt.fmt "{atok=" |> AbstractToken.pp t.atok - |> Fmt.fmt "; source=" |> Hmc.Source.Slice.pp t.source - |> Fmt.fmt "}" -end - module Token = struct type t = - | HmcToken of Hmc.Scan.ConcreteToken.t - | HoccToken of ConcreteToken.t + | HmcToken of Hmc.Scan.Token.t + | Tok_hocc of {source: Hmc.Source.Slice.t} + | Tok_token of {source: Hmc.Source.Slice.t} + | Tok_nonterm of {source: Hmc.Source.Slice.t} + | Tok_start of {source: Hmc.Source.Slice.t} + | Tok_epsilon of {source: Hmc.Source.Slice.t} + | Tok_neutral of {source: Hmc.Source.Slice.t} + | Tok_left of {source: Hmc.Source.Slice.t} + | Tok_right of {source: Hmc.Source.Slice.t} + | Tok_prec of {source: Hmc.Source.Slice.t} + | Tok_colon_colon_eq of {source: Hmc.Source.Slice.t} let source = function - | HmcToken ctok -> Hmc.Scan.ConcreteToken.source ctok - | HoccToken ctok -> ConcreteToken.source ctok + | HmcToken tok -> Hmc.Scan.Token.source tok + | Tok_hocc {source} + | Tok_token {source} + | Tok_nonterm {source} + | Tok_start {source} + | Tok_epsilon {source} + | Tok_neutral {source} + | Tok_left {source} + | Tok_right {source} + | Tok_prec {source} + | Tok_colon_colon_eq {source} -> source let pp t formatter = match t with - | HmcToken ctok -> formatter |> Fmt.fmt "HmcToken " |> Hmc.Scan.ConcreteToken.pp ctok - | HoccToken ctok -> formatter |> Fmt.fmt "HoccToken " |> ConcreteToken.pp ctok + | HmcToken tok -> formatter |> Fmt.fmt "HmcToken (" |> Hmc.Scan.Token.pp tok |> Fmt.fmt ")" + | Tok_hocc {source} -> + formatter |> Fmt.fmt "Tok_hocc {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_token {source} -> + formatter |> Fmt.fmt "Tok_token {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_nonterm {source} -> + formatter |> Fmt.fmt "Tok_nonterm {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_start {source} -> + formatter |> Fmt.fmt "Tok_source {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_epsilon {source} -> + formatter |> Fmt.fmt "Tok_epsilon {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_neutral {source} -> + formatter |> Fmt.fmt "Tok_neutral {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_left {source} -> + formatter |> Fmt.fmt "Tok_left {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_right {source} -> + formatter |> Fmt.fmt "Tok_right {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_prec {source} -> + formatter |> Fmt.fmt "Tok_prec {source=" |> Hmc.Source.Slice.pp source |> Fmt.fmt "}" + | Tok_colon_colon_eq {source} -> + formatter |> Fmt.fmt "Tok_colon_colon_eq {source=" |> Hmc.Source.Slice.pp source + |> Fmt.fmt "}" let malformations = function - | HmcToken {atok; _} -> Hmc.Scan.AbstractToken.malformations atok - | HoccToken {atok; _} -> AbstractToken.malformations atok + | HmcToken tok -> Hmc.Scan.Token.malformations tok + | _ -> [] end type t = { @@ -81,31 +67,30 @@ let pp {scan; _} formatter = Hmc.Scan.pp scan formatter let rec susp_next scan = lazy begin - let open AbstractToken in - let scan', ctok = Hmc.Scan.next scan in - let ctok' = match Hmc.Scan.ConcreteToken.atok ctok with - | Tok_uident (Constant uident) -> begin - let source = Hmc.Scan.ConcreteToken.source ctok in + let scan', tok = Hmc.Scan.next scan in + let tok' = match tok with + | Tok_uident {uident=Constant uident; _} -> begin + let source = Hmc.Scan.Token.source tok in match uident with - | "hocc" -> Token.HoccToken {atok=Tok_hocc; source} - | "token" -> Token.HoccToken {atok=Tok_token; source} - | "nonterm" -> Token.HoccToken {atok=Tok_nonterm; source} - | "start" -> Token.HoccToken {atok=Tok_start; source} - | "epsilon" -> Token.HoccToken {atok=Tok_epsilon; source} - | "neutral" -> Token.HoccToken {atok=Tok_neutral; source} - | "left" -> Token.HoccToken {atok=Tok_left; source} - | "right" -> Token.HoccToken {atok=Tok_right; source} - | "prec" -> Token.HoccToken {atok=Tok_prec; source} - | _ -> Token.HmcToken ctok + | "hocc" -> Token.Tok_hocc {source} + | "token" -> Tok_token {source} + | "nonterm" -> Tok_nonterm {source} + | "start" -> Tok_start {source} + | "epsilon" -> Tok_epsilon {source} + | "neutral" -> Tok_neutral {source} + | "left" -> Tok_left {source} + | "right" -> Tok_right {source} + | "prec" -> Tok_prec {source} + | _ -> Token.HmcToken tok end - | Tok_colon_op "::=" -> begin - let source = Hmc.Scan.ConcreteToken.source ctok in - Token.HoccToken {atok=Tok_colon_colon_eq; source} + | Tok_colon_op {colon_op="::="; _} -> begin + let source = Hmc.Scan.Token.source tok in + Tok_colon_colon_eq {source} end - | _ -> Token.HmcToken ctok + | _ -> Token.HmcToken tok in let t' = {scan=scan'; next=susp_next scan'} in - t', ctok' + t', tok' end let init text = diff --git a/bootstrap/bin/hocc/scan.mli b/bootstrap/bin/hocc/scan.mli index 279cebd27..2360b3737 100644 --- a/bootstrap/bin/hocc/scan.mli +++ b/bootstrap/bin/hocc/scan.mli @@ -3,49 +3,25 @@ open Basis open! Basis.Rudiments -module AbstractToken: sig - type t = - | Tok_hocc - | Tok_token - | Tok_nonterm - | Tok_start - | Tok_epsilon - | Tok_neutral - | Tok_left - | Tok_right - | Tok_prec - | Tok_colon_colon_eq - - val pp: t -> (module Fmt.Formatter) -> (module Fmt.Formatter) - - val malformations: t -> Hmc.Scan.AbstractToken.Rendition.Malformation.t list - (** [malformations t] returns a list of malformations associated with [t], or an empty list if - there are no malformations. This function can be used on any token variant, even if no - malformations are possible. *) -end - -module ConcreteToken : sig - type t = { - atok: AbstractToken.t; - source: Hmc.Source.Slice.t; - } - - val atok: t -> AbstractToken.t - val source: t -> Hmc.Source.Slice.t - - include FormattableIntf.SMono with type t := t -end - module Token: sig type t = - | HmcToken of Hmc.Scan.ConcreteToken.t - | HoccToken of ConcreteToken.t + | HmcToken of Hmc.Scan.Token.t + | Tok_hocc of {source: Hmc.Source.Slice.t} + | Tok_token of {source: Hmc.Source.Slice.t} + | Tok_nonterm of {source: Hmc.Source.Slice.t} + | Tok_start of {source: Hmc.Source.Slice.t} + | Tok_epsilon of {source: Hmc.Source.Slice.t} + | Tok_neutral of {source: Hmc.Source.Slice.t} + | Tok_left of {source: Hmc.Source.Slice.t} + | Tok_right of {source: Hmc.Source.Slice.t} + | Tok_prec of {source: Hmc.Source.Slice.t} + | Tok_colon_colon_eq of {source: Hmc.Source.Slice.t} val source: t -> Hmc.Source.Slice.t include FormattableIntf.SMono with type t := t - val malformations: t -> Hmc.Scan.AbstractToken.Rendition.Malformation.t list + val malformations: t -> Hmc.Scan.Token.Rendition.Malformation.t list (** [malformations t] returns a list of malformations associated with [t], or an empty list if there are no malformations. This function can be used on any token variant, even if no malformations are possible. *) diff --git a/bootstrap/bin/hocc/spec.ml b/bootstrap/bin/hocc/spec.ml index dc4402cb5..1a4b9b58e 100644 --- a/bootstrap/bin/hocc/spec.ml +++ b/bootstrap/bin/hocc/spec.ml @@ -15,7 +15,7 @@ let string_of_token token = let string_of_alias_token token = match token with - | Scan.Token.HmcToken {atok=Tok_istring (Constant istring); _} -> istring + | Scan.Token.HmcToken (Tok_istring {istring=Constant istring; _}) -> istring | _ -> not_reached () let synthetic_name_of_start_name start_name = diff --git a/bootstrap/src/hmc/scan.ml b/bootstrap/src/hmc/scan.ml index 4baf742d7..70f6b7a94 100644 --- a/bootstrap/src/hmc/scan.ml +++ b/bootstrap/src/hmc/scan.ml @@ -1,5 +1,4 @@ -(* The scanner is based on a DFA, but it has several augmentations: - * +(* The scanner is based on a DFA, but it has several augmentations: * * - Nodes can take state as input. The `node0` nodes take no state; the `node1` nodes do. This * mechanism is used for per token state, e.g. tracking nesting level for comments and * accumulating digits/codepoints for numerical/string constants. @@ -113,7 +112,7 @@ module Radix = struct Nat.(nat * (to_nat t) + digit) end -module AbstractToken = struct +module Token = struct module Rendition = struct module Malformation = struct type t = { @@ -159,14 +158,6 @@ module AbstractToken = struct |> (List.pp Malformation.pp) malformations |> Fmt.fmt ")" - let pp_unit tok_name t formatter = - formatter - |> Fmt.fmt tok_name - |> (function formatter -> match t with - | Constant _ -> formatter - | Malformed _ -> formatter |> Fmt.fmt " " |> pp Unit.pp t - ) - let of_mals mals = Malformed (List.sort ~cmp:Malformation.cmp mals) end @@ -254,454 +245,1032 @@ module AbstractToken = struct type t = (* Keywords. *) - | Tok_and - | Tok_also - | Tok_as - | Tok_conceal - | Tok_effect - | Tok_else - | Tok_expose - | Tok_external - | Tok_false - | Tok_fn - | Tok_function - | Tok_if - | Tok_import - | Tok_include - | Tok_lazy - | Tok_let - | Tok_match - | Tok_mutability - | Tok_of - | Tok_open - | Tok_or - | Tok_rec - | Tok_then - | Tok_true - | Tok_type - | Tok_when - | Tok_with + | Tok_and of {source: Source.Slice.t} + | Tok_also of {source: Source.Slice.t} + | Tok_as of {source: Source.Slice.t} + | Tok_conceal of {source: Source.Slice.t} + | Tok_effect of {source: Source.Slice.t} + | Tok_else of {source: Source.Slice.t} + | Tok_expose of {source: Source.Slice.t} + | Tok_external of {source: Source.Slice.t} + | Tok_false of {source: Source.Slice.t} + | Tok_fn of {source: Source.Slice.t} + | Tok_function of {source: Source.Slice.t} + | Tok_if of {source: Source.Slice.t} + | Tok_import of {source: Source.Slice.t} + | Tok_include of {source: Source.Slice.t} + | Tok_lazy of {source: Source.Slice.t} + | Tok_let of {source: Source.Slice.t} + | Tok_match of {source: Source.Slice.t} + | Tok_mutability of {source: Source.Slice.t} + | Tok_of of {source: Source.Slice.t} + | Tok_open of {source: Source.Slice.t} + | Tok_or of {source: Source.Slice.t} + | Tok_rec of {source: Source.Slice.t} + | Tok_then of {source: Source.Slice.t} + | Tok_true of {source: Source.Slice.t} + | Tok_type of {source: Source.Slice.t} + | Tok_when of {source: Source.Slice.t} + | Tok_with of {source: Source.Slice.t} (* Operators. *) - | Tok_tilde_op of string - | Tok_qmark_op of string - | Tok_star_star_op of string - | Tok_star_op of string - | Tok_slash_op of string - | Tok_pct_op of string - | Tok_plus_op of string - | Tok_minus_op of string - | Tok_at_op of string - | Tok_caret_op of string - | Tok_dollar_op of string - | Tok_lt_op of string - | Tok_eq_op of string - | Tok_gt_op of string - | Tok_bar_op of string - | Tok_colon_op of string - | Tok_dot_op of string + | Tok_tilde_op of {source: Source.Slice.t; tilde_op: string} + | Tok_qmark_op of {source: Source.Slice.t; qmark_op: string} + | Tok_star_star_op of {source: Source.Slice.t; star_star_op: string} + | Tok_star_op of {source: Source.Slice.t; star_op: string} + | Tok_slash_op of {source: Source.Slice.t; slash_op: string} + | Tok_pct_op of {source: Source.Slice.t; pct_op: string} + | Tok_plus_op of {source: Source.Slice.t; plus_op: string} + | Tok_minus_op of {source: Source.Slice.t; minus_op: string} + | Tok_at_op of {source: Source.Slice.t; at_op: string} + | Tok_caret_op of {source: Source.Slice.t; caret_op: string} + | Tok_dollar_op of {source: Source.Slice.t; dollar_op: string} + | Tok_lt_op of {source: Source.Slice.t; lt_op: string} + | Tok_eq_op of {source: Source.Slice.t; eq_op: string} + | Tok_gt_op of {source: Source.Slice.t; gt_op: string} + | Tok_bar_op of {source: Source.Slice.t; bar_op: string} + | Tok_colon_op of {source: Source.Slice.t; colon_op: string} + | Tok_dot_op of {source: Source.Slice.t; dot_op: string} (* Punctuation. *) - | Tok_tilde - | Tok_qmark - | Tok_minus - | Tok_lt - | Tok_lt_eq - | Tok_eq - | Tok_lt_gt - | Tok_gt_eq - | Tok_gt - | Tok_comma - | Tok_dot - | Tok_dot_dot - | Tok_semi - | Tok_colon - | Tok_colon_colon - | Tok_colon_eq - | Tok_lparen - | Tok_rparen - | Tok_lbrack - | Tok_rbrack - | Tok_lcurly - | Tok_rcurly - | Tok_bar - | Tok_lcapture - | Tok_rcapture - | Tok_larray - | Tok_rarray - | Tok_bslash - | Tok_tick - | Tok_caret - | Tok_amp - | Tok_xmark - | Tok_arrow - | Tok_carrow - - | Tok_source_directive of source_directive Rendition.t - | Tok_line_delim - | Tok_indent of unit Rendition.t - | Tok_dedent of unit Rendition.t - | Tok_whitespace - | Tok_hash_comment - | Tok_paren_comment of unit Rendition.t - | Tok_uscore - | Tok_uident of string Rendition.t - | Tok_cident of string - | Tok_codepoint of codepoint Rendition.t - | Tok_rstring of string Rendition.t - | Tok_istring of string Rendition.t - | Tok_fstring_lditto - | Tok_fstring_interpolated of string Rendition.t - | Tok_fstring_pct - | Tok_fstring_pad of codepoint Rendition.t - | Tok_fstring_just of Fmt.just - | Tok_fstring_sign of Fmt.sign - | Tok_fstring_alt - | Tok_fstring_zpad - | Tok_fstring_width_star - | Tok_fstring_width of uns Rendition.t - | Tok_fstring_pmode of Fmt.pmode - | Tok_fstring_precision_star - | Tok_fstring_precision of uns Rendition.t - | Tok_fstring_radix of Radix.t - | Tok_fstring_notation of Fmt.notation - | Tok_fstring_pretty - | Tok_fstring_fmt of fmt Rendition.t - | Tok_fstring_sep of string Rendition.t - | Tok_fstring_label of string - | Tok_fstring_lparen_caret - | Tok_fstring_caret_rparen - | Tok_fstring_rditto - | Tok_r32 of real Rendition.t - | Tok_r64 of real Rendition.t - | Tok_u8 of u8 Rendition.t - | Tok_i8 of i8 Rendition.t - | Tok_u16 of u16 Rendition.t - | Tok_i16 of i16 Rendition.t - | Tok_u32 of u32 Rendition.t - | Tok_i32 of i32 Rendition.t - | Tok_u64 of u64 Rendition.t - | Tok_i64 of i64 Rendition.t - | Tok_u128 of u128 Rendition.t - | Tok_i128 of i128 Rendition.t - | Tok_u256 of u256 Rendition.t - | Tok_i256 of i256 Rendition.t - | Tok_u512 of u512 Rendition.t - | Tok_i512 of i512 Rendition.t - | Tok_nat of Nat.t Rendition.t - | Tok_zint of Zint.t Rendition.t - | Tok_end_of_input - | Tok_misaligned - | Tok_error of Rendition.Malformation.t list + | Tok_tilde of {source: Source.Slice.t} + | Tok_qmark of {source: Source.Slice.t} + | Tok_minus of {source: Source.Slice.t} + | Tok_lt of {source: Source.Slice.t} + | Tok_lt_eq of {source: Source.Slice.t} + | Tok_eq of {source: Source.Slice.t} + | Tok_lt_gt of {source: Source.Slice.t} + | Tok_gt_eq of {source: Source.Slice.t} + | Tok_gt of {source: Source.Slice.t} + | Tok_comma of {source: Source.Slice.t} + | Tok_dot of {source: Source.Slice.t} + | Tok_dot_dot of {source: Source.Slice.t} + | Tok_semi of {source: Source.Slice.t} + | Tok_colon of {source: Source.Slice.t} + | Tok_colon_colon of {source: Source.Slice.t} + | Tok_colon_eq of {source: Source.Slice.t} + | Tok_lparen of {source: Source.Slice.t} + | Tok_rparen of {source: Source.Slice.t} + | Tok_lbrack of {source: Source.Slice.t} + | Tok_rbrack of {source: Source.Slice.t} + | Tok_lcurly of {source: Source.Slice.t} + | Tok_rcurly of {source: Source.Slice.t} + | Tok_bar of {source: Source.Slice.t} + | Tok_lcapture of {source: Source.Slice.t} + | Tok_rcapture of {source: Source.Slice.t} + | Tok_larray of {source: Source.Slice.t} + | Tok_rarray of {source: Source.Slice.t} + | Tok_bslash of {source: Source.Slice.t} + | Tok_tick of {source: Source.Slice.t} + | Tok_caret of {source: Source.Slice.t} + | Tok_amp of {source: Source.Slice.t} + | Tok_xmark of {source: Source.Slice.t} + | Tok_arrow of {source: Source.Slice.t} + | Tok_carrow of {source: Source.Slice.t} + + (* Miscellaneous. *) + | Tok_source_directive of + {source: Source.Slice.t; source_directive: source_directive Rendition.t} + | Tok_line_delim of {source: Source.Slice.t} + | Tok_indent of {source: Source.Slice.t; indent: unit Rendition.t} + | Tok_dedent of {source: Source.Slice.t; dedent: unit Rendition.t} + | Tok_whitespace of {source: Source.Slice.t} + | Tok_hash_comment of {source: Source.Slice.t} + | Tok_paren_comment of {source: Source.Slice.t; paren_comment: unit Rendition.t} + | Tok_uscore of {source: Source.Slice.t} + | Tok_uident of {source: Source.Slice.t; uident: string Rendition.t} + | Tok_cident of {source: Source.Slice.t; cident: string} + | Tok_codepoint of {source: Source.Slice.t; codepoint: codepoint Rendition.t} + | Tok_rstring of {source: Source.Slice.t; rstring: string Rendition.t} + | Tok_istring of {source: Source.Slice.t; istring: string Rendition.t} + | Tok_fstring_lditto of {source: Source.Slice.t} + | Tok_fstring_interpolated of {source: Source.Slice.t; fstring_interpolated: string Rendition.t} + | Tok_fstring_pct of {source: Source.Slice.t} + | Tok_fstring_pad of {source: Source.Slice.t; fstring_pad: codepoint Rendition.t} + | Tok_fstring_just of {source: Source.Slice.t; fstring_just: Fmt.just} + | Tok_fstring_sign of {source: Source.Slice.t; fstring_sign: Fmt.sign} + | Tok_fstring_alt of {source: Source.Slice.t} + | Tok_fstring_zpad of {source: Source.Slice.t} + | Tok_fstring_width_star of {source: Source.Slice.t} + | Tok_fstring_width of {source: Source.Slice.t; fstring_width: uns Rendition.t} + | Tok_fstring_pmode of {source: Source.Slice.t; fstring_pmode: Fmt.pmode} + | Tok_fstring_precision_star of {source: Source.Slice.t} + | Tok_fstring_precision of {source: Source.Slice.t; fstring_precision: uns Rendition.t} + | Tok_fstring_radix of {source: Source.Slice.t; fstring_radix: Radix.t} + | Tok_fstring_notation of {source: Source.Slice.t; fstring_notation: Fmt.notation} + | Tok_fstring_pretty of {source: Source.Slice.t} + | Tok_fstring_fmt of {source: Source.Slice.t; fstring_fmt: fmt Rendition.t} + | Tok_fstring_sep of {source: Source.Slice.t; fstring_sep: string Rendition.t} + | Tok_fstring_label of {source: Source.Slice.t; fstring_label: string} + | Tok_fstring_lparen_caret of {source: Source.Slice.t} + | Tok_fstring_caret_rparen of {source: Source.Slice.t} + | Tok_fstring_rditto of {source: Source.Slice.t} + | Tok_r32 of {source: Source.Slice.t; r32: real Rendition.t} + | Tok_r64 of {source: Source.Slice.t; r64: real Rendition.t} + | Tok_u8 of {source: Source.Slice.t; u8: u8 Rendition.t} + | Tok_i8 of {source: Source.Slice.t; i8: i8 Rendition.t} + | Tok_u16 of {source: Source.Slice.t; u16: u16 Rendition.t} + | Tok_i16 of {source: Source.Slice.t; i16: i16 Rendition.t} + | Tok_u32 of {source: Source.Slice.t; u32: u32 Rendition.t} + | Tok_i32 of {source: Source.Slice.t; i32: i32 Rendition.t} + | Tok_u64 of {source: Source.Slice.t; u64: u64 Rendition.t} + | Tok_i64 of {source: Source.Slice.t; i64: i64 Rendition.t} + | Tok_u128 of {source: Source.Slice.t; u128: u128 Rendition.t} + | Tok_i128 of {source: Source.Slice.t; i128: i128 Rendition.t} + | Tok_u256 of {source: Source.Slice.t; u256: u256 Rendition.t} + | Tok_i256 of {source: Source.Slice.t; i256: i256 Rendition.t} + | Tok_u512 of {source: Source.Slice.t; u512: u512 Rendition.t} + | Tok_i512 of {source: Source.Slice.t; i512: i512 Rendition.t} + | Tok_nat of {source: Source.Slice.t; nat: Nat.t Rendition.t} + | Tok_zint of {source: Source.Slice.t; zint: Zint.t Rendition.t} + | Tok_end_of_input of {source: Source.Slice.t} + | Tok_misaligned of {source: Source.Slice.t} + | Tok_error of {source: Source.Slice.t; error: Rendition.Malformation.t list} let pp t formatter = formatter - |> Fmt.fmt "<" + |> Fmt.fmt "(" |> (fun formatter -> match t with (* Keywords. *) - | Tok_and -> formatter |> Fmt.fmt "Tok_and" - | Tok_also -> formatter |> Fmt.fmt "Tok_also" - | Tok_as -> formatter |> Fmt.fmt "Tok_as" - | Tok_conceal -> formatter |> Fmt.fmt "Tok_conceal" - | Tok_effect -> formatter |> Fmt.fmt "Tok_effect" - | Tok_else -> formatter |> Fmt.fmt "Tok_else" - | Tok_expose -> formatter |> Fmt.fmt "Tok_expose" - | Tok_external -> formatter |> Fmt.fmt "Tok_external" - | Tok_false -> formatter |> Fmt.fmt "Tok_false" - | Tok_fn -> formatter |> Fmt.fmt "Tok_fn" - | Tok_function -> formatter |> Fmt.fmt "Tok_function" - | Tok_if -> formatter |> Fmt.fmt "Tok_if" - | Tok_import -> formatter |> Fmt.fmt "Tok_import" - | Tok_include -> formatter |> Fmt.fmt "Tok_include" - | Tok_lazy -> formatter |> Fmt.fmt "Tok_lazy" - | Tok_let -> formatter |> Fmt.fmt "Tok_let" - | Tok_match -> formatter |> Fmt.fmt "Tok_match" - | Tok_mutability -> formatter |> Fmt.fmt "Tok_mutability" - | Tok_of -> formatter |> Fmt.fmt "Tok_of" - | Tok_open -> formatter |> Fmt.fmt "Tok_open" - | Tok_or -> formatter |> Fmt.fmt "Tok_or" - | Tok_rec -> formatter |> Fmt.fmt "Tok_rec" - | Tok_then -> formatter |> Fmt.fmt "Tok_then" - | Tok_true -> formatter |> Fmt.fmt "Tok_true" - | Tok_type -> formatter |> Fmt.fmt "Tok_type" - | Tok_when -> formatter |> Fmt.fmt "Tok_when" - | Tok_with -> formatter |> Fmt.fmt "Tok_with" + | Tok_and {source} -> + formatter |> Fmt.fmt "Tok_and {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_also {source} -> + formatter |> Fmt.fmt "Tok_also {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_as {source} -> + formatter |> Fmt.fmt "Tok_as {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_conceal {source} -> + formatter |> Fmt.fmt "Tok_conceal {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_effect {source} -> + formatter |> Fmt.fmt "Tok_effect {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_else {source} -> + formatter |> Fmt.fmt "Tok_else {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_expose {source} -> + formatter |> Fmt.fmt "Tok_expose {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_external {source} -> + formatter |> Fmt.fmt "Tok_external {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_false {source} -> + formatter |> Fmt.fmt "Tok_false {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fn {source} -> + formatter |> Fmt.fmt "Tok_fn {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_function {source} -> + formatter |> Fmt.fmt "Tok_function {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_if {source} -> + formatter |> Fmt.fmt "Tok_if {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_import {source} -> + formatter |> Fmt.fmt "Tok_import {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_include {source} -> + formatter |> Fmt.fmt "Tok_include {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lazy {source} -> + formatter |> Fmt.fmt "Tok_lazy {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_let {source} -> + formatter |> Fmt.fmt "Tok_let {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_match {source} -> + formatter |> Fmt.fmt "Tok_match {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_mutability {source} -> + formatter |> Fmt.fmt "Tok_mutability {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_of {source} -> + formatter |> Fmt.fmt "Tok_of {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_open {source} -> + formatter |> Fmt.fmt "Tok_open {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_or {source} -> + formatter |> Fmt.fmt "Tok_or {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rec {source} -> + formatter |> Fmt.fmt "Tok_rec {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_then {source} -> + formatter |> Fmt.fmt "Tok_then {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_true {source} -> + formatter |> Fmt.fmt "Tok_true {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_type {source} -> + formatter |> Fmt.fmt "Tok_type {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_when {source} -> + formatter |> Fmt.fmt "Tok_when {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_with {source} -> + formatter |> Fmt.fmt "Tok_with {source=" |> Source.Slice.pp source |> Fmt.fmt "}" (* Operators. *) - | Tok_tilde_op op -> formatter |> Fmt.fmt "Tok_tilde_op " |> String.pp op - | Tok_qmark_op op -> formatter |> Fmt.fmt "Tok_qmark_op " |> String.pp op - | Tok_star_star_op op -> formatter |> Fmt.fmt "Tok_star_star_op " |> String.pp op - | Tok_star_op op -> formatter |> Fmt.fmt "Tok_star_op " |> String.pp op - | Tok_slash_op op -> formatter |> Fmt.fmt "Tok_slash_op " |> String.pp op - | Tok_pct_op op -> formatter |> Fmt.fmt "Tok_pct_op " |> String.pp op - | Tok_plus_op op -> formatter |> Fmt.fmt "Tok_plus_op " |> String.pp op - | Tok_minus_op op -> formatter |> Fmt.fmt "Tok_minus_op " |> String.pp op - | Tok_at_op op -> formatter |> Fmt.fmt "Tok_at_op " |> String.pp op - | Tok_caret_op op -> formatter |> Fmt.fmt "Tok_caret_op " |> String.pp op - | Tok_dollar_op op -> formatter |> Fmt.fmt "Tok_dollar_op " |> String.pp op - | Tok_lt_op op -> formatter |> Fmt.fmt "Tok_lt_op " |> String.pp op - | Tok_eq_op op -> formatter |> Fmt.fmt "Tok_eq_op " |> String.pp op - | Tok_gt_op op -> formatter |> Fmt.fmt "Tok_gt_op " |> String.pp op - | Tok_bar_op op -> formatter |> Fmt.fmt "Tok_bar_op " |> String.pp op - | Tok_colon_op op -> formatter |> Fmt.fmt "Tok_colon_op " |> String.pp op - | Tok_dot_op op -> formatter |> Fmt.fmt "Tok_dot_op " |> String.pp op + | Tok_tilde_op {source; tilde_op} -> begin + formatter + |> Fmt.fmt "Tok_tilde_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; tilde_op=" + |> String.pp tilde_op + |> Fmt.fmt "}" + end + | Tok_qmark_op {source; qmark_op} -> begin + formatter + |> Fmt.fmt "Tok_qmark_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; qmark_op=" + |> String.pp qmark_op + |> Fmt.fmt "}" + end + | Tok_star_star_op {source; star_star_op} -> begin + formatter + |> Fmt.fmt "Tok_star_star_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; star_star_op=" + |> String.pp star_star_op + |> Fmt.fmt "}" + end + | Tok_star_op {source; star_op} -> begin + formatter + |> Fmt.fmt "Tok_star_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; star_op=" + |> String.pp star_op + |> Fmt.fmt "}" + end + | Tok_slash_op {source; slash_op} -> begin + formatter + |> Fmt.fmt "Tok_slash_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; slash_op=" + |> String.pp slash_op + |> Fmt.fmt "}" + end + | Tok_pct_op {source; pct_op} -> begin + formatter + |> Fmt.fmt "Tok_pct_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; pct_op=" + |> String.pp pct_op + |> Fmt.fmt "}" + end + | Tok_plus_op {source; plus_op} -> begin + formatter + |> Fmt.fmt "Tok_plus_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; plus_op=" + |> String.pp plus_op + |> Fmt.fmt "}" + end + | Tok_minus_op {source; minus_op} -> begin + formatter + |> Fmt.fmt "Tok_minus_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; minus_op=" + |> String.pp minus_op + |> Fmt.fmt "}" + end + | Tok_at_op {source; at_op} -> begin + formatter + |> Fmt.fmt "Tok_at_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; at_op=" + |> String.pp at_op + |> Fmt.fmt "}" + end + | Tok_caret_op {source; caret_op} -> begin + formatter + |> Fmt.fmt "Tok_caret_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; caret_op=" + |> String.pp caret_op + |> Fmt.fmt "}" + end + | Tok_dollar_op {source; dollar_op} -> begin + formatter + |> Fmt.fmt "Tok_dollar_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; dollar_op=" + |> String.pp dollar_op + |> Fmt.fmt "}" + end + | Tok_lt_op {source; lt_op} -> begin + formatter + |> Fmt.fmt "Tok_lt_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; lt_op=" + |> String.pp lt_op + |> Fmt.fmt "}" + end + | Tok_eq_op {source; eq_op} -> begin + formatter + |> Fmt.fmt "Tok_eq_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; eq_op=" + |> String.pp eq_op + |> Fmt.fmt "}" + end + | Tok_gt_op {source; gt_op} -> begin + formatter + |> Fmt.fmt "Tok_gt_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; gt_op=" + |> String.pp gt_op + |> Fmt.fmt "}" + end + | Tok_bar_op {source; bar_op} -> begin + formatter + |> Fmt.fmt "Tok_bar_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; bar_op=" + |> String.pp bar_op + |> Fmt.fmt "}" + end + | Tok_colon_op {source; colon_op} -> begin + formatter + |> Fmt.fmt "Tok_colon_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; colon_op=" + |> String.pp colon_op + |> Fmt.fmt "}" + end + | Tok_dot_op {source; dot_op} -> begin + formatter + |> Fmt.fmt "Tok_dot_op {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; dot_op=" + |> String.pp dot_op + |> Fmt.fmt "}" + end (* Punctuation. *) - | Tok_tilde -> formatter |> Fmt.fmt "Tok_tilde" - | Tok_qmark -> formatter |> Fmt.fmt "Tok_qmark" - | Tok_minus -> formatter |> Fmt.fmt "Tok_minus" - | Tok_lt -> formatter |> Fmt.fmt "Tok_lt" - | Tok_lt_eq -> formatter |> Fmt.fmt "Tok_lt_eq" - | Tok_eq -> formatter |> Fmt.fmt "Tok_eq" - | Tok_lt_gt -> formatter |> Fmt.fmt "Tok_lt_gt" - | Tok_gt_eq -> formatter |> Fmt.fmt "Tok_gt_eq" - | Tok_gt -> formatter |> Fmt.fmt "Tok_gt" - | Tok_comma -> formatter |> Fmt.fmt "Tok_comma" - | Tok_dot -> formatter |> Fmt.fmt "Tok_dot" - | Tok_dot_dot -> formatter |> Fmt.fmt "Tok_dot_dot" - | Tok_semi -> formatter |> Fmt.fmt "Tok_semi" - | Tok_colon -> formatter |> Fmt.fmt "Tok_colon" - | Tok_colon_colon -> formatter |> Fmt.fmt "Tok_colon_colon" - | Tok_colon_eq -> formatter |> Fmt.fmt "Tok_colon_eq" - | Tok_lparen -> formatter |> Fmt.fmt "Tok_lparen" - | Tok_rparen -> formatter |> Fmt.fmt "Tok_rparen" - | Tok_lbrack -> formatter |> Fmt.fmt "Tok_lbrack" - | Tok_rbrack -> formatter |> Fmt.fmt "Tok_rbrack" - | Tok_lcurly -> formatter |> Fmt.fmt "Tok_lcurly" - | Tok_rcurly -> formatter |> Fmt.fmt "Tok_rcurly" - | Tok_bar -> formatter |> Fmt.fmt "Tok_bar" - | Tok_lcapture -> formatter |> Fmt.fmt "Tok_lcapture" - | Tok_rcapture -> formatter |> Fmt.fmt "Tok_rcapture" - | Tok_larray -> formatter |> Fmt.fmt "Tok_larray" - | Tok_rarray -> formatter |> Fmt.fmt "Tok_rarray" - | Tok_bslash -> formatter |> Fmt.fmt "Tok_bslash" - | Tok_tick -> formatter |> Fmt.fmt "Tok_tick" - | Tok_caret -> formatter |> Fmt.fmt "Tok_caret" - | Tok_amp -> formatter |> Fmt.fmt "Tok_amp" - | Tok_xmark -> formatter |> Fmt.fmt "Tok_xmark" - | Tok_arrow -> formatter |> Fmt.fmt "Tok_arrow" - | Tok_carrow -> formatter |> Fmt.fmt "Tok_carrow" - | Tok_source_directive rendition -> - formatter |> Fmt.fmt "Tok_source_directive " - |> (Rendition.pp pp_source_directive) rendition - | Tok_line_delim -> formatter |> Fmt.fmt "Tok_line_delim" - | Tok_indent rendition -> formatter |> Rendition.pp_unit "Tok_indent" rendition - | Tok_dedent rendition -> formatter |> Rendition.pp_unit "Tok_dedent" rendition - | Tok_whitespace -> formatter |> Fmt.fmt "Tok_whitespace" - | Tok_hash_comment -> formatter |> Fmt.fmt "Tok_hash_comment" - | Tok_paren_comment rendition -> formatter |> Rendition.pp_unit "Tok_paren_comment" rendition - | Tok_uscore -> formatter |> Fmt.fmt "Tok_uscore" - | Tok_uident rendition -> - formatter |> Fmt.fmt "Tok_uident " |> (Rendition.pp String.pp) rendition - | Tok_cident cident -> formatter |> Fmt.fmt "Tok_cident " |> String.pp cident - | Tok_codepoint rendition -> - formatter |> Fmt.fmt "Tok_codepoint " |> (Rendition.pp Codepoint.pp) rendition - | Tok_rstring rendition -> - formatter |> Fmt.fmt "Tok_rstring " |> (Rendition.pp String.pp) rendition - | Tok_istring rendition -> - formatter |> Fmt.fmt "Tok_istring " |> (Rendition.pp String.pp) rendition - | Tok_fstring_lditto -> formatter |> Fmt.fmt "Tok_fstring_lditto" - | Tok_fstring_interpolated rendition -> - formatter |> Fmt.fmt "Tok_fstring_interpolated " |> (Rendition.pp String.pp) rendition - | Tok_fstring_pct -> formatter |> Fmt.fmt "Tok_fstring_pct" - | Tok_fstring_pad rendition -> - formatter |> Fmt.fmt "Tok_fstring_pad " |> (Rendition.pp Codepoint.pp) rendition - | Tok_fstring_just just -> formatter |> Fmt.fmt "Tok_fstring_just " |> Fmt.pp_just just - | Tok_fstring_sign sign -> formatter |> Fmt.fmt "Tok_fstring_sign " |> Fmt.pp_sign sign - | Tok_fstring_alt -> formatter |> Fmt.fmt "Tok_fstring_alt" - | Tok_fstring_zpad -> formatter |> Fmt.fmt "Tok_fstring_zpad" - | Tok_fstring_width_star -> formatter |> Fmt.fmt "Tok_fstring_width_star" - | Tok_fstring_width rendition -> - formatter |> Fmt.fmt "Tok_fstring_width " |> (Rendition.pp Uns.pp) rendition - | Tok_fstring_pmode pmode -> formatter |> Fmt.fmt "Tok_fstring_pmode " |> Fmt.pp_pmode pmode - | Tok_fstring_precision_star -> formatter |> Fmt.fmt "Tok_fstring_precision_star" - | Tok_fstring_precision rendition -> - formatter |> Fmt.fmt "Tok_fstring_precision " |> (Rendition.pp Uns.pp) rendition - | Tok_fstring_radix radix -> formatter |> Fmt.fmt "Tok_fstring_radix " |> Radix.pp radix - | Tok_fstring_notation notation -> - formatter |> Fmt.fmt "Tok_fstring_notation " |> Fmt.pp_notation notation - | Tok_fstring_pretty -> formatter |> Fmt.fmt "Tok_fstring_pretty" - | Tok_fstring_fmt rendition -> - formatter |> Fmt.fmt "Tok_fstring_fmt " |> (Rendition.pp pp_fmt) rendition - | Tok_fstring_sep rendition -> - formatter |> Fmt.fmt "Tok_fstring_sep " |> (Rendition.pp String.pp) rendition - | Tok_fstring_label label -> formatter |> Fmt.fmt "Tok_fstring_label " |> String.pp label - | Tok_fstring_lparen_caret -> formatter |> Fmt.fmt "Tok_fstring_lparen_caret" - | Tok_fstring_caret_rparen -> formatter |> Fmt.fmt "Tok_fstring_caret_rparen" - | Tok_fstring_rditto -> formatter |> Fmt.fmt "Tok_fstring_rditto" - | Tok_r32 rendition -> - formatter |> Fmt.fmt "Tok_r32 " - |> (Rendition.pp Real.(fmt ~alt:true ~radix:Radix.Hex ~precision:6L - ~notation:Fmt.Normalized)) rendition - | Tok_r64 rendition -> - formatter |> Fmt.fmt "Tok_r64 " - |> (Rendition.pp Real.(fmt ~alt:true ~radix:Radix.Hex ~precision:13L - ~notation:Fmt.Normalized)) rendition - | Tok_u8 rendition -> - formatter |> Fmt.fmt "Tok_u8 " |> (Rendition.pp U8.pp) rendition - | Tok_i8 rendition -> - formatter |> Fmt.fmt "Tok_i8 " |> (Rendition.pp I8.pp) rendition - | Tok_u16 rendition -> - formatter |> Fmt.fmt "Tok_u16 " |> (Rendition.pp U16.pp) rendition - | Tok_i16 rendition -> - formatter |> Fmt.fmt "Tok_i16 " |> (Rendition.pp I16.pp) rendition - | Tok_u32 rendition -> - formatter |> Fmt.fmt "Tok_u32 " |> (Rendition.pp U32.pp) rendition - | Tok_i32 rendition -> - formatter |> Fmt.fmt "Tok_i32 " |> (Rendition.pp I32.pp) rendition - | Tok_u64 rendition -> - formatter |> Fmt.fmt "Tok_u64 " |> (Rendition.pp U64.pp) rendition - | Tok_i64 rendition -> - formatter |> Fmt.fmt "Tok_i64 " |> (Rendition.pp I64.pp) rendition - | Tok_u128 rendition -> - formatter |> Fmt.fmt "Tok_u128 " |> (Rendition.pp U128.pp) rendition - | Tok_i128 rendition -> - formatter |> Fmt.fmt "Tok_i128 " |> (Rendition.pp I128.pp) rendition - | Tok_u256 rendition -> - formatter |> Fmt.fmt "Tok_u256 " |> (Rendition.pp U256.pp) rendition - | Tok_i256 rendition -> - formatter |> Fmt.fmt "Tok_i256 " |> (Rendition.pp I256.pp) rendition - | Tok_u512 rendition -> - formatter |> Fmt.fmt "Tok_u512 " |> (Rendition.pp U512.pp) rendition - | Tok_i512 rendition -> - formatter |> Fmt.fmt "Tok_i512 " |> (Rendition.pp I512.pp) rendition - | Tok_nat rendition -> - formatter |> Fmt.fmt "Tok_nat " |> (Rendition.pp Nat.pp) rendition - | Tok_zint rendition -> - formatter |> Fmt.fmt "Tok_zint " |> (Rendition.pp Zint.pp) rendition - | Tok_end_of_input -> formatter |> Fmt.fmt "Tok_end_of_input" - | Tok_misaligned -> formatter |> Fmt.fmt "Tok_misaligned" - | Tok_error mals -> - formatter |> Fmt.fmt "Tok_error " |> (List.pp Rendition.Malformation.pp) mals + | Tok_tilde {source} -> + formatter |> Fmt.fmt "Tok_tilde {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_qmark {source} -> + formatter |> Fmt.fmt "Tok_qmark {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_minus {source} -> + formatter |> Fmt.fmt "Tok_minus {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lt {source} -> + formatter |> Fmt.fmt "Tok_lt {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lt_eq {source} -> + formatter |> Fmt.fmt "Tok_lt_eq {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_eq {source} -> + formatter |> Fmt.fmt "Tok_eq {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lt_gt {source} -> + formatter |> Fmt.fmt "Tok_lt_gt {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_gt_eq {source} -> + formatter |> Fmt.fmt "Tok_gt_eq {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_gt {source} -> + formatter |> Fmt.fmt "Tok_gt {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_comma {source} -> + formatter |> Fmt.fmt "Tok_comma {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_dot {source} -> + formatter |> Fmt.fmt "Tok_dot {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_dot_dot {source} -> + formatter |> Fmt.fmt "Tok_dot_dot {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_semi {source} -> + formatter |> Fmt.fmt "Tok_semi {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_colon {source} -> + formatter |> Fmt.fmt "Tok_colon {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_colon_colon {source} -> + formatter |> Fmt.fmt "Tok_colon_colon {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_colon_eq {source} -> + formatter |> Fmt.fmt "Tok_colon_eq {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lparen {source} -> + formatter |> Fmt.fmt "Tok_lparen {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rparen {source} -> + formatter |> Fmt.fmt "Tok_rparen {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lbrack {source} -> + formatter |> Fmt.fmt "Tok_lbrack {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rbrack {source} -> + formatter |> Fmt.fmt "Tok_rbrack {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lcurly {source} -> + formatter |> Fmt.fmt "Tok_lcurly {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rcurly {source} -> + formatter |> Fmt.fmt "Tok_rcurly {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_bar {source} -> + formatter |> Fmt.fmt "Tok_bar {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_lcapture {source} -> + formatter |> Fmt.fmt "Tok_lcapture {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rcapture {source} -> + formatter |> Fmt.fmt "Tok_rcapture {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_larray {source} -> + formatter |> Fmt.fmt "Tok_larray {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_rarray {source} -> + formatter |> Fmt.fmt "Tok_rarray {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_bslash {source} -> + formatter |> Fmt.fmt "Tok_bslash {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_tick {source} -> + formatter |> Fmt.fmt "Tok_tick {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_caret {source} -> + formatter |> Fmt.fmt "Tok_caret {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_amp {source} -> + formatter |> Fmt.fmt "Tok_amp {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_xmark {source} -> + formatter |> Fmt.fmt "Tok_xmark {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_arrow {source} -> + formatter |> Fmt.fmt "Tok_arrow {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_carrow {source} -> + formatter |> Fmt.fmt "Tok_carrow {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_source_directive {source; source_directive} -> begin + formatter + |> Fmt.fmt "Tok_source_directive {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; source_directive=" + |> Rendition.pp pp_source_directive source_directive + |> Fmt.fmt "}" + end + | Tok_line_delim {source} -> + formatter |> Fmt.fmt "Tok_line_delim {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_indent {source; indent} -> begin + formatter + |> Fmt.fmt "Tok_indent {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; indent=" + |> Rendition.pp Unit.pp indent + |> Fmt.fmt "}" + end + | Tok_dedent {source; dedent} -> begin + formatter + |> Fmt.fmt "Tok_dedent {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; dedent=" + |> Rendition.pp Unit.pp dedent + |> Fmt.fmt "}" + end + | Tok_whitespace {source} -> + formatter |> Fmt.fmt "Tok_whitespace {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_hash_comment {source} -> + formatter |> Fmt.fmt "Tok_hash_comment {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_paren_comment {source; paren_comment} -> begin + formatter + |> Fmt.fmt "Tok_paren_comment {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; paren_comment=" + |> Rendition.pp Unit.pp paren_comment + |> Fmt.fmt "}" + end + | Tok_uscore {source} -> + formatter |> Fmt.fmt "Tok_uscore {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_uident {source; uident} -> begin + formatter + |> Fmt.fmt "Tok_uident {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; uident=" + |> Rendition.pp String.pp uident + |> Fmt.fmt "}" + end + | Tok_cident {source; cident} -> begin + formatter + |> Fmt.fmt "Tok_cident {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; cident=" + |> String.pp cident + |> Fmt.fmt "}" + end + | Tok_codepoint {source; codepoint} -> begin + formatter + |> Fmt.fmt "Tok_codepoint {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; codepoint=" + |> Rendition.pp Codepoint.pp codepoint + |> Fmt.fmt "}" + end + | Tok_rstring {source; rstring} -> begin + formatter + |> Fmt.fmt "Tok_rstring {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; rstring=" + |> Rendition.pp String.pp rstring + |> Fmt.fmt "}" + end + | Tok_istring {source; istring} -> begin + formatter + |> Fmt.fmt "Tok_istring {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; istring=" + |> Rendition.pp String.pp istring + |> Fmt.fmt "}" + end + | Tok_fstring_lditto {source} -> + formatter |> Fmt.fmt "Tok_fstring_lditto {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fstring_interpolated {source; fstring_interpolated} -> begin + formatter + |> Fmt.fmt "Tok_fstring_interpolated {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_interpolated=" + |> Rendition.pp String.pp fstring_interpolated + |> Fmt.fmt "}" + end + | Tok_fstring_pct {source} -> + formatter |> Fmt.fmt "Tok_fstring_pct {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fstring_pad {source; fstring_pad} -> begin + formatter + |> Fmt.fmt "Tok_fstring_pad {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_pad=" + |> Rendition.pp Codepoint.pp fstring_pad + |> Fmt.fmt "}" + end + | Tok_fstring_just {source; fstring_just} -> begin + formatter + |> Fmt.fmt "Tok_fstring_just {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_just=" + |> Fmt.pp_just fstring_just + |> Fmt.fmt "}" + end + | Tok_fstring_sign {source; fstring_sign} -> begin + formatter + |> Fmt.fmt "Tok_fstring_sign {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_sign=" + |> Fmt.pp_sign fstring_sign + |> Fmt.fmt "}" + end + | Tok_fstring_alt {source} -> + formatter |> Fmt.fmt "Tok_fstring_alt {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fstring_zpad {source} -> + formatter |> Fmt.fmt "Tok_fstring_zpad {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fstring_width_star {source} -> begin + formatter + |> Fmt.fmt "Tok_fstring_width_star {source=" + |> Source.Slice.pp source + |> Fmt.fmt "}" + end + | Tok_fstring_width {source; fstring_width} -> begin + formatter + |> Fmt.fmt "Tok_fstring_width {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_width=" + |> Rendition.pp Uns.pp fstring_width + |> Fmt.fmt "}" + end + | Tok_fstring_pmode {source; fstring_pmode} -> begin + formatter + |> Fmt.fmt "Tok_fstring_pmode {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_pmode=" + |> Fmt.pp_pmode fstring_pmode + |> Fmt.fmt "}" + end + | Tok_fstring_precision_star {source} -> begin + formatter + |> Fmt.fmt "Tok_fstring_precision_star {source=" + |> Source.Slice.pp source + |> Fmt.fmt "}" + end + | Tok_fstring_precision {source; fstring_precision} -> begin + formatter + |> Fmt.fmt "Tok_fstring_precision {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_precision=" + |> Rendition.pp Uns.pp fstring_precision + |> Fmt.fmt "}" + end + | Tok_fstring_radix {source; fstring_radix} -> begin + formatter + |> Fmt.fmt "Tok_fstring_radix {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_radix=" + |> Radix.pp fstring_radix + |> Fmt.fmt "}" + end + | Tok_fstring_notation {source; fstring_notation} -> begin + formatter + |> Fmt.fmt "Tok_fstring_notation {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_notation=" + |> Fmt.pp_notation fstring_notation + |> Fmt.fmt "}" + end + | Tok_fstring_pretty {source} -> + formatter |> Fmt.fmt "Tok_fstring_pretty {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_fstring_fmt {source; fstring_fmt} -> begin + formatter + |> Fmt.fmt "Tok_fstring {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_fmt=" + |> Rendition.pp pp_fmt fstring_fmt + |> Fmt.fmt "}" + end + | Tok_fstring_sep {source; fstring_sep} -> begin + formatter + |> Fmt.fmt "Tok_fstring_sep {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_sep=" + |> Rendition.pp String.pp fstring_sep + |> Fmt.fmt "}" + end + | Tok_fstring_label {source; fstring_label} -> begin + formatter + |> Fmt.fmt "Tok_fstring_label {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; fstring_label=" + |> String.pp fstring_label + |> Fmt.fmt "}" + end + | Tok_fstring_lparen_caret {source} -> begin + formatter + |> Fmt.fmt "Tok_fstring_lparen_caret {source=" + |> Source.Slice.pp source + |> Fmt.fmt "}" + end + | Tok_fstring_caret_rparen {source} -> begin + formatter + |> Fmt.fmt "Tok_fstring_caret_rparen {source=" + |> Source.Slice.pp source + |> Fmt.fmt "}" + end + | Tok_fstring_rditto {source} -> begin + formatter + |> Fmt.fmt "Tok_fstring_rditto {source=" + |> Source.Slice.pp source + |> Fmt.fmt "}" + end + | Tok_r32 {source; r32} -> begin + formatter + |> Fmt.fmt "Tok_r32 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; r32=" + |> Rendition.pp Real.(fmt ~alt:true ~radix:Radix.Hex ~precision:6L + ~notation:Fmt.Normalized) r32 + |> Fmt.fmt "}" + end + | Tok_r64 {source; r64} -> begin + formatter + |> Fmt.fmt "Tok_r64 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; r64=" + |> Rendition.pp Real.(fmt ~alt:true ~radix:Radix.Hex ~precision:13L + ~notation:Fmt.Normalized) r64 + |> Fmt.fmt "}" + end + | Tok_u8 {source; u8} -> begin + formatter + |> Fmt.fmt "Tok_u8 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u8=" + |> Rendition.pp U8.pp u8 + |> Fmt.fmt "}" + end + | Tok_i8 {source; i8} -> begin + formatter + |> Fmt.fmt "Tok_i8 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i8=" + |> Rendition.pp I8.pp i8 + |> Fmt.fmt "}" + end + | Tok_u16 {source; u16} -> begin + formatter + |> Fmt.fmt "Tok_u16 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u16=" + |> Rendition.pp U16.pp u16 + |> Fmt.fmt "}" + end + | Tok_i16 {source; i16} -> begin + formatter + |> Fmt.fmt "Tok_i16 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i16=" + |> Rendition.pp I16.pp i16 + |> Fmt.fmt "}" + end + | Tok_u32 {source; u32} -> begin + formatter + |> Fmt.fmt "Tok_u32 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u32=" + |> Rendition.pp U32.pp u32 + |> Fmt.fmt "}" + end + | Tok_i32 {source; i32} -> begin + formatter + |> Fmt.fmt "Tok_i32 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i32=" + |> Rendition.pp I32.pp i32 + |> Fmt.fmt "}" + end + | Tok_u64 {source; u64} -> begin + formatter + |> Fmt.fmt "Tok_u64 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u64=" + |> Rendition.pp U64.pp u64 + |> Fmt.fmt "}" + end + | Tok_i64 {source; i64} -> begin + formatter + |> Fmt.fmt "Tok_i64 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i64=" + |> Rendition.pp I64.pp i64 + |> Fmt.fmt "}" + end + | Tok_u128 {source; u128} -> begin + formatter + |> Fmt.fmt "Tok_u128 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u128=" + |> Rendition.pp U128.pp u128 + |> Fmt.fmt "}" + end + | Tok_i128 {source; i128} -> begin + formatter + |> Fmt.fmt "Tok_i128 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i128=" + |> Rendition.pp I128.pp i128 + |> Fmt.fmt "}" + end + | Tok_u256 {source; u256} -> begin + formatter + |> Fmt.fmt "Tok_u256 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u256=" + |> Rendition.pp U256.pp u256 + |> Fmt.fmt "}" + end + | Tok_i256 {source; i256} -> begin + formatter + |> Fmt.fmt "Tok_i256 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i256=" + |> Rendition.pp I256.pp i256 + |> Fmt.fmt "}" + end + | Tok_u512 {source; u512} -> begin + formatter + |> Fmt.fmt "Tok_u512 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; u512=" + |> Rendition.pp U512.pp u512 + |> Fmt.fmt "}" + end + | Tok_i512 {source; i512} -> begin + formatter + |> Fmt.fmt "Tok_i512 {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; i512=" + |> Rendition.pp I512.pp i512 + |> Fmt.fmt "}" + end + | Tok_nat {source; nat} -> begin + formatter + |> Fmt.fmt "Tok_nat {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; nat=" + |> Rendition.pp Nat.pp nat + |> Fmt.fmt "}" + end + | Tok_zint {source; zint} -> begin + formatter + |> Fmt.fmt "Tok_zint {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; zint=" + |> Rendition.pp Zint.pp zint + |> Fmt.fmt "}" + end + | Tok_end_of_input {source} -> + formatter |> Fmt.fmt "Tok_end_of_input {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_misaligned {source} -> + formatter |> Fmt.fmt "Tok_misaligned {source=" |> Source.Slice.pp source |> Fmt.fmt "}" + | Tok_error {source; error} -> begin + formatter + |> Fmt.fmt "Tok_error {source=" + |> Source.Slice.pp source + |> Fmt.fmt "; error=" + |> (List.pp Rendition.Malformation.pp) error + |> Fmt.fmt "}" + end ) - |> Fmt.fmt ">" + |> Fmt.fmt ")" + + let source = function + | Tok_and {source} + | Tok_also {source} + | Tok_as {source} + | Tok_conceal {source} + | Tok_effect {source} + | Tok_else {source} + | Tok_expose {source} + | Tok_external {source} + | Tok_false {source} + | Tok_fn {source} + | Tok_function {source} + | Tok_if {source} + | Tok_import {source} + | Tok_include {source} + | Tok_lazy {source} + | Tok_let {source} + | Tok_match {source} + | Tok_mutability {source} + | Tok_of {source} + | Tok_open {source} + | Tok_or {source} + | Tok_rec {source} + | Tok_then {source} + | Tok_true {source} + | Tok_type {source} + | Tok_when {source} + | Tok_with {source} + | Tok_tilde_op {source; _} + | Tok_qmark_op {source; _} + | Tok_star_star_op {source; _} + | Tok_star_op {source; _} + | Tok_slash_op {source; _} + | Tok_pct_op {source; _} + | Tok_plus_op {source; _} + | Tok_minus_op {source; _} + | Tok_at_op {source; _} + | Tok_caret_op {source; _} + | Tok_dollar_op {source; _} + | Tok_lt_op {source; _} + | Tok_eq_op {source; _} + | Tok_gt_op {source; _} + | Tok_bar_op {source; _} + | Tok_colon_op {source; _} + | Tok_dot_op {source; _} + | Tok_tilde {source} + | Tok_qmark {source} + | Tok_minus {source} + | Tok_lt {source} + | Tok_lt_eq {source} + | Tok_eq {source} + | Tok_lt_gt {source} + | Tok_gt_eq {source} + | Tok_gt {source} + | Tok_comma {source} + | Tok_dot {source} + | Tok_dot_dot {source} + | Tok_semi {source} + | Tok_colon {source} + | Tok_colon_colon {source} + | Tok_colon_eq {source} + | Tok_lparen {source} + | Tok_rparen {source} + | Tok_lbrack {source} + | Tok_rbrack {source} + | Tok_lcurly {source} + | Tok_rcurly {source} + | Tok_bar {source} + | Tok_lcapture {source} + | Tok_rcapture {source} + | Tok_larray {source} + | Tok_rarray {source} + | Tok_bslash {source} + | Tok_tick {source} + | Tok_caret {source} + | Tok_amp {source} + | Tok_xmark {source} + | Tok_arrow {source} + | Tok_carrow {source} + | Tok_source_directive {source; _} + | Tok_line_delim {source} + | Tok_indent {source; _} + | Tok_dedent {source; _} + | Tok_whitespace {source} + | Tok_hash_comment {source} + | Tok_paren_comment {source; _} + | Tok_uscore {source} + | Tok_uident {source; _} + | Tok_cident {source; _} + | Tok_codepoint {source; _} + | Tok_rstring {source; _} + | Tok_istring {source; _} + | Tok_fstring_lditto {source} + | Tok_fstring_interpolated {source; _} + | Tok_fstring_pct {source} + | Tok_fstring_pad {source; _} + | Tok_fstring_just {source; _} + | Tok_fstring_sign {source; _} + | Tok_fstring_alt {source} + | Tok_fstring_zpad {source} + | Tok_fstring_width_star {source} + | Tok_fstring_width {source; _} + | Tok_fstring_pmode {source; _} + | Tok_fstring_precision_star {source} + | Tok_fstring_precision {source; _} + | Tok_fstring_radix {source; _} + | Tok_fstring_notation {source; _} + | Tok_fstring_pretty {source} + | Tok_fstring_fmt {source; _} + | Tok_fstring_sep {source; _} + | Tok_fstring_label {source; _} + | Tok_fstring_lparen_caret {source} + | Tok_fstring_caret_rparen {source} + | Tok_fstring_rditto {source} + | Tok_r32 {source; _} + | Tok_r64 {source; _} + | Tok_u8 {source; _} + | Tok_i8 {source; _} + | Tok_u16 {source; _} + | Tok_i16 {source; _} + | Tok_u32 {source; _} + | Tok_i32 {source; _} + | Tok_u64 {source; _} + | Tok_i64 {source; _} + | Tok_u128 {source; _} + | Tok_i128 {source; _} + | Tok_u256 {source; _} + | Tok_i256 {source; _} + | Tok_u512 {source; _} + | Tok_i512 {source; _} + | Tok_nat {source; _} + | Tok_zint {source; _} + | Tok_end_of_input {source} + | Tok_misaligned {source} + | Tok_error {source; _} + -> source let malformations = function (* Keywords. *) - | Tok_and | Tok_also | Tok_as | Tok_conceal | Tok_effect | Tok_else | Tok_expose | Tok_external - | Tok_false | Tok_fn | Tok_function | Tok_if | Tok_import | Tok_include | Tok_lazy | Tok_let - | Tok_match | Tok_mutability | Tok_of | Tok_open | Tok_or | Tok_rec | Tok_then | Tok_true - | Tok_type | Tok_when | Tok_with + | Tok_and _ | Tok_also _ | Tok_as _ | Tok_conceal _ | Tok_effect _ | Tok_else _ | Tok_expose _ + | Tok_external _ | Tok_false _ | Tok_fn _ | Tok_function _ | Tok_if _ | Tok_import _ + | Tok_include _ | Tok_lazy _ | Tok_let _ | Tok_match _ | Tok_mutability _ | Tok_of _ + | Tok_open _ | Tok_or _ | Tok_rec _ | Tok_then _ | Tok_true _ | Tok_type _ | Tok_when _ + | Tok_with _ (* Operators. *) | Tok_tilde_op _ | Tok_qmark_op _ | Tok_star_star_op _ | Tok_star_op _ | Tok_slash_op _ | Tok_pct_op _ | Tok_plus_op _ | Tok_minus_op _ | Tok_at_op _ | Tok_caret_op _ | Tok_dollar_op _ | Tok_lt_op _ | Tok_eq_op _ | Tok_gt_op _ | Tok_bar_op _ | Tok_colon_op _ | Tok_dot_op _ (* Punctuation. *) - | Tok_tilde | Tok_qmark | Tok_minus | Tok_lt | Tok_lt_eq | Tok_eq | Tok_lt_gt | Tok_gt_eq - | Tok_gt | Tok_comma | Tok_dot | Tok_dot_dot | Tok_semi | Tok_colon | Tok_colon_colon - | Tok_colon_eq | Tok_lparen | Tok_rparen | Tok_lbrack | Tok_rbrack | Tok_lcurly | Tok_rcurly - | Tok_bar | Tok_lcapture | Tok_rcapture | Tok_larray | Tok_rarray | Tok_bslash | Tok_tick - | Tok_caret | Tok_amp | Tok_xmark | Tok_arrow | Tok_carrow + | Tok_tilde _ | Tok_qmark _ | Tok_minus _ | Tok_lt _ | Tok_lt_eq _ | Tok_eq _ | Tok_lt_gt _ + | Tok_gt_eq _ | Tok_gt _ | Tok_comma _ | Tok_dot _ | Tok_dot_dot _ | Tok_semi _ | Tok_colon _ + | Tok_colon_colon _ | Tok_colon_eq _ | Tok_lparen _ | Tok_rparen _ | Tok_lbrack _ | Tok_rbrack _ + | Tok_lcurly _ | Tok_rcurly _ | Tok_bar _ | Tok_lcapture _ | Tok_rcapture _ | Tok_larray _ + | Tok_rarray _ | Tok_bslash _ | Tok_tick _ | Tok_caret _ | Tok_amp _ | Tok_xmark _ | Tok_arrow _ + | Tok_carrow _ (* Miscellaneous. *) - | Tok_source_directive (Constant _) - | Tok_line_delim - | Tok_indent (Constant _) - | Tok_dedent (Constant _) - | Tok_whitespace|Tok_hash_comment - | Tok_paren_comment (Constant _) - | Tok_uscore - | Tok_uident (Constant _) + | Tok_source_directive {source_directive=(Constant _); _} + | Tok_line_delim _ + | Tok_indent {indent=(Constant _); _} + | Tok_dedent {dedent=(Constant _); _} + | Tok_whitespace _ | Tok_hash_comment _ + | Tok_paren_comment {paren_comment=(Constant _); _} + | Tok_uscore _ + | Tok_uident {uident=(Constant _); _} | Tok_cident _ - | Tok_codepoint (Constant _) - | Tok_rstring (Constant _) - | Tok_istring (Constant _) - | Tok_fstring_lditto - | Tok_fstring_interpolated (Constant _) - | Tok_fstring_pct - | Tok_fstring_pad (Constant _) - | Tok_fstring_just _ | Tok_fstring_sign _ | Tok_fstring_alt | Tok_fstring_zpad - | Tok_fstring_width_star - | Tok_fstring_width (Constant _) - | Tok_fstring_pmode _ | Tok_fstring_precision_star - | Tok_fstring_precision (Constant _) - | Tok_fstring_radix _ | Tok_fstring_notation _ | Tok_fstring_pretty - | Tok_fstring_fmt (Constant _) - | Tok_fstring_sep (Constant _) - | Tok_fstring_label _ | Tok_fstring_lparen_caret | Tok_fstring_caret_rparen | Tok_fstring_rditto - | Tok_r32 (Constant _) - | Tok_r64 (Constant _) - | Tok_u8 (Constant _) - | Tok_i8 (Constant _) - | Tok_u16 (Constant _) - | Tok_i16 (Constant _) - | Tok_u32 (Constant _) - | Tok_i32 (Constant _) - | Tok_u64 (Constant _) - | Tok_i64 (Constant _) - | Tok_u128 (Constant _) - | Tok_i128 (Constant _) - | Tok_u256 (Constant _) - | Tok_i256 (Constant _) - | Tok_u512 (Constant _) - | Tok_i512 (Constant _) - | Tok_nat (Constant _) - | Tok_zint (Constant _) - | Tok_end_of_input | Tok_misaligned + | Tok_codepoint {codepoint=(Constant _); _} + | Tok_rstring {rstring=(Constant _); _} + | Tok_istring {istring=(Constant _); _} + | Tok_fstring_lditto _ + | Tok_fstring_interpolated {fstring_interpolated=(Constant _); _} + | Tok_fstring_pct _ + | Tok_fstring_pad {fstring_pad=(Constant _); _} + | Tok_fstring_just _ | Tok_fstring_sign _ | Tok_fstring_alt _ | Tok_fstring_zpad _ + | Tok_fstring_width_star _ + | Tok_fstring_width {fstring_width=(Constant _); _} + | Tok_fstring_pmode _ | Tok_fstring_precision_star _ + | Tok_fstring_precision {fstring_precision=(Constant _); _} + | Tok_fstring_radix _ | Tok_fstring_notation _ | Tok_fstring_pretty _ + | Tok_fstring_fmt {fstring_fmt=(Constant _); _} + | Tok_fstring_sep {fstring_sep=(Constant _); _} + | Tok_fstring_label _ | Tok_fstring_lparen_caret _ | Tok_fstring_caret_rparen _ + | Tok_fstring_rditto _ + | Tok_r32 {r32=(Constant _); _} + | Tok_r64 {r64=(Constant _); _} + | Tok_u8 {u8=(Constant _); _} + | Tok_i8 {i8=(Constant _); _} + | Tok_u16 {u16=(Constant _); _} + | Tok_i16 {i16=(Constant _); _} + | Tok_u32 {u32=(Constant _); _} + | Tok_i32 {i32=(Constant _); _} + | Tok_u64 {u64=(Constant _); _} + | Tok_i64 {i64=(Constant _); _} + | Tok_u128 {u128=(Constant _); _} + | Tok_i128 {i128=(Constant _); _} + | Tok_u256 {u256=(Constant _); _} + | Tok_i256 {i256=(Constant _); _} + | Tok_u512 {u512=(Constant _); _} + | Tok_i512 {i512=(Constant _); _} + | Tok_nat {nat=(Constant _); _} + | Tok_zint {zint=(Constant _); _} + | Tok_end_of_input _ | Tok_misaligned _ -> [] (* Malformations. *) - | Tok_source_directive (Malformed mals) - | Tok_indent (Malformed mals) - | Tok_dedent (Malformed mals) - | Tok_paren_comment (Malformed mals) - | Tok_uident (Malformed mals) - | Tok_codepoint (Malformed mals) - | Tok_rstring (Malformed mals) - | Tok_istring (Malformed mals) - | Tok_fstring_interpolated (Malformed mals) - | Tok_fstring_pad (Malformed mals) - | Tok_fstring_width (Malformed mals) - | Tok_fstring_precision (Malformed mals) - | Tok_fstring_fmt (Malformed mals) - | Tok_fstring_sep (Malformed mals) - | Tok_r32 (Malformed mals) - | Tok_r64 (Malformed mals) - | Tok_u8 (Malformed mals) - | Tok_i8 (Malformed mals) - | Tok_u16 (Malformed mals) - | Tok_i16 (Malformed mals) - | Tok_u32 (Malformed mals) - | Tok_i32 (Malformed mals) - | Tok_u64 (Malformed mals) - | Tok_i64 (Malformed mals) - | Tok_u128 (Malformed mals) - | Tok_i128 (Malformed mals) - | Tok_u256 (Malformed mals) - | Tok_i256 (Malformed mals) - | Tok_u512 (Malformed mals) - | Tok_i512 (Malformed mals) - | Tok_nat (Malformed mals) - | Tok_zint (Malformed mals) - | Tok_error mals + | Tok_source_directive {source_directive=(Malformed mals); _} + | Tok_indent {indent=(Malformed mals); _} + | Tok_dedent {dedent=(Malformed mals); _} + | Tok_paren_comment {paren_comment=(Malformed mals); _} + | Tok_uident {uident=(Malformed mals); _} + | Tok_codepoint {codepoint=(Malformed mals); _} + | Tok_rstring {rstring=(Malformed mals); _} + | Tok_istring {istring=(Malformed mals); _} + | Tok_fstring_interpolated {fstring_interpolated=(Malformed mals); _} + | Tok_fstring_pad {fstring_pad=(Malformed mals); _} + | Tok_fstring_width {fstring_width=(Malformed mals); _} + | Tok_fstring_precision {fstring_precision=(Malformed mals); _} + | Tok_fstring_fmt {fstring_fmt=(Malformed mals); _} + | Tok_fstring_sep {fstring_sep=(Malformed mals); _} + | Tok_r32 {r32=(Malformed mals); _} + | Tok_r64 {r64=(Malformed mals); _} + | Tok_u8 {u8=(Malformed mals); _} + | Tok_i8 {i8=(Malformed mals); _} + | Tok_u16 {u16=(Malformed mals); _} + | Tok_i16 {i16=(Malformed mals); _} + | Tok_u32 {u32=(Malformed mals); _} + | Tok_i32 {i32=(Malformed mals); _} + | Tok_u64 {u64=(Malformed mals); _} + | Tok_i64 {i64=(Malformed mals); _} + | Tok_u128 {u128=(Malformed mals); _} + | Tok_i128 {i128=(Malformed mals); _} + | Tok_u256 {u256=(Malformed mals); _} + | Tok_i256 {i256=(Malformed mals); _} + | Tok_u512 {u512=(Malformed mals); _} + | Tok_i512 {i512=(Malformed mals); _} + | Tok_nat {nat=(Malformed mals); _} + | Tok_zint {zint=(Malformed mals); _} + | Tok_error {error=mals; _} -> mals end -module ConcreteToken = struct - type t = { - atok: AbstractToken.t; - source: Source.Slice.t; - } - - let init atok source = - {atok; source} - - let ctok_at ~base ~past atok = - let source = Source.Slice.of_cursors ~base ~past in - init atok source - - let atok t = - t.atok - - let source t = - t.source - - let pp t formatter = - formatter - |> Fmt.fmt "{atok=" |> AbstractToken.pp t.atok - |> Fmt.fmt "; source=" |> Source.Slice.pp t.source - |> Fmt.fmt "}" -end - (* Upon entry into a node's handler function, the codepoint just acted upon is bracketed by * `pcursor` and `curusor`. NB: `eoi[01]` handlers are called when no more input exists, which means * that `cursor` is at the end of input. *) @@ -803,7 +1372,7 @@ type line_state = (* Just after leading whitespace token. Dentation adjustment may be required. *) | Line_whitespace - (* First non-whitspace is a paren comment or bslash-nl continuation starting at specified column; + (* First non-whitespace is a paren comment or bslash-nl continuation starting at specified column; * no non-whitespace/comment tokens scanned yet, but subsequent whitespace and/or paren comments * may have been scanned. Dentation adjustment may be required, but if so, the specified starting * column is used rather than that of the first non-whitespace/comment token. *) @@ -824,7 +1393,7 @@ let pp_line_state line_state formatter = * completing specifier scanning the state transition to `Fstring_body`, which is capable of * initiating the scan of a subsequent specifier. *) type fstring_state = - | Fstring_spec_pct_seen of ConcreteToken.t list + | Fstring_spec_pct_seen of Token.t list | Fstring_spec_pad_seen | Fstring_spec_just_seen | Fstring_spec_sign_seen @@ -845,14 +1414,14 @@ type fstring_state = | Fstring_spec_fmt_seen | Fstring_spec_sep_seen | Fstring_expr_value of Source.Cursor.t option (* Cursor is start of captured value expression. *) - | Fstring_value_seen of ConcreteToken.t + | Fstring_value_seen of Token.t | Fstring_body - | Fstring_rditto_seen of ConcreteToken.t + | Fstring_rditto_seen of Token.t let pp_fstring_state fstring_state formatter = match fstring_state with - | Fstring_spec_pct_seen ctoks -> - formatter |> Fmt.fmt "Fstring_spec_pct " |> (List.pp ConcreteToken.pp) ctoks + | Fstring_spec_pct_seen toks -> + formatter |> Fmt.fmt "Fstring_spec_pct " |> (List.pp Token.pp) toks | Fstring_spec_pad_seen -> formatter |> Fmt.fmt "Fstring_spec_pad_seen" | Fstring_spec_just_seen -> formatter |> Fmt.fmt "Fstring_spec_just_seen" | Fstring_spec_sign_seen -> formatter |> Fmt.fmt "Fstring_spec_sign_seen" @@ -874,9 +1443,9 @@ let pp_fstring_state fstring_state formatter = | Fstring_spec_sep_seen -> formatter |> Fmt.fmt "Fstring_spec_sep_seen" | Fstring_expr_value cursor_opt -> formatter |> Fmt.fmt "Fstring_exp_value " |> (Option.pp Source.Cursor.pp) cursor_opt - | Fstring_value_seen ctok -> formatter |> Fmt.fmt "Fstring_spec_pct " |> ConcreteToken.pp ctok + | Fstring_value_seen tok -> formatter |> Fmt.fmt "Fstring_spec_pct " |> Token.pp tok | Fstring_body -> formatter |> Fmt.fmt "Fstring_body" - | Fstring_rditto_seen ctok -> formatter |> Fmt.fmt "Fstring_spec_pct " |> ConcreteToken.pp ctok + | Fstring_rditto_seen tok -> formatter |> Fmt.fmt "Fstring_spec_pct " |> Token.pp tok type t = { tok_base: Source.Cursor.t; @@ -929,10 +1498,13 @@ let in_fstring t = * Convenience routines for reporting malformations. *) let malformation ~base ~past description = - AbstractToken.Rendition.Malformation.init ~base ~past ~description + Token.Rendition.Malformation.init ~base ~past ~description + +let malformation_incl View.{cursor; _} t description = + malformation ~base:t.tok_base ~past:cursor description let malformed malformation = - AbstractToken.Rendition.of_mals [malformation] + Token.Rendition.of_mals [malformation] let unexpected_codepoint_source_directive base past = malformation ~base ~past "Unexpected codepoint in source directive" @@ -1005,7 +1577,7 @@ module State = struct m: Realer.t; point_shift: sint; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1016,7 +1588,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m = R {m; point_shift=Sint.zero} @@ -1065,7 +1637,7 @@ module State = struct m: real; ds: real; (* (ds * digit) scales digit to its fractional value. *) } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1076,7 +1648,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m = R {m; ds=1. /. 10.} @@ -1102,7 +1674,7 @@ module State = struct | R of { m: Realer.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1112,7 +1684,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m = R {m} @@ -1130,7 +1702,7 @@ module State = struct | R of { m: real; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1140,7 +1712,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m = R {m} @@ -1159,7 +1731,7 @@ module State = struct m: Realer.t; exp_sign: Sign.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1170,7 +1742,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m ~exp_sign = R {m; exp_sign} @@ -1189,7 +1761,7 @@ module State = struct m: real; exp_sign: Sign.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1200,7 +1772,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m ~exp_sign = R {m; exp_sign} @@ -1220,7 +1792,7 @@ module State = struct exp_sign: Sign.t; exp: Nat.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1232,7 +1804,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m ~exp_sign ~exp = R {m; exp_sign; exp} @@ -1268,7 +1840,7 @@ module State = struct exp_sign: Sign.t; exp: Nat.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1280,7 +1852,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~m ~exp_sign ~exp = R {m; exp_sign; exp} @@ -1314,7 +1886,7 @@ module State = struct | R of { r: Realer.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1324,7 +1896,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~r = R {r} @@ -1342,7 +1914,7 @@ module State = struct | R of { r: real; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1352,7 +1924,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~r = R {r} @@ -1371,7 +1943,7 @@ module State = struct r: Realer.t; bitwidth: Nat.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1382,7 +1954,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~r ~bitwidth = R {r; bitwidth} @@ -1405,7 +1977,7 @@ module State = struct r: real; bitwidth: Nat.t; } - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1416,7 +1988,7 @@ module State = struct |> Fmt.fmt "}" | Malformations mals -> formatter - |> Fmt.fmt "Malformations " |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "Malformations " |> (List.pp Token.Rendition.Malformation.pp) mals let init ~r ~bitwidth = R {r; bitwidth} @@ -1544,13 +2116,13 @@ module State = struct module Src_directive_path = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; } let pp {mals; path} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "}" @@ -1567,14 +2139,14 @@ module State = struct module Src_directive_path_bslash = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; bslash_cursor: Source.Cursor.t; } let pp {mals; path; bslash_cursor} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; bslash_cursor=" |> Text.Pos.pp (Source.Cursor.pos bslash_cursor) |> Fmt.fmt "}" @@ -1592,14 +2164,14 @@ module State = struct module Src_directive_path_bslash_u_lcurly = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; bslash_cursor: Source.Cursor.t; } let pp {mals; path; bslash_cursor} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; bslash_cursor=" |> Text.Pos.pp (Source.Cursor.pos bslash_cursor) |> Fmt.fmt "}" @@ -1613,7 +2185,7 @@ module State = struct module Src_directive_path_bslash_u_lcurly_hex = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; bslash_cursor: Source.Cursor.t; hex: Nat.t; @@ -1621,7 +2193,7 @@ module State = struct let pp {mals; path; bslash_cursor; hex} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; bslash_cursor=" |> Text.Pos.pp (Source.Cursor.pos bslash_cursor) |> Fmt.fmt "; hex=" |> Nat.fmt ~alt:true ~radix:Radix.Hex ~pretty:true hex @@ -1648,7 +2220,7 @@ module State = struct module Src_directive_line = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line_cursor: Source.Cursor.t; line: Nat.t option; @@ -1656,7 +2228,7 @@ module State = struct let pp {mals; path; line_cursor; line} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line_cursor=" |> Text.Pos.pp (Source.Cursor.pos line_cursor) |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line @@ -1671,14 +2243,14 @@ module State = struct module Src_directive_line_colon = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line: Nat.t option; } let pp {mals; path; line} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line |> Fmt.fmt "}" @@ -1692,7 +2264,7 @@ module State = struct module Src_directive_indent = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line: Nat.t option; indent_cursor: Source.Cursor.t; @@ -1701,7 +2273,7 @@ module State = struct let pp {mals; path; line; indent_cursor; indent} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line |> Fmt.fmt "; indent_cursor=" |> Text.Pos.pp (Source.Cursor.pos indent_cursor) @@ -1720,14 +2292,14 @@ module State = struct module Src_directive_indent_0 = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line: Nat.t option; } let pp {mals; path; line} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line |> Fmt.fmt "}" @@ -1741,7 +2313,7 @@ module State = struct module Src_directive_indent_plus = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line: Nat.t option; indent: Nat.t option; @@ -1749,7 +2321,7 @@ module State = struct let pp {mals; path; line; indent} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line |> Fmt.fmt "; indent=" |> (Option.pp Nat.pp) indent @@ -1764,7 +2336,7 @@ module State = struct module Src_directive_omit = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; path: codepoint list option; line: Nat.t option; indent: Nat.t option; @@ -1774,7 +2346,7 @@ module State = struct let pp {mals; path; line; indent; omit_cursor; omit} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; path=" |> (Option.pp (List.pp Codepoint.pp)) path |> Fmt.fmt "; line=" |> (Option.pp Nat.pp) line |> Fmt.fmt "; indent=" |> (Option.pp Nat.pp) indent @@ -1846,12 +2418,12 @@ module State = struct module Codepoint_mal = struct type t = { - mal: AbstractToken.Rendition.Malformation.t; + mal: Token.Rendition.Malformation.t; } let pp {mal} formatter = formatter - |> Fmt.fmt "{mal=" |> AbstractToken.Rendition.Malformation.pp mal |> Fmt.fmt "}" + |> Fmt.fmt "{mal=" |> Token.Rendition.Malformation.pp mal |> Fmt.fmt "}" let init ~mal = {mal} @@ -1859,13 +2431,13 @@ module State = struct module Rstring_ltag = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; ltag_base: Source.Cursor.t; } let pp {mals; ltag_base} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; ltag_base=" |> Source.Cursor.pp ltag_base |> Fmt.fmt "}" @@ -1878,14 +2450,14 @@ module State = struct module Rstring_body = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; ltag: Source.Slice.t; body_base: Source.Cursor.t; } let pp {mals; ltag; body_base} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; ltag=" |> Source.Slice.pp ltag |> Fmt.fmt "; body_base=" |> Source.Cursor.pp body_base |> Fmt.fmt "}" @@ -1899,7 +2471,7 @@ module State = struct module Rstring_rtag = struct type t = { - mals: AbstractToken.Rendition.Malformation.t list; + mals: Token.Rendition.Malformation.t list; ltag: Source.Slice.t; body: Source.Slice.t; ltag_cursor: Source.Cursor.t; @@ -1907,7 +2479,7 @@ module State = struct let pp {mals; ltag; ltag_cursor; body} formatter = formatter - |> Fmt.fmt "{mals=" |> (List.pp AbstractToken.Rendition.Malformation.pp) mals + |> Fmt.fmt "{mals=" |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt "; ltag=" |> Source.Slice.pp ltag |> Fmt.fmt "; body=" |> Source.Slice.pp body |> Fmt.fmt "; ltag_cursor=" |> Source.Cursor.pp ltag_cursor @@ -1926,7 +2498,7 @@ module State = struct module CodepointAccum = struct type t = | Codepoints of codepoint list - | Malformations of AbstractToken.Rendition.Malformation.t list + | Malformations of Token.Rendition.Malformation.t list let pp t formatter = match t with @@ -1934,7 +2506,7 @@ module State = struct formatter |> Fmt.fmt "(Codepoints " |> (List.pp Codepoint.pp) cps |> Fmt.fmt ")" | Malformations mals -> formatter |> Fmt.fmt "(Malformations " - |> (List.pp AbstractToken.Rendition.Malformation.pp) mals |> Fmt.fmt ")" + |> (List.pp Token.Rendition.Malformation.pp) mals |> Fmt.fmt ")" let empty = Codepoints [] @@ -1946,14 +2518,13 @@ module State = struct | Codepoints _ -> Malformations [mal] | Malformations mals -> Malformations (mal :: mals) - let to_atok_istring = function - | Codepoints cps -> AbstractToken.Tok_istring (Constant (String.of_list_rev cps)) - | Malformations mals -> AbstractToken.Tok_istring (AbstractToken.Rendition.of_mals mals) + let to_istring = function + | Codepoints cps -> Token.Rendition.Constant (String.of_list_rev cps) + | Malformations mals -> Token.Rendition.of_mals mals - let to_atok_fstring_interpolated = function - | Codepoints cps -> AbstractToken.Tok_fstring_interpolated (Constant (String.of_list_rev cps)) - | Malformations mals -> - AbstractToken.Tok_fstring_interpolated (AbstractToken.Rendition.of_mals mals) + let to_fstring_interpolated = function + | Codepoints cps -> Token.Rendition.Constant (String.of_list_rev cps) + | Malformations mals -> Token.Rendition.of_mals mals end module Istring_body = struct @@ -2430,7 +3001,7 @@ module Dfa = struct type transition = | Advance of View.t * State.t | Retry of State.t - | Accept of ConcreteToken.t + | Accept of Token.t type action0 = View.t -> t -> t * transition and node0 = { @@ -2496,22 +3067,31 @@ module Dfa = struct let t', transition = action1 state_payload view' t in t', transition - let accept_ctok ctok cursor t = - {t with tok_base=cursor}, Accept ctok + let accept_tok tok cursor t = + {t with tok_base=cursor}, Accept tok + + let accept_tok_incl tok View.{cursor; _} t = + accept_tok tok cursor t - let accept atok cursor t = - accept_ctok (ConcreteToken.ctok_at ~base:t.tok_base ~past:cursor atok) cursor t + let accept_tok_excl tok View.{pcursor; _} t = + accept_tok tok pcursor t - let accept_incl atok View.{cursor; _} t = - accept atok cursor t + let accept_tok_pexcl tok View.{ppcursor; _} t = + accept_tok tok ppcursor t - let accept_excl atok View.{pcursor; _} t = - accept atok pcursor t + let source_at cursor t = + Source.Slice.of_cursors ~base:t.tok_base ~past:cursor - let accept_pexcl atok View.{ppcursor; _} t = - accept atok ppcursor t + let source_incl View.{cursor; _} t = + source_at cursor t - let accept_source_directive atok View.{cursor; _} t = + let source_excl View.{pcursor; _} t = + source_at pcursor t + + let source_pexcl {View.ppcursor; _} t = + source_at ppcursor t + + let accept_source_directive source_directive View.{cursor; _} t = (* Treat the directive as having come from the unbiased source. Rebias the cursors such that * they are unbiased. This is different than unbiasing, in that it preserves the cursors' bias * chain, which enables recovering source bias when moving leftwards. *) @@ -2524,13 +3104,13 @@ module Dfa = struct end in f base cursor end in - let cursor', level' = match atok with - | AbstractToken.Tok_source_directive Constant {path=None; line=None; io=None} + let cursor', level' = match source_directive with + | Token.Rendition.Constant Token.{path=None; line=None; io=None} -> begin (* Rebias the source such that it is unbiased. *) past, Level.reset t.level end - | AbstractToken.Tok_source_directive Constant {path; line; io} -> begin + | Constant {path; line; io} -> begin let source = Source.Cursor.container past in let path = match path with | None -> Source.path source @@ -2552,17 +3132,17 @@ module Dfa = struct let source' = Source.bias ~path ~line_bias ~col_bias source in (Source.Cursor.bias source' past), Level.embed (indent / 4L) t.level end - | AbstractToken.Tok_source_directive Malformed _ -> past, t.level - | _ -> not_reached () + | Malformed _ -> past, t.level in - {t with tok_base=cursor'; level=level'}, Accept (ConcreteToken.ctok_at ~base ~past atok) + let source = Source.Slice.of_cursors ~base ~past in + let tok = Token.Tok_source_directive {source; source_directive} in + {t with tok_base=cursor'; level=level'}, Accept tok - let accept_line_break atok cursor t = - {t with tok_base=cursor; line_state=Line_begin}, - Accept (ConcreteToken.ctok_at ~base:t.tok_base ~past:cursor atok) + let accept_line_break tok cursor t = + {t with tok_base=cursor; line_state=Line_begin}, Accept tok - let accept_line_break_incl atok View.{cursor; _} t = - accept_line_break atok cursor t + let accept_line_break_incl tok View.{cursor; _} t = + accept_line_break tok cursor t let fstring_push fstring_state t = {t with fstring_states=fstring_state :: t.fstring_states} @@ -2573,33 +3153,29 @@ module Dfa = struct let fstring_trans fstring_state t = fstring_push fstring_state (fstring_pop t) - let accept_fstring_push_ctok fstring_state ctok cursor t = - accept_ctok ctok cursor (fstring_push fstring_state t) + let accept_fstring_push_tok fstring_state tok cursor t = + accept_tok tok cursor (fstring_push fstring_state t) - let accept_fstring_push_ctok_incl fstring_state ctok View.{cursor; _} t = - accept_fstring_push_ctok fstring_state ctok cursor t + let accept_fstring_push_tok_incl fstring_state tok View.{cursor; _} t = + accept_fstring_push_tok fstring_state tok cursor t - let accept_fstring_pop_ctok ctok cursor t = - accept_ctok ctok cursor (fstring_pop t) + let accept_fstring_pop_tok tok cursor t = + accept_tok tok cursor (fstring_pop t) - let accept_fstring_pop atok cursor t = - accept_fstring_pop_ctok (ConcreteToken.ctok_at ~base:t.tok_base ~past:cursor atok) cursor t + let accept_fstring_trans_tok fstring_state tok cursor t = + accept_tok tok cursor (fstring_trans fstring_state t) - let accept_fstring_trans_ctok fstring_state ctok cursor t = - accept_ctok ctok cursor (fstring_trans fstring_state t) + let accept_fstring_trans_tok_incl fstring_state tok View.{cursor; _} t = + accept_fstring_trans_tok fstring_state tok cursor t - let accept_fstring_trans_ctok_incl fstring_state ctok View.{cursor; _} t = - accept_fstring_trans_ctok fstring_state ctok cursor t + let accept_fstring_trans fstring_state tok cursor t = + accept_fstring_trans_tok fstring_state tok cursor t - let accept_fstring_trans fstring_state atok cursor t = - accept_fstring_trans_ctok fstring_state (ConcreteToken.ctok_at ~base:t.tok_base ~past:cursor - atok) cursor t + let accept_fstring_trans_incl trans tok View.{cursor; _} t = + accept_fstring_trans trans tok cursor t - let accept_fstring_trans_incl trans atok View.{cursor; _} t = - accept_fstring_trans trans atok cursor t - - let accept_fstring_trans_excl trans atok View.{pcursor; _} t = - accept_fstring_trans trans atok pcursor t + let accept_fstring_trans_excl trans tok View.{pcursor; _} t = + accept_fstring_trans trans tok pcursor t let retry_fstring_eoi t = let rec f t = begin @@ -2619,18 +3195,19 @@ module Dfa = struct let node0_start = { edges0=map_of_cps_alist [ - (",", accept_incl Tok_comma); - (";", accept_incl Tok_semi); + (",", fun view t -> accept_tok_incl (Tok_comma {source=source_incl view t}) view t); + (";", fun view t -> accept_tok_incl (Tok_semi {source=source_incl view t}) view t); ("(", advance State_lparen); - (")", accept_incl Tok_rparen); + (")", fun view t -> accept_tok_incl (Tok_rparen {source=source_incl view t}) view t); ("[", advance State_lbrack); - ("]", accept_incl Tok_rbrack); - ("{", accept_incl Tok_lcurly); - ("}", accept_incl Tok_rcurly); - ("\\", accept_incl Tok_bslash); - ("&", accept_incl Tok_amp); - ("!", accept_incl Tok_xmark); - ("\n", accept_line_break_incl Tok_whitespace); + ("]", fun view t -> accept_tok_incl (Tok_rbrack {source=source_incl view t}) view t); + ("{", fun view t -> accept_tok_incl (Tok_lcurly {source=source_incl view t}) view t); + ("}", fun view t -> accept_tok_incl (Tok_rcurly {source=source_incl view t}) view t); + ("\\", fun view t -> accept_tok_incl (Tok_bslash {source=source_incl view t}) view t); + ("&", fun view t -> accept_tok_incl (Tok_amp {source=source_incl view t}) view t); + ("!", fun view t -> accept_tok_incl (Tok_xmark {source=source_incl view t}) view t); + ("\n", fun view t -> + accept_line_break_incl (Tok_whitespace {source=source_incl view t}) view t); ("~", advance State_tilde); ("?", advance State_qmark); ("*", advance State_star); @@ -2662,53 +3239,55 @@ module Dfa = struct advance (State_integer_dec (State.Integer_dec.init ~n:digit)) view t ); ]; - default0=(fun (View.{cursor; _} as view) t -> - let mal = malformation ~base:t.tok_base ~past:cursor "Unsupported codepoint" in - accept_incl (Tok_error [mal]) view t + default0=(fun view t -> + let mal = malformation_incl view t "Unsupported codepoint" in + accept_tok_incl (Tok_error {source=source_incl view t; error=[mal]}) view t ); eoi0=(fun view t -> - let accept_dentation atok View.{cursor; _} t = begin - accept atok cursor {t with line_state=Line_body} - end in match Level.level t.level, t.line_state with - | 0L, Line_begin -> accept_dentation Tok_line_delim view t - | 0L, _ -> accept_incl Tok_end_of_input view t - | _ -> accept_dentation (Tok_dedent (Constant ())) view {t with level=Level.pred t.level} + | 0L, Line_begin -> accept_tok_incl (Tok_line_delim {source=source_incl view t}) view t + | 0L, _ -> accept_tok_incl (Tok_end_of_input {source=source_incl view t}) view t + | _ -> begin + accept_tok_incl (Tok_dedent { + source=source_incl view t; + dedent=(Constant ()) + }) view {t with level=Level.pred t.level} + end ); } let node0_lparen = { edges0=map_of_cps_alist [ - ("|", accept_incl Tok_lcapture); + ("|", fun view t -> accept_tok_incl (Tok_lcapture {source=source_incl view t}) view t); ("*", advance (State_paren_comment_body (State.Paren_comment_body.init ~nesting:1L))); ]; - default0=accept_excl Tok_lparen; - eoi0=accept_incl Tok_lparen; + default0=(fun view t -> accept_tok_excl (Tok_lparen {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_lparen {source=source_incl view t}) view t); } let node0_lbrack = { edges0=map_of_cps_alist [ - ("|", accept_incl Tok_larray); + ("|", fun view t -> accept_tok_incl (Tok_larray {source=source_incl view t}) view t); (":", advance State_src_directive_colon); ]; - default0=accept_excl Tok_lbrack; - eoi0=accept_incl Tok_lbrack; + default0=(fun view t -> accept_tok_excl (Tok_lbrack {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_lbrack {source=source_incl view t}) view t); } let node0_tilde = { edges0=map_of_cps_alist [ (operator_cps, advance State_operator_tilde); ]; - default0=accept_excl Tok_tilde; - eoi0=accept_incl Tok_tilde; + default0=(fun view t -> accept_tok_excl (Tok_tilde {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_tilde {source=source_incl view t}) view t); } let node0_qmark = { edges0=map_of_cps_alist [ (operator_cps, advance State_operator_qmark); ]; - default0=accept_excl Tok_qmark; - eoi0=accept_incl Tok_qmark; + default0=(fun view t -> accept_tok_excl (Tok_qmark {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_qmark {source=source_incl view t}) view t); } let node0_star = { @@ -2717,18 +3296,20 @@ module Dfa = struct (Set.diff (cpset_of_cps operator_cps) (cpset_of_cps "*"), advance State_operator_star); ]; - default0=accept_excl (Tok_star_op "*"); - eoi0=accept_incl (Tok_star_op "*"); + default0=(fun view t -> + accept_tok_excl (Tok_star_op {source=source_excl view t; star_op="*"}) view t); + eoi0=(fun view t -> + accept_tok_incl (Tok_star_op {source=source_incl view t; star_op="*"}) view t); } let node0_bar = { edges0=map_of_cps_alist [ - (")", accept_incl Tok_rcapture); - ("]", accept_incl Tok_rarray); + (")", fun view t -> accept_tok_incl (Tok_rcapture {source=source_incl view t}) view t); + ("]", fun view t -> accept_tok_incl (Tok_rarray {source=source_incl view t}) view t); (operator_cps, advance State_operator_bar); ]; - default0=accept_excl Tok_bar; - eoi0=accept_incl Tok_bar; + default0=(fun view t -> accept_tok_excl (Tok_bar {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_bar {source=source_incl view t}) view t); } let node0_uscore = { @@ -2738,28 +3319,28 @@ module Dfa = struct (ident_uident_cps, advance State_ident_uident); (ident_continue_cps, advance State_ident_mal); ]; - default0=accept_excl Tok_uscore; - eoi0=accept_incl Tok_uscore; + default0=(fun view t -> accept_tok_excl (Tok_uscore {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_uscore {source=source_incl view t}) view t); } let node0_tick = { edges0=map_of_cps_alist [ (String.join [" _"; ident_uident_cps], advance State_tick_lookahead); - ("\n", accept_excl Tok_tick); + ("\n", fun view t -> accept_tok_excl (Tok_tick {source=source_excl view t}) view t); ]; default0=(fun _view t -> retry State_codepoint_tick t); - eoi0=accept_incl Tok_tick; + eoi0=(fun view t -> accept_tok_incl (Tok_tick {source=source_incl view t}) view t); } let node0_tick_lookahead = { edges0=map_of_cps_alist [ - ("'", fun View.{ppcursor; cursor; _} t -> + ("'", fun (View.{ppcursor; _} as view) t -> let cp = Source.Cursor.rget ppcursor in - accept (Tok_codepoint (Constant cp)) cursor t + accept_tok_incl (Tok_codepoint {source=source_incl view t; codepoint=Constant cp}) view t ); ]; - default0=accept_pexcl Tok_tick; - eoi0=accept_excl Tok_tick; + default0=(fun view t -> accept_tok_pexcl (Tok_tick {source=source_pexcl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_tick {source=source_incl view t}) view t); } module Real = struct @@ -2768,9 +3349,8 @@ module Dfa = struct | Subtype_r64 let accept_mals mals cursor t = - let open AbstractToken in - let malformed = Rendition.of_mals mals in - accept (Tok_r64 malformed) cursor t + let malformed = Token.Rendition.of_mals mals in + accept_tok (Tok_r64 {source=source_at cursor t; r64=malformed}) cursor t let accept_mals_incl mals View.{cursor; _} t = accept_mals mals cursor t @@ -2779,20 +3359,23 @@ module Dfa = struct accept_mals mals pcursor t let accept_precise subtype ~r cursor t = - let open AbstractToken in - let atok = match subtype with - | Subtype_r32 -> Tok_r32 ( - match Realer.to_r32_opt r with - | Some r32 -> (Constant r32) + let open Token in + let source = source_at cursor t in + let tok = match subtype with + | Subtype_r32 -> Tok_r32 { + source; + r32=match Realer.to_r32_opt r with + | Some r32 -> Constant r32 | None -> malformed (out_of_range_real t.tok_base cursor) - ) - | Subtype_r64 -> Tok_r64 ( - match Realer.to_r64_opt r with - | Some r64 -> (Constant r64) + } + | Subtype_r64 -> Tok_r64 { + source; + r64=match Realer.to_r64_opt r with + | Some r64 -> Constant r64 | None -> malformed (out_of_range_real t.tok_base cursor) - ) + } in - accept atok cursor t + accept_tok tok cursor t let accept_precise_incl subtype ~r View.{cursor; _} t = accept_precise subtype ~r cursor t @@ -2801,12 +3384,13 @@ module Dfa = struct accept_precise subtype ~r pcursor t let accept_approx subtype ~r cursor t = - let open AbstractToken in - let atok = match subtype with - | Subtype_r32 -> Tok_r32 (Constant r) - | Subtype_r64 -> Tok_r64 (Constant r) + let open Token in + let source = source_at cursor t in + let tok = match subtype with + | Subtype_r32 -> Tok_r32 {source; r32=Constant r} + | Subtype_r64 -> Tok_r64 {source; r64=Constant r} in - accept atok cursor t + accept_tok tok cursor t let accept_approx_incl subtype ~r View.{cursor; _} t = accept_approx subtype ~r cursor t @@ -3459,26 +4043,26 @@ module Dfa = struct | Some limit when Nat.(n <= limit) -> None | Some limit -> Some limit in - let open AbstractToken in - let atok = match limit with + let source = source_at cursor t in + let tok = match limit with | Some limit -> begin let mal = out_of_range_int radix limit t.tok_base cursor in - let malformed = Rendition.of_mals [mal] in + let malformed = Token.Rendition.of_mals [mal] in match subtype with - | Subtype_u8 -> Tok_u8 malformed - | Subtype_i8 -> Tok_i8 malformed - | Subtype_u16 -> Tok_u16 malformed - | Subtype_i16 -> Tok_i16 malformed - | Subtype_u32 -> Tok_u32 malformed - | Subtype_i32 -> Tok_i32 malformed - | Subtype_u64 -> Tok_u64 malformed - | Subtype_i64 -> Tok_i64 malformed - | Subtype_u128 -> Tok_u128 malformed - | Subtype_i128 -> Tok_i128 malformed - | Subtype_u256 -> Tok_u256 malformed - | Subtype_i256 -> Tok_i256 malformed - | Subtype_u512 -> Tok_u512 malformed - | Subtype_i512 -> Tok_i512 malformed + | Subtype_u8 -> Token.Tok_u8 {source; u8=malformed} + | Subtype_i8 -> Tok_i8 {source; i8=malformed} + | Subtype_u16 -> Tok_u16 {source; u16=malformed} + | Subtype_i16 -> Tok_i16 {source; i16=malformed} + | Subtype_u32 -> Tok_u32 {source; u32=malformed} + | Subtype_i32 -> Tok_i32 {source; i32=malformed} + | Subtype_u64 -> Tok_u64 {source; u64=malformed} + | Subtype_i64 -> Tok_i64 {source; i64=malformed} + | Subtype_u128 -> Tok_u128 {source; u128=malformed} + | Subtype_i128 -> Tok_i128 {source; i128=malformed} + | Subtype_u256 -> Tok_u256 {source; u256=malformed} + | Subtype_i256 -> Tok_i256 {source; i256=malformed} + | Subtype_u512 -> Tok_u512 {source; u512=malformed} + | Subtype_i512 -> Tok_i512 {source; i512=malformed} | Subtype_nat | Subtype_zint -> not_reached () end @@ -3487,25 +4071,25 @@ module Dfa = struct * for signed types. Unsigned types could use `narrow_of_nat_hlt`, but range checking * was already done so there's no need to validate again. *) match subtype with - | Subtype_u8 -> Tok_u8 (Constant (U8.trunc_of_nat n)) - | Subtype_i8 -> Tok_i8 (Constant (I8.trunc_of_nat n)) - | Subtype_u16 -> Tok_u16 (Constant (U16.trunc_of_nat n)) - | Subtype_i16 -> Tok_i16 (Constant (I16.trunc_of_nat n)) - | Subtype_u32 -> Tok_u32 (Constant (U32.trunc_of_nat n)) - | Subtype_i32 -> Tok_i32 (Constant (I32.trunc_of_nat n)) - | Subtype_u64 -> Tok_u64 (Constant (U64.trunc_of_nat n)) - | Subtype_i64 -> Tok_i64 (Constant (I64.trunc_of_nat n)) - | Subtype_u128 -> Tok_u128 (Constant (U128.trunc_of_nat n)) - | Subtype_i128 -> Tok_i128 (Constant (I128.trunc_of_nat n)) - | Subtype_u256 -> Tok_u256 (Constant (U256.trunc_of_nat n)) - | Subtype_i256 -> Tok_i256 (Constant (I256.trunc_of_nat n)) - | Subtype_u512 -> Tok_u512 (Constant (U512.trunc_of_nat n)) - | Subtype_i512 -> Tok_i512 (Constant (I512.trunc_of_nat n)) - | Subtype_nat -> Tok_nat (Constant n) - | Subtype_zint -> Tok_zint (Constant (Nat.bits_to_zint n)) + | Subtype_u8 -> Tok_u8 {source; u8=Constant (U8.trunc_of_nat n)} + | Subtype_i8 -> Tok_i8 {source; i8=Constant (I8.trunc_of_nat n)} + | Subtype_u16 -> Tok_u16 {source; u16=Constant (U16.trunc_of_nat n)} + | Subtype_i16 -> Tok_i16 {source; i16=Constant (I16.trunc_of_nat n)} + | Subtype_u32 -> Tok_u32 {source; u32=Constant (U32.trunc_of_nat n)} + | Subtype_i32 -> Tok_i32 {source; i32=Constant (I32.trunc_of_nat n)} + | Subtype_u64 -> Tok_u64 {source; u64=Constant (U64.trunc_of_nat n)} + | Subtype_i64 -> Tok_i64 {source; i64=Constant (I64.trunc_of_nat n)} + | Subtype_u128 -> Tok_u128 {source; u128=Constant (U128.trunc_of_nat n)} + | Subtype_i128 -> Tok_i128 {source; i128=Constant (I128.trunc_of_nat n)} + | Subtype_u256 -> Tok_u256 {source; u256=Constant (U256.trunc_of_nat n)} + | Subtype_i256 -> Tok_i256 {source; i256=Constant (I256.trunc_of_nat n)} + | Subtype_u512 -> Tok_u512 {source; u512=Constant (U512.trunc_of_nat n)} + | Subtype_i512 -> Tok_i512 {source; i512=Constant (I512.trunc_of_nat n)} + | Subtype_nat -> Tok_nat {source; nat=Constant n} + | Subtype_zint -> Tok_zint {source; zint=Constant (Nat.bits_to_zint n)} end in - accept atok cursor t + accept_tok tok cursor t let accept_integer_incl ?subtype n radix View.{cursor; _} t = accept_integer ?subtype n radix cursor t @@ -3540,8 +4124,8 @@ module Dfa = struct match subtype_opt with | None -> begin let mal = unsupported_bitwidth t.tok_base cursor in - let malformed = AbstractToken.Rendition.of_mals [mal] in - accept (Tok_u64 malformed) cursor t + let malformed = Token.Rendition.of_mals [mal] in + accept_tok (Tok_u64 {source=source_at cursor t; u64=malformed}) cursor t end | Some subtype -> accept_integer ~subtype n radix cursor t @@ -3562,7 +4146,7 @@ module Dfa = struct let accept_mal cursor t = let mal = malformed (invalid_numerical t.tok_base cursor) in - accept (Tok_u64 mal) cursor t + accept_tok (Tok_u64 {source=source_at cursor t; u64=mal}) cursor t let accept_mal_incl View.{cursor; _} t = accept_mal cursor t @@ -3612,8 +4196,10 @@ module Dfa = struct advance (State_real_dec_dot (State.Real_dec_dot.mals ~mals:[mal])) view t ); ]; - default0=accept_excl (AbstractToken.Tok_r64 (Constant 0.)); - eoi0=accept_incl (AbstractToken.Tok_r64 (Constant 0.)); + default0=(fun view t -> + accept_tok_excl (Tok_r64 {source=source_excl view t; r64=(Constant 0.)}) view t); + eoi0=(fun view t -> + accept_tok_incl (Tok_r64 {source=source_incl view t; r64=(Constant 0.)}) view t); } let node0_0box ~base_cps ~state ~state_base_init = @@ -3868,43 +4454,40 @@ module Dfa = struct end module Ident = struct - let keyword_map = Map.of_alist (module String) [ - ("and", AbstractToken.Tok_and); - ("also", Tok_also); - ("as", Tok_as); - ("conceal", Tok_conceal); - ("effect", Tok_effect); - ("else", Tok_else); - ("expose", Tok_expose); - ("external", Tok_external); - ("false", Tok_false); - ("fn", Tok_fn); - ("function", Tok_function); - ("if", Tok_if); - ("import", Tok_import); - ("include", Tok_include); - ("lazy", Tok_lazy); - ("let", Tok_let); - ("match", Tok_match); - ("mutability", Tok_mutability); - ("of", Tok_of); - ("open", Tok_open); - ("or", Tok_or); - ("rec", Tok_rec); - ("then", Tok_then); - ("true", Tok_true); - ("type", Tok_type); - ("when", Tok_when); - ("with", Tok_with); - ] - let accept_uident cursor t = let uident_str = str_of_cursor cursor t in - let atok = match Map.get uident_str keyword_map with - | Some atok -> atok - | None -> Tok_uident (Constant uident_str) + let source = source_at cursor t in + let tok = match uident_str with + | "and" -> Token.Tok_and {source} + | "also" -> Token.Tok_also {source} + | "as" -> Token.Tok_as {source} + | "conceal" -> Token.Tok_conceal {source} + | "effect" -> Token.Tok_effect {source} + | "else" -> Token.Tok_else {source} + | "expose" -> Token.Tok_expose {source} + | "external" -> Token.Tok_external {source} + | "false" -> Token.Tok_false {source} + | "fn" -> Token.Tok_fn {source} + | "function" -> Token.Tok_function {source} + | "if" -> Token.Tok_if {source} + | "import" -> Token.Tok_import {source} + | "include" -> Token.Tok_include {source} + | "lazy" -> Token.Tok_lazy {source} + | "let" -> Token.Tok_let {source} + | "match" -> Token.Tok_match {source} + | "mutability" -> Token.Tok_mutability {source} + | "of" -> Token.Tok_of {source} + | "open" -> Token.Tok_open {source} + | "or" -> Token.Tok_or {source} + | "rec" -> Token.Tok_rec {source} + | "then" -> Token.Tok_then {source} + | "true" -> Token.Tok_true {source} + | "type" -> Token.Tok_type {source} + | "when" -> Token.Tok_when {source} + | "with" -> Token.Tok_with {source} + | _ -> Tok_uident {source; uident=Constant uident_str} in - accept atok cursor t + accept_tok tok cursor t let accept_uident_incl View.{cursor; _} t = accept_uident cursor t @@ -3914,7 +4497,7 @@ module Dfa = struct let accept_cident cursor t = let cident_str = str_of_cursor cursor t in - accept (Tok_cident cident_str) cursor t + accept_tok (Tok_cident {source=source_at cursor t; cident=cident_str}) cursor t let accept_cident_incl View.{cursor; _} t = accept_cident cursor t @@ -3932,7 +4515,7 @@ module Dfa = struct |> Fmt.to_string in let mal = malformed (malformation ~base:t.tok_base ~past:cursor description) in - accept (Tok_uident mal) cursor t + accept_tok (Tok_uident {source=source_at cursor t; uident=mal}) cursor t let accept_mal_incl View.{cursor; _} t = accept_mal cursor t @@ -3977,32 +4560,29 @@ module Dfa = struct end module Operator = struct - let operator_map = ( - let open AbstractToken in - Map.of_alist (module String) [ - ("|", Tok_bar); - (":", Tok_colon); - ("::", Tok_colon_colon); - (":=", Tok_colon_eq); - (".", Tok_dot); - ("..", Tok_dot_dot); - ("-", Tok_minus); - ("^", Tok_caret); - ("<", Tok_lt); - ("<=", Tok_lt_eq); - ("=", Tok_eq); - ("<>", Tok_lt_gt); - (">=", Tok_gt_eq); - (">", Tok_gt); - ("->", Tok_arrow); - ("~->", Tok_carrow); - ]) - let accept_operator f cursor t = let op = str_of_cursor cursor t in - match Map.get op operator_map with - | None -> accept (f op) cursor t - | Some atok -> accept atok cursor t + let source = source_at cursor t in + let tok = match op with + | "|" -> Token.Tok_bar {source} + | ":" -> Tok_colon {source} + | "::" -> Tok_colon_colon {source} + | ":=" -> Tok_colon_eq {source} + | "." -> Tok_dot {source} + | ".." -> Tok_dot_dot {source} + | "-" -> Tok_minus {source} + | "^" -> Tok_caret {source} + | "<" -> Tok_lt {source} + | "<=" -> Tok_lt_eq {source} + | "=" -> Tok_eq {source} + | "<>" -> Tok_lt_gt {source} + | ">=" -> Tok_gt_eq {source} + | ">" -> Tok_gt {source} + | "->" -> Tok_arrow {source} + | "~->" -> Tok_carrow {source} + | _ -> f source op + in + accept_tok tok cursor t let accept_operator_incl f View.{cursor; _} t = accept_operator f cursor t @@ -4012,110 +4592,113 @@ module Dfa = struct let node0_tilde = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_tilde)]; - default0=accept_operator_excl (fun s -> Tok_tilde_op s); - eoi0=accept_operator_incl (fun s -> Tok_tilde_op s); + default0=accept_operator_excl (fun source s -> Tok_tilde_op {source; tilde_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_tilde_op {source; tilde_op=s}); } let node0_qmark = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_qmark)]; - default0=accept_operator_excl (fun s -> Tok_qmark_op s); - eoi0=accept_operator_incl (fun s -> Tok_qmark_op s); + default0=accept_operator_excl (fun source s -> Tok_qmark_op {source; qmark_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_qmark_op {source; qmark_op=s}); } let node0_star_star = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_star_star)]; - default0=accept_operator_excl (fun s -> Tok_star_star_op s); - eoi0=accept_operator_incl (fun s -> Tok_star_star_op s); + default0=accept_operator_excl (fun source s -> Tok_star_star_op {source; star_star_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_star_star_op {source; star_star_op=s}); } let node0_star = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_star)]; - default0=accept_operator_excl (fun s -> Tok_star_op s); - eoi0=accept_operator_incl (fun s -> Tok_star_op s); + default0=accept_operator_excl (fun source s -> Tok_star_op {source; star_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_star_op {source; star_op=s}); } let node0_slash = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_slash)]; - default0=accept_operator_excl (fun s -> Tok_slash_op s); - eoi0=accept_operator_incl (fun s -> Tok_slash_op s); + default0=accept_operator_excl (fun source s -> Tok_slash_op {source; slash_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_slash_op {source; slash_op=s}); } let node0_pct = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_pct)]; - default0=accept_operator_excl (fun s -> Tok_pct_op s); - eoi0=accept_operator_incl (fun s -> Tok_pct_op s); + default0=accept_operator_excl (fun source s -> Tok_pct_op {source; pct_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_pct_op {source; pct_op=s}); } let node0_plus = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_plus)]; - default0=accept_operator_excl (fun s -> Tok_plus_op s); - eoi0=accept_operator_incl (fun s -> Tok_plus_op s); + default0=accept_operator_excl (fun source s -> Tok_plus_op {source; plus_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_plus_op {source; plus_op=s}); } let node0_minus = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_minus)]; - default0=accept_operator_excl (fun s -> Tok_minus_op s); - eoi0=accept_operator_incl (fun s -> Tok_minus_op s); + default0=accept_operator_excl (fun source s -> Tok_minus_op {source; minus_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_minus_op {source; minus_op=s}); } let node0_at = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_at)]; - default0=accept_operator_excl (fun s -> Tok_at_op s); - eoi0=accept_operator_incl (fun s -> Tok_at_op s); + default0=accept_operator_excl (fun source s -> Tok_at_op {source; at_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_at_op {source; at_op=s}); } let node0_caret = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_caret)]; - default0=accept_operator_excl (fun s -> Tok_caret_op s); - eoi0=accept_operator_incl (fun s -> Tok_caret_op s); + default0=accept_operator_excl (fun source s -> Tok_caret_op {source; caret_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_caret_op {source; caret_op=s}); } let node0_dollar = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_dollar)]; - default0=accept_operator_excl (fun s -> Tok_dollar_op s); - eoi0=accept_operator_incl (fun s -> Tok_dollar_op s); + default0=accept_operator_excl (fun source s -> Tok_dollar_op {source; dollar_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_dollar_op {source; dollar_op=s}); } let node0_lt = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_lt)]; - default0=accept_operator_excl (fun s -> Tok_lt_op s); - eoi0=accept_operator_incl (fun s -> Tok_lt_op s); + default0=accept_operator_excl (fun source s -> Tok_lt_op {source; lt_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_lt_op {source; lt_op=s}); } let node0_eq = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_eq)]; - default0=accept_operator_excl (fun s -> Tok_eq_op s); - eoi0=accept_operator_incl (fun s -> Tok_eq_op s); + default0=accept_operator_excl (fun source s -> Tok_eq_op {source; eq_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_eq_op {source; eq_op=s}); } let node0_gt = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_gt)]; - default0=accept_operator_excl (fun s -> Tok_gt_op s); - eoi0=accept_operator_incl (fun s -> Tok_gt_op s); + default0=accept_operator_excl (fun source s -> Tok_gt_op {source; gt_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_gt_op {source; gt_op=s}); } let node0_bar = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_bar)]; - default0=accept_operator_excl (fun s -> Tok_bar_op s); - eoi0=accept_operator_incl (fun s -> Tok_bar_op s); + default0=accept_operator_excl (fun source s -> Tok_bar_op {source; bar_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_bar_op {source; bar_op=s}); } let node0_colon = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_colon)]; - default0=accept_operator_excl (fun s -> Tok_colon_op s); - eoi0=accept_operator_incl (fun s -> Tok_colon_op s); + default0=accept_operator_excl (fun source s -> Tok_colon_op {source; colon_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_colon_op {source; colon_op=s}); } let node0_dot = { edges0=map_of_cps_alist [(operator_cps, advance State_operator_dot)]; - default0=accept_operator_excl (fun s -> Tok_dot_op s); - eoi0=accept_operator_incl (fun s -> Tok_dot_op s); + default0=accept_operator_excl (fun source s -> Tok_dot_op {source; dot_op=s}); + eoi0=accept_operator_incl (fun source s -> Tok_dot_op {source; dot_op=s}); } end module ParenComment = struct let eoi1 _state View.{cursor; _} t = - accept (Tok_paren_comment (malformed (unterminated_comment t.tok_base cursor))) cursor t + accept_tok (Tok_paren_comment { + source=source_at cursor t; + paren_comment=malformed (unterminated_comment t.tok_base cursor)} + ) cursor t let default1 state view t = advance (State_paren_comment_body state) view t @@ -4147,7 +4730,12 @@ module Dfa = struct ("(", fun state view t -> advance (State_paren_comment_lparen state) view t); (")", fun {nesting} view t -> match nesting with - | 1L -> accept_incl (Tok_paren_comment (Constant ())) view t + | 1L -> begin + accept_tok_incl (Tok_paren_comment { + source=source_incl view t; + paren_comment=Constant () + }) view t + end | _ -> advance (State_paren_comment_body (State.Paren_comment_body.init ~nesting:(pred nesting))) view t @@ -4175,13 +4763,13 @@ module Dfa = struct let io = match indent, omit with | None, None -> None | Some indent, Some omit -> - Some AbstractToken.{indent=(Nat.to_u64_hlt indent); omit=(Nat.to_u64_hlt omit)} + Some Token.{indent=(Nat.to_u64_hlt indent); omit=(Nat.to_u64_hlt omit)} | Some _, None | None, Some _ -> not_reached () in - AbstractToken.Tok_source_directive (Constant {path; line; io}) + Token.Rendition.Constant Token.{path; line; io} end - | _ :: _ -> AbstractToken.Tok_source_directive (AbstractToken.Rendition.of_mals mals) + | _ :: _ -> Token.Rendition.of_mals mals let node0_colon = { edges0=map_of_cps_alist [ @@ -4192,9 +4780,9 @@ module Dfa = struct advance (State_src_directive_line (State.Src_directive_line.init ~mals:[] ~path:None ~line_cursor:pcursor ~line:(Some digit))) view t); ("]", fun view t -> - let atok = + let tok = render_source_directive ~mals:[] ~path:None ~line:None ~indent:None ~omit:None in - accept_source_directive atok view t + accept_source_directive tok view t ); ]; default0=(fun ({pcursor; cursor; _} as view) t -> @@ -4202,9 +4790,12 @@ module Dfa = struct advance (State_src_directive_line (State.Src_directive_line.init ~mals:[mal] ~path:None ~line_cursor:cursor ~line:None)) view t ); - eoi0=(fun {cursor; _} t -> + eoi0=(fun ({cursor; _} as view) t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals [mal])) cursor t + accept_tok (Tok_source_directive { + source=source_incl view t; + source_directive=Token.Rendition.of_mals [mal] + }) cursor t ); } @@ -4228,7 +4819,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4254,7 +4848,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4272,7 +4869,10 @@ module Dfa = struct ); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun ({bslash_cursor; _} as state) ({cursor; _} as view) t -> @@ -4281,7 +4881,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4303,7 +4906,10 @@ module Dfa = struct ); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun ({bslash_cursor; _} as state) ({cursor; _} as view) t -> @@ -4312,7 +4918,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4343,7 +4952,10 @@ module Dfa = struct ); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun ({bslash_cursor; _} as state) ({cursor; _} as view) t -> @@ -4352,7 +4964,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4362,8 +4977,8 @@ module Dfa = struct edges1=map_of_cps_alist [ (":", fun state view t -> advance (State_src_directive_path_colon state) view t); ("]", fun {mals; path} view t -> - let atok = render_source_directive ~mals ~path ~line:None ~indent:None ~omit:None in - accept_source_directive atok view t + let tok = render_source_directive ~mals ~path ~line:None ~indent:None ~omit:None in + accept_source_directive tok view t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4372,7 +4987,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4388,7 +5006,10 @@ module Dfa = struct ~line_cursor:pcursor ~line:(Some digit))) view t); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4397,7 +5018,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4435,8 +5059,8 @@ module Dfa = struct ); ("]", fun ({path; _} as state) view t -> let mals, line = validate_line state view in - let atok = render_source_directive ~mals ~path ~line ~indent:None ~omit:None in - accept_source_directive atok view t + let tok = render_source_directive ~mals ~path ~line ~indent:None ~omit:None in + accept_source_directive tok view t ); ]; default1=(fun {mals; path; _} ({pcursor; cursor; _} as view) t -> @@ -4446,7 +5070,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4464,7 +5091,10 @@ module Dfa = struct ~indent_cursor:pcursor ~indent:digit)) view t); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4473,7 +5103,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4513,7 +5146,10 @@ module Dfa = struct ); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4522,7 +5158,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4537,7 +5176,10 @@ module Dfa = struct ); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4546,7 +5188,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4564,7 +5209,10 @@ module Dfa = struct ~indent ~omit_cursor:pcursor ~omit:digit)) view t); ("]", fun {mals; _} {pcursor; cursor; _} t -> let mal = unexpected_codepoint_source_directive pcursor cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4573,7 +5221,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4600,8 +5251,8 @@ module Dfa = struct (mal :: mals), None end in - let atok = render_source_directive ~mals ~path ~line ~indent ~omit in - accept_source_directive atok view t + let tok = render_source_directive ~mals ~path ~line ~indent ~omit in + accept_source_directive tok view t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4610,7 +5261,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } @@ -4620,8 +5274,8 @@ module Dfa = struct edges1=map_of_cps_alist [ ("_", fun state view t -> advance (State_src_directive_omit_0 state) view t); ("]", fun {mals; path; line; indent} view t -> - let atok = render_source_directive ~mals ~path ~line ~indent ~omit:(Some Nat.k_0) in - accept_source_directive atok view t + let tok = render_source_directive ~mals ~path ~line ~indent ~omit:(Some Nat.k_0) in + accept_source_directive tok view t ); ]; default1=(fun state ({pcursor; cursor; _} as view) t -> @@ -4630,7 +5284,10 @@ module Dfa = struct ); eoi1=(fun {mals; _} {cursor; _} t -> let mal = unterminated_source_directive t.tok_base cursor in - accept (Tok_source_directive (AbstractToken.Rendition.of_mals (mal :: mals))) cursor t + accept_tok (Tok_source_directive { + source=source_at cursor t; + source_directive=Token.Rendition.of_mals (mal :: mals) + }) cursor t ); } end @@ -4647,18 +5304,21 @@ module Dfa = struct | Level_indent | Level_excess_indent - let tok_indent = AbstractToken.Tok_indent (Constant ()) - let tok_dedent = AbstractToken.Tok_dedent (Constant ()) - - let tok_missing_indent cursor = - AbstractToken.Tok_indent (malformed (malformation ~base:cursor ~past:cursor "Missing indent")) + let tok_missing_indent cursor t = + Token.Tok_indent { + source=source_at cursor t; + indent=malformed (malformation ~base:cursor ~past:cursor "Missing indent") + } - let tok_missing_dedent cursor = - AbstractToken.Tok_dedent (malformed (malformation ~base:cursor ~past:cursor "Missing dedent")) + let tok_missing_dedent cursor t = + Token.Tok_dedent { + source=source_at cursor t; + dedent=malformed (malformation ~base:cursor ~past:cursor "Missing dedent") + } - let accept_dentation atok cursor t = + let accept_dentation tok cursor t = assert Source.Cursor.(t.tok_base = cursor); - accept atok cursor t + accept_tok tok cursor t let other ~retry_state cursor t = let col = match t.line_state with @@ -4667,7 +5327,7 @@ module Dfa = struct | Line_start_col col -> col | Line_body -> not_reached () in - (* Compute level an alignement such that the misaligned cases rounded to the nearest level. *) + (* Compute level and alignement such that misaligned cases rounded to the nearest level. *) let level, alignment = match col / 4L, col % 4L with | floor_level, 0L -> Level.update floor_level t.level, Aligned | floor_level, 1L -> Level.update floor_level t.level, Misaligned @@ -4684,6 +5344,7 @@ module Dfa = struct | Eq -> Level_stable | Gt -> Level_dedent in + let source = source_at cursor t in (* The following patterns incrementally handle all dentation/alignment cases. Malformed tokens * are synthesized in error cases such that the cursor does not advance, but the level is * incrementally adjusted to converge. The overall result is that Tok_indent/Tok_dedent @@ -4693,54 +5354,56 @@ module Dfa = struct | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Aligned -> retry retry_state {t with level; block_state=Block_nonempty; line_state=Line_body} | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Aligned -> - accept_dentation Tok_line_delim cursor {t with line_state=Line_body} + accept_dentation (Tok_line_delim {source}) cursor {t with line_state=Line_body} (* Continued expression at current level. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Continued -> - accept_dentation Tok_misaligned cursor + accept_dentation (Tok_misaligned {source}) cursor {t with block_state=Block_nonempty; line_state=Line_body} | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Continued -> retry retry_state {t with line_state=Line_body} (* New expression at higher level. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_indent, Aligned -> - accept_dentation (tok_missing_indent cursor) cursor + accept_dentation (tok_missing_indent cursor t) cursor {t with level=Level.succ t.level; block_state=Block_nonempty; line_state=Line_body} | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_indent, Aligned -> - accept_dentation tok_indent cursor {t with level; line_state=Line_body} + accept_dentation (Tok_indent {source; indent=Constant ()}) cursor + {t with level; line_state=Line_body} (* New/continued expression at lower level. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_dedent, (Aligned|Continued) -> not_reached () | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_dedent, (Aligned|Continued) -> - accept_dentation tok_dedent cursor {t with level=Level.pred t.level} + accept_dentation (Tok_dedent {source; dedent=Constant ()}) cursor + {t with level=Level.pred t.level} (* Misaligned at lower level. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_dedent, Misaligned -> not_reached () | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_dedent, Misaligned -> - accept_dentation (tok_missing_dedent cursor) cursor {t with level=Level.pred t.level} + accept_dentation (tok_missing_dedent cursor t) cursor {t with level=Level.pred t.level} (* Misaligned at current level. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Misaligned -> - accept_dentation Tok_misaligned cursor + accept_dentation (Tok_misaligned {source}) cursor {t with block_state=Block_nonempty; line_state=Line_body} | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_stable, Misaligned -> - accept_dentation Tok_misaligned cursor {t with line_state=Line_body} + accept_dentation (Tok_misaligned {source}) cursor {t with line_state=Line_body} (* Excess indentation. *) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_indent, (Continued|Misaligned) | Block_primal, (Line_begin|Line_whitespace|Line_start_col _), Level_excess_indent, (Aligned|Continued|Misaligned) -> - accept_dentation (tok_missing_indent cursor) cursor + accept_dentation (tok_missing_indent cursor t) cursor {t with level=Level.succ t.level; block_state=Block_nonempty} | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_indent, (Continued|Misaligned) | Block_nonempty, (Line_begin|Line_whitespace|Line_start_col _), Level_excess_indent, (Aligned|Continued|Misaligned) -> - accept_dentation (tok_missing_indent cursor) cursor {t with level=Level.succ t.level} + accept_dentation (tok_missing_indent cursor t) cursor {t with level=Level.succ t.level} | _, Line_body, _, _ -> not_reached () @@ -4752,9 +5415,12 @@ module Dfa = struct let accept_whitespace cursor t = assert Source.Cursor.(t.tok_base < cursor); + let source = source_at cursor t in match t.line_state with - | Line_begin -> accept Tok_whitespace cursor {t with line_state=Line_whitespace} - | Line_start_col _ -> accept Tok_whitespace cursor t + | Line_begin -> + accept_tok (Tok_whitespace {source}) cursor {t with line_state=Line_whitespace} + | Line_start_col _ -> + accept_tok (Tok_whitespace {source}) cursor t | Line_whitespace (* Consecutive whitespace tokens is impossible. *) | Line_body -> not_reached () @@ -4778,19 +5444,21 @@ module Dfa = struct ("(", advance State_dentation_lparen); ("\n", fun view t -> match t.line_state with - | Line_begin -> accept_incl Tok_whitespace view t + | Line_begin -> accept_tok_incl (Tok_whitespace {source=source_incl view t}) view t | Line_whitespace - | Line_start_col _ -> accept_line_break_incl Tok_whitespace view t + | Line_start_col _ -> + accept_line_break_incl (Tok_whitespace {source=source_incl view t}) view t | Line_body -> not_reached () ); ]; default0=other_excl ~retry_state:State_start; eoi0=(fun view t -> match t.line_state, Level.level t.level with - | (Line_begin|Line_whitespace|Line_start_col _), 0L -> accept_incl Tok_end_of_input view t + | (Line_begin|Line_whitespace|Line_start_col _), 0L -> + accept_tok_incl (Tok_end_of_input {source=source_incl view t}) view t | (Line_begin|Line_whitespace|Line_start_col _), t_level -> - accept_incl (Tok_dedent (Constant ())) view {t with level=Level.update (pred t_level) - t.level} + accept_tok_incl (Tok_dedent {source=source_incl view t; dedent=Constant ()}) view + {t with level=Level.update (pred t_level) t.level} | _ -> not_reached () ); } @@ -4817,7 +5485,8 @@ module Dfa = struct let node0_space = { edges0=map_of_cps_alist [ (" ", advance State_dentation_space); - ("\n", accept_line_break_incl Tok_whitespace); + ("\n", fun view t -> + accept_line_break_incl (Tok_whitespace {source=source_incl view t}) view t); ]; default0=accept_whitespace_excl; eoi0=accept_whitespace_incl; @@ -4827,25 +5496,31 @@ module Dfa = struct let node0_whitespace = { edges0=map_of_cps_alist [ (" ", advance State_whitespace); - ("\n", accept_line_break_incl Tok_whitespace); + ("\n", fun view t -> + accept_line_break_incl (Tok_whitespace {source=source_incl view t}) view t); ]; - default0=accept_excl Tok_whitespace; - eoi0=accept_incl Tok_whitespace; + default0=(fun view t -> accept_tok_excl (Tok_whitespace {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_whitespace {source=source_incl view t}) view t); } let node0_hash_comment = { edges0=map_of_cps_alist [ - ("\n", accept_line_break_incl Tok_hash_comment); + ("\n", fun view t -> + accept_line_break_incl (Tok_hash_comment {source=source_incl view t}) view t); ]; default0=advance State_hash_comment; - eoi0=accept_line_break_incl Tok_hash_comment; + eoi0=(fun view t -> + accept_line_break_incl (Tok_hash_comment {source=source_incl view t}) view t); } module Codepoint_ = struct let accept_rendition rendition cursor t = match in_fstring t with - | true -> accept_fstring_trans Fstring_spec_pad_seen (Tok_fstring_pad rendition) cursor t - | false -> accept (Tok_codepoint rendition) cursor t + | true -> + accept_fstring_trans Fstring_spec_pad_seen + (Tok_fstring_pad {source=source_at cursor t; fstring_pad=rendition}) cursor t + | false -> + accept_tok (Tok_codepoint {source=source_at cursor t; codepoint=rendition}) cursor t let accept_rendition_incl rendition View.{cursor; _} t = accept_rendition rendition cursor t @@ -4855,7 +5530,7 @@ module Dfa = struct let eoi0 View.{cursor; _} t = let mal = unterminated_codepoint t.tok_base cursor in - let rendition = AbstractToken.Rendition.of_mals [mal] in + let rendition = Token.Rendition.of_mals [mal] in accept_rendition rendition cursor t let eoi1 _state view t = @@ -4867,7 +5542,7 @@ module Dfa = struct advance (State_codepoint_bslash (State.Codepoint_bslash.init ~bslash_cursor)) view t); ("'", fun ({cursor; _} as view) t -> let mal = empty_codepoint t.tok_base cursor in - accept_rendition_incl (AbstractToken.Rendition.of_mals [mal]) view t + accept_rendition_incl (Token.Rendition.of_mals [mal]) view t ); ("\t\n\r", fun ({pcursor; cursor; _} as view) t -> let mal = invalid_codepoint pcursor cursor in @@ -4998,9 +5673,9 @@ module Dfa = struct match in_fstring t with | true -> begin let mal = unterminated_codepoint t.tok_base cursor in - accept_rendition_pexcl (AbstractToken.Rendition.of_mals [mal]) view t + accept_rendition_pexcl (Token.Rendition.of_mals [mal]) view t end - | false -> accept_pexcl Tok_tick view t); + | false -> accept_tok_pexcl (Tok_tick {source=source_pexcl view t}) view t); eoi1; } @@ -5008,22 +5683,21 @@ module Dfa = struct let open State.Codepoint_mal in { edges1=map_of_cps_alist [ - ("'", fun {mal} view t -> - accept_rendition_incl (AbstractToken.Rendition.of_mals [mal]) view t); + ("'", fun {mal} view t -> accept_rendition_incl (Token.Rendition.of_mals [mal]) view t); ]; default1=(fun state view t -> advance (State.State_codepoint_mal state) view t); eoi1=(fun {mal} (View.{cursor; _} as view) t -> let mal2 = unterminated_codepoint t.tok_base cursor in - accept_rendition_incl (AbstractToken.Rendition.of_mals (mal2 :: [mal])) view t + accept_rendition_incl (Token.Rendition.of_mals (mal2 :: [mal])) view t ); } end module Rstring = struct let accept_mals mals cursor t = - let open AbstractToken in + let open Token in let malformed = Rendition.of_mals mals in - accept (Tok_rstring malformed) cursor t + accept_tok (Tok_rstring {source=source_at cursor t; rstring=malformed}) cursor t let accept_mals_incl mals View.{cursor; _} t = accept_mals mals cursor t @@ -5095,8 +5769,11 @@ module Dfa = struct match mals with | _ :: _ -> accept_mals_incl mals view t | [] -> begin - let open AbstractToken in - accept (Tok_rstring (Constant (Source.Slice.to_string body))) cursor t + let open Token in + accept_tok (Tok_rstring { + source=source_incl view t; + rstring=Constant (Source.Slice.to_string body) + }) cursor t end end ); @@ -5125,7 +5802,10 @@ module Dfa = struct * istring scanning implementation. *) module Istring = struct let accept_istring accum cursor t = - accept (State.CodepointAccum.to_atok_istring accum) cursor t + accept_tok (Token.Tok_istring { + source=source_at cursor t; + istring=State.CodepointAccum.to_istring accum + }) cursor t let accept_istring_incl accum View.{cursor; _} t = accept_istring accum cursor t @@ -5134,7 +5814,11 @@ module Dfa = struct let open State.CodepointAccum in assert (match accum with Codepoints _ -> false | Malformations _ -> true); match in_fstring t with - | true -> accept (to_atok_fstring_interpolated accum) cursor t + | true -> + accept_tok (Token.Tok_fstring_interpolated { + source=source_at cursor t; + fstring_interpolated=to_fstring_interpolated accum + }) cursor t | false -> accept_istring accum cursor t let accept_mal_incl accum View.{cursor; _} t = @@ -5146,7 +5830,11 @@ module Dfa = struct | true -> begin match accum with | Codepoints [] -> retry_fstring_eoi t - | _ -> accept_fstring_pop (to_atok_fstring_interpolated accum) cursor t + | _ -> + accept_fstring_pop_tok (Token.Tok_fstring_interpolated { + source=source_at cursor t; + fstring_interpolated=to_fstring_interpolated accum + }) cursor t end | false -> begin let mal = unterminated_string cursor cursor in @@ -5165,48 +5853,54 @@ module Dfa = struct match in_fstring t with | false -> begin let interpolated_base = Source.Cursor.succ t.tok_base in - let lditto_ctok = ConcreteToken.ctok_at ~base:t.tok_base ~past:interpolated_base - Tok_fstring_lditto in - let pct_ctok = ConcreteToken.ctok_at ~base:pcursor ~past:cursor Tok_fstring_pct in + let lditto_tok = + Token.Tok_fstring_lditto {source=source_at interpolated_base t} in + let pct_tok = Token.Tok_fstring_pct {source=Source.Slice.of_cursors + ~base:pcursor ~past:cursor} in let fstring_state = match Source.Cursor.(interpolated_base = pcursor) with - | true -> Fstring_spec_pct_seen [pct_ctok] + | true -> Fstring_spec_pct_seen [pct_tok] | false -> begin - let interpolated_ctok = ConcreteToken.ctok_at ~base:interpolated_base - ~past:pcursor (State.CodepointAccum.to_atok_fstring_interpolated accum) - in - Fstring_spec_pct_seen [interpolated_ctok; pct_ctok] + let interpolated_tok = Token.Tok_fstring_interpolated { + source=Source.Slice.of_cursors ~base:interpolated_base ~past:pcursor; + fstring_interpolated=State.CodepointAccum.to_fstring_interpolated accum + } in + Fstring_spec_pct_seen [interpolated_tok; pct_tok] end in - accept_fstring_push_ctok_incl fstring_state lditto_ctok view t + accept_fstring_push_tok_incl fstring_state lditto_tok view t end | true -> begin - let pct_ctok = ConcreteToken.ctok_at ~base:pcursor ~past:cursor Tok_fstring_pct in - let fstring_state, ctok = match Source.Cursor.(t.tok_base = pcursor) with - | true -> Fstring_spec_pct_seen [], pct_ctok + let pct_tok = Token.Tok_fstring_pct {source=Source.Slice.of_cursors ~base:pcursor + ~past:cursor} in + let fstring_state, tok = match Source.Cursor.(t.tok_base = pcursor) with + | true -> Fstring_spec_pct_seen [], pct_tok | false -> begin - let interpolated_ctok = ConcreteToken.ctok_at ~base:t.tok_base - ~past:pcursor (State.CodepointAccum.to_atok_fstring_interpolated accum) - in - Fstring_spec_pct_seen [pct_ctok], interpolated_ctok + let interpolated_tok = Token.Tok_fstring_interpolated { + source=source_excl view t; + fstring_interpolated=State.CodepointAccum.to_fstring_interpolated accum + } in + Fstring_spec_pct_seen [pct_tok], interpolated_tok end in - accept_fstring_trans_ctok_incl fstring_state ctok view t + accept_fstring_trans_tok_incl fstring_state tok view t end ); ("\"", fun {accum} (View.{pcursor; cursor; _} as view) t -> match in_fstring t with | true -> begin - let rditto_ctok = ConcreteToken.ctok_at ~base:pcursor ~past:cursor - Tok_fstring_rditto in + let rditto_tok = Token.Tok_fstring_rditto {source=Source.Slice.of_cursors + ~base:pcursor ~past:cursor} in let fstring_states' = List.tl t.fstring_states in match Source.Cursor.(t.tok_base = pcursor) with | true -> - {t with tok_base=cursor; fstring_states=fstring_states'}, Accept rditto_ctok + {t with tok_base=cursor; fstring_states=fstring_states'}, Accept rditto_tok | false -> begin - let interpolated_ctok = ConcreteToken.ctok_at ~base:t.tok_base - ~past:pcursor (State.CodepointAccum.to_atok_fstring_interpolated accum) in - accept_fstring_trans_ctok_incl (Fstring_rditto_seen rditto_ctok) - interpolated_ctok view t + let interpolated_tok = Token.Tok_fstring_interpolated { + source=source_excl view t; + fstring_interpolated=State.CodepointAccum.to_fstring_interpolated accum + } in + accept_fstring_trans_tok_incl (Fstring_rditto_seen rditto_tok) + interpolated_tok view t end end | false -> accept_istring_incl accum view t @@ -5317,15 +6011,15 @@ module Dfa = struct end module Fstring = struct - let accept_mal fstring_state description atok_of_mal cursor t = + let accept_mal fstring_state description tok_of_mal cursor t = let mal = malformation ~base:t.tok_base ~past:cursor description in - accept_fstring_trans fstring_state (atok_of_mal mal) cursor t + accept_fstring_trans fstring_state (tok_of_mal mal) cursor t - let accept_mal_incl fstring_state description atok_of_mal View.{cursor; _} t = - accept_mal fstring_state description atok_of_mal cursor t + let accept_mal_incl fstring_state description tok_of_mal View.{cursor; _} t = + accept_mal fstring_state description tok_of_mal cursor t - let accept_mal_excl fstring_state description atok_of_mal View.{pcursor; _} t = - accept_mal fstring_state description atok_of_mal pcursor t + let accept_mal_excl fstring_state description tok_of_mal View.{pcursor; _} t = + accept_mal fstring_state description tok_of_mal pcursor t let eoi0 _view t = retry_fstring_eoi t @@ -5335,22 +6029,48 @@ module Dfa = struct ] let edges0_just = map_of_cps_alist [ - ("<", accept_fstring_trans_incl Fstring_spec_just_seen (Tok_fstring_just Fmt.Left)); - ("^", accept_fstring_trans_incl Fstring_spec_just_seen (Tok_fstring_just Fmt.Center)); - (">", accept_fstring_trans_incl Fstring_spec_just_seen (Tok_fstring_just Fmt.Right)); + ("<", fun view t -> + accept_fstring_trans_tok_incl Fstring_spec_just_seen (Tok_fstring_just { + source=source_incl view t; + fstring_just=Fmt.Left + }) view t); + ("^", fun view t -> + accept_fstring_trans_incl Fstring_spec_just_seen (Tok_fstring_just { + source=source_incl view t; + fstring_just=Fmt.Center + }) view t); + (">", fun view t -> + accept_fstring_trans_incl Fstring_spec_just_seen (Tok_fstring_just { + source=source_incl view t; + fstring_just=Fmt.Right + }) view t); ] let edges0_sign = map_of_cps_alist [ - ("+", accept_fstring_trans_incl Fstring_spec_sign_seen (Tok_fstring_sign Fmt.Explicit)); - ("_", accept_fstring_trans_incl Fstring_spec_sign_seen (Tok_fstring_sign Fmt.Space)); + ("+", fun view t -> + accept_fstring_trans_incl Fstring_spec_sign_seen (Tok_fstring_sign { + source=source_incl view t; + fstring_sign=Fmt.Explicit + }) view t); + ("_", fun view t -> + accept_fstring_trans_incl Fstring_spec_sign_seen (Tok_fstring_sign { + source=source_incl view t; + fstring_sign=Fmt.Space + }) view t); ] let edges0_alt = map_of_cps_alist [ - ("#", accept_fstring_trans_incl Fstring_spec_alt_seen Tok_fstring_alt); + ("#", fun view t -> + accept_fstring_trans_incl Fstring_spec_alt_seen (Tok_fstring_alt { + source=source_incl view t + }) view t); ] let edges0_zpad = map_of_cps_alist [ - ("0", accept_fstring_trans_incl Fstring_spec_zpad_seen Tok_fstring_zpad); + ("0", fun view t -> + accept_fstring_trans_incl Fstring_spec_zpad_seen (Tok_fstring_zpad { + source=source_incl view t + }) view t); ] let edges0_width = map_of_cps_alist [ @@ -5358,7 +6078,10 @@ module Dfa = struct let digit = nat_of_cp (Source.Cursor.rget pcursor) in advance (State_fstring_width (State.Fstring_width.init ~n:digit)) view t ); - ("*", accept_fstring_trans_incl Fstring_spec_width_star_seen Tok_fstring_width_star); + ("*", fun view t -> + accept_fstring_trans_incl Fstring_spec_width_star_seen (Tok_fstring_width_star { + source=source_incl view t + }) view t); ] let edges0_precision = map_of_cps_alist [ @@ -5367,43 +6090,88 @@ module Dfa = struct let edges0_radix = map_of_cps_alist [ ("b", advance State_fstring_b); - ("o", accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix Radix.Oct)); - ("d", accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix Radix.Dec)); - ("x", accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix Radix.Hex)); + ("o", fun view t -> + accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix { + source=source_incl view t; + fstring_radix=Radix.Oct + }) view t); + ("d", fun view t -> + accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix { + source=source_incl view t; + fstring_radix=Radix.Dec + }) view t); + ("x", fun view t -> + accept_fstring_trans_incl Fstring_spec_radix_seen (Tok_fstring_radix { + source=source_incl view t; + fstring_radix=Radix.Hex + }) view t); ] let edges0_notation = map_of_cps_alist [ - ("m", accept_fstring_trans_incl Fstring_spec_notation_seen (Tok_fstring_notation - Fmt.Normalized)); - ("a", accept_fstring_trans_incl Fstring_spec_notation_seen (Tok_fstring_notation - Fmt.RadixPoint)); + ("m", fun view t -> + accept_fstring_trans_incl Fstring_spec_notation_seen (Tok_fstring_notation { + source=source_incl view t; + fstring_notation=Fmt.Normalized + }) view t); + ("a", fun view t -> + accept_fstring_trans_incl Fstring_spec_notation_seen (Tok_fstring_notation { + source=source_incl view t; + fstring_notation=Fmt.RadixPoint + }) view t); ("c", advance State_fstring_c); ] let edges0_pretty = map_of_cps_alist [ - ("p", accept_fstring_trans_incl Fstring_spec_pretty_seen Tok_fstring_pretty); + ("p", fun view t -> + accept_fstring_trans_incl Fstring_spec_pretty_seen (Tok_fstring_pretty { + source=source_incl view t + }) view t); ] (* Sans [bc], which require lookahead. *) let edges0_fmt = map_of_cps_alist [ ("u", advance State_fstring_fmt_u); ("i", advance State_fstring_fmt_i); - ("n", accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_n))); - ("z", accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_z))); + ("n", fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_n + }) view t); + ("z", fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_z + }) view t); ("r", advance State_fstring_fmt_r); - ("s", accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_s))); - ("f", accept_fstring_trans_incl Fstring_spec_fmt_f_seen (Tok_fstring_fmt (Constant Fmt_f))); + ("s", fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_s + }) view t); + ("f", fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_f_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_f + }) view t); ] (* Sans c, which requires lookahead. *) let edges0_fmt_b = Map.insert edges0_fmt ~k:(Codepoint.of_char 'b') - ~v:(accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_b))) + ~v:(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_b + }) view t) (* No lookahead required. *) let edges0_fmt_bc = Map.insert edges0_fmt ~k:(Codepoint.of_char 'c') - ~v:(accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_c))) + ~v:(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_c + }) view t) let edges0_of_maps maps = List.fold maps ~init:(Map.empty (module Codepoint)) @@ -5415,13 +6183,14 @@ module Dfa = struct ("Percent must be followed by pad/just/sign/alt/zpad/width/precision/radix/notation/pretty/" ^ "fmt parameter") in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_pad; edges0_just; edges0_sign; edges0_alt; edges0_zpad; edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5431,13 +6200,14 @@ module Dfa = struct "Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/" ^ "pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_just; edges0_sign; edges0_alt; edges0_zpad; edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5447,13 +6217,14 @@ module Dfa = struct "Justification parameter must be followed by sign/alt/zpad/width/precision/radix/notation/" ^ "pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_sign; edges0_alt; edges0_zpad; edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5463,13 +6234,14 @@ module Dfa = struct "Sign parameter must be followed by alt/zpad/width/precision/radix/notation/pretty/fmt" ^ " parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_alt; edges0_zpad; edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5478,13 +6250,14 @@ module Dfa = struct let description = "Alt parameter must be followed by zpad/width/precision/radix/notation/pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_zpad; edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5492,29 +6265,31 @@ module Dfa = struct let fstring_state = Fstring_spec_fmt_seen in let description = "Zpad parameter must be followed by width/precision/radix/notation/pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_width; edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node1_width = let open State.Fstring_width in let accept_width {n} cursor t = begin - let open AbstractToken in - let atok = match Nat.to_uns_opt n with + let open Token in + let source = source_at cursor t in + let tok = match Nat.to_uns_opt n with | None -> begin let mal = out_of_range_int Radix.Dec Uns.(extend_to_nat max_value) t.tok_base cursor in - Tok_fstring_width (Rendition.of_mals [mal]) + Tok_fstring_width {source; fstring_width=Rendition.of_mals [mal]} end - | Some width -> Tok_fstring_width (Constant width) + | Some width -> Tok_fstring_width {source; fstring_width=Constant width} in - accept_fstring_trans Fstring_spec_width_seen atok cursor t + accept_fstring_trans Fstring_spec_width_seen tok cursor t end in let accept_width_incl state View.{cursor; _} t = begin accept_width state cursor t @@ -5536,53 +6311,76 @@ module Dfa = struct let node0_width_star_seen_start = let fstring_state = Fstring_spec_width_seen in let description = "Parametric width must be of the form `*(^ ... ^)`" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_width (Malformed [mal]) + let tok_of_mal cursor t mal = begin + Token.Tok_fstring_width {source=source_at cursor t; fstring_width=Malformed [mal]} + end in + let tok_of_mal_incl View.{cursor; _} t mal = begin + tok_of_mal cursor t mal + end in + let tok_of_mal_excl View.{pcursor; _} t mal = begin + tok_of_mal pcursor t mal end in { edges0=map_of_cps_alist [ ("(", advance State_fstring_lparen); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_width_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "Width parameter must be followed by precision/radix/notation/pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_precision; edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node0_dot = let fstring_state = Fstring_spec_precision_seen in let description = "Dot must be followed by precision mode or precision" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_precision (Malformed [mal]) + let tok_of_mal cursor t mal = begin + Token.Tok_fstring_precision {source=source_at cursor t; fstring_precision=Malformed [mal]} + end in + let tok_of_mal_incl View.{cursor; _} t mal = begin + tok_of_mal cursor t mal + end in + let tok_of_mal_excl View.{pcursor; _} t mal = begin + tok_of_mal pcursor t mal end in { edges0=map_of_cpsets_alist [ - (cpset_of_cps "=", - accept_fstring_trans_incl Fstring_spec_pmode_seen (Tok_fstring_pmode Fmt.Fixed)); - (Set.union (cpset_of_cps dec_cps) (cpset_of_cps "*"), - accept_fstring_trans_excl Fstring_spec_pmode_seen (Tok_fstring_pmode Fmt.Limited)); + (cpset_of_cps "=", fun view t -> + accept_fstring_trans_incl Fstring_spec_pmode_seen (Tok_fstring_pmode { + source=source_incl view t; + fstring_pmode=Fmt.Fixed + }) view t); + (Set.union (cpset_of_cps dec_cps) (cpset_of_cps "*"), fun view t -> + accept_fstring_trans_excl Fstring_spec_pmode_seen (Tok_fstring_pmode { + source=source_excl view t; + fstring_pmode=Fmt.Limited + }) view t); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_pmode_seen_start = let fstring_state = Fstring_spec_precision_seen in let description = "Precision mode parameter must be followed by precision parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_precision (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_precision {source=source_excl view t; fstring_precision=Malformed [mal]} end in { edges0=map_of_cps_alist [ @@ -5590,26 +6388,29 @@ module Dfa = struct let digit = nat_of_cp (Source.Cursor.rget pcursor) in advance (State_fstring_precision (State.Fstring_precision.init ~n:digit)) view t ); - ("*", - accept_fstring_trans_incl Fstring_spec_precision_star_seen Tok_fstring_precision_star); + ("*", fun view t -> + accept_fstring_trans_incl Fstring_spec_precision_star_seen (Tok_fstring_precision_star { + source=source_incl view t + }) view t); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node1_precision = let open State.Fstring_precision in let accept_precision {n} cursor t = begin - let open AbstractToken in - let atok = match Nat.to_uns_opt n with + let source = source_at cursor t in + let tok = match Nat.to_uns_opt n with | None -> begin let mal = out_of_range_int Radix.Dec Uns.(extend_to_nat max_value) t.tok_base cursor in - Tok_fstring_precision (Rendition.of_mals [mal]) + Token.Tok_fstring_precision {source; fstring_precision=Token.Rendition.of_mals [mal]} end - | Some precision -> Tok_fstring_precision (Constant precision) + | Some precision -> Tok_fstring_precision {source; fstring_precision=Constant precision} in - accept_fstring_trans Fstring_spec_precision_seen atok cursor t + accept_fstring_trans Fstring_spec_precision_seen tok cursor t end in let accept_precision_incl state View.{cursor; _} t = begin accept_precision state cursor t @@ -5631,83 +6432,117 @@ module Dfa = struct let node0_precision_star_seen_start = let fstring_state = Fstring_spec_precision_seen in let description = "Parametric precision must be of the form `*(^ ... ^)`" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_precision (Malformed [mal]) + let tok_of_mal cursor t mal = begin + Token.Tok_fstring_precision {source=source_at cursor t; fstring_precision=Malformed [mal]} + end in + let tok_of_mal_incl View.{cursor; _} t mal = begin + tok_of_mal cursor t mal + end in + let tok_of_mal_excl View.{pcursor; _} t mal = begin + tok_of_mal pcursor t mal end in { edges0=map_of_cps_alist [ ("(", advance State_fstring_lparen); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_precision_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "Precision parameter must be followed by radix/notation/pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_radix; edges0_notation; edges0_pretty; edges0_fmt]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node0_b = { edges0=map_of_cpsets_alist [ - (cpset_of_cps "macpbuinzrcsf", - accept_fstring_trans_excl Fstring_spec_radix_seen (Tok_fstring_radix Radix.Bin) - ); + (cpset_of_cps "macpbuinzrcsf", fun view t -> + accept_fstring_trans_excl Fstring_spec_radix_seen (Tok_fstring_radix { + source=source_excl view t; + fstring_radix=Radix.Bin + }) view t); ]; - default0=accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_b)); - eoi0=accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_b)); + default0=(fun view t -> + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=Constant Fmt_b + }) view t); + eoi0=(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_b + }) view t); } let node0_radix_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "Radix parameter must be followed by notation/pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_notation; edges0_pretty; edges0_fmt_b]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node0_c = { edges0=map_of_cpsets_alist [ - (cpset_of_cps "pbuinzrcsf", - accept_fstring_trans_excl Fstring_spec_notation_seen (Tok_fstring_notation Fmt.Compact) + (cpset_of_cps "pbuinzrcsf", fun view t -> + accept_fstring_trans_excl Fstring_spec_notation_seen (Tok_fstring_notation { + source=source_excl view t; + fstring_notation=Fmt.Compact + }) + view t ); ]; - default0=accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_c)); - eoi0=accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_c)); + default0=(fun view t -> + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=Constant Fmt_c + }) view t); + eoi0=(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_c + }) view t); } let node0_notation_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "Notation parameter must be followed by pretty/fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_of_maps [edges0_pretty; edges0_fmt_bc]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node0_pretty_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "Pretty parameter must be followed by fmt parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_fmt (Malformed [mal]) + let tok_of_mal_excl view t mal = begin + Token.Tok_fstring_fmt {source=source_excl view t; fstring_fmt=Malformed [mal]} end in { edges0=edges0_fmt_bc; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } @@ -5724,14 +6559,22 @@ module Dfa = struct State.Fstring_fmt_u_bitwidth.(init ~fmt_cursor:ppcursor |> accum_invalid)) view t ); ]; - default0=accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_u)); - eoi0=accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_u)); + default0=(fun view t -> + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=Constant Fmt_u + }) view t); + eoi0=(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_u + }) view t); } let node1_fmt_u_bitwidth = let open State.Fstring_fmt_u_bitwidth in let subtype_of_state {fmt_cursor; invalid; bitwidth} View.{pcursor; _} = begin - let open AbstractToken in + let open Token in match invalid, bitwidth with | false, bitwidth when Nat.(bitwidth = of_string "8") -> Rendition.Constant Fmt_u8 | false, bitwidth when Nat.(bitwidth = of_string "16") -> Rendition.Constant Fmt_u16 @@ -5751,11 +6594,17 @@ module Dfa = struct ]; default1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); eoi1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); } @@ -5772,14 +6621,22 @@ module Dfa = struct State.Fstring_fmt_i_bitwidth.(init ~fmt_cursor:ppcursor |> accum_invalid)) view t ); ]; - default0=accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_i)); - eoi0=accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_i)); + default0=(fun view t -> + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=Constant Fmt_i + }) view t); + eoi0=(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_i + }) view t); } let node1_fmt_i_bitwidth = let open State.Fstring_fmt_i_bitwidth in let subtype_of_state {fmt_cursor; invalid; bitwidth} View.{pcursor; _} = begin - let open AbstractToken in + let open Token in match invalid, bitwidth with | false, bitwidth when Nat.(bitwidth = of_string "8") -> Rendition.Constant Fmt_i8 | false, bitwidth when Nat.(bitwidth = of_string "16") -> Rendition.Constant Fmt_i16 @@ -5799,11 +6656,17 @@ module Dfa = struct ]; default1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); eoi1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); } @@ -5820,14 +6683,22 @@ module Dfa = struct State.Fstring_fmt_r_bitwidth.(init ~fmt_cursor:ppcursor |> accum_invalid)) view t ); ]; - default0=accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_r)); - eoi0=accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt (Constant Fmt_r)); + default0=(fun view t -> + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=Constant Fmt_r + }) view t); + eoi0=(fun view t -> + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_incl view t; + fstring_fmt=Constant Fmt_r + }) view t); } let node1_fmt_r_bitwidth = let open State.Fstring_fmt_r_bitwidth in let subtype_of_state {fmt_cursor; invalid; bitwidth} View.{pcursor; _} = begin - let open AbstractToken in + let open Token in match invalid, bitwidth with | false, bitwidth when Nat.(bitwidth = of_string "32") -> Rendition.Constant Fmt_r32 | false, bitwidth when Nat.(bitwidth = of_string "64") -> Rendition.Constant Fmt_r64 @@ -5842,33 +6713,47 @@ module Dfa = struct ]; default1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); eoi1=(fun state view t -> let subtype = subtype_of_state state view in - accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt subtype) view t + accept_fstring_trans_excl Fstring_spec_fmt_seen (Tok_fstring_fmt { + source=source_excl view t; + fstring_fmt=subtype + }) view t ); } let node0_fmt_f_seen_start = let fstring_state = Fstring_spec_fmt_seen in let description = "`f` fmt parameter must be of the form `f(^ ... ^)`" in - let atok_of_mal mal = begin - AbstractToken.Tok_error [mal] + let tok_of_mal cursor t mal = begin + Token.Tok_error {source=source_at cursor t; error=[mal]} + end in + let tok_of_mal_incl View.{cursor; _} t mal = begin + tok_of_mal cursor t mal + end in + let tok_of_mal_excl View.{pcursor; _} t mal = begin + tok_of_mal pcursor t mal end in { edges0=map_of_cps_alist [ ("(", advance State_fstring_lparen); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_fmt_seen_start = let fstring_state = Fstring_spec_sep_seen in let description = "Fmt parameter must be followed by separator/value parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_sep (Malformed [mal]) + let tok_of_mal_incl view t mal = begin + Token.Tok_fstring_sep {source=source_incl view t; fstring_sep=Malformed [mal]} end in { edges0=map_of_cps_alist [ @@ -5876,23 +6761,32 @@ module Dfa = struct (operator_infix_lead_cps, advance State_fstring_sep_op); ("(", advance State_fstring_lparen); ]; - default0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); eoi0; } let node0_sep_space = let fstring_state = Fstring_spec_sep_seen in let description = "Separator parameter must contain an infix operator" in - let atok_of_mal mal = begin - AbstractToken.Tok_fstring_sep (Malformed [mal]) + let tok_of_mal cursor t mal = begin + Token.Tok_fstring_sep {source=source_at cursor t; fstring_sep=Malformed [mal]} + end in + let tok_of_mal_incl View.{cursor; _} t mal = begin + tok_of_mal cursor t mal + end in + let tok_of_mal_excl View.{pcursor; _} t mal = begin + tok_of_mal pcursor t mal end in { edges0=map_of_cps_alist [ (" ", advance State_fstring_sep_space); (operator_infix_lead_cps, advance State_fstring_sep_op); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_sep_op = { @@ -5902,11 +6796,17 @@ module Dfa = struct ]; default0=(fun (View.{pcursor; _} as view) t -> let sep = str_of_cursor pcursor t in - accept_fstring_trans_excl Fstring_spec_sep_seen (Tok_fstring_sep (Constant sep)) view t + accept_fstring_trans_excl Fstring_spec_sep_seen (Tok_fstring_sep { + source=source_excl view t; + fstring_sep=Constant sep + }) view t ); eoi0=(fun (View.{cursor; _} as view) t -> let sep = str_of_cursor cursor t in - accept_fstring_trans_incl Fstring_spec_sep_seen (Tok_fstring_sep (Constant sep)) view t + accept_fstring_trans_incl Fstring_spec_sep_seen (Tok_fstring_sep { + source=source_incl view t; + fstring_sep=Constant sep + }) view t ); } @@ -5917,83 +6817,103 @@ module Dfa = struct ]; default0=(fun (View.{pcursor; _} as view) t -> let sep = str_of_cursor pcursor t in - accept_fstring_trans_excl Fstring_spec_sep_seen (Tok_fstring_sep (Constant sep)) view t + accept_fstring_trans_excl Fstring_spec_sep_seen (Tok_fstring_sep { + source=source_excl view t; + fstring_sep=Constant sep + }) view t ); eoi0=(fun (View.{cursor; _} as view) t -> let sep = str_of_cursor cursor t in - accept_fstring_trans_incl Fstring_spec_sep_seen (Tok_fstring_sep (Constant sep)) view t + accept_fstring_trans_incl Fstring_spec_sep_seen (Tok_fstring_sep { + source=source_incl view t; + fstring_sep=Constant sep + }) view t ); } let node0_sep_seen_start = let fstring_state = Fstring_body in let description = "Separator parameter must be followed by value parameter" in - let atok_of_mal mal = begin - AbstractToken.Tok_error [mal] + let tok_of_mal_excl view t mal = begin + Token.Tok_error {source=source_excl view t; error=[mal]} end in { edges0=map_of_cps_alist [ ("(", advance State_fstring_lparen); ]; - default0=accept_mal_excl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_excl fstring_state description (tok_of_mal_excl view t) view t); eoi0; } let node0_spec_lparen = let fstring_state = Fstring_body in let description = "Value parameter must be of the form `(^ ... ^)`" in - let atok_of_mal mal = begin - AbstractToken.Tok_error [mal] + let tok_of_mal_incl view t mal = begin + Token.Tok_error {source=source_incl view t; error=[mal]} end in { edges0=map_of_cps_alist [ ("^", fun (View.{cursor; _} as view) t -> + let source = source_incl view t in match t.fstring_states with | Fstring_spec_width_star_seen :: _ -> - accept_fstring_trans_incl Fstring_expr_width Tok_fstring_lparen_caret view t + accept_fstring_trans_incl Fstring_expr_width (Tok_fstring_lparen_caret {source}) + view t | Fstring_spec_precision_star_seen :: _ -> - accept_fstring_trans_incl Fstring_expr_precision Tok_fstring_lparen_caret view t + accept_fstring_trans_incl Fstring_expr_precision (Tok_fstring_lparen_caret {source}) + view t | Fstring_spec_fmt_f_seen :: _ -> - accept_fstring_trans_incl Fstring_expr_fmt Tok_fstring_lparen_caret view t + accept_fstring_trans_incl Fstring_expr_fmt (Tok_fstring_lparen_caret {source}) + view t | Fstring_spec_fmt_seen :: _ -> - accept_fstring_trans_incl (Fstring_expr_value None) Tok_fstring_lparen_caret view t + accept_fstring_trans_incl (Fstring_expr_value None) + (Tok_fstring_lparen_caret {source}) view t | Fstring_spec_sep_seen :: _ -> accept_fstring_trans_incl (Fstring_expr_value (Some cursor)) - Tok_fstring_lparen_caret view t + (Tok_fstring_lparen_caret {source}) view t | _ :: _ | [] -> not_reached () ); ]; - default0=accept_mal_incl fstring_state description atok_of_mal; - eoi0=accept_mal_incl fstring_state description atok_of_mal; + default0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); + eoi0=(fun view t -> + accept_mal_incl fstring_state description (tok_of_mal_incl view t) view t); } let node0_caret = { edges0=map_of_cps_alist [ (")", fun (View.{ppcursor; _} as view) t -> + let source = source_incl view t in match t.fstring_states with - | [] -> accept_excl Tok_caret view t + | [] -> accept_tok_excl (Tok_caret {source}) view t | Fstring_expr_width :: _ -> - accept_fstring_trans_incl Fstring_spec_width_seen Tok_fstring_caret_rparen view t + accept_fstring_trans_incl Fstring_spec_width_seen (Tok_fstring_caret_rparen {source}) + view t | Fstring_expr_precision :: _ -> - accept_fstring_trans_incl Fstring_spec_precision_seen Tok_fstring_caret_rparen view t + accept_fstring_trans_incl Fstring_spec_precision_seen + (Tok_fstring_caret_rparen {source}) view t | Fstring_expr_fmt :: _ -> - accept_fstring_trans_incl Fstring_spec_fmt_seen Tok_fstring_caret_rparen view t + accept_fstring_trans_incl Fstring_spec_fmt_seen (Tok_fstring_caret_rparen {source}) + view t | (Fstring_expr_value (Some label_base)) :: _ -> begin - let label_source = Source.Slice.of_cursors ~base:label_base ~past:ppcursor in - let label_string = Source.Slice.to_string label_source in - let label_ctok = ConcreteToken.init (Tok_fstring_label label_string) label_source in - accept_fstring_trans_incl (Fstring_value_seen label_ctok) Tok_fstring_caret_rparen - view t + let source = Source.Slice.of_cursors ~base:label_base ~past:ppcursor in + let label_tok = Token.Tok_fstring_label { + source; + fstring_label=Source.Slice.to_string source + } in + accept_fstring_trans_incl (Fstring_value_seen label_tok) + (Tok_fstring_caret_rparen {source}) view t end | (Fstring_expr_value None) :: _ -> - accept_fstring_trans_incl Fstring_body Tok_fstring_caret_rparen view t + accept_fstring_trans_incl Fstring_body (Tok_fstring_caret_rparen {source}) view t | _ :: _ -> not_reached () ); (operator_cps, advance State_operator_caret); ]; - default0=accept_excl Tok_caret; - eoi0=accept_incl Tok_caret; + default0=(fun view t -> accept_tok_excl (Tok_caret {source=source_excl view t}) view t); + eoi0=(fun view t -> accept_tok_incl (Tok_caret {source=source_incl view t}) view t); } end @@ -6154,11 +7074,11 @@ module Dfa = struct |> Fmt.fmt "\n" |> ignore; transition trace state' view t' end - | t', Accept ctok -> begin + | t', Accept tok -> begin if trace then - File.Fmt.stdout |> Fmt.fmt " -> Accept (" |> ConcreteToken.pp ctok |> Fmt.fmt "), " + File.Fmt.stdout |> Fmt.fmt " -> Accept (" |> Token.pp tok |> Fmt.fmt "), " |> pp t' |> Fmt.fmt "\n" |> ignore; - t', Accept ctok + t', Accept tok end let next ?(trace=false) state t = @@ -6168,7 +7088,7 @@ module Dfa = struct match transition trace state (view_of_t t) t with | _, Advance _ -> not_reached () | _, Retry _ -> not_reached () - | t', Accept ctok -> t', ctok + | t', Accept tok -> t', tok end let next t = @@ -6178,9 +7098,9 @@ let next t = | Some start -> Dfa.next ?trace start t | None -> begin match List.hd t.fstring_states with - | Fstring_spec_pct_seen (ctok :: ctoks') -> - Dfa.fstring_trans (Fstring_spec_pct_seen ctoks') t, ctok - | Fstring_value_seen ctok -> Dfa.fstring_trans Fstring_body t, ctok - | Fstring_rditto_seen ctok -> Dfa.fstring_pop t, ctok + | Fstring_spec_pct_seen (tok :: toks') -> + Dfa.fstring_trans (Fstring_spec_pct_seen toks') t, tok + | Fstring_value_seen tok -> Dfa.fstring_trans Fstring_body t, tok + | Fstring_rditto_seen tok -> Dfa.fstring_pop t, tok | _ -> not_reached () end diff --git a/bootstrap/src/hmc/scan.mli b/bootstrap/src/hmc/scan.mli index 564706a88..ec3c8c45e 100644 --- a/bootstrap/src/hmc/scan.mli +++ b/bootstrap/src/hmc/scan.mli @@ -45,9 +45,7 @@ open Basis open Basis.Rudiments -(** Abstract tokens do not have source location information, which makes it possible for ASTs to be - recognized as equal even if there are code formatting differences between two sources. *) -module AbstractToken : sig +module Token : sig module Rendition : sig module Malformation : sig type t @@ -101,168 +99,158 @@ module AbstractToken : sig | Fmt_f type t = (* Keywords. *) - | Tok_and - | Tok_also - | Tok_as - | Tok_conceal - | Tok_effect - | Tok_else - | Tok_expose - | Tok_external - | Tok_false - | Tok_fn - | Tok_function - | Tok_if - | Tok_import - | Tok_include - | Tok_lazy - | Tok_let - | Tok_match - | Tok_mutability - | Tok_of - | Tok_open - | Tok_or - | Tok_rec - | Tok_then - | Tok_true - | Tok_type - | Tok_when - | Tok_with + | Tok_and of {source: Source.Slice.t} + | Tok_also of {source: Source.Slice.t} + | Tok_as of {source: Source.Slice.t} + | Tok_conceal of {source: Source.Slice.t} + | Tok_effect of {source: Source.Slice.t} + | Tok_else of {source: Source.Slice.t} + | Tok_expose of {source: Source.Slice.t} + | Tok_external of {source: Source.Slice.t} + | Tok_false of {source: Source.Slice.t} + | Tok_fn of {source: Source.Slice.t} + | Tok_function of {source: Source.Slice.t} + | Tok_if of {source: Source.Slice.t} + | Tok_import of {source: Source.Slice.t} + | Tok_include of {source: Source.Slice.t} + | Tok_lazy of {source: Source.Slice.t} + | Tok_let of {source: Source.Slice.t} + | Tok_match of {source: Source.Slice.t} + | Tok_mutability of {source: Source.Slice.t} + | Tok_of of {source: Source.Slice.t} + | Tok_open of {source: Source.Slice.t} + | Tok_or of {source: Source.Slice.t} + | Tok_rec of {source: Source.Slice.t} + | Tok_then of {source: Source.Slice.t} + | Tok_true of {source: Source.Slice.t} + | Tok_type of {source: Source.Slice.t} + | Tok_when of {source: Source.Slice.t} + | Tok_with of {source: Source.Slice.t} (* Operators. *) - | Tok_tilde_op of string - | Tok_qmark_op of string - | Tok_star_star_op of string - | Tok_star_op of string - | Tok_slash_op of string - | Tok_pct_op of string - | Tok_plus_op of string - | Tok_minus_op of string - | Tok_at_op of string - | Tok_caret_op of string - | Tok_dollar_op of string - | Tok_lt_op of string - | Tok_eq_op of string - | Tok_gt_op of string - | Tok_bar_op of string - | Tok_colon_op of string - | Tok_dot_op of string + | Tok_tilde_op of {source: Source.Slice.t; tilde_op: string} + | Tok_qmark_op of {source: Source.Slice.t; qmark_op: string} + | Tok_star_star_op of {source: Source.Slice.t; star_star_op: string} + | Tok_star_op of {source: Source.Slice.t; star_op: string} + | Tok_slash_op of {source: Source.Slice.t; slash_op: string} + | Tok_pct_op of {source: Source.Slice.t; pct_op: string} + | Tok_plus_op of {source: Source.Slice.t; plus_op: string} + | Tok_minus_op of {source: Source.Slice.t; minus_op: string} + | Tok_at_op of {source: Source.Slice.t; at_op: string} + | Tok_caret_op of {source: Source.Slice.t; caret_op: string} + | Tok_dollar_op of {source: Source.Slice.t; dollar_op: string} + | Tok_lt_op of {source: Source.Slice.t; lt_op: string} + | Tok_eq_op of {source: Source.Slice.t; eq_op: string} + | Tok_gt_op of {source: Source.Slice.t; gt_op: string} + | Tok_bar_op of {source: Source.Slice.t; bar_op: string} + | Tok_colon_op of {source: Source.Slice.t; colon_op: string} + | Tok_dot_op of {source: Source.Slice.t; dot_op: string} (* Punctuation. *) - | Tok_tilde - | Tok_qmark - | Tok_minus - | Tok_lt - | Tok_lt_eq - | Tok_eq - | Tok_lt_gt - | Tok_gt_eq - | Tok_gt - | Tok_comma - | Tok_dot - | Tok_dot_dot - | Tok_semi - | Tok_colon - | Tok_colon_colon - | Tok_colon_eq - | Tok_lparen - | Tok_rparen - | Tok_lbrack - | Tok_rbrack - | Tok_lcurly - | Tok_rcurly - | Tok_bar - | Tok_lcapture - | Tok_rcapture - | Tok_larray - | Tok_rarray - | Tok_bslash - | Tok_tick - | Tok_caret - | Tok_amp - | Tok_xmark - | Tok_arrow - | Tok_carrow + | Tok_tilde of {source: Source.Slice.t} + | Tok_qmark of {source: Source.Slice.t} + | Tok_minus of {source: Source.Slice.t} + | Tok_lt of {source: Source.Slice.t} + | Tok_lt_eq of {source: Source.Slice.t} + | Tok_eq of {source: Source.Slice.t} + | Tok_lt_gt of {source: Source.Slice.t} + | Tok_gt_eq of {source: Source.Slice.t} + | Tok_gt of {source: Source.Slice.t} + | Tok_comma of {source: Source.Slice.t} + | Tok_dot of {source: Source.Slice.t} + | Tok_dot_dot of {source: Source.Slice.t} + | Tok_semi of {source: Source.Slice.t} + | Tok_colon of {source: Source.Slice.t} + | Tok_colon_colon of {source: Source.Slice.t} + | Tok_colon_eq of {source: Source.Slice.t} + | Tok_lparen of {source: Source.Slice.t} + | Tok_rparen of {source: Source.Slice.t} + | Tok_lbrack of {source: Source.Slice.t} + | Tok_rbrack of {source: Source.Slice.t} + | Tok_lcurly of {source: Source.Slice.t} + | Tok_rcurly of {source: Source.Slice.t} + | Tok_bar of {source: Source.Slice.t} + | Tok_lcapture of {source: Source.Slice.t} + | Tok_rcapture of {source: Source.Slice.t} + | Tok_larray of {source: Source.Slice.t} + | Tok_rarray of {source: Source.Slice.t} + | Tok_bslash of {source: Source.Slice.t} + | Tok_tick of {source: Source.Slice.t} + | Tok_caret of {source: Source.Slice.t} + | Tok_amp of {source: Source.Slice.t} + | Tok_xmark of {source: Source.Slice.t} + | Tok_arrow of {source: Source.Slice.t} + | Tok_carrow of {source: Source.Slice.t} (* Miscellaneous. *) - | Tok_source_directive of source_directive Rendition.t - | Tok_line_delim - | Tok_indent of unit Rendition.t - | Tok_dedent of unit Rendition.t - | Tok_whitespace - | Tok_hash_comment - | Tok_paren_comment of unit Rendition.t - | Tok_uscore - | Tok_uident of string Rendition.t - | Tok_cident of string - | Tok_codepoint of codepoint Rendition.t - | Tok_rstring of string Rendition.t - | Tok_istring of string Rendition.t - | Tok_fstring_lditto - | Tok_fstring_interpolated of string Rendition.t - | Tok_fstring_pct - | Tok_fstring_pad of codepoint Rendition.t - | Tok_fstring_just of Fmt.just - | Tok_fstring_sign of Fmt.sign - | Tok_fstring_alt - | Tok_fstring_zpad - | Tok_fstring_width_star - | Tok_fstring_width of uns Rendition.t - | Tok_fstring_pmode of Fmt.pmode - | Tok_fstring_precision_star - | Tok_fstring_precision of uns Rendition.t - | Tok_fstring_radix of Radix.t - | Tok_fstring_notation of Fmt.notation - | Tok_fstring_pretty - | Tok_fstring_fmt of fmt Rendition.t - | Tok_fstring_sep of string Rendition.t - | Tok_fstring_label of string - | Tok_fstring_lparen_caret - | Tok_fstring_caret_rparen - | Tok_fstring_rditto - | Tok_r32 of real Rendition.t - | Tok_r64 of real Rendition.t - | Tok_u8 of u8 Rendition.t - | Tok_i8 of i8 Rendition.t - | Tok_u16 of u16 Rendition.t - | Tok_i16 of i16 Rendition.t - | Tok_u32 of u32 Rendition.t - | Tok_i32 of i32 Rendition.t - | Tok_u64 of u64 Rendition.t - | Tok_i64 of i64 Rendition.t - | Tok_u128 of u128 Rendition.t - | Tok_i128 of i128 Rendition.t - | Tok_u256 of u256 Rendition.t - | Tok_i256 of i256 Rendition.t - | Tok_u512 of u512 Rendition.t - | Tok_i512 of i512 Rendition.t - | Tok_nat of Nat.t Rendition.t - | Tok_zint of Zint.t Rendition.t - | Tok_end_of_input - | Tok_misaligned - | Tok_error of Rendition.Malformation.t list + | Tok_source_directive of + {source: Source.Slice.t; source_directive: source_directive Rendition.t} + | Tok_line_delim of {source: Source.Slice.t} + | Tok_indent of {source: Source.Slice.t; indent: unit Rendition.t} + | Tok_dedent of {source: Source.Slice.t; dedent: unit Rendition.t} + | Tok_whitespace of {source: Source.Slice.t} + | Tok_hash_comment of {source: Source.Slice.t} + | Tok_paren_comment of {source: Source.Slice.t; paren_comment: unit Rendition.t} + | Tok_uscore of {source: Source.Slice.t} + | Tok_uident of {source: Source.Slice.t; uident: string Rendition.t} + | Tok_cident of {source: Source.Slice.t; cident: string} + | Tok_codepoint of {source: Source.Slice.t; codepoint: codepoint Rendition.t} + | Tok_rstring of {source: Source.Slice.t; rstring: string Rendition.t} + | Tok_istring of {source: Source.Slice.t; istring: string Rendition.t} + | Tok_fstring_lditto of {source: Source.Slice.t} + | Tok_fstring_interpolated of {source: Source.Slice.t; fstring_interpolated: string Rendition.t} + | Tok_fstring_pct of {source: Source.Slice.t} + | Tok_fstring_pad of {source: Source.Slice.t; fstring_pad: codepoint Rendition.t} + | Tok_fstring_just of {source: Source.Slice.t; fstring_just: Fmt.just} + | Tok_fstring_sign of {source: Source.Slice.t; fstring_sign: Fmt.sign} + | Tok_fstring_alt of {source: Source.Slice.t} + | Tok_fstring_zpad of {source: Source.Slice.t} + | Tok_fstring_width_star of {source: Source.Slice.t} + | Tok_fstring_width of {source: Source.Slice.t; fstring_width: uns Rendition.t} + | Tok_fstring_pmode of {source: Source.Slice.t; fstring_pmode: Fmt.pmode} + | Tok_fstring_precision_star of {source: Source.Slice.t} + | Tok_fstring_precision of {source: Source.Slice.t; fstring_precision: uns Rendition.t} + | Tok_fstring_radix of {source: Source.Slice.t; fstring_radix: Radix.t} + | Tok_fstring_notation of {source: Source.Slice.t; fstring_notation: Fmt.notation} + | Tok_fstring_pretty of {source: Source.Slice.t} + | Tok_fstring_fmt of {source: Source.Slice.t; fstring_fmt: fmt Rendition.t} + | Tok_fstring_sep of {source: Source.Slice.t; fstring_sep: string Rendition.t} + | Tok_fstring_label of {source: Source.Slice.t; fstring_label: string} + | Tok_fstring_lparen_caret of {source: Source.Slice.t} + | Tok_fstring_caret_rparen of {source: Source.Slice.t} + | Tok_fstring_rditto of {source: Source.Slice.t} + | Tok_r32 of {source: Source.Slice.t; r32: real Rendition.t} + | Tok_r64 of {source: Source.Slice.t; r64: real Rendition.t} + | Tok_u8 of {source: Source.Slice.t; u8: u8 Rendition.t} + | Tok_i8 of {source: Source.Slice.t; i8: i8 Rendition.t} + | Tok_u16 of {source: Source.Slice.t; u16: u16 Rendition.t} + | Tok_i16 of {source: Source.Slice.t; i16: i16 Rendition.t} + | Tok_u32 of {source: Source.Slice.t; u32: u32 Rendition.t} + | Tok_i32 of {source: Source.Slice.t; i32: i32 Rendition.t} + | Tok_u64 of {source: Source.Slice.t; u64: u64 Rendition.t} + | Tok_i64 of {source: Source.Slice.t; i64: i64 Rendition.t} + | Tok_u128 of {source: Source.Slice.t; u128: u128 Rendition.t} + | Tok_i128 of {source: Source.Slice.t; i128: i128 Rendition.t} + | Tok_u256 of {source: Source.Slice.t; u256: u256 Rendition.t} + | Tok_i256 of {source: Source.Slice.t; i256: i256 Rendition.t} + | Tok_u512 of {source: Source.Slice.t; u512: u512 Rendition.t} + | Tok_i512 of {source: Source.Slice.t; i512: i512 Rendition.t} + | Tok_nat of {source: Source.Slice.t; nat: Nat.t Rendition.t} + | Tok_zint of {source: Source.Slice.t; zint: Zint.t Rendition.t} + | Tok_end_of_input of {source: Source.Slice.t} + | Tok_misaligned of {source: Source.Slice.t} + | Tok_error of {source: Source.Slice.t; error: Rendition.Malformation.t list} val pp: t -> (module Fmt.Formatter) -> (module Fmt.Formatter) + val source: t -> Source.Slice.t + val malformations: t -> Rendition.Malformation.t list (** [malformations t] returns a list of malformations associated with [t], or an empty list if there are no malformations. This function can be used on any token variant, even if no malformations are possible. *) end -(** Concrete tokens augment abstract tokens with source locations. *) -module ConcreteToken : sig - type t = { - atok: AbstractToken.t; - source: Source.Slice.t; - } - - val atok: t -> AbstractToken.t - val source: t -> Source.Slice.t - - val pp: t -> (module Fmt.Formatter) -> (module Fmt.Formatter) -end - type t include FormattableIntf.SMono with type t := t @@ -277,7 +265,7 @@ val cursor: t -> Source.Cursor.t (** [cursor t] returns the cursor at the scanner's current position. This cursor is equivalent to the base of the token returned by [next t]. *) -val next: t -> t * ConcreteToken.t +val next: t -> t * Token.t (** [next t] scans the next token past the tokens scanned by [t]'s predecessor state(s) and returns the scanner's successor state along with a token. If [t] is at the end of input, there is no successor state, and [t, EndOfInput] is returned. *) diff --git a/bootstrap/test/hmc/scan/scanTest.ml b/bootstrap/test/hmc/scan/scanTest.ml index 81a57b474..a68e4713c 100644 --- a/bootstrap/test/hmc/scan/scanTest.ml +++ b/bootstrap/test/hmc/scan/scanTest.ml @@ -5,18 +5,14 @@ open Hmc.Scan let scan_str s = let rec fn t = begin - let t', ctok = next t in - let atok = ConcreteToken.atok ctok in - let source = ConcreteToken.source ctok in + let t', tok = next t in File.Fmt.stdout |> Fmt.fmt " " - |> Source.Slice.pp source - |> Fmt.fmt " : " - |> AbstractToken.pp atok + |> Token.pp tok |> Fmt.fmt "\n" |> ignore; - match atok with - | Tok_end_of_input -> () + match tok with + | Tok_end_of_input _ -> () | _ -> fn t' end in File.Fmt.stdout diff --git a/bootstrap/test/hmc/scan/test_cident.expected b/bootstrap/test/hmc/scan/test_cident.expected index dea9453fc..011fc8ab6 100644 --- a/bootstrap/test/hmc/scan/test_cident.expected +++ b/bootstrap/test/hmc/scan/test_cident.expected @@ -1,56 +1,56 @@ ``ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_'`` - [1:0..1:64) : - [1:64..1:64) : + (Tok_cident {source=[1:0..1:64); cident="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_'"}) + (Tok_end_of_input {source=[1:64..1:64)}) ``A B C D E F G H I J K L M N O P Q R S T U V W X Y Z`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:19) : - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:28) : - [1:28..1:29) : - [1:29..1:30) : - [1:30..1:31) : - [1:31..1:32) : - [1:32..1:33) : - [1:33..1:34) : - [1:34..1:35) : - [1:35..1:36) : - [1:36..1:37) : - [1:37..1:38) : - [1:38..1:39) : - [1:39..1:40) : - [1:40..1:41) : - [1:41..1:42) : - [1:42..1:43) : - [1:43..1:44) : - [1:44..1:45) : - [1:45..1:46) : - [1:46..1:47) : - [1:47..1:48) : - [1:48..1:49) : - [1:49..1:50) : - [1:50..1:51) : - [1:51..1:51) : + (Tok_cident {source=[1:0..1:1); cident="A"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_cident {source=[1:2..1:3); cident="B"}) + (Tok_whitespace {source=[1:3..1:4)}) + (Tok_cident {source=[1:4..1:5); cident="C"}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_cident {source=[1:6..1:7); cident="D"}) + (Tok_whitespace {source=[1:7..1:8)}) + (Tok_cident {source=[1:8..1:9); cident="E"}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_cident {source=[1:10..1:11); cident="F"}) + (Tok_whitespace {source=[1:11..1:12)}) + (Tok_cident {source=[1:12..1:13); cident="G"}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_cident {source=[1:14..1:15); cident="H"}) + (Tok_whitespace {source=[1:15..1:16)}) + (Tok_cident {source=[1:16..1:17); cident="I"}) + (Tok_whitespace {source=[1:17..1:18)}) + (Tok_cident {source=[1:18..1:19); cident="J"}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_cident {source=[1:20..1:21); cident="K"}) + (Tok_whitespace {source=[1:21..1:22)}) + (Tok_cident {source=[1:22..1:23); cident="L"}) + (Tok_whitespace {source=[1:23..1:24)}) + (Tok_cident {source=[1:24..1:25); cident="M"}) + (Tok_whitespace {source=[1:25..1:26)}) + (Tok_cident {source=[1:26..1:27); cident="N"}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_cident {source=[1:28..1:29); cident="O"}) + (Tok_whitespace {source=[1:29..1:30)}) + (Tok_cident {source=[1:30..1:31); cident="P"}) + (Tok_whitespace {source=[1:31..1:32)}) + (Tok_cident {source=[1:32..1:33); cident="Q"}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_cident {source=[1:34..1:35); cident="R"}) + (Tok_whitespace {source=[1:35..1:36)}) + (Tok_cident {source=[1:36..1:37); cident="S"}) + (Tok_whitespace {source=[1:37..1:38)}) + (Tok_cident {source=[1:38..1:39); cident="T"}) + (Tok_whitespace {source=[1:39..1:40)}) + (Tok_cident {source=[1:40..1:41); cident="U"}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_cident {source=[1:42..1:43); cident="V"}) + (Tok_whitespace {source=[1:43..1:44)}) + (Tok_cident {source=[1:44..1:45); cident="W"}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_cident {source=[1:46..1:47); cident="X"}) + (Tok_whitespace {source=[1:47..1:48)}) + (Tok_cident {source=[1:48..1:49); cident="Y"}) + (Tok_whitespace {source=[1:49..1:50)}) + (Tok_cident {source=[1:50..1:51); cident="Z"}) + (Tok_end_of_input {source=[1:51..1:51)}) diff --git a/bootstrap/test/hmc/scan/test_codepoint.expected b/bootstrap/test/hmc/scan/test_codepoint.expected index c621246b3..2bc56e312 100644 --- a/bootstrap/test/hmc/scan/test_codepoint.expected +++ b/bootstrap/test/hmc/scan/test_codepoint.expected @@ -1,169 +1,167 @@ ``'a'`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_codepoint {source=[1:0..1:3); codepoint=(Constant 'a')}) + (Tok_end_of_input {source=[1:3..1:3)}) ``'\t' '\n' '\r' '\'' '\\'`` - [1:0..1:4) : - [1:4..1:5) : - [1:5..1:9) : - [1:9..1:10) : - [1:10..1:14) : - [1:14..1:15) : - [1:15..1:19) : - [1:19..1:20) : - [1:20..1:24) : - [1:24..1:24) : + (Tok_codepoint {source=[1:0..1:4); codepoint=(Constant '\t')}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_codepoint {source=[1:5..1:9); codepoint=(Constant '\n')}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_codepoint {source=[1:10..1:14); codepoint=(Constant '\r')}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_codepoint {source=[1:15..1:19); codepoint=(Constant '\'')}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_codepoint {source=[1:20..1:24); codepoint=(Constant '\\')}) + (Tok_end_of_input {source=[1:24..1:24)}) ``'\u{41}'`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_codepoint {source=[1:0..1:8); codepoint=(Constant 'A')}) + (Tok_end_of_input {source=[1:8..1:8)}) ``'\u{000_ff_fd}'`` - [1:0..1:15) : - [1:15..1:15) : + (Tok_codepoint {source=[1:0..1:15); codepoint=(Constant '�')}) + (Tok_end_of_input {source=[1:15..1:15)}) ``'`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``' `` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_tick {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``' `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:0) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_end_of_input {source=[2:0..2:0)}) ``' '`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:0) : - [2:0..2:1) : - [2:1..2:1) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_line_delim {source=[2:0..2:0)}) + (Tok_tick {source=[2:0..2:1)}) + (Tok_end_of_input {source=[2:1..2:1)}) ``' a`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:3); uident=(Constant "a")}) + (Tok_end_of_input {source=[1:3..1:3)}) ``'a`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_tick {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``'abcdefghijklmnopqrstuvwxyz_`` - [1:0..1:1) : - [1:1..1:28) : - [1:28..1:28) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_uident {source=[1:1..1:28); uident=(Constant "abcdefghijklmnopqrstuvwxyz_")}) + (Tok_end_of_input {source=[1:28..1:28)}) ``'aa'`` - [1:0..1:1) : - [1:1..1:4) : - [1:4..1:4) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_uident {source=[1:1..1:4); uident=(Constant "aa'")}) + (Tok_end_of_input {source=[1:4..1:4)}) ``'(a: type)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_lparen {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:3); uident=(Constant "a")}) + (Tok_colon {source=[1:3..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_type {source=[1:5..1:9)}) + (Tok_rparen {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``' (a: type)`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:2) : - [2:2..2:3) : - [2:3..2:4) : - [2:4..2:5) : - [2:5..2:6) : - [2:6..2:10) : - [2:10..2:11) : - [2:11..2:11) : + (Tok_tick {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:2)}) + (Tok_lparen {source=[2:2..2:3)}) + (Tok_uident {source=[2:3..2:4); uident=(Constant "a")}) + (Tok_colon {source=[2:4..2:5)}) + (Tok_whitespace {source=[2:5..2:6)}) + (Tok_type {source=[2:6..2:10)}) + (Tok_rparen {source=[2:10..2:11)}) + (Tok_end_of_input {source=[2:11..2:11)}) ``x 'a: '(b: type) -> a -> b`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:19) : - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:26) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "x")}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_tick {source=[1:2..1:3)}) + (Tok_uident {source=[1:3..1:4); uident=(Constant "a")}) + (Tok_colon {source=[1:4..1:5)}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_tick {source=[1:6..1:7)}) + (Tok_lparen {source=[1:7..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "b")}) + (Tok_colon {source=[1:9..1:10)}) + (Tok_whitespace {source=[1:10..1:11)}) + (Tok_type {source=[1:11..1:15)}) + (Tok_rparen {source=[1:15..1:16)}) + (Tok_whitespace {source=[1:16..1:17)}) + (Tok_arrow {source=[1:17..1:19)}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_uident {source=[1:20..1:21); uident=(Constant "a")}) + (Tok_whitespace {source=[1:21..1:22)}) + (Tok_arrow {source=[1:22..1:24)}) + (Tok_whitespace {source=[1:24..1:25)}) + (Tok_uident {source=[1:25..1:26); uident=(Constant "b")}) + (Tok_end_of_input {source=[1:26..1:26)}) ``' ' ' '`` - [1:0..1:9) : - [1:9..1:10) : - [1:10..1:13) : - [1:13..1:13) : + (Tok_codepoint {source=[1:0..1:9); codepoint=(Malformed ["[1:1..1:8): Invalid codepoint"])}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_codepoint {source=[1:10..1:13); codepoint=(Malformed ["[1:11..1:12): Invalid codepoint"])}) + (Tok_end_of_input {source=[1:13..1:13)}) ``'\ `` - [1:0..2:0) : - [2:0..2:0) : + (Tok_codepoint {source=[1:0..2:0); codepoint=(Malformed ["[1:0..2:0): Unterminated codepoint literal"; "[1:1..2:0): Illegal backslash escape"])}) + (Tok_end_of_input {source=[2:0..2:0)}) ``'\u{0}x'`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_codepoint {source=[1:0..1:8); codepoint=(Malformed ["[1:6..1:7): Excess codepoint before terminator"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``'\u{110ffff}'`` - [1:0..1:13) : - [1:13..1:13) : + (Tok_codepoint {source=[1:0..1:13); codepoint=(Malformed ["[1:1..1:12): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:13..1:13)}) ``'\u{110000}'`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_codepoint {source=[1:0..1:12); codepoint=(Malformed ["[1:1..1:11): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``'\u{110000}'`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_codepoint {source=[1:0..1:12); codepoint=(Malformed ["[1:1..1:11): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``'\u{d800}'`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_codepoint {source=[1:0..1:10); codepoint=(Malformed ["[1:1..1:9): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``'\u{0z1}'`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_codepoint {source=[1:0..1:9); codepoint=(Malformed ["[1:1..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``'\u{x'`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_codepoint {source=[1:0..1:6); codepoint=(Malformed ["[1:1..1:5): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``'\u{0}a'`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_codepoint {source=[1:0..1:8); codepoint=(Malformed ["[1:6..1:7): Excess codepoint before terminator"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``'\u{0}`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_codepoint {source=[1:0..1:6); codepoint=(Malformed ["[1:0..1:6): Unterminated codepoint literal"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``'\u{0'`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_codepoint {source=[1:0..1:6); codepoint=(Malformed ["[1:0..1:6): Unterminated codepoint literal"; "[1:1..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``'\u{'`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_codepoint {source=[1:0..1:5); codepoint=(Malformed ["[1:0..1:5): Unterminated codepoint literal"; "[1:1..1:5): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``'\u00'`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_codepoint {source=[1:0..1:6); codepoint=(Malformed ["[1:1..1:4): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``'\u0'`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_codepoint {source=[1:0..1:5); codepoint=(Malformed ["[1:1..1:4): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``'\u'`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_codepoint {source=[1:0..1:4); codepoint=(Malformed ["[1:0..1:4): Unterminated codepoint literal"; "[1:1..1:4): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``'\u`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_codepoint {source=[1:0..1:3); codepoint=(Malformed ["[1:0..1:3): Unterminated codepoint literal"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``'\x'`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_codepoint {source=[1:0..1:4); codepoint=(Malformed ["[1:1..1:3): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``'\`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_codepoint {source=[1:0..1:2); codepoint=(Malformed ["[1:0..1:2): Unterminated codepoint literal"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``'''`` - [1:0..1:2) : - [1:2..1:3) : - [1:3..1:3) : + (Tok_codepoint {source=[1:0..1:2); codepoint=(Malformed ["[1:0..1:2): Empty codepoint literal"])}) + (Tok_tick {source=[1:2..1:3)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``''`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_codepoint {source=[1:0..1:2); codepoint=(Malformed ["[1:0..1:2): Empty codepoint literal"])}) + (Tok_end_of_input {source=[1:2..1:2)}) diff --git a/bootstrap/test/hmc/scan/test_comment.expected b/bootstrap/test/hmc/scan/test_comment.expected index 37a4ba069..7936fcdb3 100644 --- a/bootstrap/test/hmc/scan/test_comment.expected +++ b/bootstrap/test/hmc/scan/test_comment.expected @@ -1,32 +1,32 @@ ``#`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_hash_comment {source=[1:0..1:1)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``#...`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_hash_comment {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``#... #...`` - [1:0..2:0) : - [2:0..2:4) : - [2:4..2:4) : + (Tok_hash_comment {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..2:4)}) + (Tok_end_of_input {source=[2:4..2:4)}) ``#... #...`` - [1:0..2:0) : - [2:0..2:4) : - [2:4..2:8) : - [2:8..2:8) : + (Tok_hash_comment {source=[1:0..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_hash_comment {source=[2:4..2:8)}) + (Tok_end_of_input {source=[2:8..2:8)}) ``(**)`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_paren_comment {source=[1:0..1:4); paren_comment=(Constant ())}) + (Tok_end_of_input {source=[1:4..1:4)}) ``(***)`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_paren_comment {source=[1:0..1:5); paren_comment=(Constant ())}) + (Tok_end_of_input {source=[1:5..1:5)}) ``(*(*(#*#)*)*)`` - [1:0..1:13) : - [1:13..1:13) : + (Tok_paren_comment {source=[1:0..1:13); paren_comment=(Constant ())}) + (Tok_end_of_input {source=[1:13..1:13)}) ``(**`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_paren_comment {source=[1:0..1:3); paren_comment=(Malformed ["[1:0..1:3): Unterminated comment"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``(*)`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_paren_comment {source=[1:0..1:3); paren_comment=(Malformed ["[1:0..1:3): Unterminated comment"])}) + (Tok_end_of_input {source=[1:3..1:3)}) diff --git a/bootstrap/test/hmc/scan/test_dentation.expected b/bootstrap/test/hmc/scan/test_dentation.expected index a6a10688e..13efb1254 100644 --- a/bootstrap/test/hmc/scan/test_dentation.expected +++ b/bootstrap/test/hmc/scan/test_dentation.expected @@ -1,14 +1,14 @@ ```` - [1:0..1:0) : + (Tok_end_of_input {source=[1:0..1:0)}) ``a`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_end_of_input {source=[1:1..1:1)}) `` `` - [1:0..2:0) : - [2:0..2:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_end_of_input {source=[2:0..2:0)}) ``a b c @@ -20,37 +20,37 @@ h i `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:4) : - [6:4..6:4) : - [6:4..6:5) : - [6:5..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:1) : - [7:1..8:0) : - [8:0..8:0) : - [8:0..8:1) : - [8:1..9:0) : - [9:0..9:0) : - [9:0..9:1) : - [9:1..10:0) : - [10:0..10:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_line_delim {source=[2:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "b")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_line_delim {source=[3:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "c")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "d")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_line_delim {source=[5:4..5:4)}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "e")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_whitespace {source=[6:0..6:4)}) + (Tok_line_delim {source=[6:4..6:4)}) + (Tok_uident {source=[6:4..6:5); uident=(Constant "f")}) + (Tok_whitespace {source=[6:5..7:0)}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_line_delim {source=[7:0..7:0)}) + (Tok_uident {source=[7:0..7:1); uident=(Constant "g")}) + (Tok_whitespace {source=[7:1..8:0)}) + (Tok_line_delim {source=[8:0..8:0)}) + (Tok_uident {source=[8:0..8:1); uident=(Constant "h")}) + (Tok_whitespace {source=[8:1..9:0)}) + (Tok_line_delim {source=[9:0..9:0)}) + (Tok_uident {source=[9:0..9:1); uident=(Constant "i")}) + (Tok_whitespace {source=[9:1..10:0)}) + (Tok_end_of_input {source=[10:0..10:0)}) ``a b c @@ -58,24 +58,24 @@ i e `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:6) : - [3:6..3:7) : - [3:7..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:0) : - [5:0..5:0) : - [5:0..5:1) : - [5:1..6:0) : - [6:0..6:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:6)}) + (Tok_uident {source=[3:6..3:7); uident=(Constant "c")}) + (Tok_whitespace {source=[3:7..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "d")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_line_delim {source=[5:0..5:0)}) + (Tok_uident {source=[5:0..5:1); uident=(Constant "e")}) + (Tok_whitespace {source=[5:1..6:0)}) + (Tok_end_of_input {source=[6:0..6:0)}) `` a @@ -84,21 +84,21 @@ b d `` - [1:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:0) : - [5:0..5:0) : - [5:0..5:1) : - [5:1..6:0) : - [6:0..6:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "a")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_line_delim {source=[3:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "b")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "c")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_line_delim {source=[5:0..5:0)}) + (Tok_uident {source=[5:0..5:1); uident=(Constant "d")}) + (Tok_whitespace {source=[5:1..6:0)}) + (Tok_end_of_input {source=[6:0..6:0)}) `` a @@ -107,23 +107,23 @@ a d `` - [1:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..4:0) : - [4:0..4:2) : - [4:2..4:2) : - [4:2..4:3) : - [4:3..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:0) : - [6:0..6:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "a")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_indent {source=[3:4..3:4); indent=(Constant ())}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "b")}) + (Tok_whitespace {source=[3:5..4:0)}) + (Tok_whitespace {source=[4:0..4:2)}) + (Tok_dedent {source=[4:2..4:2); dedent=(Constant ())}) + (Tok_uident {source=[4:2..4:3); uident=(Constant "c")}) + (Tok_whitespace {source=[4:3..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_indent {source=[5:4..5:4); indent=(Constant ())}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "d")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_dedent {source=[6:0..6:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[6:0..6:0)}) ``a b c @@ -131,89 +131,89 @@ a d e f`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..4:0) : - [4:0..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:8) : - [6:8..6:8) : - [6:8..6:9) : - [6:9..7:0) : - [7:0..7:8) : - [7:8..7:8) : - [7:8..7:9) : - [7:9..7:9) : - [7:9..7:9) : - [7:9..7:9) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_line_delim {source=[3:4..3:4)}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "c")}) + (Tok_whitespace {source=[3:5..4:0)}) + (Tok_whitespace {source=[4:0..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_line_delim {source=[5:4..5:4)}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "d")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_whitespace {source=[6:0..6:8)}) + (Tok_indent {source=[6:8..6:8); indent=(Constant ())}) + (Tok_uident {source=[6:8..6:9); uident=(Constant "e")}) + (Tok_whitespace {source=[6:9..7:0)}) + (Tok_whitespace {source=[7:0..7:8)}) + (Tok_line_delim {source=[7:8..7:8)}) + (Tok_uident {source=[7:8..7:9); uident=(Constant "f")}) + (Tok_dedent {source=[7:9..7:9); dedent=(Constant ())}) + (Tok_dedent {source=[7:9..7:9); dedent=(Constant ())}) + (Tok_end_of_input {source=[7:9..7:9)}) ``a b c`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..3:5) : - [3:5..3:5) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_line_delim {source=[3:4..3:4)}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "c")}) + (Tok_dedent {source=[3:5..3:5); dedent=(Constant ())}) + (Tok_end_of_input {source=[3:5..3:5)}) ``a b c d`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..3:6) : - [3:6..3:7) : - [3:7..3:7) : - [3:7..3:7) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_line_delim {source=[3:4..3:4)}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "c")}) + (Tok_whitespace {source=[3:5..3:6)}) + (Tok_uident {source=[3:6..3:7); uident=(Constant "d")}) + (Tok_dedent {source=[3:7..3:7); dedent=(Constant ())}) + (Tok_end_of_input {source=[3:7..3:7)}) ``a b c d`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..2:5) : - [2:5..2:5) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:3); uident=(Constant "b")}) + (Tok_whitespace {source=[1:3..1:4)}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "c")}) + (Tok_whitespace {source=[1:5..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "d")}) + (Tok_dedent {source=[2:5..2:5); dedent=(Constant ())}) + (Tok_end_of_input {source=[2:5..2:5)}) `` |`` - [1:0..1:8) : - [1:8..1:9) : - [1:9..1:9) : + (Tok_error {source=[1:0..1:8); error=["[1:0..1:8): Unsupported codepoint"]}) + (Tok_bar {source=[1:8..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) `` `` - [1:0..1:2) : - [1:2..1:2) : + (Tok_whitespace {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) `` `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_whitespace {source=[2:0..3:0)}) + (Tok_end_of_input {source=[3:0..3:0)}) ``# a b c @@ -223,56 +223,56 @@ b g `` - [1:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..4:0) : - [4:0..4:4) : - [4:4..5:0) : - [5:0..6:0) : - [6:0..6:4) : - [6:4..6:4) : - [6:4..6:5) : - [6:5..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:1) : - [7:1..8:0) : - [8:0..8:0) : + (Tok_hash_comment {source=[1:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "b")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_indent {source=[3:4..3:4); indent=(Constant ())}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "c")}) + (Tok_whitespace {source=[3:5..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_hash_comment {source=[4:4..5:0)}) + (Tok_hash_comment {source=[5:0..6:0)}) + (Tok_whitespace {source=[6:0..6:4)}) + (Tok_line_delim {source=[6:4..6:4)}) + (Tok_uident {source=[6:4..6:5); uident=(Constant "f")}) + (Tok_whitespace {source=[6:5..7:0)}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_line_delim {source=[7:0..7:0)}) + (Tok_uident {source=[7:0..7:1); uident=(Constant "g")}) + (Tok_whitespace {source=[7:1..8:0)}) + (Tok_end_of_input {source=[8:0..8:0)}) ``a b`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..3:0) : - [3:0..4:0) : - [4:0..4:0) : - [4:0..4:1) : - [4:1..4:1) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..3:0)}) + (Tok_whitespace {source=[3:0..4:0)}) + (Tok_line_delim {source=[4:0..4:0)}) + (Tok_uident {source=[4:0..4:1); uident=(Constant "b")}) + (Tok_end_of_input {source=[4:1..4:1)}) ``a b (* Ignore. *) c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:13) : - [3:13..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:0) : - [5:0..5:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:13); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:13..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "c")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[5:0..5:0)}) ``a b (* Ignore. *) (* ... *) # ... @@ -291,107 +291,107 @@ b`` i `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:13) : - [3:13..3:14) : - [3:14..3:23) : - [3:23..3:24) : - [3:24..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:1) : - [5:1..5:14) : - [5:14..5:15) : - [5:15..5:24) : - [5:24..5:25) : - [5:25..6:0) : - [6:0..6:4) : - [6:4..6:4) : - [6:4..6:5) : - [6:5..7:0) : - [7:0..7:2) : - [7:2..7:15) : - [7:15..7:16) : - [7:16..7:25) : - [7:25..7:26) : - [7:26..8:0) : - [8:0..8:4) : - [8:4..8:4) : - [8:4..8:5) : - [8:5..9:0) : - [9:0..9:3) : - [9:3..9:16) : - [9:16..9:17) : - [9:17..9:26) : - [9:26..9:27) : - [9:27..10:0) : - [10:0..10:4) : - [10:4..10:4) : - [10:4..10:5) : - [10:5..11:0) : - [11:0..11:4) : - [11:4..11:17) : - [11:17..11:18) : - [11:18..11:27) : - [11:27..11:28) : - [11:28..12:0) : - [12:0..12:4) : - [12:4..12:4) : - [12:4..12:5) : - [12:5..13:0) : - [13:0..13:5) : - [13:5..13:18) : - [13:18..13:19) : - [13:19..13:28) : - [13:28..13:29) : - [13:29..14:0) : - [14:0..14:8) : - [14:8..14:8) : - [14:8..14:9) : - [14:9..15:0) : - [15:0..15:12) : - [15:12..15:25) : - [15:25..15:26) : - [15:26..15:35) : - [15:35..15:36) : - [15:36..16:0) : - [16:0..16:8) : - [16:8..16:8) : - [16:8..16:9) : - [16:9..17:0) : - [17:0..17:0) : - [17:0..17:0) : - [17:0..17:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:13); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:13..3:14)}) + (Tok_paren_comment {source=[3:14..3:23); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:23..3:24)}) + (Tok_hash_comment {source=[3:24..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "c")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:1)}) + (Tok_paren_comment {source=[5:1..5:14); paren_comment=(Constant ())}) + (Tok_whitespace {source=[5:14..5:15)}) + (Tok_paren_comment {source=[5:15..5:24); paren_comment=(Constant ())}) + (Tok_whitespace {source=[5:24..5:25)}) + (Tok_hash_comment {source=[5:25..6:0)}) + (Tok_whitespace {source=[6:0..6:4)}) + (Tok_line_delim {source=[6:4..6:4)}) + (Tok_uident {source=[6:4..6:5); uident=(Constant "d")}) + (Tok_whitespace {source=[6:5..7:0)}) + (Tok_whitespace {source=[7:0..7:2)}) + (Tok_paren_comment {source=[7:2..7:15); paren_comment=(Constant ())}) + (Tok_whitespace {source=[7:15..7:16)}) + (Tok_paren_comment {source=[7:16..7:25); paren_comment=(Constant ())}) + (Tok_whitespace {source=[7:25..7:26)}) + (Tok_hash_comment {source=[7:26..8:0)}) + (Tok_whitespace {source=[8:0..8:4)}) + (Tok_line_delim {source=[8:4..8:4)}) + (Tok_uident {source=[8:4..8:5); uident=(Constant "e")}) + (Tok_whitespace {source=[8:5..9:0)}) + (Tok_whitespace {source=[9:0..9:3)}) + (Tok_paren_comment {source=[9:3..9:16); paren_comment=(Constant ())}) + (Tok_whitespace {source=[9:16..9:17)}) + (Tok_paren_comment {source=[9:17..9:26); paren_comment=(Constant ())}) + (Tok_whitespace {source=[9:26..9:27)}) + (Tok_hash_comment {source=[9:27..10:0)}) + (Tok_whitespace {source=[10:0..10:4)}) + (Tok_line_delim {source=[10:4..10:4)}) + (Tok_uident {source=[10:4..10:5); uident=(Constant "f")}) + (Tok_whitespace {source=[10:5..11:0)}) + (Tok_whitespace {source=[11:0..11:4)}) + (Tok_paren_comment {source=[11:4..11:17); paren_comment=(Constant ())}) + (Tok_whitespace {source=[11:17..11:18)}) + (Tok_paren_comment {source=[11:18..11:27); paren_comment=(Constant ())}) + (Tok_whitespace {source=[11:27..11:28)}) + (Tok_hash_comment {source=[11:28..12:0)}) + (Tok_whitespace {source=[12:0..12:4)}) + (Tok_line_delim {source=[12:4..12:4)}) + (Tok_uident {source=[12:4..12:5); uident=(Constant "g")}) + (Tok_whitespace {source=[12:5..13:0)}) + (Tok_whitespace {source=[13:0..13:5)}) + (Tok_paren_comment {source=[13:5..13:18); paren_comment=(Constant ())}) + (Tok_whitespace {source=[13:18..13:19)}) + (Tok_paren_comment {source=[13:19..13:28); paren_comment=(Constant ())}) + (Tok_whitespace {source=[13:28..13:29)}) + (Tok_hash_comment {source=[13:29..14:0)}) + (Tok_whitespace {source=[14:0..14:8)}) + (Tok_indent {source=[14:8..14:8); indent=(Constant ())}) + (Tok_uident {source=[14:8..14:9); uident=(Constant "h")}) + (Tok_whitespace {source=[14:9..15:0)}) + (Tok_whitespace {source=[15:0..15:12)}) + (Tok_paren_comment {source=[15:12..15:25); paren_comment=(Constant ())}) + (Tok_whitespace {source=[15:25..15:26)}) + (Tok_paren_comment {source=[15:26..15:35); paren_comment=(Constant ())}) + (Tok_whitespace {source=[15:35..15:36)}) + (Tok_hash_comment {source=[15:36..16:0)}) + (Tok_whitespace {source=[16:0..16:8)}) + (Tok_line_delim {source=[16:8..16:8)}) + (Tok_uident {source=[16:8..16:9); uident=(Constant "i")}) + (Tok_whitespace {source=[16:9..17:0)}) + (Tok_dedent {source=[17:0..17:0); dedent=(Constant ())}) + (Tok_dedent {source=[17:0..17:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[17:0..17:0)}) ``a b (* Ignore. *) (* ... *) # ... c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:13) : - [3:13..3:14) : - [3:14..3:23) : - [3:23..3:24) : - [3:24..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:0) : - [5:0..5:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:13); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:13..3:14)}) + (Tok_paren_comment {source=[3:14..3:23); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:23..3:24)}) + (Tok_hash_comment {source=[3:24..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "c")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[5:0..5:0)}) ``a b (* Ignore. *) (* @@ -399,47 +399,47 @@ b`` c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:13) : - [3:13..3:14) : - [3:14..4:7) : - [4:7..4:8) : - [4:8..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:0) : - [6:0..6:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:13); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:13..3:14)}) + (Tok_paren_comment {source=[3:14..4:7); paren_comment=(Constant ())}) + (Tok_whitespace {source=[4:7..4:8)}) + (Tok_hash_comment {source=[4:8..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_line_delim {source=[5:4..5:4)}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "c")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_dedent {source=[6:0..6:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[6:0..6:0)}) ``a b (* Don't ignore. *) true c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:19) : - [3:19..3:20) : - [3:20..3:20) : - [3:20..3:20) : - [3:20..3:24) : - [3:24..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:0) : - [5:0..5:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:19); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:19..3:20)}) + (Tok_dedent {source=[3:20..3:20); dedent=(Constant ())}) + (Tok_line_delim {source=[3:20..3:20)}) + (Tok_true {source=[3:20..3:24)}) + (Tok_whitespace {source=[3:24..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "c")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[5:0..5:0)}) ``a b (* Don't ignore. *) (* ... @@ -447,26 +447,26 @@ b`` c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:19) : - [3:19..3:20) : - [3:20..4:3) : - [4:3..4:4) : - [4:4..4:4) : - [4:4..4:4) : - [4:4..4:8) : - [4:8..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:0) : - [6:0..6:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:19); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:19..3:20)}) + (Tok_paren_comment {source=[3:20..4:3); paren_comment=(Constant ())}) + (Tok_whitespace {source=[4:3..4:4)}) + (Tok_dedent {source=[4:4..4:4); dedent=(Constant ())}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_true {source=[4:4..4:8)}) + (Tok_whitespace {source=[4:8..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_indent {source=[5:4..5:4); indent=(Constant ())}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "c")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_dedent {source=[6:0..6:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[6:0..6:0)}) ``a b (* Don't ignore. *) (* @@ -474,26 +474,26 @@ b`` c `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:19) : - [3:19..3:20) : - [3:20..4:7) : - [4:7..4:8) : - [4:8..4:8) : - [4:8..4:8) : - [4:8..4:12) : - [4:12..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:0) : - [6:0..6:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_paren_comment {source=[3:0..3:19); paren_comment=(Constant ())}) + (Tok_whitespace {source=[3:19..3:20)}) + (Tok_paren_comment {source=[3:20..4:7); paren_comment=(Constant ())}) + (Tok_whitespace {source=[4:7..4:8)}) + (Tok_dedent {source=[4:8..4:8); dedent=(Constant ())}) + (Tok_line_delim {source=[4:8..4:8)}) + (Tok_true {source=[4:8..4:12)}) + (Tok_whitespace {source=[4:12..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_indent {source=[5:4..5:4); indent=(Constant ())}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "c")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_dedent {source=[6:0..6:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[6:0..6:0)}) ``a b c @@ -501,28 +501,28 @@ b`` e `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:12) : - [4:12..4:12) : - [4:12..4:13) : - [4:13..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:0) : - [6:0..6:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "c")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_whitespace {source=[4:0..4:12)}) + (Tok_indent {source=[4:12..4:12); indent=(Constant ())}) + (Tok_uident {source=[4:12..4:13); uident=(Constant "d")}) + (Tok_whitespace {source=[4:13..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_dedent {source=[5:4..5:4); dedent=(Constant ())}) + (Tok_dedent {source=[5:4..5:4); dedent=(Constant ())}) + (Tok_line_delim {source=[5:4..5:4)}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "e")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_dedent {source=[6:0..6:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[6:0..6:0)}) ``a b c @@ -531,31 +531,31 @@ b`` f `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:12) : - [4:12..4:12) : - [4:12..4:13) : - [4:13..5:0) : - [5:0..5:6) : - [5:6..5:6) : - [5:6..5:6) : - [5:6..5:7) : - [5:7..6:0) : - [6:0..6:4) : - [6:4..6:4) : - [6:4..6:5) : - [6:5..7:0) : - [7:0..7:0) : - [7:0..7:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "c")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_whitespace {source=[4:0..4:12)}) + (Tok_indent {source=[4:12..4:12); indent=(Constant ())}) + (Tok_uident {source=[4:12..4:13); uident=(Constant "d")}) + (Tok_whitespace {source=[4:13..5:0)}) + (Tok_whitespace {source=[5:0..5:6)}) + (Tok_dedent {source=[5:6..5:6); dedent=(Constant ())}) + (Tok_dedent {source=[5:6..5:6); dedent=(Constant ())}) + (Tok_uident {source=[5:6..5:7); uident=(Constant "e")}) + (Tok_whitespace {source=[5:7..6:0)}) + (Tok_whitespace {source=[6:0..6:4)}) + (Tok_line_delim {source=[6:4..6:4)}) + (Tok_uident {source=[6:4..6:5); uident=(Constant "f")}) + (Tok_whitespace {source=[6:5..7:0)}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[7:0..7:0)}) ``a b c @@ -567,83 +567,83 @@ b`` i `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:4) : - [3:4..3:4) : - [3:4..3:5) : - [3:5..4:0) : - [4:0..4:2) : - [4:2..4:2) : - [4:2..4:3) : - [4:3..5:0) : - [5:0..5:4) : - [5:4..5:4) : - [5:4..5:5) : - [5:5..6:0) : - [6:0..6:8) : - [6:8..6:8) : - [6:8..6:9) : - [6:9..7:0) : - [7:0..7:6) : - [7:6..7:6) : - [7:6..7:7) : - [7:7..8:0) : - [8:0..8:8) : - [8:8..8:8) : - [8:8..8:9) : - [8:9..9:0) : - [9:0..9:4) : - [9:4..9:4) : - [9:4..9:4) : - [9:4..9:5) : - [9:5..10:0) : - [10:0..10:0) : - [10:0..10:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:4)}) + (Tok_line_delim {source=[3:4..3:4)}) + (Tok_uident {source=[3:4..3:5); uident=(Constant "c")}) + (Tok_whitespace {source=[3:5..4:0)}) + (Tok_whitespace {source=[4:0..4:2)}) + (Tok_dedent {source=[4:2..4:2); dedent=(Constant ())}) + (Tok_uident {source=[4:2..4:3); uident=(Constant "d")}) + (Tok_whitespace {source=[4:3..5:0)}) + (Tok_whitespace {source=[5:0..5:4)}) + (Tok_indent {source=[5:4..5:4); indent=(Constant ())}) + (Tok_uident {source=[5:4..5:5); uident=(Constant "e")}) + (Tok_whitespace {source=[5:5..6:0)}) + (Tok_whitespace {source=[6:0..6:8)}) + (Tok_indent {source=[6:8..6:8); indent=(Constant ())}) + (Tok_uident {source=[6:8..6:9); uident=(Constant "f")}) + (Tok_whitespace {source=[6:9..7:0)}) + (Tok_whitespace {source=[7:0..7:6)}) + (Tok_dedent {source=[7:6..7:6); dedent=(Constant ())}) + (Tok_uident {source=[7:6..7:7); uident=(Constant "g")}) + (Tok_whitespace {source=[7:7..8:0)}) + (Tok_whitespace {source=[8:0..8:8)}) + (Tok_indent {source=[8:8..8:8); indent=(Constant ())}) + (Tok_uident {source=[8:8..8:9); uident=(Constant "h")}) + (Tok_whitespace {source=[8:9..9:0)}) + (Tok_whitespace {source=[9:0..9:4)}) + (Tok_dedent {source=[9:4..9:4); dedent=(Constant ())}) + (Tok_line_delim {source=[9:4..9:4)}) + (Tok_uident {source=[9:4..9:5); uident=(Constant "i")}) + (Tok_whitespace {source=[9:5..10:0)}) + (Tok_dedent {source=[10:0..10:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[10:0..10:0)}) ``a b c d `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:2) : - [2:2..2:3) : - [2:3..3:0) : - [3:0..3:2) : - [3:2..3:3) : - [3:3..4:0) : - [4:0..4:0) : - [4:0..4:1) : - [4:1..5:0) : - [5:0..5:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:2)}) + (Tok_uident {source=[2:2..2:3); uident=(Constant "b")}) + (Tok_whitespace {source=[2:3..3:0)}) + (Tok_whitespace {source=[3:0..3:2)}) + (Tok_uident {source=[3:2..3:3); uident=(Constant "c")}) + (Tok_whitespace {source=[3:3..4:0)}) + (Tok_line_delim {source=[4:0..4:0)}) + (Tok_uident {source=[4:0..4:1); uident=(Constant "d")}) + (Tok_whitespace {source=[4:1..5:0)}) + (Tok_end_of_input {source=[5:0..5:0)}) ``a b c d `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:0) : - [4:0..4:0) : - [4:0..4:0) : - [4:0..4:1) : - [4:1..5:0) : - [5:0..5:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "c")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_line_delim {source=[4:0..4:0)}) + (Tok_uident {source=[4:0..4:1); uident=(Constant "d")}) + (Tok_whitespace {source=[4:1..5:0)}) + (Tok_end_of_input {source=[5:0..5:0)}) `` # : | : | : | : | : | : | @@ -654,29 +654,29 @@ a a2 `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:2) : - [7:2..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_line_delim {source=[7:0..7:0)}) + (Tok_uident {source=[7:0..7:2); uident=(Constant "a2")}) + (Tok_whitespace {source=[7:2..8:0)}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -687,30 +687,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:1) : - [7:1..7:1) : - [7:1..7:1) : - [7:1..7:1) : - [7:1..7:1) : - [7:1..7:2) : - [7:2..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:1)}) + (Tok_dedent {source=[7:1..7:1); dedent=(Malformed ["[7:1..7:1): Missing dedent"])}) + (Tok_dedent {source=[7:1..7:1); dedent=(Malformed ["[7:1..7:1): Missing dedent"])}) + (Tok_dedent {source=[7:1..7:1); dedent=(Malformed ["[7:1..7:1): Missing dedent"])}) + (Tok_misaligned {source=[7:1..7:1)}) + (Tok_uident {source=[7:1..7:2); uident=(Constant "x")}) + (Tok_whitespace {source=[7:2..8:0)}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -721,29 +721,29 @@ a a' `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:2) : - [7:2..7:2) : - [7:2..7:2) : - [7:2..7:2) : - [7:2..7:4) : - [7:4..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:2)}) + (Tok_dedent {source=[7:2..7:2); dedent=(Constant ())}) + (Tok_dedent {source=[7:2..7:2); dedent=(Constant ())}) + (Tok_dedent {source=[7:2..7:2); dedent=(Constant ())}) + (Tok_uident {source=[7:2..7:4); uident=(Constant "a'")}) + (Tok_whitespace {source=[7:4..8:0)}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -754,30 +754,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:3) : - [7:3..7:3) : - [7:3..7:3) : - [7:3..7:3) : - [7:3..7:4) : - [7:4..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:3)}) + (Tok_dedent {source=[7:3..7:3); dedent=(Malformed ["[7:3..7:3): Missing dedent"])}) + (Tok_dedent {source=[7:3..7:3); dedent=(Malformed ["[7:3..7:3): Missing dedent"])}) + (Tok_misaligned {source=[7:3..7:3)}) + (Tok_uident {source=[7:3..7:4); uident=(Constant "x")}) + (Tok_whitespace {source=[7:4..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -788,30 +788,30 @@ a b2 `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:4) : - [7:4..7:4) : - [7:4..7:4) : - [7:4..7:4) : - [7:4..7:6) : - [7:6..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:4)}) + (Tok_dedent {source=[7:4..7:4); dedent=(Constant ())}) + (Tok_dedent {source=[7:4..7:4); dedent=(Constant ())}) + (Tok_line_delim {source=[7:4..7:4)}) + (Tok_uident {source=[7:4..7:6); uident=(Constant "b2")}) + (Tok_whitespace {source=[7:6..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -822,30 +822,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:5) : - [7:5..7:5) : - [7:5..7:5) : - [7:5..7:5) : - [7:5..7:6) : - [7:6..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:5)}) + (Tok_dedent {source=[7:5..7:5); dedent=(Malformed ["[7:5..7:5): Missing dedent"])}) + (Tok_dedent {source=[7:5..7:5); dedent=(Malformed ["[7:5..7:5): Missing dedent"])}) + (Tok_misaligned {source=[7:5..7:5)}) + (Tok_uident {source=[7:5..7:6); uident=(Constant "x")}) + (Tok_whitespace {source=[7:6..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -856,29 +856,29 @@ a b' `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:6) : - [7:6..7:6) : - [7:6..7:6) : - [7:6..7:8) : - [7:8..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:6)}) + (Tok_dedent {source=[7:6..7:6); dedent=(Constant ())}) + (Tok_dedent {source=[7:6..7:6); dedent=(Constant ())}) + (Tok_uident {source=[7:6..7:8); uident=(Constant "b'")}) + (Tok_whitespace {source=[7:8..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -889,30 +889,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:7) : - [7:7..7:7) : - [7:7..7:7) : - [7:7..7:8) : - [7:8..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:7)}) + (Tok_dedent {source=[7:7..7:7); dedent=(Malformed ["[7:7..7:7): Missing dedent"])}) + (Tok_misaligned {source=[7:7..7:7)}) + (Tok_uident {source=[7:7..7:8); uident=(Constant "x")}) + (Tok_whitespace {source=[7:8..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -923,30 +923,30 @@ a c2 `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:8) : - [7:8..7:8) : - [7:8..7:8) : - [7:8..7:10) : - [7:10..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:8)}) + (Tok_dedent {source=[7:8..7:8); dedent=(Constant ())}) + (Tok_line_delim {source=[7:8..7:8)}) + (Tok_uident {source=[7:8..7:10); uident=(Constant "c2")}) + (Tok_whitespace {source=[7:10..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -957,30 +957,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:9) : - [7:9..7:9) : - [7:9..7:9) : - [7:9..7:10) : - [7:10..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:9)}) + (Tok_dedent {source=[7:9..7:9); dedent=(Malformed ["[7:9..7:9): Missing dedent"])}) + (Tok_misaligned {source=[7:9..7:9)}) + (Tok_uident {source=[7:9..7:10); uident=(Constant "x")}) + (Tok_whitespace {source=[7:10..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -991,29 +991,29 @@ a c' `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:10) : - [7:10..7:10) : - [7:10..7:12) : - [7:12..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:10)}) + (Tok_dedent {source=[7:10..7:10); dedent=(Constant ())}) + (Tok_uident {source=[7:10..7:12); uident=(Constant "c'")}) + (Tok_whitespace {source=[7:12..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1024,30 +1024,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:11) : - [7:11..7:11) : - [7:11..7:12) : - [7:12..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:11)}) + (Tok_misaligned {source=[7:11..7:11)}) + (Tok_uident {source=[7:11..7:12); uident=(Constant "x")}) + (Tok_whitespace {source=[7:12..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1058,30 +1058,30 @@ a d2 `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:12) : - [7:12..7:12) : - [7:12..7:14) : - [7:14..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:12)}) + (Tok_line_delim {source=[7:12..7:12)}) + (Tok_uident {source=[7:12..7:14); uident=(Constant "d2")}) + (Tok_whitespace {source=[7:14..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1092,30 +1092,30 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:13) : - [7:13..7:13) : - [7:13..7:14) : - [7:14..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:13)}) + (Tok_misaligned {source=[7:13..7:13)}) + (Tok_uident {source=[7:13..7:14); uident=(Constant "x")}) + (Tok_whitespace {source=[7:14..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1126,29 +1126,29 @@ a d' `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:14) : - [7:14..7:16) : - [7:16..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:14)}) + (Tok_uident {source=[7:14..7:16); uident=(Constant "d'")}) + (Tok_whitespace {source=[7:16..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1159,32 +1159,32 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:15) : - [7:15..7:15) : - [7:15..7:15) : - [7:15..7:16) : - [7:16..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:15)}) + (Tok_indent {source=[7:15..7:15); indent=(Malformed ["[7:15..7:15): Missing indent"])}) + (Tok_misaligned {source=[7:15..7:15)}) + (Tok_uident {source=[7:15..7:16); uident=(Constant "x")}) + (Tok_whitespace {source=[7:16..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1195,31 +1195,31 @@ a e `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:16) : - [7:16..7:16) : - [7:16..7:17) : - [7:17..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:16)}) + (Tok_indent {source=[7:16..7:16); indent=(Constant ())}) + (Tok_uident {source=[7:16..7:17); uident=(Constant "e")}) + (Tok_whitespace {source=[7:17..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1230,32 +1230,32 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:17) : - [7:17..7:17) : - [7:17..7:17) : - [7:17..7:18) : - [7:18..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:17)}) + (Tok_indent {source=[7:17..7:17); indent=(Malformed ["[7:17..7:17): Missing indent"])}) + (Tok_misaligned {source=[7:17..7:17)}) + (Tok_uident {source=[7:17..7:18); uident=(Constant "x")}) + (Tok_whitespace {source=[7:18..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1266,31 +1266,31 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:18) : - [7:18..7:18) : - [7:18..7:19) : - [7:19..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:18)}) + (Tok_indent {source=[7:18..7:18); indent=(Malformed ["[7:18..7:18): Missing indent"])}) + (Tok_uident {source=[7:18..7:19); uident=(Constant "x")}) + (Tok_whitespace {source=[7:19..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1301,34 +1301,34 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:19) : - [7:19..7:19) : - [7:19..7:19) : - [7:19..7:19) : - [7:19..7:20) : - [7:20..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:19)}) + (Tok_indent {source=[7:19..7:19); indent=(Malformed ["[7:19..7:19): Missing indent"])}) + (Tok_indent {source=[7:19..7:19); indent=(Malformed ["[7:19..7:19): Missing indent"])}) + (Tok_misaligned {source=[7:19..7:19)}) + (Tok_uident {source=[7:19..7:20); uident=(Constant "x")}) + (Tok_whitespace {source=[7:20..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1339,33 +1339,33 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:20) : - [7:20..7:20) : - [7:20..7:20) : - [7:20..7:21) : - [7:21..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:20)}) + (Tok_indent {source=[7:20..7:20); indent=(Malformed ["[7:20..7:20): Missing indent"])}) + (Tok_indent {source=[7:20..7:20); indent=(Constant ())}) + (Tok_uident {source=[7:20..7:21); uident=(Constant "x")}) + (Tok_whitespace {source=[7:21..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1376,34 +1376,34 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:21) : - [7:21..7:21) : - [7:21..7:21) : - [7:21..7:21) : - [7:21..7:22) : - [7:22..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:21)}) + (Tok_indent {source=[7:21..7:21); indent=(Malformed ["[7:21..7:21): Missing indent"])}) + (Tok_indent {source=[7:21..7:21); indent=(Malformed ["[7:21..7:21): Missing indent"])}) + (Tok_misaligned {source=[7:21..7:21)}) + (Tok_uident {source=[7:21..7:22); uident=(Constant "x")}) + (Tok_whitespace {source=[7:22..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1414,33 +1414,33 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:22) : - [7:22..7:22) : - [7:22..7:22) : - [7:22..7:23) : - [7:23..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:22)}) + (Tok_indent {source=[7:22..7:22); indent=(Malformed ["[7:22..7:22): Missing indent"])}) + (Tok_indent {source=[7:22..7:22); indent=(Malformed ["[7:22..7:22): Missing indent"])}) + (Tok_uident {source=[7:22..7:23); uident=(Constant "x")}) + (Tok_whitespace {source=[7:23..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1451,36 +1451,36 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:23) : - [7:23..7:23) : - [7:23..7:23) : - [7:23..7:23) : - [7:23..7:23) : - [7:23..7:24) : - [7:24..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:23)}) + (Tok_indent {source=[7:23..7:23); indent=(Malformed ["[7:23..7:23): Missing indent"])}) + (Tok_indent {source=[7:23..7:23); indent=(Malformed ["[7:23..7:23): Missing indent"])}) + (Tok_indent {source=[7:23..7:23); indent=(Malformed ["[7:23..7:23): Missing indent"])}) + (Tok_misaligned {source=[7:23..7:23)}) + (Tok_uident {source=[7:23..7:24); uident=(Constant "x")}) + (Tok_whitespace {source=[7:24..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1491,35 +1491,35 @@ a x `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:1) : - [3:1..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:8) : - [5:8..5:8) : - [5:8..5:9) : - [5:9..6:0) : - [6:0..6:12) : - [6:12..6:12) : - [6:12..6:13) : - [6:13..7:0) : - [7:0..7:24) : - [7:24..7:24) : - [7:24..7:24) : - [7:24..7:24) : - [7:24..7:25) : - [7:25..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : - [8:0..8:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_uident {source=[3:0..3:1); uident=(Constant "a")}) + (Tok_whitespace {source=[3:1..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_indent {source=[4:4..4:4); indent=(Constant ())}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:8)}) + (Tok_indent {source=[5:8..5:8); indent=(Constant ())}) + (Tok_uident {source=[5:8..5:9); uident=(Constant "c")}) + (Tok_whitespace {source=[5:9..6:0)}) + (Tok_whitespace {source=[6:0..6:12)}) + (Tok_indent {source=[6:12..6:12); indent=(Constant ())}) + (Tok_uident {source=[6:12..6:13); uident=(Constant "d")}) + (Tok_whitespace {source=[6:13..7:0)}) + (Tok_whitespace {source=[7:0..7:24)}) + (Tok_indent {source=[7:24..7:24); indent=(Malformed ["[7:24..7:24): Missing indent"])}) + (Tok_indent {source=[7:24..7:24); indent=(Malformed ["[7:24..7:24): Missing indent"])}) + (Tok_indent {source=[7:24..7:24); indent=(Constant ())}) + (Tok_uident {source=[7:24..7:25); uident=(Constant "x")}) + (Tok_whitespace {source=[7:25..8:0)}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_dedent {source=[8:0..8:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[8:0..8:0)}) `` # : | : | : | : | : | : | @@ -1529,166 +1529,166 @@ a d `` - [1:0..2:0) : - [2:0..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:4) : - [4:4..4:4) : - [4:4..4:4) : - [4:4..4:5) : - [4:5..5:0) : - [5:0..5:12) : - [5:12..5:12) : - [5:12..5:12) : - [5:12..5:13) : - [5:13..6:0) : - [6:0..6:24) : - [6:24..6:24) : - [6:24..6:24) : - [6:24..6:24) : - [6:24..6:25) : - [6:25..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : - [7:0..7:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_hash_comment {source=[2:0..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Malformed ["[3:8..3:8): Missing indent"])}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "a")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_whitespace {source=[4:0..4:4)}) + (Tok_dedent {source=[4:4..4:4); dedent=(Constant ())}) + (Tok_line_delim {source=[4:4..4:4)}) + (Tok_uident {source=[4:4..4:5); uident=(Constant "b")}) + (Tok_whitespace {source=[4:5..5:0)}) + (Tok_whitespace {source=[5:0..5:12)}) + (Tok_indent {source=[5:12..5:12); indent=(Malformed ["[5:12..5:12): Missing indent"])}) + (Tok_indent {source=[5:12..5:12); indent=(Constant ())}) + (Tok_uident {source=[5:12..5:13); uident=(Constant "c")}) + (Tok_whitespace {source=[5:13..6:0)}) + (Tok_whitespace {source=[6:0..6:24)}) + (Tok_indent {source=[6:24..6:24); indent=(Malformed ["[6:24..6:24): Missing indent"])}) + (Tok_indent {source=[6:24..6:24); indent=(Malformed ["[6:24..6:24): Missing indent"])}) + (Tok_indent {source=[6:24..6:24); indent=(Constant ())}) + (Tok_uident {source=[6:24..6:25); uident=(Constant "d")}) + (Tok_whitespace {source=[6:25..7:0)}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_dedent {source=[7:0..7:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[7:0..7:0)}) ``(`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_lparen {source=[1:0..1:1)}) + (Tok_end_of_input {source=[1:1..1:1)}) `` `` - [1:0..1:4) : - [1:4..1:4) : + (Tok_whitespace {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) `` a`` - [1:0..1:4) : - [1:4..1:4) : - [1:4..1:5) : - [1:5..1:5) : - [1:5..1:5) : + (Tok_whitespace {source=[1:0..1:4)}) + (Tok_indent {source=[1:4..1:4); indent=(Malformed ["[1:4..1:4): Missing indent"])}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "a")}) + (Tok_dedent {source=[1:5..1:5); dedent=(Constant ())}) + (Tok_end_of_input {source=[1:5..1:5)}) `` a `` - [1:0..1:4) : - [1:4..1:4) : - [1:4..1:5) : - [1:5..2:0) : - [2:0..2:0) : - [2:0..2:0) : + (Tok_whitespace {source=[1:0..1:4)}) + (Tok_indent {source=[1:4..1:4); indent=(Malformed ["[1:4..1:4): Missing indent"])}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "a")}) + (Tok_whitespace {source=[1:5..2:0)}) + (Tok_dedent {source=[2:0..2:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[2:0..2:0)}) `` a b `` - [1:0..1:4) : - [1:4..1:4) : - [1:4..1:5) : - [1:5..2:0) : - [2:0..2:0) : - [2:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:0) : + (Tok_whitespace {source=[1:0..1:4)}) + (Tok_indent {source=[1:4..1:4); indent=(Malformed ["[1:4..1:4): Missing indent"])}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "a")}) + (Tok_whitespace {source=[1:5..2:0)}) + (Tok_dedent {source=[2:0..2:0); dedent=(Constant ())}) + (Tok_line_delim {source=[2:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "b")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_end_of_input {source=[3:0..3:0)}) `` a `` - [1:0..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:0) : - [3:0..3:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Malformed ["[2:4..2:4): Missing indent"])}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "a")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_dedent {source=[3:0..3:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[3:0..3:0)}) `` a b `` - [1:0..2:0) : - [2:0..2:1) : - [2:1..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:0) : - [4:0..4:0) : - [4:0..4:0) : + (Tok_whitespace {source=[1:0..2:0)}) + (Tok_uident {source=[2:0..2:1); uident=(Constant "a")}) + (Tok_whitespace {source=[2:1..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Malformed ["[3:8..3:8): Missing indent"])}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "b")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[4:0..4:0)}) `` a b c d `` - [1:0..1:2) : - [1:2..1:2) : - [1:2..1:3) : - [1:3..2:0) : - [2:0..2:2) : - [2:2..2:3) : - [2:3..3:0) : - [3:0..3:6) : - [3:6..3:6) : - [3:6..3:7) : - [3:7..4:0) : - [4:0..4:6) : - [4:6..4:7) : - [4:7..5:0) : - [5:0..5:0) : - [5:0..5:0) : + (Tok_whitespace {source=[1:0..1:2)}) + (Tok_misaligned {source=[1:2..1:2)}) + (Tok_uident {source=[1:2..1:3); uident=(Constant "a")}) + (Tok_whitespace {source=[1:3..2:0)}) + (Tok_whitespace {source=[2:0..2:2)}) + (Tok_uident {source=[2:2..2:3); uident=(Constant "b")}) + (Tok_whitespace {source=[2:3..3:0)}) + (Tok_whitespace {source=[3:0..3:6)}) + (Tok_indent {source=[3:6..3:6); indent=(Malformed ["[3:6..3:6): Missing indent"])}) + (Tok_uident {source=[3:6..3:7); uident=(Constant "c")}) + (Tok_whitespace {source=[3:7..4:0)}) + (Tok_whitespace {source=[4:0..4:6)}) + (Tok_uident {source=[4:6..4:7); uident=(Constant "d")}) + (Tok_whitespace {source=[4:7..5:0)}) + (Tok_dedent {source=[5:0..5:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[5:0..5:0)}) ``a b c`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:0) : - [3:0..3:0) : - [3:0..3:8) : - [3:8..3:9) : - [3:9..3:9) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_dedent {source=[3:0..3:0); dedent=(Constant ())}) + (Tok_line_delim {source=[3:0..3:0)}) + (Tok_error {source=[3:0..3:8); error=["[3:0..3:8): Unsupported codepoint"]}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "c")}) + (Tok_end_of_input {source=[3:9..3:9)}) ``a b c d`` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:4) : - [2:4..2:4) : - [2:4..2:5) : - [2:5..3:0) : - [3:0..3:8) : - [3:8..3:8) : - [3:8..3:9) : - [3:9..4:0) : - [4:0..4:0) : - [4:0..4:0) : - [4:0..4:0) : - [4:0..4:8) : - [4:8..4:9) : - [4:9..4:9) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:4)}) + (Tok_indent {source=[2:4..2:4); indent=(Constant ())}) + (Tok_uident {source=[2:4..2:5); uident=(Constant "b")}) + (Tok_whitespace {source=[2:5..3:0)}) + (Tok_whitespace {source=[3:0..3:8)}) + (Tok_indent {source=[3:8..3:8); indent=(Constant ())}) + (Tok_uident {source=[3:8..3:9); uident=(Constant "c")}) + (Tok_whitespace {source=[3:9..4:0)}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_dedent {source=[4:0..4:0); dedent=(Constant ())}) + (Tok_line_delim {source=[4:0..4:0)}) + (Tok_error {source=[4:0..4:8); error=["[4:0..4:8): Unsupported codepoint"]}) + (Tok_uident {source=[4:8..4:9); uident=(Constant "d")}) + (Tok_end_of_input {source=[4:9..4:9)}) ``a b `` - [1:0..1:1) : - [1:1..2:0) : - [2:0..2:8) : - [2:8..2:8) : - [2:8..2:8) : - [2:8..2:9) : - [2:9..3:0) : - [3:0..3:0) : - [3:0..3:0) : - [3:0..3:0) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..2:0)}) + (Tok_whitespace {source=[2:0..2:8)}) + (Tok_indent {source=[2:8..2:8); indent=(Malformed ["[2:8..2:8): Missing indent"])}) + (Tok_indent {source=[2:8..2:8); indent=(Constant ())}) + (Tok_uident {source=[2:8..2:9); uident=(Constant "b")}) + (Tok_whitespace {source=[2:9..3:0)}) + (Tok_dedent {source=[3:0..3:0); dedent=(Constant ())}) + (Tok_dedent {source=[3:0..3:0); dedent=(Constant ())}) + (Tok_end_of_input {source=[3:0..3:0)}) diff --git a/bootstrap/test/hmc/scan/test_dentation.ml b/bootstrap/test/hmc/scan/test_dentation.ml index 573e4b554..da380afd2 100644 --- a/bootstrap/test/hmc/scan/test_dentation.ml +++ b/bootstrap/test/hmc/scan/test_dentation.ml @@ -145,7 +145,6 @@ d c d |}; - scan_str {| # : | : | : | : | : | : | a diff --git a/bootstrap/test/hmc/scan/test_fstring.expected b/bootstrap/test/hmc/scan/test_fstring.expected index bcf1c8e5b..84df528ec 100644 --- a/bootstrap/test/hmc/scan/test_fstring.expected +++ b/bootstrap/test/hmc/scan/test_fstring.expected @@ -1,2846 +1,2846 @@ ``"%s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_uident {source=[1:5..1:6); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring_rditto {source=[1:8..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"<<<%s(^s^)>>>"`` - [1:0..1:1) : - [1:1..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:14) : >>")> - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_interpolated {source=[1:1..1:4); fstring_interpolated=(Constant "<<<")}) + (Tok_fstring_pct {source=[1:4..1:5)}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_interpolated {source=[1:11..1:14); fstring_interpolated=(Constant ">>>")}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%s(^s^)%s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:15) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_uident {source=[1:5..1:6); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring_pct {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_uident {source=[1:12..1:13); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"<<<%s(^s^)^^^%s(^s^)>>>"`` - [1:0..1:1) : - [1:1..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:18) : - [1:18..1:19) : - [1:19..1:21) : - [1:21..1:24) : >>")> - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_interpolated {source=[1:1..1:4); fstring_interpolated=(Constant "<<<")}) + (Tok_fstring_pct {source=[1:4..1:5)}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_interpolated {source=[1:11..1:14); fstring_interpolated=(Constant "^^^")}) + (Tok_fstring_pct {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_uident {source=[1:18..1:19); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:19..1:21)}) + (Tok_fstring_interpolated {source=[1:21..1:24); fstring_interpolated=(Constant ">>>")}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%s(^"hi"^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_istring {source=[1:5..1:9); istring=(Constant "hi")}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%s(^"%s(^s^)"^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:13) : - [1:13..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_fstring_lditto {source=[1:5..1:6)}) + (Tok_fstring_pct {source=[1:6..1:7)}) + (Tok_fstring {source=[1:7..1:8); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:8..1:10)}) + (Tok_uident {source=[1:10..1:11); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:11..1:13)}) + (Tok_fstring_rditto {source=[1:13..1:14)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%'·'s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%'\''s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:6); fstring_pad=(Constant '\'')}) + (Tok_fstring {source=[1:6..1:7); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:7..1:9)}) + (Tok_uident {source=[1:9..1:10); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"% - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_just {source=[1:2..1:3); fstring_just=Left}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%^s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_just {source=[1:2..1:3); fstring_just=Center}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%>s(^s^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_just {source=[1:2..1:3); fstring_just=Right}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "s")}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%+i(^42i^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_sign {source=[1:2..1:3); fstring_sign=Explicit}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_i)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_i64 {source=[1:6..1:9); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%_i(^42i^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_sign {source=[1:2..1:3); fstring_sign=Space}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_i)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_i64 {source=[1:6..1:9); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%#u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_alt {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%0u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_zpad {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%012u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_zpad {source=[1:2..1:3)}) + (Tok_fstring_width {source=[1:3..1:5); fstring_width=(Constant 12)}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_u64 {source=[1:8..1:10); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%8u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width {source=[1:2..1:3); fstring_width=(Constant 8)}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%12u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width {source=[1:2..1:4); fstring_width=(Constant 12)}) + (Tok_fstring {source=[1:4..1:5); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:9); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%*(^8^)u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:13) : - [1:13..1:15) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width_star {source=[1:2..1:3)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:6); u64=(Constant 8)}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring {source=[1:8..1:9); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:9..1:11)}) + (Tok_u64 {source=[1:11..1:13); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%.3r(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:7) : - [1:7..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:3); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:3..1:4); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:4..1:5); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_r64 {source=[1:7..1:10); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%.=3r(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:11) : - [1:11..1:13) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:4); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:4..1:5); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_r64 {source=[1:8..1:11); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:11..1:13)}) + (Tok_fstring_rditto {source=[1:13..1:14)}) + (Tok_end_of_input {source=[1:14..1:14)}) ``"%.*(^3^)r(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:15) : - [1:15..1:17) : - [1:17..1:18) : - [1:18..1:18) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:3); fstring_pmode=Limited}) + (Tok_fstring_precision_star {source=[1:3..1:4)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:7); u64=(Constant 3)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_r64 {source=[1:12..1:15); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:17)}) + (Tok_fstring_rditto {source=[1:17..1:18)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``"%bu(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Bin}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%ou(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Oct}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%du(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Dec}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%xu(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Hex}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%mr(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=Normalized}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_r64 {source=[1:6..1:9); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%ar(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=RadixPoint}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_r64 {source=[1:6..1:9); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%cr(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=Compact}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_r64 {source=[1:6..1:9); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%pu(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pretty {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%b(^true^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_b)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_true {source=[1:5..1:9)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%u8(^42u8^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:6) : - [1:6..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:4); fstring_fmt=(Constant Fmt_u8)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u8 {source=[1:6..1:10); u8=(Constant 42u8)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%u16(^42u16^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_u16)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u16 {source=[1:7..1:12); u16=(Constant 42u16)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%u32(^42u32^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_u32)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u32 {source=[1:7..1:12); u32=(Constant 42u32)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%u64(^42u64^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_u64)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:12); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%u128(^42u128^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_u128)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_u128 {source=[1:8..1:14); u128=(Constant 42u128)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%u256(^42u256^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_u256)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_u256 {source=[1:8..1:14); u256=(Constant 42u256)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%u512(^42u512^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_u512)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_u512 {source=[1:8..1:14); u512=(Constant 42u512)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%i(^42i^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_i)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_i64 {source=[1:5..1:8); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%i8(^42i8^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:6) : - [1:6..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:4); fstring_fmt=(Constant Fmt_i8)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_i8 {source=[1:6..1:10); i8=(Constant 42i8)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%i16(^42i16^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_i16)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_i16 {source=[1:7..1:12); i16=(Constant 42i16)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%i32(^42i32^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_i32)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_i32 {source=[1:7..1:12); i32=(Constant 42i32)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%i64(^42i64^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_i64)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_i64 {source=[1:7..1:12); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%i128(^42i128^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_i128)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_i128 {source=[1:8..1:14); i128=(Constant 42i128)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%i256(^42i256^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_i256)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_i256 {source=[1:8..1:14); i256=(Constant 42i256)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%i512(^42i512^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:14) : - [1:14..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Constant Fmt_i512)}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_i512 {source=[1:8..1:14); i512=(Constant 42i512)}) + (Tok_fstring_caret_rparen {source=[1:14..1:16)}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%n(^42n^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_n)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_nat {source=[1:5..1:8); nat=(Constant 42n)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%z(^42z^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_z)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_zint {source=[1:5..1:8); zint=(Constant 42z)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%r(^42r^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_r64 {source=[1:5..1:8); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%r32(^42r32^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_r32)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_r32 {source=[1:7..1:12); r32=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%r64(^42r64^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Constant Fmt_r64)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_r64 {source=[1:7..1:12); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:14)}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%c(^'c'^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_c)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_codepoint {source=[1:5..1:8); codepoint=(Constant 'c')}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%s(^"string"^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:13) : - [1:13..1:15) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_s)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_istring {source=[1:5..1:13); istring=(Constant "string")}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%f(^Option.pp Uns.pp^)(^Some 42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:11) : - [1:11..1:12) : - [1:12..1:14) : - [1:14..1:15) : - [1:15..1:18) : - [1:18..1:19) : - [1:19..1:21) : - [1:21..1:23) : - [1:23..1:25) : - [1:25..1:29) : - [1:29..1:30) : - [1:30..1:32) : - [1:32..1:34) : - [1:34..1:35) : - [1:35..1:35) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_f)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_cident {source=[1:5..1:11); cident="Option"}) + (Tok_dot {source=[1:11..1:12)}) + (Tok_uident {source=[1:12..1:14); uident=(Constant "pp")}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_cident {source=[1:15..1:18); cident="Uns"}) + (Tok_dot {source=[1:18..1:19)}) + (Tok_uident {source=[1:19..1:21); uident=(Constant "pp")}) + (Tok_fstring_caret_rparen {source=[1:21..1:23)}) + (Tok_fstring_lparen_caret {source=[1:23..1:25)}) + (Tok_cident {source=[1:25..1:29); cident="Some"}) + (Tok_whitespace {source=[1:29..1:30)}) + (Tok_u64 {source=[1:30..1:32); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:32..1:34)}) + (Tok_fstring_rditto {source=[1:34..1:35)}) + (Tok_end_of_input {source=[1:35..1:35)}) ``"%u=(^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:7..1:9) : - [1:6..1:7) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:6..1:7)}) + (Tok_fstring_label {source=[1:6..1:7); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%u =(^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:8..1:10) : - [1:7..1:8) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:5); fstring_sep=(Constant " =")}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_uident {source=[1:7..1:8); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:7..1:8)}) + (Tok_fstring_label {source=[1:7..1:8); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%u = (^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:6) : - [1:9..1:11) : - [1:8..1:9) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:6); fstring_sep=(Constant " = ")}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:8..1:9)}) + (Tok_fstring_label {source=[1:8..1:9); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%u= (^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:8..1:10) : - [1:7..1:8) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:5); fstring_sep=(Constant "= ")}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_uident {source=[1:7..1:8); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:7..1:8)}) + (Tok_fstring_label {source=[1:7..1:8); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%u = (^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:8) : - [1:11..1:13) : - [1:10..1:11) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:8); fstring_sep=(Constant " = ")}) + (Tok_fstring_lparen_caret {source=[1:8..1:10)}) + (Tok_uident {source=[1:10..1:11); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:10..1:11)}) + (Tok_fstring_label {source=[1:10..1:11); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:13..1:14)}) + (Tok_end_of_input {source=[1:14..1:14)}) ``"%u-+*/%@$<=>|:.~?(^x^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:18) : |:.~?")> - [1:18..1:20) : - [1:20..1:21) : - [1:21..1:23) : - [1:20..1:21) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:18); fstring_sep=(Constant "-+*/\%@$<=>|:.~?")}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_uident {source=[1:20..1:21); uident=(Constant "x")}) + (Tok_fstring_caret_rparen {source=[1:20..1:21)}) + (Tok_fstring_label {source=[1:20..1:21); fstring_label="x"}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:25..1:26) : - [1:26..1:26) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_r64 {source=[1:20..1:23); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:20..1:23)}) + (Tok_fstring_label {source=[1:20..1:23); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:25..1:26)}) + (Tok_end_of_input {source=[1:26..1:26)}) ``"%'·'^+#0*(^8^).=*(^3^)xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:15) : - [1:15..1:17) : - [1:17..1:18) : - [1:18..1:20) : - [1:20..1:21) : - [1:21..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:28) : - [1:35..1:36) : - [1:36..1:36) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width_star {source=[1:9..1:10)}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_u64 {source=[1:12..1:13); u64=(Constant 8)}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_pmode {source=[1:15..1:17); fstring_pmode=Fixed}) + (Tok_fstring_precision_star {source=[1:17..1:18)}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_u64 {source=[1:20..1:21); u64=(Constant 3)}) + (Tok_fstring_caret_rparen {source=[1:21..1:23)}) + (Tok_fstring_radix {source=[1:23..1:24); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:24..1:25); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:25..1:26)}) + (Tok_fstring {source=[1:26..1:27); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:27..1:28); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:28..1:30)}) + (Tok_r64 {source=[1:30..1:33); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:30..1:33)}) + (Tok_fstring_label {source=[1:30..1:33); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:35..1:36)}) + (Tok_end_of_input {source=[1:36..1:36)}) ``"%'·'^+#0*(^8^).=*(^3^)xmpf(^pp^)=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:15) : - [1:15..1:17) : - [1:17..1:18) : - [1:18..1:20) : - [1:20..1:21) : - [1:21..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:29) : - [1:29..1:31) : - [1:31..1:33) : - [1:33..1:34) : - [1:41..1:42) : - [1:42..1:42) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width_star {source=[1:9..1:10)}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_u64 {source=[1:12..1:13); u64=(Constant 8)}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_pmode {source=[1:15..1:17); fstring_pmode=Fixed}) + (Tok_fstring_precision_star {source=[1:17..1:18)}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_u64 {source=[1:20..1:21); u64=(Constant 3)}) + (Tok_fstring_caret_rparen {source=[1:21..1:23)}) + (Tok_fstring_radix {source=[1:23..1:24); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:24..1:25); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:25..1:26)}) + (Tok_fstring {source=[1:26..1:27); fstring_fmt=(Constant Fmt_f)}) + (Tok_fstring_lparen_caret {source=[1:27..1:29)}) + (Tok_uident {source=[1:29..1:31); uident=(Constant "pp")}) + (Tok_fstring_caret_rparen {source=[1:31..1:33)}) + (Tok_fstring_sep {source=[1:33..1:34); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:34..1:36)}) + (Tok_r64 {source=[1:36..1:39); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:36..1:39)}) + (Tok_fstring_label {source=[1:36..1:39); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:41..1:42)}) + (Tok_end_of_input {source=[1:42..1:42)}) ``"%'·'+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_sign {source=[1:5..1:6); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:6..1:7)}) + (Tok_fstring_zpad {source=[1:7..1:8)}) + (Tok_fstring_width {source=[1:8..1:9); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:9..1:11); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_alt {source=[1:5..1:6)}) + (Tok_fstring_zpad {source=[1:6..1:7)}) + (Tok_fstring_width {source=[1:7..1:8); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:8..1:10); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:11..1:12); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_zpad {source=[1:5..1:6)}) + (Tok_fstring_width {source=[1:6..1:7); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:7..1:9); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:9..1:10); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:10..1:11); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:11..1:12); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'8.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_width {source=[1:5..1:6); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:6..1:8); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:8..1:9); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:9..1:10); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:10..1:11); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:11..1:12)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:20..1:21) : - [1:21..1:21) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_pmode {source=[1:5..1:7); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:7..1:8); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:8..1:9); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:9..1:10); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:10..1:11)}) + (Tok_fstring {source=[1:11..1:12); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:13..1:15)}) + (Tok_r64 {source=[1:15..1:18); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:18)}) + (Tok_fstring_label {source=[1:15..1:18); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:20..1:21)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``"%'·'.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:19..1:20) : - [1:20..1:20) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_pmode {source=[1:5..1:6); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:6..1:7); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:7..1:8); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:8..1:9); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:9..1:10)}) + (Tok_fstring {source=[1:10..1:11); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:12..1:14)}) + (Tok_r64 {source=[1:14..1:17); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:14..1:17)}) + (Tok_fstring_label {source=[1:14..1:17); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:19..1:20)}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"%'·'xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:17..1:18) : - [1:18..1:18) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_radix {source=[1:5..1:6); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:6..1:7); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:9); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_r64 {source=[1:12..1:15); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:15)}) + (Tok_fstring_label {source=[1:12..1:15); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:17..1:18)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``"%'·'mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_notation {source=[1:5..1:6); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:6..1:7)}) + (Tok_fstring {source=[1:7..1:8); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:8..1:9); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:9..1:11)}) + (Tok_r64 {source=[1:11..1:14); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:11..1:14)}) + (Tok_fstring_label {source=[1:11..1:14); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%'·'pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_pretty {source=[1:5..1:6)}) + (Tok_fstring {source=[1:6..1:7); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:7..1:8); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:8..1:10)}) + (Tok_r64 {source=[1:10..1:13); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:10..1:13)}) + (Tok_fstring_label {source=[1:10..1:13); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%'·'r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring {source=[1:5..1:6); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:6..1:7); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:7..1:9)}) + (Tok_r64 {source=[1:9..1:12); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:9..1:12)}) + (Tok_fstring_label {source=[1:9..1:12); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:14..1:15)}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%'·'^#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_alt {source=[1:6..1:7)}) + (Tok_fstring_zpad {source=[1:7..1:8)}) + (Tok_fstring_width {source=[1:8..1:9); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:9..1:11); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_zpad {source=[1:6..1:7)}) + (Tok_fstring_width {source=[1:7..1:8); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:8..1:10); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:11..1:12); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^8.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_width {source=[1:6..1:7); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:7..1:9); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:9..1:10); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:10..1:11); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:11..1:12); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_pmode {source=[1:6..1:8); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:8..1:9); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:9..1:10); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:10..1:11); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:11..1:12)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'^.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:20..1:21) : - [1:21..1:21) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_pmode {source=[1:6..1:7); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:7..1:8); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:8..1:9); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:9..1:10); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:10..1:11)}) + (Tok_fstring {source=[1:11..1:12); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:13..1:15)}) + (Tok_r64 {source=[1:15..1:18); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:18)}) + (Tok_fstring_label {source=[1:15..1:18); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:20..1:21)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``"%'·'^xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:18..1:19) : - [1:19..1:19) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_radix {source=[1:6..1:7); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:7..1:8); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:10..1:11); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:11..1:13)}) + (Tok_r64 {source=[1:13..1:16); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:13..1:16)}) + (Tok_fstring_label {source=[1:13..1:16); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:18..1:19)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``"%'·'^mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:17..1:18) : - [1:18..1:18) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_notation {source=[1:6..1:7); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:9); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_r64 {source=[1:12..1:15); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:15)}) + (Tok_fstring_label {source=[1:12..1:15); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:17..1:18)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``"%'·'^pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_pretty {source=[1:6..1:7)}) + (Tok_fstring {source=[1:7..1:8); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:8..1:9); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:9..1:11)}) + (Tok_r64 {source=[1:11..1:14); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:11..1:14)}) + (Tok_fstring_label {source=[1:11..1:14); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%'·'^r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring {source=[1:6..1:7); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:7..1:8); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:8..1:10)}) + (Tok_r64 {source=[1:10..1:13); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:10..1:13)}) + (Tok_fstring_label {source=[1:10..1:13); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%'·'^+08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_zpad {source=[1:7..1:8)}) + (Tok_fstring_width {source=[1:8..1:9); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:9..1:11); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+8.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_width {source=[1:7..1:8); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:8..1:10); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:11..1:12); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_pmode {source=[1:7..1:9); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:9..1:10); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:10..1:11); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:11..1:12); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^+.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_pmode {source=[1:7..1:8); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:8..1:9); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:9..1:10); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:10..1:11); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:11..1:12)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'^+xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:19..1:20) : - [1:20..1:20) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_radix {source=[1:7..1:8); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:8..1:9); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:9..1:10)}) + (Tok_fstring {source=[1:10..1:11); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:12..1:14)}) + (Tok_r64 {source=[1:14..1:17); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:14..1:17)}) + (Tok_fstring_label {source=[1:14..1:17); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:19..1:20)}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"%'·'^+mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:18..1:19) : - [1:19..1:19) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_notation {source=[1:7..1:8); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:10..1:11); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:11..1:13)}) + (Tok_r64 {source=[1:13..1:16); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:13..1:16)}) + (Tok_fstring_label {source=[1:13..1:16); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:18..1:19)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``"%'·'^+pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:17..1:18) : - [1:18..1:18) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_pretty {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:9); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_r64 {source=[1:12..1:15); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:15)}) + (Tok_fstring_label {source=[1:12..1:15); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:17..1:18)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``"%'·'^+r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring {source=[1:7..1:8); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:8..1:9); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:9..1:11)}) + (Tok_r64 {source=[1:11..1:14); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:11..1:14)}) + (Tok_fstring_label {source=[1:11..1:14); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:16..1:17)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%'·'^+#8.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_width {source=[1:8..1:9); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:9..1:11); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_pmode {source=[1:8..1:10); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:11..1:12); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_pmode {source=[1:8..1:9); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:9..1:10); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:10..1:11); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:11..1:12); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^+#xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:20..1:21) : - [1:21..1:21) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_radix {source=[1:8..1:9); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:9..1:10); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:10..1:11)}) + (Tok_fstring {source=[1:11..1:12); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:13..1:15)}) + (Tok_r64 {source=[1:15..1:18); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:18)}) + (Tok_fstring_label {source=[1:15..1:18); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:20..1:21)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``"%'·'^+#mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:19..1:20) : - [1:20..1:20) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_notation {source=[1:8..1:9); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:9..1:10)}) + (Tok_fstring {source=[1:10..1:11); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:12..1:14)}) + (Tok_r64 {source=[1:14..1:17); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:14..1:17)}) + (Tok_fstring_label {source=[1:14..1:17); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:19..1:20)}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"%'·'^+#pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:18..1:19) : - [1:19..1:19) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_pretty {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:10..1:11); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:11..1:13)}) + (Tok_r64 {source=[1:13..1:16); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:13..1:16)}) + (Tok_fstring_label {source=[1:13..1:16); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:18..1:19)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``"%'·'^+#r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:17..1:18) : - [1:18..1:18) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:9); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:10..1:12)}) + (Tok_r64 {source=[1:12..1:15); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:12..1:15)}) + (Tok_fstring_label {source=[1:12..1:15); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:17..1:18)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``"%'·'^+#0.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_pmode {source=[1:9..1:11); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#0.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_pmode {source=[1:9..1:10); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:11..1:12); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#0xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_radix {source=[1:9..1:10); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:10..1:11); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:11..1:12)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'^+#0mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:20..1:21) : - [1:21..1:21) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_notation {source=[1:9..1:10); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:10..1:11)}) + (Tok_fstring {source=[1:11..1:12); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:13..1:15)}) + (Tok_r64 {source=[1:15..1:18); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:18)}) + (Tok_fstring_label {source=[1:15..1:18); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:20..1:21)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``"%'·'^+#0pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:19..1:20) : - [1:20..1:20) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_pretty {source=[1:9..1:10)}) + (Tok_fstring {source=[1:10..1:11); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:12..1:14)}) + (Tok_r64 {source=[1:14..1:17); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:14..1:17)}) + (Tok_fstring_label {source=[1:14..1:17); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:19..1:20)}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"%'·'^+#0r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:18..1:19) : - [1:19..1:19) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:10); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:10..1:11); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:11..1:13)}) + (Tok_r64 {source=[1:13..1:16); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:13..1:16)}) + (Tok_fstring_label {source=[1:13..1:16); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:18..1:19)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``"%'·'^+#08.3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:11); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:12..1:13); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#08xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_radix {source=[1:10..1:11); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:11..1:12); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^+#08mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_notation {source=[1:10..1:11); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:11..1:12)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'^+#08pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:20..1:21) : - [1:21..1:21) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pretty {source=[1:10..1:11)}) + (Tok_fstring {source=[1:11..1:12); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:13..1:15)}) + (Tok_r64 {source=[1:15..1:18); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:15..1:18)}) + (Tok_fstring_label {source=[1:15..1:18); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:20..1:21)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``"%'·'^+#08r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:19..1:20) : - [1:20..1:20) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring {source=[1:10..1:11); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:12..1:14)}) + (Tok_r64 {source=[1:14..1:17); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:14..1:17)}) + (Tok_fstring_label {source=[1:14..1:17); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:19..1:20)}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"%'·'^+#08.=3mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_notation {source=[1:13..1:14); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#08.=3pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#08.=3r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^+#08.3mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:11); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_notation {source=[1:12..1:13); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:13..1:14)}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#08.3pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:22..1:23) : - [1:23..1:23) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:11); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring_pretty {source=[1:12..1:13)}) + (Tok_fstring {source=[1:13..1:14); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:15..1:17)}) + (Tok_r64 {source=[1:17..1:20); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:17..1:20)}) + (Tok_fstring_label {source=[1:17..1:20); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:22..1:23)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``"%'·'^+#08.3r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:11); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:11..1:12); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:12..1:13); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:14..1:16)}) + (Tok_r64 {source=[1:16..1:19); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:16..1:19)}) + (Tok_fstring_label {source=[1:16..1:19); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``"%'·'^+#08.=3xpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_pretty {source=[1:14..1:15)}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#08.=3xr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:23..1:24) : - [1:24..1:24) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring {source=[1:14..1:15); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:16..1:18)}) + (Tok_r64 {source=[1:18..1:21); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:18..1:21)}) + (Tok_fstring_label {source=[1:18..1:21); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:23..1:24)}) + (Tok_end_of_input {source=[1:24..1:24)}) ``"%'·'^+#08.=3xmr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:24..1:25) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring {source=[1:15..1:16); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:17..1:19)}) + (Tok_r64 {source=[1:19..1:22); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:19..1:22)}) + (Tok_fstring_label {source=[1:19..1:22); fstring_label="42."}) + (Tok_fstring_rditto {source=[1:24..1:25)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%b(^true^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_b)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_true {source=[1:5..1:9)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%b=(^b^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:7..1:9) : - [1:6..1:7) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_b)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "b")}) + (Tok_fstring_caret_rparen {source=[1:6..1:7)}) + (Tok_fstring_label {source=[1:6..1:7); fstring_label="b"}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%bb(^true^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Bin}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_b)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_true {source=[1:6..1:10)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%bu(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Bin}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%c(^'c'^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_c)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_codepoint {source=[1:5..1:8); codepoint=(Constant 'c')}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%c=(^c^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:7..1:9) : - [1:6..1:7) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_c)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "c")}) + (Tok_fstring_caret_rparen {source=[1:6..1:7)}) + (Tok_fstring_label {source=[1:6..1:7); fstring_label="c"}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%cc(^'c'^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=Compact}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_c)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_codepoint {source=[1:6..1:9); codepoint=(Constant 'c')}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%cr(^Real.pi^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:10) : - [1:10..1:11) : - [1:11..1:13) : - [1:13..1:15) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=Compact}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_cident {source=[1:6..1:10); cident="Real"}) + (Tok_dot {source=[1:10..1:11)}) + (Tok_uident {source=[1:11..1:13); uident=(Constant "pi")}) + (Tok_fstring_caret_rparen {source=[1:13..1:15)}) + (Tok_fstring_rditto {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%'·''·'^+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:5) : - [1:5..1:6) : - [1:6..1:6) : - [1:6..1:28) : - [1:28..1:29) : - [1:29..1:29) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring {source=[1:5..1:5); fstring_fmt=(Malformed ["[1:5..1:5): Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:5..1:6); fstring_sep=(Malformed ["[1:5..1:6): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:6..1:6); error=["[1:6..1:6): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:6..1:28); fstring_interpolated=(Constant "·'^+#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:28..1:29)}) + (Tok_end_of_input {source=[1:29..1:29)}) ``"%'·'^^+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:6) : - [1:6..1:8) : - [1:8..1:8) : - [1:8..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring {source=[1:6..1:6); fstring_fmt=(Malformed ["[1:6..1:6): Justification parameter must be followed by sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:6..1:8); fstring_sep=(Constant "^+")}) + (Tok_error {source=[1:8..1:8); error=["[1:8..1:8): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:8..1:26); fstring_interpolated=(Constant "#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^++#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:7) : - [1:7..1:8) : - [1:8..1:8) : - [1:8..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring {source=[1:7..1:7); fstring_fmt=(Malformed ["[1:7..1:7): Sign parameter must be followed by alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:7..1:8); fstring_sep=(Constant "+")}) + (Tok_error {source=[1:8..1:8); error=["[1:8..1:8): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:8..1:26); fstring_interpolated=(Constant "#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+##08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:8) : - [1:8..1:9) : - [1:9..1:9) : - [1:9..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:8); fstring_fmt=(Malformed ["[1:8..1:8): Alt parameter must be followed by zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:8..1:9); fstring_sep=(Malformed ["[1:8..1:9): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:9..1:9); error=["[1:9..1:9): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:9..1:26); fstring_interpolated=(Constant "08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#008.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:9) : - [1:9..1:10) : - [1:10..1:10) : - [1:10..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:9); fstring_fmt=(Malformed ["[1:9..1:9): Zpad parameter must be followed by width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Malformed ["[1:9..1:10): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:10..1:10); error=["[1:10..1:10): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:10..1:26); fstring_interpolated=(Constant "8.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08..=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:11) : - [1:11..1:13) : - [1:13..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Malformed ["[1:10..1:11): Dot must be followed by precision mode or precision"])}) + (Tok_fstring {source=[1:11..1:11); fstring_fmt=(Malformed ["[1:11..1:11): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:11..1:13); fstring_sep=(Constant ".=")}) + (Tok_error {source=[1:13..1:13); error=["[1:13..1:13): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:13..1:26); fstring_interpolated=(Constant "3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.==3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:12) : - [1:12..1:12) : - [1:12..1:13) : - [1:13..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:12); fstring_precision=(Malformed ["[1:12..1:12): Precision mode parameter must be followed by precision parameter"])}) + (Tok_fstring {source=[1:12..1:12); fstring_fmt=(Malformed ["[1:12..1:12): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Constant "=")}) + (Tok_error {source=[1:13..1:13); error=["[1:13..1:13): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:13..1:26); fstring_interpolated=(Constant "3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3.xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : - [1:13..1:14) : - [1:14..1:14) : - [1:14..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:13..1:13); fstring_fmt=(Malformed ["[1:13..1:13): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Constant ".")}) + (Tok_error {source=[1:14..1:14); error=["[1:14..1:14): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:14..1:26); fstring_interpolated=(Constant "xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xxmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:14) : - [1:14..1:15) : - [1:15..1:15) : - [1:15..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring {source=[1:14..1:14); fstring_fmt=(Malformed ["[1:14..1:14): Radix parameter must be followed by notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Malformed ["[1:14..1:15): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:15..1:15); error=["[1:15..1:15): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:15..1:26); fstring_interpolated=(Constant "mpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:15) : - [1:15..1:16) : - [1:16..1:16) : - [1:16..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring {source=[1:15..1:15); fstring_fmt=(Malformed ["[1:15..1:15): Notation parameter must be followed by pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Malformed ["[1:15..1:16): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:16..1:16); error=["[1:16..1:16): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:16..1:26); fstring_interpolated=(Constant "pr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmppr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:16) : - [1:16..1:17) : - [1:17..1:17) : - [1:17..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:16); fstring_fmt=(Malformed ["[1:16..1:16): Pretty parameter must be followed by fmt parameter"])}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Malformed ["[1:16..1:17): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:17..1:17); error=["[1:17..1:17): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:17..1:26); fstring_interpolated=(Constant "r=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmprr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:18) : - [1:18..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Malformed ["[1:17..1:18): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:18..1:18); error=["[1:18..1:18): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:18..1:26); fstring_interpolated=(Constant "=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%�'·'^+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:2); fstring_fmt=(Malformed ["[1:2..1:2): Percent must be followed by pad/just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:2..1:3); fstring_sep=(Malformed ["[1:2..1:3): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:3..1:3); error=["[1:3..1:3): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:3..1:26); fstring_interpolated=(Constant "'·'^+#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'�^+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:5) : - [1:5..1:6) : - [1:6..1:6) : - [1:6..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring {source=[1:5..1:5); fstring_fmt=(Malformed ["[1:5..1:5): Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:5..1:6); fstring_sep=(Malformed ["[1:5..1:6): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:6..1:6); error=["[1:6..1:6): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:6..1:26); fstring_interpolated=(Constant "^+#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^�+#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:6) : - [1:6..1:7) : - [1:7..1:7) : - [1:7..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring {source=[1:6..1:6); fstring_fmt=(Malformed ["[1:6..1:6): Justification parameter must be followed by sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:6..1:7); fstring_sep=(Malformed ["[1:6..1:7): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:7..1:7); error=["[1:7..1:7): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:7..1:26); fstring_interpolated=(Constant "+#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+�#08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:7) : - [1:7..1:8) : - [1:8..1:8) : - [1:8..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring {source=[1:7..1:7); fstring_fmt=(Malformed ["[1:7..1:7): Sign parameter must be followed by alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:7..1:8); fstring_sep=(Malformed ["[1:7..1:8): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:8..1:8); error=["[1:8..1:8): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:8..1:26); fstring_interpolated=(Constant "#08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#�08.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:8) : - [1:8..1:9) : - [1:9..1:9) : - [1:9..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring {source=[1:8..1:8); fstring_fmt=(Malformed ["[1:8..1:8): Alt parameter must be followed by zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:8..1:9); fstring_sep=(Malformed ["[1:8..1:9): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:9..1:9); error=["[1:9..1:9): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:9..1:26); fstring_interpolated=(Constant "08.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#0�8.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:9) : - [1:9..1:10) : - [1:10..1:10) : - [1:10..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring {source=[1:9..1:9); fstring_fmt=(Malformed ["[1:9..1:9): Zpad parameter must be followed by width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:9..1:10); fstring_sep=(Malformed ["[1:9..1:10): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:10..1:10); error=["[1:10..1:10): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:10..1:26); fstring_interpolated=(Constant "8.=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08�.=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:10) : - [1:10..1:11) : - [1:11..1:11) : - [1:11..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring {source=[1:10..1:10); fstring_fmt=(Malformed ["[1:10..1:10): Width parameter must be followed by precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:10..1:11); fstring_sep=(Malformed ["[1:10..1:11): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:11..1:11); error=["[1:11..1:11): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:11..1:26); fstring_interpolated=(Constant ".=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.�=3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:11) : - [1:11..1:12) : - [1:12..1:12) : - [1:12..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Malformed ["[1:10..1:11): Dot must be followed by precision mode or precision"])}) + (Tok_fstring {source=[1:11..1:11); fstring_fmt=(Malformed ["[1:11..1:11): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:11..1:12); fstring_sep=(Malformed ["[1:11..1:12): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:12..1:12); error=["[1:12..1:12): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:12..1:26); fstring_interpolated=(Constant "=3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=�3xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:12) : - [1:12..1:12) : - [1:12..1:13) : - [1:13..1:13) : - [1:13..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:12); fstring_precision=(Malformed ["[1:12..1:12): Precision mode parameter must be followed by precision parameter"])}) + (Tok_fstring {source=[1:12..1:12); fstring_fmt=(Malformed ["[1:12..1:12): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:12..1:13); fstring_sep=(Malformed ["[1:12..1:13): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:13..1:13); error=["[1:13..1:13): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:13..1:26); fstring_interpolated=(Constant "3xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3�xmpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : - [1:13..1:14) : - [1:14..1:14) : - [1:14..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:13..1:13); fstring_fmt=(Malformed ["[1:13..1:13): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:13..1:14); fstring_sep=(Malformed ["[1:13..1:14): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:14..1:14); error=["[1:14..1:14): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:14..1:26); fstring_interpolated=(Constant "xmpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3x�mpr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:14) : - [1:14..1:15) : - [1:15..1:15) : - [1:15..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring {source=[1:14..1:14); fstring_fmt=(Malformed ["[1:14..1:14): Radix parameter must be followed by notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:14..1:15); fstring_sep=(Malformed ["[1:14..1:15): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:15..1:15); error=["[1:15..1:15): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:15..1:26); fstring_interpolated=(Constant "mpr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xm�pr=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:15) : - [1:15..1:16) : - [1:16..1:16) : - [1:16..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring {source=[1:15..1:15); fstring_fmt=(Malformed ["[1:15..1:15): Notation parameter must be followed by pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:15..1:16); fstring_sep=(Malformed ["[1:15..1:16): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:16..1:16); error=["[1:16..1:16): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:16..1:26); fstring_interpolated=(Constant "pr=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmp�r=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:16) : - [1:16..1:17) : - [1:17..1:17) : - [1:17..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:16); fstring_fmt=(Malformed ["[1:16..1:16): Pretty parameter must be followed by fmt parameter"])}) + (Tok_fstring_sep {source=[1:16..1:17); fstring_sep=(Malformed ["[1:16..1:17): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:17..1:17); error=["[1:17..1:17): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:17..1:26); fstring_interpolated=(Constant "r=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmpr�=(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:18) : - [1:18..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Malformed ["[1:17..1:18): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:18..1:18); error=["[1:18..1:18): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:18..1:26); fstring_interpolated=(Constant "=(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmpr=�(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_error {source=[1:18..1:18); error=["[1:18..1:18): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:18..1:26); fstring_interpolated=(Constant "�(^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmpr=(�^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:20..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_error {source=[1:18..1:20); error=["[1:18..1:20): Value parameter must be of the form `(^ ... ^)`"]}) + (Tok_fstring_interpolated {source=[1:20..1:26); fstring_interpolated=(Constant "^42.^)")}) + (Tok_fstring_rditto {source=[1:26..1:27)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmpr=(^42.^�)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:27) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_r64 {source=[1:20..1:23); r64=(Constant 0x1.5p5)}) + (Tok_caret {source=[1:23..1:24)}) + (Tok_error {source=[1:24..1:25); error=["[1:24..1:25): Unsupported codepoint"]}) + (Tok_rparen {source=[1:25..1:26)}) + (Tok_istring {source=[1:26..1:27); istring=(Malformed ["[1:27..1:27): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:27..1:27)}) ``"%'·'^+#08.=3xmpr=(^42.^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:25..1:25) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_fstring_lparen_caret {source=[1:18..1:20)}) + (Tok_r64 {source=[1:20..1:23); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:20..1:23)}) + (Tok_fstring_label {source=[1:20..1:23); fstring_label="42."}) + (Tok_end_of_input {source=[1:25..1:25)}) ``"%'·'^+#08.=3xmpr=(^42.^`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:19..1:19) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_fstring_sep {source=[1:17..1:18); fstring_sep=(Constant "=")}) + (Tok_error {source=[1:18..1:19); error=["[1:18..1:19): Value parameter must be of the form `(^ ... ^)`"]}) + (Tok_end_of_input {source=[1:19..1:19)}) ``"%'·'^+#08.=3xmpr=`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_fstring {source=[1:16..1:17); fstring_fmt=(Constant Fmt_r)}) + (Tok_end_of_input {source=[1:17..1:17)}) ``"%'·'^+#08.=3xmp`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:16) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_fstring_pretty {source=[1:15..1:16)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``"%'·'^+#08.=3xm`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:15) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_fstring_notation {source=[1:14..1:15); fstring_notation=Normalized}) + (Tok_end_of_input {source=[1:15..1:15)}) ``"%'·'^+#08.=3x`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_fstring_radix {source=[1:13..1:14); fstring_radix=Hex}) + (Tok_end_of_input {source=[1:14..1:14)}) ``"%'·'^+#08.=3`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:12..1:13); fstring_precision=(Constant 3)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%'·'^+#08.=`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%'·'^+#08.`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_precision {source=[1:10..1:11); fstring_precision=(Malformed ["[1:10..1:11): Dot must be followed by precision mode or precision"])}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%'·'^+#08`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%'·'^+#0`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%'·'^+#`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:8) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``"%'·'^+`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:7) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_end_of_input {source=[1:7..1:7)}) ``"%'·'^`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:6) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_end_of_input {source=[1:6..1:6)}) ``"%'·'`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:5) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_end_of_input {source=[1:5..1:5)}) ``"%'·`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:4) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:4); fstring_pad=(Malformed ["[1:2..1:4): Unterminated codepoint literal"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``"%'`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:3); fstring_pad=(Malformed ["[1:2..1:3): Unterminated codepoint literal"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``"%`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``"%'·'^+#08.=*`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width {source=[1:9..1:10); fstring_width=(Constant 8)}) + (Tok_fstring_pmode {source=[1:10..1:12); fstring_pmode=Fixed}) + (Tok_fstring_precision_star {source=[1:12..1:13)}) + (Tok_fstring_precision {source=[1:13..1:13); fstring_precision=(Malformed ["[1:13..1:13): Parametric precision must be of the form `*(^ ... ^)`"])}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%'·'^+#0*`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring_just {source=[1:5..1:6); fstring_just=Center}) + (Tok_fstring_sign {source=[1:6..1:7); fstring_sign=Explicit}) + (Tok_fstring_alt {source=[1:7..1:8)}) + (Tok_fstring_zpad {source=[1:8..1:9)}) + (Tok_fstring_width_star {source=[1:9..1:10)}) + (Tok_fstring_width {source=[1:10..1:10); fstring_width=(Malformed ["[1:10..1:10): Parametric width must be of the form `*(^ ... ^)`"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%'u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:3); fstring_pad=(Malformed ["[1:2..1:5): Unterminated codepoint literal"])}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%'·u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:3); fstring_pad=(Malformed ["[1:2..1:5): Unterminated codepoint literal"])}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:4..1:4); error=["[1:4..1:4): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:4..1:11); fstring_interpolated=(Constant "u(^42^)")}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%'··u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:3); fstring_pad=(Malformed ["[1:2..1:5): Unterminated codepoint literal"])}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:4..1:4); error=["[1:4..1:4): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:4..1:12); fstring_interpolated=(Constant "·u(^42^)")}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%00u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_zpad {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Zpad parameter must be followed by width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:4..1:4); error=["[1:4..1:4): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:4..1:11); fstring_interpolated=(Constant "u(^42^)")}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%008u(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_zpad {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Zpad parameter must be followed by width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_error {source=[1:4..1:4); error=["[1:4..1:4): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:4..1:12); fstring_interpolated=(Constant "8u(^42^)")}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%u064(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Malformed ["[1:2..1:6): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_u64 {source=[1:8..1:10); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%i064(^42i^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:11) : - [1:11..1:13) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Malformed ["[1:2..1:6): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_i64 {source=[1:8..1:11); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:11..1:13)}) + (Tok_fstring_rditto {source=[1:13..1:14)}) + (Tok_end_of_input {source=[1:14..1:14)}) ``"%r064(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:6) : - [1:6..1:8) : - [1:8..1:11) : - [1:11..1:13) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:6); fstring_fmt=(Malformed ["[1:2..1:6): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:6..1:8)}) + (Tok_r64 {source=[1:8..1:11); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:11..1:13)}) + (Tok_fstring_rditto {source=[1:13..1:14)}) + (Tok_end_of_input {source=[1:14..1:14)}) ``"%u63(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Malformed ["[1:2..1:5): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:9); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%i63(^42i^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Malformed ["[1:2..1:5): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_i64 {source=[1:7..1:10); i64=(Constant 42i)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%r63(^42.^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:7) : - [1:7..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:13) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:5); fstring_fmt=(Malformed ["[1:2..1:5): Unsupported bitwidth"])}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_r64 {source=[1:7..1:10); r64=(Constant 0x1.5p5)}) + (Tok_fstring_caret_rparen {source=[1:10..1:12)}) + (Tok_fstring_rditto {source=[1:12..1:13)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"%u(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%u(^42^)>>>`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:12) : >>")> - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_interpolated {source=[1:9..1:12); fstring_interpolated=(Constant ">>>")}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``"%'·'`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:5) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_end_of_input {source=[1:5..1:5)}) ``"%8`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width {source=[1:2..1:3); fstring_width=(Constant 8)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``"%*u(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width_star {source=[1:2..1:3)}) + (Tok_fstring_width {source=[1:3..1:3); fstring_width=(Malformed ["[1:3..1:3): Parametric width must be of the form `*(^ ... ^)`"])}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : - [1:2..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:8) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:2); fstring_fmt=(Malformed ["[1:2..1:2): Percent must be followed by pad/just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:2..1:4)}) + (Tok_u64 {source=[1:4..1:6); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``"%'·'(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pad {source=[1:2..1:5); fstring_pad=(Constant '·')}) + (Tok_fstring {source=[1:5..1:5); fstring_fmt=(Malformed ["[1:5..1:5): Pad parameter must be followed by just/sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:9); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%^(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_just {source=[1:2..1:3); fstring_just=Center}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Justification parameter must be followed by sign/alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%+(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_sign {source=[1:2..1:3); fstring_sign=Explicit}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Sign parameter must be followed by alt/zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%#(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_alt {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Alt parameter must be followed by zpad/width/precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%8(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_width {source=[1:2..1:3); fstring_width=(Constant 8)}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Width parameter must be followed by precision/radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``"%.u(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_precision {source=[1:2..1:3); fstring_precision=(Malformed ["[1:2..1:3): Dot must be followed by precision mode or precision"])}) + (Tok_fstring {source=[1:3..1:4); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%.=u(^42^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:4) : - [1:4..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:4); fstring_pmode=Fixed}) + (Tok_fstring_precision {source=[1:4..1:4); fstring_precision=(Malformed ["[1:4..1:4): Precision mode parameter must be followed by precision parameter"])}) + (Tok_fstring {source=[1:4..1:5); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:9); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:9..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%.3`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:3); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:3..1:4); fstring_precision=(Constant 3)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``"%.*�(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:4) : - [1:4..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:11) : - [1:7..1:9) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:3); fstring_pmode=Limited}) + (Tok_fstring_precision_star {source=[1:3..1:4)}) + (Tok_fstring_precision {source=[1:4..1:4); fstring_precision=(Malformed ["[1:4..1:4): Parametric precision must be of the form `*(^ ... ^)`"])}) + (Tok_fstring {source=[1:4..1:4); fstring_fmt=(Malformed ["[1:4..1:4): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_sep {source=[1:4..1:5); fstring_sep=(Malformed ["[1:4..1:5): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_fstring_lparen_caret {source=[1:5..1:7)}) + (Tok_u64 {source=[1:7..1:9); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_label {source=[1:7..1:9); fstring_label="42"}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%.3(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pmode {source=[1:2..1:3); fstring_pmode=Limited}) + (Tok_fstring_precision {source=[1:3..1:4); fstring_precision=(Constant 3)}) + (Tok_fstring {source=[1:4..1:4); fstring_fmt=(Malformed ["[1:4..1:4): Precision parameter must be followed by radix/notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:8..1:10)}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%x(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_radix {source=[1:2..1:3); fstring_radix=Hex}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Radix parameter must be followed by notation/pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%m(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_notation {source=[1:2..1:3); fstring_notation=Normalized}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Notation parameter must be followed by pretty/fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%p(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:10) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring_pretty {source=[1:2..1:3)}) + (Tok_fstring {source=[1:3..1:3); fstring_fmt=(Malformed ["[1:3..1:3): Pretty parameter must be followed by fmt parameter"])}) + (Tok_fstring_lparen_caret {source=[1:3..1:5)}) + (Tok_u64 {source=[1:5..1:7); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:7..1:9)}) + (Tok_fstring_rditto {source=[1:9..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"%f�(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:6..1:8) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_f)}) + (Tok_error {source=[1:3..1:3); error=["[1:3..1:3): `f` fmt parameter must be of the form `f(^ ... ^)`"]}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring_label {source=[1:6..1:8); fstring_label="42"}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%u�(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:6..1:8) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Fmt parameter must be followed by separator/value parameter"])}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring_label {source=[1:6..1:8); fstring_label="42"}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%u=�(^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:11) : - [1:11..1:12) : - [1:12..1:12) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Constant "=")}) + (Tok_error {source=[1:4..1:4); error=["[1:4..1:4): Separator parameter must be followed by value parameter"]}) + (Tok_fstring_interpolated {source=[1:4..1:11); fstring_interpolated=(Constant "�(^42^)")}) + (Tok_fstring_rditto {source=[1:11..1:12)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"%u (^42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:8) : - [1:8..1:10) : - [1:6..1:8) : - [1:10..1:11) : - [1:11..1:11) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_fstring_sep {source=[1:3..1:4); fstring_sep=(Malformed ["[1:3..1:4): Separator parameter must contain an infix operator"])}) + (Tok_fstring_lparen_caret {source=[1:4..1:6)}) + (Tok_u64 {source=[1:6..1:8); u64=(Constant 42)}) + (Tok_fstring_caret_rparen {source=[1:6..1:8)}) + (Tok_fstring_label {source=[1:6..1:8); fstring_label="42"}) + (Tok_fstring_rditto {source=[1:10..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``"%u(42^)"`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:8) : - [1:8..1:9) : - [1:9..1:9) : + (Tok_fstring_lditto {source=[1:0..1:1)}) + (Tok_fstring_pct {source=[1:1..1:2)}) + (Tok_fstring {source=[1:2..1:3); fstring_fmt=(Constant Fmt_u)}) + (Tok_error {source=[1:3..1:5); error=["[1:3..1:5): Value parameter must be of the form `(^ ... ^)`"]}) + (Tok_fstring_interpolated {source=[1:5..1:8); fstring_interpolated=(Constant "2^)")}) + (Tok_fstring_rditto {source=[1:8..1:9)}) + (Tok_end_of_input {source=[1:9..1:9)}) diff --git a/bootstrap/test/hmc/scan/test_integer.expected b/bootstrap/test/hmc/scan/test_integer.expected index 39ec3ad68..c52c71cc9 100644 --- a/bootstrap/test/hmc/scan/test_integer.expected +++ b/bootstrap/test/hmc/scan/test_integer.expected @@ -1,338 +1,338 @@ ``0`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_u64 {source=[1:0..1:1); u64=(Constant 0)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``00_`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Constant 0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``01234567890_`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_u64 {source=[1:0..1:12); u64=(Constant 1_234_567_890)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``11`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 11)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``22`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 22)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``33`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 33)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``44`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 44)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``55`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 55)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``66`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 66)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``77`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 77)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``88`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 88)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``99`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 99)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0b_01_01`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_u64 {source=[1:0..1:8); u64=(Constant 5)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o_0123_4567`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_u64 {source=[1:0..1:12); u64=(Constant 342_391)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``0x_0123_4567_89ab_cdef`` - [1:0..1:22) : - [1:22..1:22) : + (Tok_u64 {source=[1:0..1:22); u64=(Constant 81_985_529_216_486_895)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``0b10u8 0b10u16 0b10u32 0b10 0b10u 0b10u64 0b10u128 0b10u256 0b10u512 0b10n`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:27) : - [1:27..1:28) : - [1:28..1:33) : - [1:33..1:34) : - [1:34..1:41) : - [1:41..1:42) : - [1:42..1:50) : - [1:50..1:51) : - [1:51..1:59) : - [1:59..1:60) : - [1:60..1:68) : - [1:68..1:69) : - [1:69..1:74) : - [1:74..1:74) : + (Tok_u8 {source=[1:0..1:6); u8=(Constant 2u8)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_u16 {source=[1:7..1:14); u16=(Constant 2u16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_u32 {source=[1:15..1:22); u32=(Constant 2u32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_u64 {source=[1:23..1:27); u64=(Constant 2)}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_u64 {source=[1:28..1:33); u64=(Constant 2)}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_u64 {source=[1:34..1:41); u64=(Constant 2)}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_u128 {source=[1:42..1:50); u128=(Constant 2u128)}) + (Tok_whitespace {source=[1:50..1:51)}) + (Tok_u256 {source=[1:51..1:59); u256=(Constant 2u256)}) + (Tok_whitespace {source=[1:59..1:60)}) + (Tok_u512 {source=[1:60..1:68); u512=(Constant 2u512)}) + (Tok_whitespace {source=[1:68..1:69)}) + (Tok_nat {source=[1:69..1:74); nat=(Constant 2n)}) + (Tok_end_of_input {source=[1:74..1:74)}) ``0b10i8 0b10i16 0b10i32 0b10i 0b10i64 0b10i128 0b10i256 0b10i512 0b10z`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:28) : - [1:28..1:29) : - [1:29..1:36) : - [1:36..1:37) : - [1:37..1:45) : - [1:45..1:46) : - [1:46..1:54) : - [1:54..1:55) : - [1:55..1:63) : - [1:63..1:64) : - [1:64..1:69) : - [1:69..1:69) : + (Tok_i8 {source=[1:0..1:6); i8=(Constant 2i8)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_i16 {source=[1:7..1:14); i16=(Constant 2i16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_i32 {source=[1:15..1:22); i32=(Constant 2i32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_i64 {source=[1:23..1:28); i64=(Constant 2i)}) + (Tok_whitespace {source=[1:28..1:29)}) + (Tok_i64 {source=[1:29..1:36); i64=(Constant 2i)}) + (Tok_whitespace {source=[1:36..1:37)}) + (Tok_i128 {source=[1:37..1:45); i128=(Constant 2i128)}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_i256 {source=[1:46..1:54); i256=(Constant 2i256)}) + (Tok_whitespace {source=[1:54..1:55)}) + (Tok_i512 {source=[1:55..1:63); i512=(Constant 2i512)}) + (Tok_whitespace {source=[1:63..1:64)}) + (Tok_zint {source=[1:64..1:69); zint=(Constant 2z)}) + (Tok_end_of_input {source=[1:69..1:69)}) ``0o76u8 0o76u16 0o76u32 0o76 0o76u 0o76u64 0o76u128 0o76u256 0o76u512 0o76n`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:27) : - [1:27..1:28) : - [1:28..1:33) : - [1:33..1:34) : - [1:34..1:41) : - [1:41..1:42) : - [1:42..1:50) : - [1:50..1:51) : - [1:51..1:59) : - [1:59..1:60) : - [1:60..1:68) : - [1:68..1:69) : - [1:69..1:74) : - [1:74..1:74) : + (Tok_u8 {source=[1:0..1:6); u8=(Constant 62u8)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_u16 {source=[1:7..1:14); u16=(Constant 62u16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_u32 {source=[1:15..1:22); u32=(Constant 62u32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_u64 {source=[1:23..1:27); u64=(Constant 62)}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_u64 {source=[1:28..1:33); u64=(Constant 62)}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_u64 {source=[1:34..1:41); u64=(Constant 62)}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_u128 {source=[1:42..1:50); u128=(Constant 62u128)}) + (Tok_whitespace {source=[1:50..1:51)}) + (Tok_u256 {source=[1:51..1:59); u256=(Constant 62u256)}) + (Tok_whitespace {source=[1:59..1:60)}) + (Tok_u512 {source=[1:60..1:68); u512=(Constant 62u512)}) + (Tok_whitespace {source=[1:68..1:69)}) + (Tok_nat {source=[1:69..1:74); nat=(Constant 62n)}) + (Tok_end_of_input {source=[1:74..1:74)}) ``0o76i8 0o76i16 0o76i32 0o76i 0o76i64 0o76i128 0o76i256 0o76i512 0o76z`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:28) : - [1:28..1:29) : - [1:29..1:36) : - [1:36..1:37) : - [1:37..1:45) : - [1:45..1:46) : - [1:46..1:54) : - [1:54..1:55) : - [1:55..1:63) : - [1:63..1:64) : - [1:64..1:69) : - [1:69..1:69) : + (Tok_i8 {source=[1:0..1:6); i8=(Constant 62i8)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_i16 {source=[1:7..1:14); i16=(Constant 62i16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_i32 {source=[1:15..1:22); i32=(Constant 62i32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_i64 {source=[1:23..1:28); i64=(Constant 62i)}) + (Tok_whitespace {source=[1:28..1:29)}) + (Tok_i64 {source=[1:29..1:36); i64=(Constant 62i)}) + (Tok_whitespace {source=[1:36..1:37)}) + (Tok_i128 {source=[1:37..1:45); i128=(Constant 62i128)}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_i256 {source=[1:46..1:54); i256=(Constant 62i256)}) + (Tok_whitespace {source=[1:54..1:55)}) + (Tok_i512 {source=[1:55..1:63); i512=(Constant 62i512)}) + (Tok_whitespace {source=[1:63..1:64)}) + (Tok_zint {source=[1:64..1:69); zint=(Constant 62z)}) + (Tok_end_of_input {source=[1:69..1:69)}) ``98u8 98u16 98u32 98 98u 98u64 98u128 98u256 98u512 98n`` - [1:0..1:4) : - [1:4..1:5) : - [1:5..1:10) : - [1:10..1:11) : - [1:11..1:16) : - [1:16..1:17) : - [1:17..1:19) : - [1:19..1:20) : - [1:20..1:23) : - [1:23..1:24) : - [1:24..1:29) : - [1:29..1:30) : - [1:30..1:36) : - [1:36..1:37) : - [1:37..1:43) : - [1:43..1:44) : - [1:44..1:50) : - [1:50..1:51) : - [1:51..1:54) : - [1:54..1:54) : + (Tok_u8 {source=[1:0..1:4); u8=(Constant 98u8)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_u16 {source=[1:5..1:10); u16=(Constant 98u16)}) + (Tok_whitespace {source=[1:10..1:11)}) + (Tok_u32 {source=[1:11..1:16); u32=(Constant 98u32)}) + (Tok_whitespace {source=[1:16..1:17)}) + (Tok_u64 {source=[1:17..1:19); u64=(Constant 98)}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_u64 {source=[1:20..1:23); u64=(Constant 98)}) + (Tok_whitespace {source=[1:23..1:24)}) + (Tok_u64 {source=[1:24..1:29); u64=(Constant 98)}) + (Tok_whitespace {source=[1:29..1:30)}) + (Tok_u128 {source=[1:30..1:36); u128=(Constant 98u128)}) + (Tok_whitespace {source=[1:36..1:37)}) + (Tok_u256 {source=[1:37..1:43); u256=(Constant 98u256)}) + (Tok_whitespace {source=[1:43..1:44)}) + (Tok_u512 {source=[1:44..1:50); u512=(Constant 98u512)}) + (Tok_whitespace {source=[1:50..1:51)}) + (Tok_nat {source=[1:51..1:54); nat=(Constant 98n)}) + (Tok_end_of_input {source=[1:54..1:54)}) ``98i8 98i16 98i32 98i 98i64 98i128 98i256 98i512 98z`` - [1:0..1:4) : - [1:4..1:5) : - [1:5..1:10) : - [1:10..1:11) : - [1:11..1:16) : - [1:16..1:17) : - [1:17..1:20) : - [1:20..1:21) : - [1:21..1:26) : - [1:26..1:27) : - [1:27..1:33) : - [1:33..1:34) : - [1:34..1:40) : - [1:40..1:41) : - [1:41..1:47) : - [1:47..1:48) : - [1:48..1:51) : - [1:51..1:51) : + (Tok_i8 {source=[1:0..1:4); i8=(Constant 98i8)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_i16 {source=[1:5..1:10); i16=(Constant 98i16)}) + (Tok_whitespace {source=[1:10..1:11)}) + (Tok_i32 {source=[1:11..1:16); i32=(Constant 98i32)}) + (Tok_whitespace {source=[1:16..1:17)}) + (Tok_i64 {source=[1:17..1:20); i64=(Constant 98i)}) + (Tok_whitespace {source=[1:20..1:21)}) + (Tok_i64 {source=[1:21..1:26); i64=(Constant 98i)}) + (Tok_whitespace {source=[1:26..1:27)}) + (Tok_i128 {source=[1:27..1:33); i128=(Constant 98i128)}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_i256 {source=[1:34..1:40); i256=(Constant 98i256)}) + (Tok_whitespace {source=[1:40..1:41)}) + (Tok_i512 {source=[1:41..1:47); i512=(Constant 98i512)}) + (Tok_whitespace {source=[1:47..1:48)}) + (Tok_zint {source=[1:48..1:51); zint=(Constant 98z)}) + (Tok_end_of_input {source=[1:51..1:51)}) ``0xfeu8 0xfeu16 0xfeu32 0xfe 0xfeu 0xfeu64 0xfeu128 0xfeu256 0xfeu512 0xfen`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:27) : - [1:27..1:28) : - [1:28..1:33) : - [1:33..1:34) : - [1:34..1:41) : - [1:41..1:42) : - [1:42..1:50) : - [1:50..1:51) : - [1:51..1:59) : - [1:59..1:60) : - [1:60..1:68) : - [1:68..1:69) : - [1:69..1:74) : - [1:74..1:74) : + (Tok_u8 {source=[1:0..1:6); u8=(Constant 254u8)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_u16 {source=[1:7..1:14); u16=(Constant 254u16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_u32 {source=[1:15..1:22); u32=(Constant 254u32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_u64 {source=[1:23..1:27); u64=(Constant 254)}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_u64 {source=[1:28..1:33); u64=(Constant 254)}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_u64 {source=[1:34..1:41); u64=(Constant 254)}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_u128 {source=[1:42..1:50); u128=(Constant 254u128)}) + (Tok_whitespace {source=[1:50..1:51)}) + (Tok_u256 {source=[1:51..1:59); u256=(Constant 254u256)}) + (Tok_whitespace {source=[1:59..1:60)}) + (Tok_u512 {source=[1:60..1:68); u512=(Constant 254u512)}) + (Tok_whitespace {source=[1:68..1:69)}) + (Tok_nat {source=[1:69..1:74); nat=(Constant 254n)}) + (Tok_end_of_input {source=[1:74..1:74)}) ``0xfei8 0xfei16 0xfei32 0xfei 0xfei64 0xfei128 0xfei256 0xfei512 0xfez`` - [1:0..1:6) : - [1:6..1:7) : - [1:7..1:14) : - [1:14..1:15) : - [1:15..1:22) : - [1:22..1:23) : - [1:23..1:28) : - [1:28..1:29) : - [1:29..1:36) : - [1:36..1:37) : - [1:37..1:45) : - [1:45..1:46) : - [1:46..1:54) : - [1:54..1:55) : - [1:55..1:63) : - [1:63..1:64) : - [1:64..1:69) : - [1:69..1:69) : + (Tok_i8 {source=[1:0..1:6); i8=(Malformed ["[1:0..1:6): Numerical constant exceeds 0x80"])}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_i16 {source=[1:7..1:14); i16=(Constant 254i16)}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_i32 {source=[1:15..1:22); i32=(Constant 254i32)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_i64 {source=[1:23..1:28); i64=(Constant 254i)}) + (Tok_whitespace {source=[1:28..1:29)}) + (Tok_i64 {source=[1:29..1:36); i64=(Constant 254i)}) + (Tok_whitespace {source=[1:36..1:37)}) + (Tok_i128 {source=[1:37..1:45); i128=(Constant 254i128)}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_i256 {source=[1:46..1:54); i256=(Constant 254i256)}) + (Tok_whitespace {source=[1:54..1:55)}) + (Tok_i512 {source=[1:55..1:63); i512=(Constant 254i512)}) + (Tok_whitespace {source=[1:63..1:64)}) + (Tok_zint {source=[1:64..1:69); zint=(Constant 254z)}) + (Tok_end_of_input {source=[1:69..1:69)}) ``0u`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 0)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0i`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_i64 {source=[1:0..1:2); i64=(Constant 0i)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0u8`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u8 {source=[1:0..1:3); u8=(Constant 0u8)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0i8`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_i8 {source=[1:0..1:3); i8=(Constant 0i8)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0n`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_nat {source=[1:0..1:2); nat=(Constant 0n)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0z`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_zint {source=[1:0..1:2); zint=(Constant 0z)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``42u`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Constant 42)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``42i`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_i64 {source=[1:0..1:3); i64=(Constant 42i)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``42u8`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_u8 {source=[1:0..1:4); u8=(Constant 42u8)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``42i8`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_i8 {source=[1:0..1:4); i8=(Constant 42i8)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0xffu8`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_u8 {source=[1:0..1:6); u8=(Constant 255u8)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x80i8`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_i8 {source=[1:0..1:6); i8=(Constant -128i8)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0a`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Malformed ["[1:0..1:2): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0AB42CD77`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_u64 {source=[1:0..1:9); u64=(Malformed ["[1:0..1:9): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0AB42CD77i`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_u64 {source=[1:0..1:10); u64=(Malformed ["[1:0..1:10): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0b2`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0o8`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0xg`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0u7`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0n1`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0z1`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0x100u8`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_u8 {source=[1:0..1:7); u8=(Malformed ["[1:0..1:7): Numerical constant exceeds 0xff"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x81i8`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_i8 {source=[1:0..1:6); i8=(Malformed ["[1:0..1:6): Numerical constant exceeds 0x80"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Malformed ["[1:0..1:2): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0o`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Malformed ["[1:0..1:2): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0x`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Malformed ["[1:0..1:2): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_u64 {source=[1:0..1:1); u64=(Constant 0)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``1`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_u64 {source=[1:0..1:1); u64=(Constant 1)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``-1`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_minus {source=[1:0..1:1)}) + (Tok_u64 {source=[1:1..1:2); u64=(Constant 1)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``42`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_u64 {source=[1:0..1:2); u64=(Constant 42)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0b1010_1011u8`` - [1:0..1:13) : - [1:13..1:13) : + (Tok_u8 {source=[1:0..1:13); u8=(Constant 171u8)}) + (Tok_end_of_input {source=[1:13..1:13)}) ``0o253u8`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_u8 {source=[1:0..1:7); u8=(Constant 171u8)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0xabu8`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_u8 {source=[1:0..1:6); u8=(Constant 171u8)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``15u`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Constant 15)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``17u64`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Constant 17)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0123_4567_89ab_cdef`` - [1:0..1:21) : - [1:21..1:21) : + (Tok_u64 {source=[1:0..1:21); u64=(Constant 81_985_529_216_486_895)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``0o660`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Constant 432)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b10_0001`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_u64 {source=[1:0..1:9); u64=(Constant 33)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0b0100_0001`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_u64 {source=[1:0..1:11); u64=(Constant 65)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``1_000_000`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_u64 {source=[1:0..1:9); u64=(Constant 1_000_000)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x___1_fffd`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_u64 {source=[1:0..1:11); u64=(Constant 131_069)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``17i64`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_i64 {source=[1:0..1:5); i64=(Constant 17i)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x_ab__c_i`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_i64 {source=[1:0..1:10); i64=(Constant 2_748i)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0o777`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Constant 511)}) + (Tok_end_of_input {source=[1:5..1:5)}) diff --git a/bootstrap/test/hmc/scan/test_istring.expected b/bootstrap/test/hmc/scan/test_istring.expected index b4a6ba9c0..f36081ce2 100644 --- a/bootstrap/test/hmc/scan/test_istring.expected +++ b/bootstrap/test/hmc/scan/test_istring.expected @@ -1,63 +1,63 @@ ``""`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_istring {source=[1:0..1:2); istring=(Constant "")}) + (Tok_end_of_input {source=[1:2..1:2)}) ``" "`` - [1:0..2:1) : - [2:1..2:1) : + (Tok_istring {source=[1:0..2:1); istring=(Constant "\n")}) + (Tok_end_of_input {source=[2:1..2:1)}) ``"a \n \t \n \r \" \\ \% nl>\ - [2:25..2:25) : + (Tok_istring {source=[1:0..2:25); istring=(Constant "a \n \t \n \r \" \\ \% nl> - [1:20..1:20) : + (Tok_istring {source=[1:0..1:20); istring=(Malformed ["[1:4..1:8): Invalid codepoint"; "[1:15..1:16): Invalid codepoint"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``"\'"`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_istring {source=[1:0..1:4); istring=(Malformed ["[1:1..1:3): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``"\u{110ffff}"`` - [1:0..1:13) : - [1:13..1:13) : + (Tok_istring {source=[1:0..1:13); istring=(Malformed ["[1:1..1:12): Invalid Unicode value"])}) + (Tok_end_of_input {source=[1:13..1:13)}) ``"\u{110000}"`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_istring {source=[1:0..1:12); istring=(Malformed ["[1:1..1:11): Invalid Unicode value"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"\u{110000}"`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_istring {source=[1:0..1:12); istring=(Malformed ["[1:1..1:11): Invalid Unicode value"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``"\u{d800}"`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_istring {source=[1:0..1:10); istring=(Malformed ["[1:1..1:9): Invalid Unicode value"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``"\u{x"`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_istring {source=[1:0..1:6); istring=(Malformed ["[1:1..1:4): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``"\u{0"`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_istring {source=[1:0..1:6); istring=(Malformed ["[1:1..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``"\u{"`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_istring {source=[1:0..1:5); istring=(Malformed ["[1:1..1:5): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``"\u0"`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_istring {source=[1:0..1:5); istring=(Malformed ["[1:1..1:3): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``"\u"`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_istring {source=[1:0..1:4); istring=(Malformed ["[1:1..1:4): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``"\x"`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_istring {source=[1:0..1:4); istring=(Malformed ["[1:1..1:3): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``"\"`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_istring {source=[1:0..1:3); istring=(Malformed ["[1:3..1:3): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``"\`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_istring {source=[1:0..1:2); istring=(Malformed ["[1:2..1:2): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:2..1:2)}) ``"""`` - [1:0..1:2) : - [1:2..1:3) : - [1:3..1:3) : + (Tok_istring {source=[1:0..1:2); istring=(Constant "")}) + (Tok_istring {source=[1:2..1:3); istring=(Malformed ["[1:3..1:3): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``"`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_istring {source=[1:0..1:1); istring=(Malformed ["[1:1..1:1): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:1..1:1)}) ``"\u\v\w"`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_istring {source=[1:0..1:8); istring=(Malformed ["[1:1..1:3): Illegal backslash escape"; "[1:3..1:5): Illegal backslash escape"; "[1:5..1:7): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:8..1:8)}) diff --git a/bootstrap/test/hmc/scan/test_operators.expected b/bootstrap/test/hmc/scan/test_operators.expected index 2a18e359f..02d275b72 100644 --- a/bootstrap/test/hmc/scan/test_operators.expected +++ b/bootstrap/test/hmc/scan/test_operators.expected @@ -1,83 +1,83 @@ ``~ ~-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_tilde {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_tilde_op {source=[1:2..1:19); tilde_op="~-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``? ?-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_qmark {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_qmark_op {source=[1:2..1:19); qmark_op="?-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``* *-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_star_op {source=[1:0..1:1); star_op="*"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_star_op {source=[1:2..1:19); star_op="*-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``** **-+*/%@^$<=>|:.~?`` - [1:0..1:2) : - [1:2..1:3) : - [1:3..1:21) : |:.~?"> - [1:21..1:21) : + (Tok_star_star_op {source=[1:0..1:2); star_star_op="**"}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_star_star_op {source=[1:3..1:21); star_star_op="**-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:21..1:21)}) ``% %-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_pct_op {source=[1:0..1:1); pct_op="\%"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_pct_op {source=[1:2..1:19); pct_op="\%-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``+ +-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_plus_op {source=[1:0..1:1); plus_op="+"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_plus_op {source=[1:2..1:19); plus_op="+-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``- --+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_minus {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_minus_op {source=[1:2..1:19); minus_op="--+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``@ @-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_at_op {source=[1:0..1:1); at_op="@"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_at_op {source=[1:2..1:19); at_op="@-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``^ ^-+*/%@^$<=>|:.~? ^)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:22) : + (Tok_caret {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_caret_op {source=[1:2..1:19); caret_op="^-+*/\%@^$<=>|:.~?"}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_caret {source=[1:20..1:22)}) + (Tok_rparen {source=[1:21..1:22)}) + (Tok_end_of_input {source=[1:22..1:22)}) ``$ $-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_dollar_op {source=[1:0..1:1); dollar_op="$"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_dollar_op {source=[1:2..1:19); dollar_op="$-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``< <-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_lt {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_lt_op {source=[1:2..1:19); lt_op="<-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``= =-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_eq {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_eq_op {source=[1:2..1:19); eq_op="=-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``> >-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : -+*/\%@^$<=>|:.~?"> - [1:19..1:19) : + (Tok_gt {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_gt_op {source=[1:2..1:19); gt_op=">-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``| |-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_bar {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_bar_op {source=[1:2..1:19); bar_op="|-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``: :-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_colon {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_colon_op {source=[1:2..1:19); colon_op=":-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) ``. .-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:19) : |:.~?"> - [1:19..1:19) : + (Tok_dot {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_dot_op {source=[1:2..1:19); dot_op=".-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:19..1:19)}) diff --git a/bootstrap/test/hmc/scan/test_punctuation.expected b/bootstrap/test/hmc/scan/test_punctuation.expected index 8e654aee0..28807b891 100644 --- a/bootstrap/test/hmc/scan/test_punctuation.expected +++ b/bootstrap/test/hmc/scan/test_punctuation.expected @@ -1,246 +1,246 @@ ``, ,,`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_comma {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_comma {source=[1:2..1:3)}) + (Tok_comma {source=[1:3..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``. .. ...`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:8) : - [1:8..1:8) : + (Tok_dot {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_dot_dot {source=[1:2..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_dot_op {source=[1:5..1:8); dot_op="..."}) + (Tok_end_of_input {source=[1:8..1:8)}) ``; ;;`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_semi {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_semi {source=[1:2..1:3)}) + (Tok_semi {source=[1:3..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``: := :: :::`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:7) : - [1:7..1:8) : - [1:8..1:11) : - [1:11..1:11) : + (Tok_colon {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_colon_eq {source=[1:2..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_colon_colon {source=[1:5..1:7)}) + (Tok_whitespace {source=[1:7..1:8)}) + (Tok_colon_op {source=[1:8..1:11); colon_op=":::"}) + (Tok_end_of_input {source=[1:11..1:11)}) ``< <= = <> >= >`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:9) : - [1:9..1:10) : - [1:10..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:14) : + (Tok_lt {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_lt_eq {source=[1:2..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_eq {source=[1:5..1:6)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_lt_gt {source=[1:7..1:9)}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_gt_eq {source=[1:10..1:12)}) + (Tok_whitespace {source=[1:12..1:13)}) + (Tok_gt {source=[1:13..1:14)}) + (Tok_end_of_input {source=[1:14..1:14)}) ``)|)|(|(`` - [1:0..1:1) : - [1:1..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:7) : + (Tok_rparen {source=[1:0..1:1)}) + (Tok_rcapture {source=[1:1..1:3)}) + (Tok_bar {source=[1:3..1:4)}) + (Tok_lcapture {source=[1:4..1:6)}) + (Tok_lparen {source=[1:6..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``]|]|[|[`` - [1:0..1:1) : - [1:1..1:3) : - [1:3..1:4) : - [1:4..1:6) : - [1:6..1:7) : - [1:7..1:7) : + (Tok_rbrack {source=[1:0..1:1)}) + (Tok_rarray {source=[1:1..1:3)}) + (Tok_bar {source=[1:3..1:4)}) + (Tok_larray {source=[1:4..1:6)}) + (Tok_lbrack {source=[1:6..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``}{`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_rcurly {source=[1:0..1:1)}) + (Tok_lcurly {source=[1:1..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``() (||)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:7) : + (Tok_lparen {source=[1:0..1:1)}) + (Tok_rparen {source=[1:1..1:2)}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_lcapture {source=[1:3..1:5)}) + (Tok_rcapture {source=[1:5..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``[] [||]`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:7) : - [1:7..1:7) : + (Tok_lbrack {source=[1:0..1:1)}) + (Tok_rbrack {source=[1:1..1:2)}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_larray {source=[1:3..1:5)}) + (Tok_rarray {source=[1:5..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``{}`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:2) : + (Tok_lcurly {source=[1:0..1:1)}) + (Tok_rcurly {source=[1:1..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``\^&\&_&\`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:8) : + (Tok_bslash {source=[1:0..1:1)}) + (Tok_caret {source=[1:1..1:2)}) + (Tok_amp {source=[1:2..1:3)}) + (Tok_bslash {source=[1:3..1:4)}) + (Tok_amp {source=[1:4..1:5)}) + (Tok_uscore {source=[1:5..1:6)}) + (Tok_amp {source=[1:6..1:7)}) + (Tok_bslash {source=[1:7..1:8)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``!&!!\`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:5) : + (Tok_xmark {source=[1:0..1:1)}) + (Tok_amp {source=[1:1..1:2)}) + (Tok_xmark {source=[1:2..1:3)}) + (Tok_xmark {source=[1:3..1:4)}) + (Tok_bslash {source=[1:4..1:5)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``- -> ->> ->`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:8) : >"> - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:11) : + (Tok_minus {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_arrow {source=[1:2..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_minus_op {source=[1:5..1:8); minus_op="->>"}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_arrow {source=[1:9..1:11)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``~- ~-> ~->> -~->`` - [1:0..1:2) : - [1:2..1:3) : - [1:3..1:6) : - [1:6..1:7) : - [1:7..1:11) : >"> - [1:11..1:12) : - [1:12..1:16) : "> - [1:16..1:16) : + (Tok_tilde_op {source=[1:0..1:2); tilde_op="~-"}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_carrow {source=[1:3..1:6)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_tilde_op {source=[1:7..1:11); tilde_op="~->>"}) + (Tok_whitespace {source=[1:11..1:12)}) + (Tok_minus_op {source=[1:12..1:16); minus_op="-~->"}) + (Tok_end_of_input {source=[1:16..1:16)}) ``type 'a 'ty ^m >e`` - [1:0..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:17) : + (Tok_type {source=[1:0..1:4)}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_tick {source=[1:5..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "a")}) + (Tok_whitespace {source=[1:7..1:8)}) + (Tok_tick {source=[1:8..1:9)}) + (Tok_uident {source=[1:9..1:11); uident=(Constant "ty")}) + (Tok_whitespace {source=[1:11..1:12)}) + (Tok_caret {source=[1:12..1:13)}) + (Tok_uident {source=[1:13..1:14); uident=(Constant "m")}) + (Tok_whitespace {source=[1:14..1:15)}) + (Tok_gt {source=[1:15..1:16)}) + (Tok_uident {source=[1:16..1:17); uident=(Constant "e")}) + (Tok_end_of_input {source=[1:17..1:17)}) ``^ ^t ^&t`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:8) : + (Tok_caret {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_caret {source=[1:2..1:3)}) + (Tok_uident {source=[1:3..1:4); uident=(Constant "t")}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_caret {source=[1:5..1:6)}) + (Tok_amp {source=[1:6..1:7)}) + (Tok_uident {source=[1:7..1:8); uident=(Constant "t")}) + (Tok_end_of_input {source=[1:8..1:8)}) ``> >- >-> >->> >>-> >e-> >{e|mut}->`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : -"> - [1:4..1:5) : - [1:5..1:8) : ->"> - [1:8..1:9) : - [1:9..1:13) : ->>"> - [1:13..1:14) : - [1:14..1:18) : >->"> - [1:18..1:19) : - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:28) : - [1:28..1:31) : - [1:31..1:32) : - [1:32..1:34) : - [1:34..1:34) : + (Tok_gt {source=[1:0..1:1)}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_gt_op {source=[1:2..1:4); gt_op=">-"}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_gt_op {source=[1:5..1:8); gt_op=">->"}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_gt_op {source=[1:9..1:13); gt_op=">->>"}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_gt_op {source=[1:14..1:18); gt_op=">>->"}) + (Tok_whitespace {source=[1:18..1:19)}) + (Tok_gt {source=[1:19..1:20)}) + (Tok_uident {source=[1:20..1:21); uident=(Constant "e")}) + (Tok_arrow {source=[1:21..1:23)}) + (Tok_whitespace {source=[1:23..1:24)}) + (Tok_gt {source=[1:24..1:25)}) + (Tok_lcurly {source=[1:25..1:26)}) + (Tok_uident {source=[1:26..1:27); uident=(Constant "e")}) + (Tok_bar {source=[1:27..1:28)}) + (Tok_uident {source=[1:28..1:31); uident=(Constant "mut")}) + (Tok_rcurly {source=[1:31..1:32)}) + (Tok_arrow {source=[1:32..1:34)}) + (Tok_end_of_input {source=[1:34..1:34)}) ``>e~-> >{e|mut}~-> ~hlt-> ~{hlt|alloc}-> >e~hlt-> >{e|os}~{hlt|alloc}->`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:13) : - [1:13..1:14) : - [1:14..1:17) : - [1:17..1:18) : - [1:18..1:19) : - [1:19..1:22) : - [1:22..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:30) : - [1:30..1:31) : - [1:31..1:36) : - [1:36..1:37) : - [1:37..1:39) : - [1:39..1:40) : - [1:40..1:41) : - [1:41..1:42) : - [1:42..1:43) : - [1:43..1:46) : - [1:46..1:48) : - [1:48..1:49) : - [1:49..1:50) : - [1:50..1:51) : - [1:51..1:52) : - [1:52..1:53) : - [1:53..1:55) : - [1:55..1:56) : - [1:56..1:57) : - [1:57..1:58) : - [1:58..1:61) : - [1:61..1:62) : - [1:62..1:67) : - [1:67..1:68) : - [1:68..1:70) : - [1:70..1:70) : + (Tok_gt {source=[1:0..1:1)}) + (Tok_uident {source=[1:1..1:2); uident=(Constant "e")}) + (Tok_carrow {source=[1:2..1:5)}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_gt {source=[1:6..1:7)}) + (Tok_lcurly {source=[1:7..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "e")}) + (Tok_bar {source=[1:9..1:10)}) + (Tok_uident {source=[1:10..1:13); uident=(Constant "mut")}) + (Tok_rcurly {source=[1:13..1:14)}) + (Tok_carrow {source=[1:14..1:17)}) + (Tok_whitespace {source=[1:17..1:18)}) + (Tok_tilde {source=[1:18..1:19)}) + (Tok_uident {source=[1:19..1:22); uident=(Constant "hlt")}) + (Tok_arrow {source=[1:22..1:24)}) + (Tok_whitespace {source=[1:24..1:25)}) + (Tok_tilde {source=[1:25..1:26)}) + (Tok_lcurly {source=[1:26..1:27)}) + (Tok_uident {source=[1:27..1:30); uident=(Constant "hlt")}) + (Tok_bar {source=[1:30..1:31)}) + (Tok_uident {source=[1:31..1:36); uident=(Constant "alloc")}) + (Tok_rcurly {source=[1:36..1:37)}) + (Tok_arrow {source=[1:37..1:39)}) + (Tok_whitespace {source=[1:39..1:40)}) + (Tok_gt {source=[1:40..1:41)}) + (Tok_uident {source=[1:41..1:42); uident=(Constant "e")}) + (Tok_tilde {source=[1:42..1:43)}) + (Tok_uident {source=[1:43..1:46); uident=(Constant "hlt")}) + (Tok_arrow {source=[1:46..1:48)}) + (Tok_whitespace {source=[1:48..1:49)}) + (Tok_gt {source=[1:49..1:50)}) + (Tok_lcurly {source=[1:50..1:51)}) + (Tok_uident {source=[1:51..1:52); uident=(Constant "e")}) + (Tok_bar {source=[1:52..1:53)}) + (Tok_uident {source=[1:53..1:55); uident=(Constant "os")}) + (Tok_rcurly {source=[1:55..1:56)}) + (Tok_tilde {source=[1:56..1:57)}) + (Tok_lcurly {source=[1:57..1:58)}) + (Tok_uident {source=[1:58..1:61); uident=(Constant "hlt")}) + (Tok_bar {source=[1:61..1:62)}) + (Tok_uident {source=[1:62..1:67); uident=(Constant "alloc")}) + (Tok_rcurly {source=[1:67..1:68)}) + (Tok_arrow {source=[1:68..1:70)}) + (Tok_end_of_input {source=[1:70..1:70)}) ``~f ~- ~-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:23) : |:.~?"> - [1:23..1:23) : + (Tok_tilde {source=[1:0..1:1)}) + (Tok_uident {source=[1:1..1:2); uident=(Constant "f")}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_tilde_op {source=[1:3..1:5); tilde_op="~-"}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_tilde_op {source=[1:6..1:23); tilde_op="~-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:23..1:23)}) ``?x ?? ?-+*/%@^$<=>|:.~?`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:23) : |:.~?"> - [1:23..1:23) : + (Tok_qmark {source=[1:0..1:1)}) + (Tok_uident {source=[1:1..1:2); uident=(Constant "x")}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_qmark_op {source=[1:3..1:5); qmark_op="??"}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_qmark_op {source=[1:6..1:23); qmark_op="?-+*/\%@^$<=>|:.~?"}) + (Tok_end_of_input {source=[1:23..1:23)}) ``[0..n) [0x3..n) [1..n] [i..n)`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:11) : - [1:11..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:27) : - [1:27..1:28) : - [1:28..1:29) : - [1:29..1:29) : + (Tok_lbrack {source=[1:0..1:1)}) + (Tok_u64 {source=[1:1..1:2); u64=(Constant 0)}) + (Tok_dot_dot {source=[1:2..1:4)}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "n")}) + (Tok_rparen {source=[1:5..1:6)}) + (Tok_whitespace {source=[1:6..1:7)}) + (Tok_lbrack {source=[1:7..1:8)}) + (Tok_u64 {source=[1:8..1:11); u64=(Constant 3)}) + (Tok_dot_dot {source=[1:11..1:13)}) + (Tok_uident {source=[1:13..1:14); uident=(Constant "n")}) + (Tok_rparen {source=[1:14..1:15)}) + (Tok_whitespace {source=[1:15..1:16)}) + (Tok_lbrack {source=[1:16..1:17)}) + (Tok_u64 {source=[1:17..1:18); u64=(Constant 1)}) + (Tok_dot_dot {source=[1:18..1:20)}) + (Tok_uident {source=[1:20..1:21); uident=(Constant "n")}) + (Tok_rbrack {source=[1:21..1:22)}) + (Tok_whitespace {source=[1:22..1:23)}) + (Tok_lbrack {source=[1:23..1:24)}) + (Tok_uident {source=[1:24..1:25); uident=(Constant "i")}) + (Tok_dot_dot {source=[1:25..1:27)}) + (Tok_uident {source=[1:27..1:28); uident=(Constant "n")}) + (Tok_rparen {source=[1:28..1:29)}) + (Tok_end_of_input {source=[1:29..1:29)}) diff --git a/bootstrap/test/hmc/scan/test_real.expected b/bootstrap/test/hmc/scan/test_real.expected index 5cc557d73..c075d5e2f 100644 --- a/bootstrap/test/hmc/scan/test_real.expected +++ b/bootstrap/test/hmc/scan/test_real.expected @@ -1,635 +1,635 @@ ``0.`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_r64 {source=[1:0..1:2); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0.0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``00.0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``00.00`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0e0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0e-0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0e+0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0e00`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0r`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_r64 {source=[1:0..1:2); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``0r64`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0r32`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r32 {source=[1:0..1:4); r32=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0e0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``1e0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0.e0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``1.e0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0.0e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0.1e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1.9999_9999_9999_ap-4)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``1.0e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``1.1e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1.1999_9999_9999_ap0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``12e0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x1.8p3)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``12.e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1.8p3)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``12.3e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1.8999_9999_9999_ap3)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``12.34e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.8ae1_47ae_147a_ep3)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b1p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b0.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b1.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b0.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b0.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p-1)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b1.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b1.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.8p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b10p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p1)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b10.p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p1)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b10.0p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1p1)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0b10.1p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.4p1)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0b10.01p0`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1.2p1)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o1p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o0.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o1.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o0.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o0.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p-3)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o1.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o1.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.2p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o12p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1.4p3)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o12.p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.4p3)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o12.0p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.4p3)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o12.3p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.4cp3)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o12.34p0`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1.4ep3)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x1p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x1.p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x0.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x0.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p-4)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x1.0p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x1.1p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.1p0)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x12p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1.2p4)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x12.p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Constant 0x1.2p4)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x12.0p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.2p4)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x12.3p0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.23p4)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x12.34p0`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1.234p4)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0b10_._01`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1.2p1)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o76543210_._01234567`` - [1:0..1:21) : - [1:21..1:21) : + (Tok_r64 {source=[1:0..1:21); r64=(Constant 0x1.f58d_100a_72eep23)}) + (Tok_end_of_input {source=[1:21..1:21)}) ``9876753210_._0123456789`` - [1:0..1:23) : - [1:23..1:23) : + (Tok_r64 {source=[1:0..1:23); r64=(Constant 0x1.2659_a59d_0194_9p33)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``0xfedcba98.0 0x0.89abcdef`` - [1:0..1:12) : - [1:12..1:13) : - [1:13..1:25) : - [1:25..1:25) : + (Tok_r64 {source=[1:0..1:12); r64=(Constant 0x1.fdb9_753p31)}) + (Tok_whitespace {source=[1:12..1:13)}) + (Tok_r64 {source=[1:13..1:25); r64=(Constant 0x1.1357_9bdep-1)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``0x76543210_.0 0x0._01234567`` - [1:0..1:13) : - [1:13..1:14) : - [1:14..1:27) : - [1:27..1:27) : + (Tok_r64 {source=[1:0..1:13); r64=(Constant 0x1.d950_c84p30)}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_r64 {source=[1:14..1:27); r64=(Constant 0x1.2345_67p-8)}) + (Tok_end_of_input {source=[1:27..1:27)}) ``0b1p-1074`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1p-1_074)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o1p-1074`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1p-1_074)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x1p-1074`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1p-1_074)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x0.0000_0000_0000_1p-1022`` - [1:0..1:26) : - [1:26..1:26) : + (Tok_r64 {source=[1:0..1:26); r64=(Constant 0x1p-1_074)}) + (Tok_end_of_input {source=[1:26..1:26)}) ``0x1.ffff_ffff_ffff_fp1023`` - [1:0..1:25) : - [1:25..1:25) : + (Tok_r64 {source=[1:0..1:25); r64=(Constant 0x1.ffff_ffff_ffff_fp1_023)}) + (Tok_end_of_input {source=[1:25..1:25)}) ``0b1p-149r32`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r32 {source=[1:0..1:11); r32=(Constant 0x1p-149)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``0o1p-149r32`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r32 {source=[1:0..1:11); r32=(Constant 0x1p-149)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``0x1p-149r32`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r32 {source=[1:0..1:11); r32=(Constant 0x1p-149)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``0x0.0000_02p-126r32`` - [1:0..1:19) : - [1:19..1:19) : + (Tok_r32 {source=[1:0..1:19); r32=(Constant 0x1p-149)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``0x1.ffff_fep127r32`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_r32 {source=[1:0..1:18); r32=(Constant 0x1.ffff_fep127)}) + (Tok_end_of_input {source=[1:18..1:18)}) ``0b__0__.__0__p__+__0__r`` - [1:0..1:23) : - [1:23..1:23) : + (Tok_r64 {source=[1:0..1:23); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``0o__0__.__0__p__+__0__r`` - [1:0..1:23) : - [1:23..1:23) : + (Tok_r64 {source=[1:0..1:23); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``0__.__0__e__+__0__r`` - [1:0..1:19) : - [1:19..1:19) : + (Tok_r64 {source=[1:0..1:19); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``0x__0__.__0__p__+__0__r`` - [1:0..1:23) : - [1:23..1:23) : + (Tok_r64 {source=[1:0..1:23); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:23..1:23)}) ``1.0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``1_000_000.0`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r64 {source=[1:0..1:11); r64=(Constant 0x1.e848p19)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``42.e44`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1.78ab_455e_0547_4p151)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``42.3e-78`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1.3978_eb89_0893p-254)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``1.5r32`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r32 {source=[1:0..1:6); r32=(Constant 0x1.8p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``1.234_567_e_+89_r32`` - [1:0..1:19) : - [1:19..1:19) : + (Tok_r32 {source=[1:0..1:19); r32=(Constant 0x1.f07c_18p295)}) + (Tok_end_of_input {source=[1:19..1:19)}) ``0x0r`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0x1r`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x1p0)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0x3r`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Constant 0x1.8p1)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0xffr`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1.fep7)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x1p42`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p42)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x0.1p42`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1p38)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x0.01p42`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1p34)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x0.001p42`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_r64 {source=[1:0..1:10); r64=(Constant 0x1p30)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0x0.0001p42`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r64 {source=[1:0..1:11); r64=(Constant 0x1p26)}) + (Tok_end_of_input {source=[1:11..1:11)}) ``0x0.1`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x1p-4)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0.01`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1p-8)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x00.001`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Constant 0x1p-12)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x00.0001`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Constant 0x1p-16)}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0b1.101p42`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_r64 {source=[1:0..1:10); r64=(Constant 0x1.ap42)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0o7.406p42`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_r64 {source=[1:0..1:10); r64=(Constant 0x1.e0cp44)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0x4.a3`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x1.28cp2)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x4a.3d2p+42`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_r64 {source=[1:0..1:12); r64=(Constant 0x1.28f4_8p48)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``0x4a.3d2p+42_r32`` - [1:0..1:16) : - [1:16..1:16) : + (Tok_r32 {source=[1:0..1:16); r32=(Constant 0x1.28f4_8p48)}) + (Tok_end_of_input {source=[1:16..1:16)}) ``0x4a.3d2p0`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_r64 {source=[1:0..1:10); r64=(Constant 0x1.28f4_8p6)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0x4a.3d2p-42`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_r64 {source=[1:0..1:12); r64=(Constant 0x1.28f4_8p-36)}) + (Tok_end_of_input {source=[1:12..1:12)}) ``0x0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0p-0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x0p1`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Constant 0x0p0)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b.`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0b0.p`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:5..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b0.pr64`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0b0.p+`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:6..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b0.p+r64`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0b0.p+0r6`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:0..1:9): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o.`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0o0.p`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:5..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o0.pr64`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o0.p+`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:6..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o0.p+r64`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o0.p+0r6`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:0..1:9): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0.e`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Malformed ["[1:3..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0.er64`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0.e+`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Malformed ["[1:4..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0.e+r64`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0.e+0r6`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:0..1:7): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x.`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0x0.p`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:5..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0.pr64`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x0.p+`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:6..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x0.p+r64`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x0.p+0r6`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:0..1:9): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0r42`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Malformed ["[1:0..1:4): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0r032`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:2..1:3): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0r3x2`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x1.zpxyr042`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_r64 {source=[1:0..1:12); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"; "[1:6..1:7): Invalid numerical constant"; "[1:7..1:8): Invalid numerical constant"; "[1:8..1:9): Invalid numerical constant"; "[1:9..1:10): Unsupported bitwidth"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``0p0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``1p0`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0.p0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``1.p0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_r64 {source=[1:0..1:4); r64=(Malformed ["[1:2..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0.0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0.1p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``1.0p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``1.1p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``12p0`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_u64 {source=[1:0..1:4); u64=(Malformed ["[1:0..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``12.p0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``12.3p0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``12.34p0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b0e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Malformed ["[1:0..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b1e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Malformed ["[1:0..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b0.e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b1.e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b0.0e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b0.1e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b1.0e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b1.1e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b10e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_u64 {source=[1:0..1:6); u64=(Malformed ["[1:0..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0b10.e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b10.0e0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0b10.1e0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0b10.01e0`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:7..1:8): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0o0e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Malformed ["[1:0..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o1e0`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_u64 {source=[1:0..1:5); u64=(Malformed ["[1:0..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o0.e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o1.e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o0.0e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o0.1e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o1.0e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o1.1e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o12e0`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_u64 {source=[1:0..1:6); u64=(Malformed ["[1:0..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0o12.e0`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o12.0e0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o12.3e0`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0o12.34e0`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:7..1:8): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x3.f_ffff_ffff_ffff`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_r64 {source=[1:0..1:20); r64=(Malformed ["[1:0..1:20): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``0x1p-1075`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_r64 {source=[1:0..1:9); r64=(Malformed ["[1:0..1:9): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``0x0.0000_0000_0000_1p-1023`` - [1:0..1:26) : - [1:26..1:26) : + (Tok_r64 {source=[1:0..1:26); r64=(Malformed ["[1:0..1:26): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:26..1:26)}) ``0x1p1024`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:0..1:8): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x1.ffff_ffff_ffff_f8p1023`` - [1:0..1:26) : - [1:26..1:26) : + (Tok_r64 {source=[1:0..1:26); r64=(Malformed ["[1:0..1:26): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:26..1:26)}) ``0x3.ffff_fer32`` - [1:0..1:14) : - [1:14..1:14) : + (Tok_r32 {source=[1:0..1:14); r32=(Malformed ["[1:0..1:14): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:14..1:14)}) ``0x1p-150r32`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_r32 {source=[1:0..1:11); r32=(Malformed ["[1:0..1:11): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:11..1:11)}) ``0x0.0000_01p-126r32`` - [1:0..1:19) : - [1:19..1:19) : + (Tok_r32 {source=[1:0..1:19); r32=(Malformed ["[1:0..1:19): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:19..1:19)}) ``0x1.ffff_ffp127r32`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_r32 {source=[1:0..1:18); r32=(Malformed ["[1:0..1:18): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``0b10_._012`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_r64 {source=[1:0..1:10); r64=(Malformed ["[1:9..1:10): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``0o76543210_._012345678`` - [1:0..1:22) : - [1:22..1:22) : + (Tok_r64 {source=[1:0..1:22); r64=(Malformed ["[1:21..1:22): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:22..1:22)}) ``9876753210_._0123456789a`` - [1:0..1:24) : - [1:24..1:24) : + (Tok_r64 {source=[1:0..1:24); r64=(Malformed ["[1:23..1:24): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:24..1:24)}) ``0xgfedcba98.0 0x0.89abcdefg`` - [1:0..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:27) : - [1:27..1:27) : + (Tok_u64 {source=[1:0..1:11); u64=(Malformed ["[1:0..1:11): Invalid numerical constant"])}) + (Tok_dot {source=[1:11..1:12)}) + (Tok_u64 {source=[1:12..1:13); u64=(Constant 0)}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_r64 {source=[1:14..1:27); r64=(Malformed ["[1:26..1:27): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:27..1:27)}) ``0_b.`` - [1:0..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_dot {source=[1:3..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0b0r_`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0b0r6_4`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0b0r64_`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0_o.`` - [1:0..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_dot {source=[1:3..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0o0r_`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0o0r6_4`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0o0r64_`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0r_`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_r64 {source=[1:0..1:3); r64=(Malformed ["[1:2..1:3): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``0r6_4`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:3..1:4): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0r64_`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0_x.`` - [1:0..1:3) : - [1:3..1:4) : - [1:4..1:4) : + (Tok_u64 {source=[1:0..1:3); u64=(Malformed ["[1:0..1:3): Invalid numerical constant"])}) + (Tok_dot {source=[1:3..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``0x0r_`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x0r6_4`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x0r64_`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:6..1:7): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x1.z`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_r64 {source=[1:0..1:5); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``0x1px5`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_r64 {source=[1:0..1:6); r64=(Malformed ["[1:4..1:5): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``0x1p0x5`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_r64 {source=[1:0..1:7); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``0x1p0x5y`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_r64 {source=[1:0..1:8); r64=(Malformed ["[1:5..1:6): Invalid numerical constant"; "[1:7..1:8): Invalid numerical constant"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``0x3.f_ffff_e_r32`` - [1:0..1:16) : - [1:16..1:16) : + (Tok_r32 {source=[1:0..1:16); r32=(Malformed ["[1:0..1:16): Numerical constant cannot be precisely represented"])}) + (Tok_end_of_input {source=[1:16..1:16)}) diff --git a/bootstrap/test/hmc/scan/test_rstring.expected b/bootstrap/test/hmc/scan/test_rstring.expected index 3663cf682..8d1fb011c 100644 --- a/bootstrap/test/hmc/scan/test_rstring.expected +++ b/bootstrap/test/hmc/scan/test_rstring.expected @@ -1,104 +1,104 @@ `_``````_` - [1:0..1:4) : - [1:4..1:4) : + (Tok_rstring {source=[1:0..1:4); rstring=(Constant "")}) + (Tok_end_of_input {source=[1:4..1:4)}) `_``` ```_` - [1:0..2:2) : - [2:2..2:2) : + (Tok_rstring {source=[1:0..2:2); rstring=(Constant "\n")}) + (Tok_end_of_input {source=[2:2..2:2)}) `_``` ```_` - [1:0..3:2) : - [3:2..3:2) : + (Tok_rstring {source=[1:0..3:2); rstring=(Constant "\n\n")}) + (Tok_end_of_input {source=[3:2..3:2)}) `_``` ```_` - [1:0..4:2) : - [4:2..4:2) : + (Tok_rstring {source=[1:0..4:2); rstring=(Constant "\n\n\n")}) + (Tok_end_of_input {source=[4:2..4:2)}) `_```a b```_` - [1:0..2:3) : - [2:3..2:3) : + (Tok_rstring {source=[1:0..2:3); rstring=(Constant "a\nb")}) + (Tok_end_of_input {source=[2:3..2:3)}) `_``` a b ```_` - [1:0..4:2) : - [4:2..4:2) : + (Tok_rstring {source=[1:0..4:2); rstring=(Constant "\na\nb\n")}) + (Tok_end_of_input {source=[4:2..4:2)}) `_```a```_` - [1:0..1:5) : - [1:5..1:5) : + (Tok_rstring {source=[1:0..1:5); rstring=(Constant "a")}) + (Tok_end_of_input {source=[1:5..1:5)}) `_``aoeu_``htns`gcrl`htns``aoeu_``_` - [1:0..1:30) : - [1:30..1:30) : + (Tok_rstring {source=[1:0..1:30); rstring=(Constant "`htns`gcrl`htns`")}) + (Tok_end_of_input {source=[1:30..1:30)}) `_```a\u{0}\t\n\r\"\\\ b```_` - [1:0..2:3) : - [2:3..2:3) : + (Tok_rstring {source=[1:0..2:3); rstring=(Constant "a\\u{0}\\t\\n\\r\\\"\\\\\\\nb")}) + (Tok_end_of_input {source=[2:3..2:3)}) `_```...```_` - [1:0..1:7) : - [1:7..1:7) : + (Tok_rstring {source=[1:0..1:7); rstring=(Constant "...")}) + (Tok_end_of_input {source=[1:7..1:7)}) `_```...`...```_` - [1:0..1:11) : - [1:11..1:11) : + (Tok_rstring {source=[1:0..1:11); rstring=(Constant "...`...")}) + (Tok_end_of_input {source=[1:11..1:11)}) `__``_`...``...`_``__` - [1:0..1:14) : - [1:14..1:14) : + (Tok_rstring {source=[1:0..1:14); rstring=(Constant "...``...")}) + (Tok_end_of_input {source=[1:14..1:14)}) `__``_``...`_``__` - [1:0..1:10) : - [1:10..1:10) : + (Tok_rstring {source=[1:0..1:10); rstring=(Constant "`...")}) + (Tok_end_of_input {source=[1:10..1:10)}) `__``_`...``_``__` - [1:0..1:10) : - [1:10..1:10) : + (Tok_rstring {source=[1:0..1:10); rstring=(Constant "...`")}) + (Tok_end_of_input {source=[1:10..1:10)}) `_e_``__`...``...`_`...`__``_e_` - [1:0..1:22) : - [1:22..1:22) : + (Tok_rstring {source=[1:0..1:22); rstring=(Constant "...``...`_`...")}) + (Tok_end_of_input {source=[1:22..1:22)}) `_7_``__`_`...``...`__``_7_` - [1:0..1:18) : - [1:18..1:18) : + (Tok_rstring {source=[1:0..1:18); rstring=(Constant "_`...``...")}) + (Tok_end_of_input {source=[1:18..1:18)}) `_c_``__`...``...`_`__``_c_` - [1:0..1:18) : - [1:18..1:18) : + (Tok_rstring {source=[1:0..1:18); rstring=(Constant "...``...`_")}) + (Tok_end_of_input {source=[1:18..1:18)}) `_8_``_x_`...``...`_`...`__`...`_x_``_8_` - [1:0..1:31) : - [1:31..1:31) : + (Tok_rstring {source=[1:0..1:31); rstring=(Constant "...``...`_`...`__`...")}) + (Tok_end_of_input {source=[1:31..1:31)}) `_2_``_x_`__`...``...`_`...`_x_``_2_` - [1:0..1:27) : - [1:27..1:27) : + (Tok_rstring {source=[1:0..1:27); rstring=(Constant "__`...``...`_`...")}) + (Tok_end_of_input {source=[1:27..1:27)}) `_2_``_x_`...``...`_`...`__`_x_``_2_` - [1:0..1:27) : - [1:27..1:27) : + (Tok_rstring {source=[1:0..1:27); rstring=(Constant "...``...`_`...`__")}) + (Tok_end_of_input {source=[1:27..1:27)}) `_c9_``_xx_`...``...`_`...`__`...`__`_0_`_1_`_2_`_3_`_4_`_5_`_6_`_7_`_8_`_9_`_a_`_b_`_c_`_d_`_e_`_f_...`_xx_``_c9_` - [1:0..1:103) : - [1:103..1:103) : + (Tok_rstring {source=[1:0..1:103); rstring=(Constant "...``...`_`...`__`...`__`_0_`_1_`_2_`_3_`_4_`_5_`_6_`_7_`_8_`_9_`_a_`_b_`_c_`_d_`_e_`_f_...")}) + (Tok_end_of_input {source=[1:103..1:103)}) `_`` `aoeu` ``_` - [1:0..1:10) : - [1:10..1:10) : + (Tok_rstring {source=[1:0..1:10); rstring=(Malformed ["[1:1..1:2): Invalid codepoint in raw string tag"])}) + (Tok_end_of_input {source=[1:10..1:10)}) `_``*`aoeu`*``_` - [1:0..1:10) : - [1:10..1:10) : + (Tok_rstring {source=[1:0..1:10); rstring=(Malformed ["[1:1..1:2): Invalid codepoint in raw string tag"])}) + (Tok_end_of_input {source=[1:10..1:10)}) `_```_` - [1:0..1:1) : - [1:1..1:1) : + (Tok_rstring {source=[1:0..1:1); rstring=(Malformed ["[1:0..1:1): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:1..1:1)}) `_````_` - [1:0..1:2) : - [1:2..1:2) : + (Tok_rstring {source=[1:0..1:2); rstring=(Malformed ["[1:0..1:2): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:2..1:2)}) `_`````_` - [1:0..1:3) : - [1:3..1:3) : + (Tok_rstring {source=[1:0..1:3); rstring=(Malformed ["[1:0..1:3): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:3..1:3)}) `_``tag``tag`_` - [1:0..1:9) : - [1:9..1:9) : + (Tok_rstring {source=[1:0..1:9); rstring=(Malformed ["[1:0..1:9): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:9..1:9)}) `_``tag``ta`_` - [1:0..1:8) : - [1:8..1:8) : + (Tok_rstring {source=[1:0..1:8); rstring=(Malformed ["[1:0..1:8): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:8..1:8)}) `_``tag```_` - [1:0..1:6) : - [1:6..1:6) : + (Tok_rstring {source=[1:0..1:6); rstring=(Malformed ["[1:0..1:6): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:6..1:6)}) `_``tag``_` - [1:0..1:5) : - [1:5..1:5) : + (Tok_rstring {source=[1:0..1:5); rstring=(Malformed ["[1:0..1:5): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:5..1:5)}) `_``tag`_` - [1:0..1:4) : - [1:4..1:4) : + (Tok_rstring {source=[1:0..1:4); rstring=(Malformed ["[1:0..1:4): Unterminated string literal"])}) + (Tok_end_of_input {source=[1:4..1:4)}) diff --git a/bootstrap/test/hmc/scan/test_source_directive.expected b/bootstrap/test/hmc/scan/test_source_directive.expected index 9057b983e..d7c1e82a4 100644 --- a/bootstrap/test/hmc/scan/test_source_directive.expected +++ b/bootstrap/test/hmc/scan/test_source_directive.expected @@ -1,238 +1,238 @@ ``[:"Foo.hm":42:0+13]`` - [1:0..1:19) : - ["Foo.hm":42:13.."Foo.hm":42:13) : + (Tok_source_directive {source=[1:0..1:19); source_directive=(Constant {path=Some ("Foo.hm"); line=Some (42); io=Some ({indent=0; omit=13})})}) + (Tok_end_of_input {source=["Foo.hm":42:13.."Foo.hm":42:13)}) ``[:"Foo.hm":42:8+13]`` - [1:0..1:19) : - ["Foo.hm":42:21.."Foo.hm":42:21) : - ["Foo.hm":42:21.."Foo.hm":42:21) : - ["Foo.hm":42:21.."Foo.hm":42:21) : + (Tok_source_directive {source=[1:0..1:19); source_directive=(Constant {path=Some ("Foo.hm"); line=Some (42); io=Some ({indent=8; omit=13})})}) + (Tok_dedent {source=["Foo.hm":42:21.."Foo.hm":42:21); dedent=(Constant ())}) + (Tok_dedent {source=["Foo.hm":42:21.."Foo.hm":42:21); dedent=(Constant ())}) + (Tok_end_of_input {source=["Foo.hm":42:21.."Foo.hm":42:21)}) ``[:"Foo.hm":42]`` - [1:0..1:14) : - ["Foo.hm":42:0.."Foo.hm":42:0) : + (Tok_source_directive {source=[1:0..1:14); source_directive=(Constant {path=Some ("Foo.hm"); line=Some (42); io=None})}) + (Tok_end_of_input {source=["Foo.hm":42:0.."Foo.hm":42:0)}) ``[:"Foo.hm"]`` - [1:0..1:11) : - ["Foo.hm":1:0.."Foo.hm":1:0) : + (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})}) + (Tok_end_of_input {source=["Foo.hm":1:0.."Foo.hm":1:0)}) ``[:42:0+13]`` - [1:0..1:10) : - [42:13..42:13) : + (Tok_source_directive {source=[1:0..1:10); source_directive=(Constant {path=None; line=Some (42); io=Some ({indent=0; omit=13})})}) + (Tok_end_of_input {source=[42:13..42:13)}) ``[:42]`` - [1:0..1:5) : - [42:0..42:0) : + (Tok_source_directive {source=[1:0..1:5); source_directive=(Constant {path=None; line=Some (42); io=None})}) + (Tok_end_of_input {source=[42:0..42:0)}) ``[:]`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_source_directive {source=[1:0..1:3); source_directive=(Constant {path=None; line=None; io=None})}) + (Tok_end_of_input {source=[1:3..1:3)}) ``[:1:0]`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_source_directive {source=[1:0..1:6); source_directive=(Malformed ["[1:5..1:6): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``[:10123456789]`` - [1:0..1:14) : - [10_123_456_789:0..10_123_456_789:0) : + (Tok_source_directive {source=[1:0..1:14); source_directive=(Constant {path=None; line=Some (10_123_456_789); io=None})}) + (Tok_end_of_input {source=[10_123_456_789:0..10_123_456_789:0)}) ``[:1] [:2]`` - [1:0..1:4) : - [1:0..1:1) : - [1:5..1:9) : - [2:0..2:0) : + (Tok_source_directive {source=[1:0..1:4); source_directive=(Constant {path=None; line=Some (1); io=None})}) + (Tok_whitespace {source=[1:0..1:1)}) + (Tok_source_directive {source=[1:5..1:9); source_directive=(Constant {path=None; line=Some (2); io=None})}) + (Tok_end_of_input {source=[2:0..2:0)}) ``[:"Foo.hm"] [:] [:"Bar.hm"]`` - [1:0..1:11) : - ["Foo.hm":1:0.."Foo.hm":1:1) : - [1:12..1:15) : - [1:15..1:16) : - [1:16..1:27) : - ["Bar.hm":1:0.."Bar.hm":1:0) : + (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})}) + (Tok_whitespace {source=["Foo.hm":1:0.."Foo.hm":1:1)}) + (Tok_source_directive {source=[1:12..1:15); source_directive=(Constant {path=None; line=None; io=None})}) + (Tok_whitespace {source=[1:15..1:16)}) + (Tok_source_directive {source=[1:16..1:27); source_directive=(Constant {path=Some ("Bar.hm"); line=None; io=None})}) + (Tok_end_of_input {source=["Bar.hm":1:0.."Bar.hm":1:0)}) ``[:"Foo.hm"] [:"Bar.hm"] [:] [:"Biz.hm"]`` - [1:0..1:11) : - ["Foo.hm":1:0.."Foo.hm":1:1) : - [1:12..1:23) : - ["Bar.hm":1:0.."Bar.hm":1:1) : - [1:24..1:27) : - [1:27..1:28) : - [1:28..1:39) : - ["Biz.hm":1:0.."Biz.hm":1:0) : + (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})}) + (Tok_whitespace {source=["Foo.hm":1:0.."Foo.hm":1:1)}) + (Tok_source_directive {source=[1:12..1:23); source_directive=(Constant {path=Some ("Bar.hm"); line=None; io=None})}) + (Tok_whitespace {source=["Bar.hm":1:0.."Bar.hm":1:1)}) + (Tok_source_directive {source=[1:24..1:27); source_directive=(Constant {path=None; line=None; io=None})}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_source_directive {source=[1:28..1:39); source_directive=(Constant {path=Some ("Biz.hm"); line=None; io=None})}) + (Tok_end_of_input {source=["Biz.hm":1:0.."Biz.hm":1:0)}) ``[:"Foo.hm":1:0+42]a b`` - [1:0..1:18) : - ["Foo.hm":1:42.."Foo.hm":1:43) : - ["Foo.hm":1:43.."Foo.hm":2:0) : - ["Foo.hm":2:0.."Foo.hm":2:0) : - ["Foo.hm":2:0.."Foo.hm":2:1) : - ["Foo.hm":2:1.."Foo.hm":2:1) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Constant {path=Some ("Foo.hm"); line=Some (1); io=Some ({indent=0; omit=42})})}) + (Tok_uident {source=["Foo.hm":1:42.."Foo.hm":1:43); uident=(Constant "a")}) + (Tok_whitespace {source=["Foo.hm":1:43.."Foo.hm":2:0)}) + (Tok_line_delim {source=["Foo.hm":2:0.."Foo.hm":2:0)}) + (Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "b")}) + (Tok_end_of_input {source=["Foo.hm":2:1.."Foo.hm":2:1)}) ``[:"A\tB\rC\n\u{44}"]`` - [1:0..1:20) : - ["A\tB\rC\nD":1:0.."A\tB\rC\nD":1:0) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Constant {path=Some ("A\tB\rC\nD"); line=None; io=None})}) + (Tok_end_of_input {source=["A\tB\rC\nD":1:0.."A\tB\rC\nD":1:0)}) ``[:1_0_:0_+0_]`` - [1:0..1:13) : - [10:0..10:0) : + (Tok_source_directive {source=[1:0..1:13); source_directive=(Constant {path=None; line=Some (10); io=Some ({indent=0; omit=0})})}) + (Tok_end_of_input {source=[10:0..10:0)}) ``[:_1_0_:_0_+_0_]`` - [1:0..1:16) : - [10:0..10:0) : + (Tok_source_directive {source=[1:0..1:16); source_directive=(Constant {path=None; line=Some (10); io=Some ({indent=0; omit=0})})}) + (Tok_end_of_input {source=[10:0..10:0)}) ``[:__1__0__:__0__+__0__]`` - [1:0..1:23) : - [10:0..10:0) : + (Tok_source_directive {source=[1:0..1:23); source_directive=(Constant {path=None; line=Some (10); io=Some ({indent=0; omit=0})})}) + (Tok_end_of_input {source=[10:0..10:0)}) ``[:"Foo.hm":42:8+]`` - [1:0..1:17) : - [1:17..1:17) : + (Tok_source_directive {source=[1:0..1:17); source_directive=(Malformed ["[1:16..1:17): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:17..1:17)}) ``[:"Foo.hm":42:8]`` - [1:0..1:16) : - [1:16..1:16) : + (Tok_source_directive {source=[1:0..1:16); source_directive=(Malformed ["[1:15..1:16): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:16..1:16)}) ``[:"Foo.hm":42:+13]`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Malformed ["[1:14..1:15): Unexpected codepoint in source directive"; "[1:17..1:18): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``[:"Foo.hm":42:]`` - [1:0..1:15) : - [1:15..1:15) : + (Tok_source_directive {source=[1:0..1:15); source_directive=(Malformed ["[1:14..1:15): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:15..1:15)}) ``[:"Foo.hm"::8+13]`` - [1:0..1:17) : - [1:17..1:17) : + (Tok_source_directive {source=[1:0..1:17); source_directive=(Malformed ["[1:11..1:12): Unexpected codepoint in source directive"; "[1:12..1:13): Unexpected codepoint in source directive"; "[1:13..1:14): Unexpected codepoint in source directive"; "[1:14..1:15): Unexpected codepoint in source directive"; "[1:15..1:16): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:17..1:17)}) ``[::42:8+13]`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_source_directive {source=[1:0..1:11); source_directive=(Malformed ["[1:2..1:3): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:11..1:11)}) ``[:"Foo.hm"42:8+13]`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Malformed ["[1:10..1:11): Unexpected codepoint in source directive"; "[1:11..1:12): Unexpected codepoint in source directive"; "[1:14..1:15): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``[:"Foo.hm:42:8+13]`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Malformed ["[1:0..1:18): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``[:Foo.hm":42:8+13]`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Malformed ["[1:2..1:3): Unexpected codepoint in source directive"; "[1:3..1:4): Unexpected codepoint in source directive"; "[1:4..1:5): Unexpected codepoint in source directive"; "[1:5..1:6): Unexpected codepoint in source directive"; "[1:6..1:7): Unexpected codepoint in source directive"; "[1:7..1:8): Unexpected codepoint in source directive"; "[1:8..1:9): Unexpected codepoint in source directive"; "[1:12..1:13): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``[:":42:8+13]`` - [1:0..1:12) : - [1:12..1:12) : + (Tok_source_directive {source=[1:0..1:12); source_directive=(Malformed ["[1:0..1:12): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:12..1:12)}) ``[:"Foo.hm":042:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:11..1:12): Unexpected codepoint in source directive"; "[1:12..1:13): Unexpected codepoint in source directive"; "[1:13..1:14): Unexpected codepoint in source directive"; "[1:16..1:17): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:08+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:15..1:16): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:8+013]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:17..1:18): Unexpected codepoint in source directive"; "[1:18..1:19): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":9999999999999999999]`` - [1:0..1:31) : - [1:31..1:31) : + (Tok_source_directive {source=[1:0..1:31); source_directive=(Malformed ["[1:11..1:30): Line exceeds 9_223_372_036_854_775_808"])}) + (Tok_end_of_input {source=[1:31..1:31)}) ``[:"Foo.hm":1:9999999999999999996+0]`` - [1:0..1:35) : - [1:35..1:35) : + (Tok_source_directive {source=[1:0..1:35); source_directive=(Malformed ["[1:13..1:32): Indentation exceeds 9_223_372_036_854_775_808"])}) + (Tok_end_of_input {source=[1:35..1:35)}) ``[:"Foo.hm":1:0+9999999999999999999]`` - [1:0..1:35) : - [1:35..1:35) : + (Tok_source_directive {source=[1:0..1:35); source_directive=(Malformed ["[1:15..1:34): Omitted columns exceeds 9_223_372_036_854_775_808"])}) + (Tok_end_of_input {source=[1:35..1:35)}) ``[:0]`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_source_directive {source=[1:0..1:4); source_directive=(Malformed ["[1:2..1:3): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:4..1:4)}) ``[:_0]`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_source_directive {source=[1:0..1:5); source_directive=(Malformed ["[1:3..1:4): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:5..1:5)}) ``[:1:0+_00]`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_source_directive {source=[1:0..1:10); source_directive=(Malformed ["[1:8..1:9): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``[:1:0+00]`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:7..1:8): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:1:0+01]`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:7..1:8): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:1:_00+0]`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_source_directive {source=[1:0..1:10); source_directive=(Malformed ["[1:6..1:7): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``[:1:00+0]`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:5..1:6): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:1:01+0]`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:5..1:6): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:1:5+0]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:4..1:5): Indentation is not a multiple of 4"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:1:6+0]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:4..1:5): Indentation is not a multiple of 4"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:1:7+0]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:4..1:5): Indentation is not a multiple of 4"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:�"Foo.hm":42:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:2..1:3): Unexpected codepoint in source directive"; "[1:3..1:4): Unexpected codepoint in source directive"; "[1:4..1:5): Unexpected codepoint in source directive"; "[1:5..1:6): Unexpected codepoint in source directive"; "[1:6..1:7): Unexpected codepoint in source directive"; "[1:7..1:8): Unexpected codepoint in source directive"; "[1:8..1:9): Unexpected codepoint in source directive"; "[1:9..1:10): Unexpected codepoint in source directive"; "[1:10..1:11): Unexpected codepoint in source directive"; "[1:14..1:15): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:_"Foo.hm":42:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:3..1:4): Unexpected codepoint in source directive"; "[1:4..1:5): Unexpected codepoint in source directive"; "[1:5..1:6): Unexpected codepoint in source directive"; "[1:6..1:7): Unexpected codepoint in source directive"; "[1:7..1:8): Unexpected codepoint in source directive"; "[1:8..1:9): Unexpected codepoint in source directive"; "[1:9..1:10): Unexpected codepoint in source directive"; "[1:10..1:11): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm"�:42:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:10..1:11): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm"_:42:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:10..1:11): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":�42:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:11..1:12): Unexpected codepoint in source directive"; "[1:12..1:13): Unexpected codepoint in source directive"; "[1:13..1:14): Unexpected codepoint in source directive"; "[1:16..1:17): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42�:8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:13..1:14): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:�8+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:14..1:15): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:8�+13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:15..1:16): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:8+�13]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:16..1:17): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:8+13�]`` - [1:0..1:20) : - [1:20..1:20) : + (Tok_source_directive {source=[1:0..1:20); source_directive=(Malformed ["[1:18..1:19): Unexpected codepoint in source directive"])}) + (Tok_end_of_input {source=[1:20..1:20)}) ``[:"Foo.hm":42:8+13`` - [1:0..1:18) : - [1:18..1:18) : + (Tok_source_directive {source=[1:0..1:18); source_directive=(Malformed ["[1:0..1:18): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:18..1:18)}) ``[:"Foo.hm":42:8+`` - [1:0..1:16) : - [1:16..1:16) : + (Tok_source_directive {source=[1:0..1:16); source_directive=(Malformed ["[1:0..1:16): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:16..1:16)}) ``[:"Foo.hm":42:8`` - [1:0..1:15) : - [1:15..1:15) : + (Tok_source_directive {source=[1:0..1:15); source_directive=(Malformed ["[1:0..1:15): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:15..1:15)}) ``[:"Foo.hm":42:`` - [1:0..1:14) : - [1:14..1:14) : + (Tok_source_directive {source=[1:0..1:14); source_directive=(Malformed ["[1:0..1:14): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:14..1:14)}) ``[:"Foo.hm":42`` - [1:0..1:13) : - [1:13..1:13) : + (Tok_source_directive {source=[1:0..1:13); source_directive=(Malformed ["[1:0..1:13): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:13..1:13)}) ``[:"Foo.hm":`` - [1:0..1:11) : - [1:11..1:11) : + (Tok_source_directive {source=[1:0..1:11); source_directive=(Malformed ["[1:0..1:11): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:11..1:11)}) ``[:"Foo.hm"`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_source_directive {source=[1:0..1:10); source_directive=(Malformed ["[1:0..1:10): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``[:"Foo.hm`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:0..1:9): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:"`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_source_directive {source=[1:0..1:3); source_directive=(Malformed ["[1:0..1:3): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:3..1:3)}) ``[:"\x"]`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_source_directive {source=[1:0..1:7); source_directive=(Malformed ["[1:3..1:5): Illegal backslash escape"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``[:"\u{g}"]`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_source_directive {source=[1:0..1:10); source_directive=(Malformed ["[1:3..1:7): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:10..1:10)}) ``[:"\u{}"]`` - [1:0..1:9) : - [1:9..1:9) : + (Tok_source_directive {source=[1:0..1:9); source_directive=(Malformed ["[1:3..1:7): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:9..1:9)}) ``[:"\u{"]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:3..1:7): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:"\u}"]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:3..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:"\ua"]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:3..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:"\u}"]`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_source_directive {source=[1:0..1:8); source_directive=(Malformed ["[1:3..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:8..1:8)}) ``[:"\u"]`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_source_directive {source=[1:0..1:7); source_directive=(Malformed ["[1:3..1:6): Invalid \u{...}"])}) + (Tok_end_of_input {source=[1:7..1:7)}) ``[:"\\]`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_source_directive {source=[1:0..1:6); source_directive=(Malformed ["[1:0..1:6): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:6..1:6)}) ``[:"]`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_source_directive {source=[1:0..1:4); source_directive=(Malformed ["[1:0..1:4): Unterminated source directive"])}) + (Tok_end_of_input {source=[1:4..1:4)}) diff --git a/bootstrap/test/hmc/scan/test_uident.expected b/bootstrap/test/hmc/scan/test_uident.expected index 23f9ac6e0..a90786ec8 100644 --- a/bootstrap/test/hmc/scan/test_uident.expected +++ b/bootstrap/test/hmc/scan/test_uident.expected @@ -1,240 +1,240 @@ ``_`` - [1:0..1:1) : - [1:1..1:1) : + (Tok_uscore {source=[1:0..1:1)}) + (Tok_end_of_input {source=[1:1..1:1)}) ``A B C D E F G H I J K L M N O P Q R S T U V W X Y Z`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:19) : - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:28) : - [1:28..1:29) : - [1:29..1:30) : - [1:30..1:31) : - [1:31..1:32) : - [1:32..1:33) : - [1:33..1:34) : - [1:34..1:35) : - [1:35..1:36) : - [1:36..1:37) : - [1:37..1:38) : - [1:38..1:39) : - [1:39..1:40) : - [1:40..1:41) : - [1:41..1:42) : - [1:42..1:43) : - [1:43..1:44) : - [1:44..1:45) : - [1:45..1:46) : - [1:46..1:47) : - [1:47..1:48) : - [1:48..1:49) : - [1:49..1:50) : - [1:50..1:51) : - [1:51..1:51) : + (Tok_cident {source=[1:0..1:1); cident="A"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_cident {source=[1:2..1:3); cident="B"}) + (Tok_whitespace {source=[1:3..1:4)}) + (Tok_cident {source=[1:4..1:5); cident="C"}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_cident {source=[1:6..1:7); cident="D"}) + (Tok_whitespace {source=[1:7..1:8)}) + (Tok_cident {source=[1:8..1:9); cident="E"}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_cident {source=[1:10..1:11); cident="F"}) + (Tok_whitespace {source=[1:11..1:12)}) + (Tok_cident {source=[1:12..1:13); cident="G"}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_cident {source=[1:14..1:15); cident="H"}) + (Tok_whitespace {source=[1:15..1:16)}) + (Tok_cident {source=[1:16..1:17); cident="I"}) + (Tok_whitespace {source=[1:17..1:18)}) + (Tok_cident {source=[1:18..1:19); cident="J"}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_cident {source=[1:20..1:21); cident="K"}) + (Tok_whitespace {source=[1:21..1:22)}) + (Tok_cident {source=[1:22..1:23); cident="L"}) + (Tok_whitespace {source=[1:23..1:24)}) + (Tok_cident {source=[1:24..1:25); cident="M"}) + (Tok_whitespace {source=[1:25..1:26)}) + (Tok_cident {source=[1:26..1:27); cident="N"}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_cident {source=[1:28..1:29); cident="O"}) + (Tok_whitespace {source=[1:29..1:30)}) + (Tok_cident {source=[1:30..1:31); cident="P"}) + (Tok_whitespace {source=[1:31..1:32)}) + (Tok_cident {source=[1:32..1:33); cident="Q"}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_cident {source=[1:34..1:35); cident="R"}) + (Tok_whitespace {source=[1:35..1:36)}) + (Tok_cident {source=[1:36..1:37); cident="S"}) + (Tok_whitespace {source=[1:37..1:38)}) + (Tok_cident {source=[1:38..1:39); cident="T"}) + (Tok_whitespace {source=[1:39..1:40)}) + (Tok_cident {source=[1:40..1:41); cident="U"}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_cident {source=[1:42..1:43); cident="V"}) + (Tok_whitespace {source=[1:43..1:44)}) + (Tok_cident {source=[1:44..1:45); cident="W"}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_cident {source=[1:46..1:47); cident="X"}) + (Tok_whitespace {source=[1:47..1:48)}) + (Tok_cident {source=[1:48..1:49); cident="Y"}) + (Tok_whitespace {source=[1:49..1:50)}) + (Tok_cident {source=[1:50..1:51); cident="Z"}) + (Tok_end_of_input {source=[1:51..1:51)}) ``a b c d e f g h i j k l m n o p q r s t u v w x y z`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:3) : - [1:3..1:4) : - [1:4..1:5) : - [1:5..1:6) : - [1:6..1:7) : - [1:7..1:8) : - [1:8..1:9) : - [1:9..1:10) : - [1:10..1:11) : - [1:11..1:12) : - [1:12..1:13) : - [1:13..1:14) : - [1:14..1:15) : - [1:15..1:16) : - [1:16..1:17) : - [1:17..1:18) : - [1:18..1:19) : - [1:19..1:20) : - [1:20..1:21) : - [1:21..1:22) : - [1:22..1:23) : - [1:23..1:24) : - [1:24..1:25) : - [1:25..1:26) : - [1:26..1:27) : - [1:27..1:28) : - [1:28..1:29) : - [1:29..1:30) : - [1:30..1:31) : - [1:31..1:32) : - [1:32..1:33) : - [1:33..1:34) : - [1:34..1:35) : - [1:35..1:36) : - [1:36..1:37) : - [1:37..1:38) : - [1:38..1:39) : - [1:39..1:40) : - [1:40..1:41) : - [1:41..1:42) : - [1:42..1:43) : - [1:43..1:44) : - [1:44..1:45) : - [1:45..1:46) : - [1:46..1:47) : - [1:47..1:48) : - [1:48..1:49) : - [1:49..1:50) : - [1:50..1:51) : - [1:51..1:51) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:3); uident=(Constant "b")}) + (Tok_whitespace {source=[1:3..1:4)}) + (Tok_uident {source=[1:4..1:5); uident=(Constant "c")}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_uident {source=[1:6..1:7); uident=(Constant "d")}) + (Tok_whitespace {source=[1:7..1:8)}) + (Tok_uident {source=[1:8..1:9); uident=(Constant "e")}) + (Tok_whitespace {source=[1:9..1:10)}) + (Tok_uident {source=[1:10..1:11); uident=(Constant "f")}) + (Tok_whitespace {source=[1:11..1:12)}) + (Tok_uident {source=[1:12..1:13); uident=(Constant "g")}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_uident {source=[1:14..1:15); uident=(Constant "h")}) + (Tok_whitespace {source=[1:15..1:16)}) + (Tok_uident {source=[1:16..1:17); uident=(Constant "i")}) + (Tok_whitespace {source=[1:17..1:18)}) + (Tok_uident {source=[1:18..1:19); uident=(Constant "j")}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_uident {source=[1:20..1:21); uident=(Constant "k")}) + (Tok_whitespace {source=[1:21..1:22)}) + (Tok_uident {source=[1:22..1:23); uident=(Constant "l")}) + (Tok_whitespace {source=[1:23..1:24)}) + (Tok_uident {source=[1:24..1:25); uident=(Constant "m")}) + (Tok_whitespace {source=[1:25..1:26)}) + (Tok_uident {source=[1:26..1:27); uident=(Constant "n")}) + (Tok_whitespace {source=[1:27..1:28)}) + (Tok_uident {source=[1:28..1:29); uident=(Constant "o")}) + (Tok_whitespace {source=[1:29..1:30)}) + (Tok_uident {source=[1:30..1:31); uident=(Constant "p")}) + (Tok_whitespace {source=[1:31..1:32)}) + (Tok_uident {source=[1:32..1:33); uident=(Constant "q")}) + (Tok_whitespace {source=[1:33..1:34)}) + (Tok_uident {source=[1:34..1:35); uident=(Constant "r")}) + (Tok_whitespace {source=[1:35..1:36)}) + (Tok_uident {source=[1:36..1:37); uident=(Constant "s")}) + (Tok_whitespace {source=[1:37..1:38)}) + (Tok_uident {source=[1:38..1:39); uident=(Constant "t")}) + (Tok_whitespace {source=[1:39..1:40)}) + (Tok_uident {source=[1:40..1:41); uident=(Constant "u")}) + (Tok_whitespace {source=[1:41..1:42)}) + (Tok_uident {source=[1:42..1:43); uident=(Constant "v")}) + (Tok_whitespace {source=[1:43..1:44)}) + (Tok_uident {source=[1:44..1:45); uident=(Constant "w")}) + (Tok_whitespace {source=[1:45..1:46)}) + (Tok_uident {source=[1:46..1:47); uident=(Constant "x")}) + (Tok_whitespace {source=[1:47..1:48)}) + (Tok_uident {source=[1:48..1:49); uident=(Constant "y")}) + (Tok_whitespace {source=[1:49..1:50)}) + (Tok_uident {source=[1:50..1:51); uident=(Constant "z")}) + (Tok_end_of_input {source=[1:51..1:51)}) ``_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_'`` - [1:0..1:65) : - [1:65..1:65) : + (Tok_cident {source=[1:0..1:65); cident="_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_'"}) + (Tok_end_of_input {source=[1:65..1:65)}) ``_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'`` - [1:0..1:65) : - [1:65..1:65) : + (Tok_uident {source=[1:0..1:65); uident=(Constant "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'")}) + (Tok_end_of_input {source=[1:65..1:65)}) ``A _A __A ___A`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:8) : - [1:8..1:9) : - [1:9..1:13) : - [1:13..1:13) : + (Tok_cident {source=[1:0..1:1); cident="A"}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_cident {source=[1:2..1:4); cident="_A"}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_cident {source=[1:5..1:8); cident="__A"}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_cident {source=[1:9..1:13); cident="___A"}) + (Tok_end_of_input {source=[1:13..1:13)}) ``a _a __a ___a`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:8) : - [1:8..1:9) : - [1:9..1:13) : - [1:13..1:13) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "a")}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:4); uident=(Constant "_a")}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_uident {source=[1:5..1:8); uident=(Constant "__a")}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_uident {source=[1:9..1:13); uident=(Constant "___a")}) + (Tok_end_of_input {source=[1:13..1:13)}) ``__ _0 _' __0 __'`` - [1:0..1:2) : - [1:2..1:3) : - [1:3..1:5) : - [1:5..1:6) : - [1:6..1:8) : - [1:8..1:9) : - [1:9..1:12) : - [1:12..1:13) : - [1:13..1:16) : - [1:16..1:16) : + (Tok_uident {source=[1:0..1:2); uident=(Malformed ["[1:0..1:2): Identifier __ lacks _*[A-Za-z] prefix"])}) + (Tok_whitespace {source=[1:2..1:3)}) + (Tok_uident {source=[1:3..1:5); uident=(Malformed ["[1:3..1:5): Identifier _0 lacks _*[A-Za-z] prefix"])}) + (Tok_whitespace {source=[1:5..1:6)}) + (Tok_uident {source=[1:6..1:8); uident=(Malformed ["[1:6..1:8): Identifier _' lacks _*[A-Za-z] prefix"])}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_uident {source=[1:9..1:12); uident=(Malformed ["[1:9..1:12): Identifier __0 lacks _*[A-Za-z] prefix"])}) + (Tok_whitespace {source=[1:12..1:13)}) + (Tok_uident {source=[1:13..1:16); uident=(Malformed ["[1:13..1:16): Identifier __' lacks _*[A-Za-z] prefix"])}) + (Tok_end_of_input {source=[1:16..1:16)}) ``e ef eff effe effec effect effects`` - [1:0..1:1) : - [1:1..1:2) : - [1:2..1:4) : - [1:4..1:5) : - [1:5..1:8) : - [1:8..1:9) : - [1:9..1:13) : - [1:13..1:14) : - [1:14..1:19) : - [1:19..1:20) : - [1:20..1:26) : - [1:26..1:27) : - [1:27..1:34) : - [1:34..1:34) : + (Tok_uident {source=[1:0..1:1); uident=(Constant "e")}) + (Tok_whitespace {source=[1:1..1:2)}) + (Tok_uident {source=[1:2..1:4); uident=(Constant "ef")}) + (Tok_whitespace {source=[1:4..1:5)}) + (Tok_uident {source=[1:5..1:8); uident=(Constant "eff")}) + (Tok_whitespace {source=[1:8..1:9)}) + (Tok_uident {source=[1:9..1:13); uident=(Constant "effe")}) + (Tok_whitespace {source=[1:13..1:14)}) + (Tok_uident {source=[1:14..1:19); uident=(Constant "effec")}) + (Tok_whitespace {source=[1:19..1:20)}) + (Tok_effect {source=[1:20..1:26)}) + (Tok_whitespace {source=[1:26..1:27)}) + (Tok_uident {source=[1:27..1:34); uident=(Constant "effects")}) + (Tok_end_of_input {source=[1:34..1:34)}) ``and`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_and {source=[1:0..1:3)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``also`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_also {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``as`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_as {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``conceal`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_conceal {source=[1:0..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``effect`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_effect {source=[1:0..1:6)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``else`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_else {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``expose`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_expose {source=[1:0..1:6)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``external`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_external {source=[1:0..1:8)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``false`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_false {source=[1:0..1:5)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``fn`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_fn {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``function`` - [1:0..1:8) : - [1:8..1:8) : + (Tok_function {source=[1:0..1:8)}) + (Tok_end_of_input {source=[1:8..1:8)}) ``if`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_if {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``import`` - [1:0..1:6) : - [1:6..1:6) : + (Tok_import {source=[1:0..1:6)}) + (Tok_end_of_input {source=[1:6..1:6)}) ``include`` - [1:0..1:7) : - [1:7..1:7) : + (Tok_include {source=[1:0..1:7)}) + (Tok_end_of_input {source=[1:7..1:7)}) ``lazy`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_lazy {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``let`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_let {source=[1:0..1:3)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``match`` - [1:0..1:5) : - [1:5..1:5) : + (Tok_match {source=[1:0..1:5)}) + (Tok_end_of_input {source=[1:5..1:5)}) ``mutability`` - [1:0..1:10) : - [1:10..1:10) : + (Tok_mutability {source=[1:0..1:10)}) + (Tok_end_of_input {source=[1:10..1:10)}) ``of`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_of {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``open`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_open {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``or`` - [1:0..1:2) : - [1:2..1:2) : + (Tok_or {source=[1:0..1:2)}) + (Tok_end_of_input {source=[1:2..1:2)}) ``rec`` - [1:0..1:3) : - [1:3..1:3) : + (Tok_rec {source=[1:0..1:3)}) + (Tok_end_of_input {source=[1:3..1:3)}) ``then`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_then {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``true`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_true {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``type`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_type {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``when`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_when {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) ``with`` - [1:0..1:4) : - [1:4..1:4) : + (Tok_with {source=[1:0..1:4)}) + (Tok_end_of_input {source=[1:4..1:4)}) diff --git a/bootstrap/test/hmc/source/test_line_context.expected b/bootstrap/test/hmc/source/test_line_context.expected index 5d10c18f9..b633c1ac2 100644 --- a/bootstrap/test/hmc/source/test_line_context.expected +++ b/bootstrap/test/hmc/source/test_line_context.expected @@ -1,14 +1,14 @@ --- source=``x = 42`` -first={atok=; source=[1:0..1:1)} -last={atok=; source=[1:0..1:1)} +first=(Tok_uident {source=[1:0..1:1); uident=(Constant "x")}) +last=(Tok_uident {source=[1:0..1:1); uident=(Constant "x")}) lookahead=Some (1:6) -ctoks=[ - (0, {atok=; source=[1:0..1:1)}) - (1, {atok=; source=[1:1..1:2)}) - (2, {atok=; source=[1:2..1:3)}) - (3, {atok=; source=[1:3..1:4)}) - (4, {atok=; source=[1:4..1:6)}) +toks=[ + (0, (Tok_uident {source=[1:0..1:1); uident=(Constant "x")})) + (1, (Tok_whitespace {source=[1:1..1:2)})) + (2, (Tok_eq {source=[1:2..1:3)})) + (3, (Tok_whitespace {source=[1:3..1:4)})) + (4, (Tok_u64 {source=[1:4..1:6); u64=(Constant 42)})) ] context_lookahead=[ [1:0..1:6): "x = 42" @@ -18,15 +18,15 @@ context_no_lookahead=[ ] --- source=``x = 42`` -first={atok=; source=[1:1..1:2)} -last={atok=; source=[1:1..1:2)} +first=(Tok_whitespace {source=[1:1..1:2)}) +last=(Tok_whitespace {source=[1:1..1:2)}) lookahead=Some (1:6) -ctoks=[ - (0, {atok=; source=[1:0..1:1)}) - (1, {atok=; source=[1:1..1:2)}) - (2, {atok=; source=[1:2..1:3)}) - (3, {atok=; source=[1:3..1:4)}) - (4, {atok=; source=[1:4..1:6)}) +toks=[ + (0, (Tok_uident {source=[1:0..1:1); uident=(Constant "x")})) + (1, (Tok_whitespace {source=[1:1..1:2)})) + (2, (Tok_eq {source=[1:2..1:3)})) + (3, (Tok_whitespace {source=[1:3..1:4)})) + (4, (Tok_u64 {source=[1:4..1:6); u64=(Constant 42)})) ] context_lookahead=[ [1:0..1:6): "x = 42" @@ -36,15 +36,15 @@ context_no_lookahead=[ ] --- source=``x = 42`` -first={atok=; source=[1:1..1:2)} -last={atok=; source=[1:2..1:3)} +first=(Tok_whitespace {source=[1:1..1:2)}) +last=(Tok_eq {source=[1:2..1:3)}) lookahead=Some (1:6) -ctoks=[ - (0, {atok=; source=[1:0..1:1)}) - (1, {atok=; source=[1:1..1:2)}) - (2, {atok=; source=[1:2..1:3)}) - (3, {atok=; source=[1:3..1:4)}) - (4, {atok=; source=[1:4..1:6)}) +toks=[ + (0, (Tok_uident {source=[1:0..1:1); uident=(Constant "x")})) + (1, (Tok_whitespace {source=[1:1..1:2)})) + (2, (Tok_eq {source=[1:2..1:3)})) + (3, (Tok_whitespace {source=[1:3..1:4)})) + (4, (Tok_u64 {source=[1:4..1:6); u64=(Constant 42)})) ] context_lookahead=[ [1:0..1:6): "x = 42" @@ -54,15 +54,15 @@ context_no_lookahead=[ ] --- source=``x = 42`` -first={atok=; source=[1:4..1:6)} -last={atok=; source=[1:4..1:6)} +first=(Tok_u64 {source=[1:4..1:6); u64=(Constant 42)}) +last=(Tok_u64 {source=[1:4..1:6); u64=(Constant 42)}) lookahead=None -ctoks=[ - (0, {atok=; source=[1:0..1:1)}) - (1, {atok=; source=[1:1..1:2)}) - (2, {atok=; source=[1:2..1:3)}) - (3, {atok=; source=[1:3..1:4)}) - (4, {atok=; source=[1:4..1:6)}) +toks=[ + (0, (Tok_uident {source=[1:0..1:1); uident=(Constant "x")})) + (1, (Tok_whitespace {source=[1:1..1:2)})) + (2, (Tok_eq {source=[1:2..1:3)})) + (3, (Tok_whitespace {source=[1:3..1:4)})) + (4, (Tok_u64 {source=[1:4..1:6); u64=(Constant 42)})) ] context_lookahead=[ [1:0..1:6): "x = 42" @@ -72,16 +72,16 @@ context_no_lookahead=[ ] --- source=``[:"Foo.hm"]x = 42`` -first={atok=; source=["Foo.hm":1:0.."Foo.hm":1:1)} -last={atok=; source=["Foo.hm":1:0.."Foo.hm":1:1)} +first=(Tok_uident {source=["Foo.hm":1:0.."Foo.hm":1:1); uident=(Constant "x")}) +last=(Tok_uident {source=["Foo.hm":1:0.."Foo.hm":1:1); uident=(Constant "x")}) lookahead=Some (Foo.hm:1:6) -ctoks=[ - (0, {atok=; source=[1:0..1:11)}) - (1, {atok=; source=["Foo.hm":1:0.."Foo.hm":1:1)}) - (2, {atok=; source=["Foo.hm":1:1.."Foo.hm":1:2)}) - (3, {atok=; source=["Foo.hm":1:2.."Foo.hm":1:3)}) - (4, {atok=; source=["Foo.hm":1:3.."Foo.hm":1:4)}) - (5, {atok=; source=["Foo.hm":1:4.."Foo.hm":1:6)}) +toks=[ + (0, (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})})) + (1, (Tok_uident {source=["Foo.hm":1:0.."Foo.hm":1:1); uident=(Constant "x")})) + (2, (Tok_whitespace {source=["Foo.hm":1:1.."Foo.hm":1:2)})) + (3, (Tok_eq {source=["Foo.hm":1:2.."Foo.hm":1:3)})) + (4, (Tok_whitespace {source=["Foo.hm":1:3.."Foo.hm":1:4)})) + (5, (Tok_u64 {source=["Foo.hm":1:4.."Foo.hm":1:6); u64=(Constant 42)})) ] context_lookahead=[ [1:0..1:11): "[:\"Foo.hm\"]" @@ -96,21 +96,21 @@ context_no_lookahead=[ source=``[:"Foo.hm"] x = 42`` -first={atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)} -last={atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)} +first=(Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")}) +last=(Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")}) lookahead=Some (Foo.hm:3:4) -ctoks=[ - (0, {atok=; source=[1:0..1:11)}) - (1, {atok=; source=["Foo.hm":1:0.."Foo.hm":2:0)}) - (2, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:0)}) - (3, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)}) - (4, {atok=; source=["Foo.hm":2:1.."Foo.hm":2:2)}) - (5, {atok=; source=["Foo.hm":2:2.."Foo.hm":2:3)}) - (6, {atok=; source=["Foo.hm":2:3.."Foo.hm":3:0)}) - (7, {atok=; source=["Foo.hm":3:0.."Foo.hm":3:4)}) - (8, {atok=; source=["Foo.hm":3:4.."Foo.hm":3:4)}) - (9, {atok=; source=["Foo.hm":3:4.."Foo.hm":3:6)}) - (10, {atok=; source=["Foo.hm":3:6.."Foo.hm":3:6)}) +toks=[ + (0, (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})})) + (1, (Tok_whitespace {source=["Foo.hm":1:0.."Foo.hm":2:0)})) + (2, (Tok_line_delim {source=["Foo.hm":2:0.."Foo.hm":2:0)})) + (3, (Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")})) + (4, (Tok_whitespace {source=["Foo.hm":2:1.."Foo.hm":2:2)})) + (5, (Tok_eq {source=["Foo.hm":2:2.."Foo.hm":2:3)})) + (6, (Tok_whitespace {source=["Foo.hm":2:3.."Foo.hm":3:0)})) + (7, (Tok_whitespace {source=["Foo.hm":3:0.."Foo.hm":3:4)})) + (8, (Tok_indent {source=["Foo.hm":3:4.."Foo.hm":3:4); indent=(Constant ())})) + (9, (Tok_u64 {source=["Foo.hm":3:4.."Foo.hm":3:6); u64=(Constant 42)})) + (10, (Tok_dedent {source=["Foo.hm":3:6.."Foo.hm":3:6); dedent=(Constant ())})) ] context_lookahead=[ ["Foo.hm":2:0.."Foo.hm":2:3): "x =" @@ -123,21 +123,21 @@ context_no_lookahead=[ source=``[:"Foo.hm"] x = 42`` -first={atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)} -last={atok=; source=["Foo.hm":2:3.."Foo.hm":3:0)} +first=(Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")}) +last=(Tok_whitespace {source=["Foo.hm":2:3.."Foo.hm":3:0)}) lookahead=Some (Foo.hm:3:6) -ctoks=[ - (0, {atok=; source=[1:0..1:11)}) - (1, {atok=; source=["Foo.hm":1:0.."Foo.hm":2:0)}) - (2, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:0)}) - (3, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)}) - (4, {atok=; source=["Foo.hm":2:1.."Foo.hm":2:2)}) - (5, {atok=; source=["Foo.hm":2:2.."Foo.hm":2:3)}) - (6, {atok=; source=["Foo.hm":2:3.."Foo.hm":3:0)}) - (7, {atok=; source=["Foo.hm":3:0.."Foo.hm":3:4)}) - (8, {atok=; source=["Foo.hm":3:4.."Foo.hm":3:4)}) - (9, {atok=; source=["Foo.hm":3:4.."Foo.hm":3:6)}) - (10, {atok=; source=["Foo.hm":3:6.."Foo.hm":3:6)}) +toks=[ + (0, (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})})) + (1, (Tok_whitespace {source=["Foo.hm":1:0.."Foo.hm":2:0)})) + (2, (Tok_line_delim {source=["Foo.hm":2:0.."Foo.hm":2:0)})) + (3, (Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")})) + (4, (Tok_whitespace {source=["Foo.hm":2:1.."Foo.hm":2:2)})) + (5, (Tok_eq {source=["Foo.hm":2:2.."Foo.hm":2:3)})) + (6, (Tok_whitespace {source=["Foo.hm":2:3.."Foo.hm":3:0)})) + (7, (Tok_whitespace {source=["Foo.hm":3:0.."Foo.hm":3:4)})) + (8, (Tok_indent {source=["Foo.hm":3:4.."Foo.hm":3:4); indent=(Constant ())})) + (9, (Tok_u64 {source=["Foo.hm":3:4.."Foo.hm":3:6); u64=(Constant 42)})) + (10, (Tok_dedent {source=["Foo.hm":3:6.."Foo.hm":3:6); dedent=(Constant ())})) ] context_lookahead=[ ["Foo.hm":2:0.."Foo.hm":3:6): "x =\n 42" @@ -150,26 +150,26 @@ context_no_lookahead=[ source=``[:"Foo.hm"] x =[:"Bar.hm"] 42 + 13`` -first={atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)} -last={atok=; source=["Bar.hm":2:4.."Bar.hm":2:6)} +first=(Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")}) +last=(Tok_u64 {source=["Bar.hm":2:4.."Bar.hm":2:6); u64=(Constant 42)}) lookahead=Some (Bar.hm:2:11) -ctoks=[ - (0, {atok=; source=[1:0..1:11)}) - (1, {atok=; source=["Foo.hm":1:0.."Foo.hm":2:0)}) - (2, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:0)}) - (3, {atok=; source=["Foo.hm":2:0.."Foo.hm":2:1)}) - (4, {atok=; source=["Foo.hm":2:1.."Foo.hm":2:2)}) - (5, {atok=; source=["Foo.hm":2:2.."Foo.hm":2:3)}) - (6, {atok=; source=[2:3..2:14)}) - (7, {atok=; source=["Bar.hm":1:0.."Bar.hm":2:0)}) - (8, {atok=; source=["Bar.hm":2:0.."Bar.hm":2:4)}) - (9, {atok=; source=["Bar.hm":2:4.."Bar.hm":2:4)}) - (10, {atok=; source=["Bar.hm":2:4.."Bar.hm":2:6)}) - (11, {atok=; source=["Bar.hm":2:6.."Bar.hm":2:7)}) - (12, {atok=; source=["Bar.hm":2:7.."Bar.hm":2:8)}) - (13, {atok=; source=["Bar.hm":2:8.."Bar.hm":2:9)}) - (14, {atok=; source=["Bar.hm":2:9.."Bar.hm":2:11)}) - (15, {atok=; source=["Bar.hm":2:11.."Bar.hm":2:11)}) +toks=[ + (0, (Tok_source_directive {source=[1:0..1:11); source_directive=(Constant {path=Some ("Foo.hm"); line=None; io=None})})) + (1, (Tok_whitespace {source=["Foo.hm":1:0.."Foo.hm":2:0)})) + (2, (Tok_line_delim {source=["Foo.hm":2:0.."Foo.hm":2:0)})) + (3, (Tok_uident {source=["Foo.hm":2:0.."Foo.hm":2:1); uident=(Constant "x")})) + (4, (Tok_whitespace {source=["Foo.hm":2:1.."Foo.hm":2:2)})) + (5, (Tok_eq {source=["Foo.hm":2:2.."Foo.hm":2:3)})) + (6, (Tok_source_directive {source=[2:3..2:14); source_directive=(Constant {path=Some ("Bar.hm"); line=None; io=None})})) + (7, (Tok_whitespace {source=["Bar.hm":1:0.."Bar.hm":2:0)})) + (8, (Tok_whitespace {source=["Bar.hm":2:0.."Bar.hm":2:4)})) + (9, (Tok_indent {source=["Bar.hm":2:4.."Bar.hm":2:4); indent=(Constant ())})) + (10, (Tok_u64 {source=["Bar.hm":2:4.."Bar.hm":2:6); u64=(Constant 42)})) + (11, (Tok_whitespace {source=["Bar.hm":2:6.."Bar.hm":2:7)})) + (12, (Tok_plus_op {source=["Bar.hm":2:7.."Bar.hm":2:8); plus_op="+"})) + (13, (Tok_whitespace {source=["Bar.hm":2:8.."Bar.hm":2:9)})) + (14, (Tok_u64 {source=["Bar.hm":2:9.."Bar.hm":2:11); u64=(Constant 13)})) + (15, (Tok_dedent {source=["Bar.hm":2:11.."Bar.hm":2:11); dedent=(Constant ())})) ] context_lookahead=[ ["Foo.hm":2:0.."Foo.hm":2:3): "x =" @@ -198,70 +198,70 @@ include [:]{ }[:"Example.hmhi":3:0+12] calculate: string -> zint`` -first={atok=; source=["Example.hmhi":5:11.."Example.hmhi":5:17)} -last={atok=; source=["Example.hmhi":5:17.."Example.hmhi":5:18)} +first=(Tok_uident {source=["Example.hmhi":5:11.."Example.hmhi":5:17); uident=(Constant "string")}) +last=(Tok_whitespace {source=["Example.hmhi":5:17.."Example.hmhi":5:18)}) lookahead=Some (Example.hmhi:5:25) -ctoks=[ - (0, {atok=; source=[1:0..2:0)}) - (1, {atok=; source=[2:0..2:19)}) - (2, {atok=; source=["Example.hmhi":1:0.."Example.hmhi":1:4)}) - (3, {atok=; source=["Example.hmhi":1:4.."Example.hmhi":1:5)}) - (4, {atok=; source=["Example.hmhi":1:5.."Example.hmhi":1:11)}) - (5, {atok=; source=["Example.hmhi":1:11.."Example.hmhi":1:12)}) - (6, {atok=; source=["Example.hmhi":1:12.."Example.hmhi":1:17)}) - (7, {atok=; source=["Example.hmhi":1:17.."Example.hmhi":2:0)}) - (8, {atok=; source=["Example.hmhi":2:0.."Example.hmhi":3:0)}) - (9, {atok=; source=["Example.hmhi":3:0.."Example.hmhi":3:0)}) - (10, {atok=; source=["Example.hmhi":3:0.."Example.hmhi":3:7)}) - (11, {atok=; source=["Example.hmhi":3:7.."Example.hmhi":3:8)}) - (12, {atok=; source=[4:8..4:11)}) - (13, {atok=; source=[4:11..4:12)}) - (14, {atok=; source=[4:12..5:0)}) - (15, {atok=; source=[5:0..5:4)}) - (16, {atok=; source=[5:4..6:0)}) - (17, {atok=; source=[6:0..6:4)}) - (18, {atok=; source=[6:4..6:4)}) - (19, {atok=; source=[6:4..6:8)}) - (20, {atok=; source=[6:8..6:9)}) - (21, {atok=; source=[6:9..6:10)}) - (22, {atok=; source=[6:10..6:11)}) - (23, {atok=; source=[6:11..6:12)}) - (24, {atok=; source=[6:12..7:0)}) - (25, {atok=; source=[7:0..7:8)}) - (26, {atok=; source=[7:8..8:0)}) - (27, {atok=; source=[8:0..8:6)}) - (28, {atok=; source=[8:6..8:7)}) - (29, {atok=; source=[8:7..9:0)}) - (30, {atok=; source=[9:0..9:4)}) - (31, {atok=; source=[9:4..9:4)}) - (32, {atok=; source=[9:4..9:9)}) - (33, {atok=; source=[9:9..9:10)}) - (34, {atok=; source=[9:10..9:11)}) - (35, {atok=; source=[9:11..9:12)}) - (36, {atok=; source=[9:12..9:13)}) - (37, {atok=; source=[9:13..10:0)}) - (38, {atok=; source=[10:0..10:8)}) - (39, {atok=; source=[10:8..11:0)}) - (40, {atok=; source=[11:0..11:6)}) - (41, {atok=; source=[11:6..11:7)}) - (42, {atok=; source=[11:7..12:0)}) - (43, {atok=; source=[12:0..12:4)}) - (44, {atok=; source=[12:4..13:0)}) - (45, {atok=; source=[13:0..13:2)}) - (46, {atok=; source=[13:2..13:2)}) - (47, {atok=; source=[13:2..13:3)}) - (48, {atok=; source=[13:3..13:27)}) - (49, {atok=; source=["Example.hmhi":3:12.."Example.hmhi":4:0)}) - (50, {atok=; source=["Example.hmhi":4:0.."Example.hmhi":5:0)}) - (51, {atok=; source=["Example.hmhi":5:0.."Example.hmhi":5:0)}) - (52, {atok=; source=["Example.hmhi":5:0.."Example.hmhi":5:9)}) - (53, {atok=; source=["Example.hmhi":5:9.."Example.hmhi":5:10)}) - (54, {atok=; source=["Example.hmhi":5:10.."Example.hmhi":5:11)}) - (55, {atok=; source=["Example.hmhi":5:11.."Example.hmhi":5:17)}) - (56, {atok=; source=["Example.hmhi":5:17.."Example.hmhi":5:18)}) - (57, {atok=; source=["Example.hmhi":5:18.."Example.hmhi":5:20)}) - (58, {atok=; source=["Example.hmhi":5:20.."Example.hmhi":5:21)}) - (59, {atok=; source=["Example.hmhi":5:21.."Example.hmhi":5:25)}) +toks=[ + (0, (Tok_hash_comment {source=[1:0..2:0)})) + (1, (Tok_source_directive {source=[2:0..2:19); source_directive=(Constant {path=Some ("Example.hmhi"); line=Some (1); io=None})})) + (2, (Tok_open {source=["Example.hmhi":1:0.."Example.hmhi":1:4)})) + (3, (Tok_whitespace {source=["Example.hmhi":1:4.."Example.hmhi":1:5)})) + (4, (Tok_import {source=["Example.hmhi":1:5.."Example.hmhi":1:11)})) + (5, (Tok_whitespace {source=["Example.hmhi":1:11.."Example.hmhi":1:12)})) + (6, (Tok_cident {source=["Example.hmhi":1:12.."Example.hmhi":1:17); cident="Basis"})) + (7, (Tok_whitespace {source=["Example.hmhi":1:17.."Example.hmhi":2:0)})) + (8, (Tok_whitespace {source=["Example.hmhi":2:0.."Example.hmhi":3:0)})) + (9, (Tok_line_delim {source=["Example.hmhi":3:0.."Example.hmhi":3:0)})) + (10, (Tok_include {source=["Example.hmhi":3:0.."Example.hmhi":3:7)})) + (11, (Tok_whitespace {source=["Example.hmhi":3:7.."Example.hmhi":3:8)})) + (12, (Tok_source_directive {source=[4:8..4:11); source_directive=(Constant {path=None; line=None; io=None})})) + (13, (Tok_lcurly {source=[4:11..4:12)})) + (14, (Tok_whitespace {source=[4:12..5:0)})) + (15, (Tok_whitespace {source=[5:0..5:4)})) + (16, (Tok_hash_comment {source=[5:4..6:0)})) + (17, (Tok_whitespace {source=[6:0..6:4)})) + (18, (Tok_indent {source=[6:4..6:4); indent=(Constant ())})) + (19, (Tok_cident {source=[6:4..6:8); cident="Spec"})) + (20, (Tok_whitespace {source=[6:8..6:9)})) + (21, (Tok_eq {source=[6:9..6:10)})) + (22, (Tok_whitespace {source=[6:10..6:11)})) + (23, (Tok_lcurly {source=[6:11..6:12)})) + (24, (Tok_whitespace {source=[6:12..7:0)})) + (25, (Tok_whitespace {source=[7:0..7:8)})) + (26, (Tok_hash_comment {source=[7:8..8:0)})) + (27, (Tok_whitespace {source=[8:0..8:6)})) + (28, (Tok_rcurly {source=[8:6..8:7)})) + (29, (Tok_whitespace {source=[8:7..9:0)})) + (30, (Tok_whitespace {source=[9:0..9:4)})) + (31, (Tok_line_delim {source=[9:4..9:4)})) + (32, (Tok_cident {source=[9:4..9:9); cident="Token"})) + (33, (Tok_whitespace {source=[9:9..9:10)})) + (34, (Tok_eq {source=[9:10..9:11)})) + (35, (Tok_whitespace {source=[9:11..9:12)})) + (36, (Tok_lcurly {source=[9:12..9:13)})) + (37, (Tok_whitespace {source=[9:13..10:0)})) + (38, (Tok_whitespace {source=[10:0..10:8)})) + (39, (Tok_hash_comment {source=[10:8..11:0)})) + (40, (Tok_whitespace {source=[11:0..11:6)})) + (41, (Tok_rcurly {source=[11:6..11:7)})) + (42, (Tok_whitespace {source=[11:7..12:0)})) + (43, (Tok_whitespace {source=[12:0..12:4)})) + (44, (Tok_hash_comment {source=[12:4..13:0)})) + (45, (Tok_whitespace {source=[13:0..13:2)})) + (46, (Tok_dedent {source=[13:2..13:2); dedent=(Constant ())})) + (47, (Tok_rcurly {source=[13:2..13:3)})) + (48, (Tok_source_directive {source=[13:3..13:27); source_directive=(Constant {path=Some ("Example.hmhi"); line=Some (3); io=Some ({indent=0; omit=12})})})) + (49, (Tok_whitespace {source=["Example.hmhi":3:12.."Example.hmhi":4:0)})) + (50, (Tok_whitespace {source=["Example.hmhi":4:0.."Example.hmhi":5:0)})) + (51, (Tok_line_delim {source=["Example.hmhi":5:0.."Example.hmhi":5:0)})) + (52, (Tok_uident {source=["Example.hmhi":5:0.."Example.hmhi":5:9); uident=(Constant "calculate")})) + (53, (Tok_colon {source=["Example.hmhi":5:9.."Example.hmhi":5:10)})) + (54, (Tok_whitespace {source=["Example.hmhi":5:10.."Example.hmhi":5:11)})) + (55, (Tok_uident {source=["Example.hmhi":5:11.."Example.hmhi":5:17); uident=(Constant "string")})) + (56, (Tok_whitespace {source=["Example.hmhi":5:17.."Example.hmhi":5:18)})) + (57, (Tok_arrow {source=["Example.hmhi":5:18.."Example.hmhi":5:20)})) + (58, (Tok_whitespace {source=["Example.hmhi":5:20.."Example.hmhi":5:21)})) + (59, (Tok_uident {source=["Example.hmhi":5:21.."Example.hmhi":5:25); uident=(Constant "zint")})) ] context_lookahead=[ ["Example.hmhi":5:0.."Example.hmhi":5:25): "calculate: string -> zint" @@ -283,103 +283,103 @@ tesseract x = )[:"Tesseract.hmp":8:4+7] ([:"Tesseract.hmp":3:0+19](fn x = x * x )[:"Tesseract.hmp":8:4+15] x))`` -first={atok=; source=["Tesseract.hmp":3:8.."Tesseract.hmp":3:9)} -last={atok=; source=["Tesseract.hmp":3:9.."Tesseract.hmp":3:15)} +first=(Tok_at_op {source=["Tesseract.hmp":3:8.."Tesseract.hmp":3:9); at_op="@"}) +last=(Tok_uident {source=["Tesseract.hmp":3:9.."Tesseract.hmp":3:15); uident=(Constant "inline")}) lookahead=Some (Tesseract.hmp:4:4) -ctoks=[ - (0, {atok=; source=[1:0..1:20)}) - (1, {atok=; source=["Tesseract.hmp":1:0.."Tesseract.hmp":1:4)}) - (2, {atok=; source=["Tesseract.hmp":1:4.."Tesseract.hmp":1:5)}) - (3, {atok=; source=["Tesseract.hmp":1:5.."Tesseract.hmp":1:10)}) - (4, {atok=; source=["Tesseract.hmp":1:10.."Tesseract.hmp":2:0)}) - (5, {atok=; source=["Tesseract.hmp":2:0.."Tesseract.hmp":3:0)}) - (6, {atok=; source=["Tesseract.hmp":3:0.."Tesseract.hmp":3:0)}) - (7, {atok=; source=["Tesseract.hmp":3:0.."Tesseract.hmp":3:6)}) - (8, {atok=; source=["Tesseract.hmp":3:6.."Tesseract.hmp":3:7)}) - (9, {atok=; source=["Tesseract.hmp":3:7.."Tesseract.hmp":3:8)}) - (10, {atok=; source=["Tesseract.hmp":3:8.."Tesseract.hmp":3:9)}) - (11, {atok=; source=["Tesseract.hmp":3:9.."Tesseract.hmp":3:15)}) - (12, {atok=; source=["Tesseract.hmp":3:15.."Tesseract.hmp":3:16)}) - (13, {atok=; source=["Tesseract.hmp":3:16.."Tesseract.hmp":3:17)}) - (14, {atok=; source=["Tesseract.hmp":3:17.."Tesseract.hmp":3:18)}) - (15, {atok=; source=["Tesseract.hmp":3:18.."Tesseract.hmp":3:19)}) - (16, {atok=; source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)}) - (17, {atok=; source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)}) - (18, {atok=; source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)}) - (19, {atok=; source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24)}) - (20, {atok=; source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)}) - (21, {atok=; source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)}) - (22, {atok=; source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)}) - (23, {atok=; source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)}) - (24, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4)}) - (25, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5)}) - (26, {atok=; source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)}) - (27, {atok=; source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7)}) - (28, {atok=; source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)}) - (29, {atok=; source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9)}) - (30, {atok=; source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)}) - (31, {atok=; source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)}) - (32, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2)}) - (33, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)}) - (34, {atok=; source=["Tesseract.hmp":5:3.."Tesseract.hmp":6:0)}) - (35, {atok=; source=["Tesseract.hmp":6:0.."Tesseract.hmp":7:0)}) - (36, {atok=; source=["Tesseract.hmp":7:0.."Tesseract.hmp":7:0)}) - (37, {atok=; source=["Tesseract.hmp":7:0.."Tesseract.hmp":7:9)}) - (38, {atok=; source=["Tesseract.hmp":7:9.."Tesseract.hmp":7:10)}) - (39, {atok=; source=["Tesseract.hmp":7:10.."Tesseract.hmp":7:11)}) - (40, {atok=; source=["Tesseract.hmp":7:11.."Tesseract.hmp":7:12)}) - (41, {atok=; source=["Tesseract.hmp":7:12.."Tesseract.hmp":7:13)}) - (42, {atok=; source=["Tesseract.hmp":7:13.."Tesseract.hmp":8:0)}) - (43, {atok=; source=["Tesseract.hmp":8:0.."Tesseract.hmp":8:4)}) - (44, {atok=; source=["Tesseract.hmp":8:4.."Tesseract.hmp":8:4)}) - (45, {atok=; source=["Tesseract.hmp":8:4.."Tesseract.hmp":8:5)}) - (46, {atok=; source=[8:5..8:30)}) - (47, {atok=; source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)}) - (48, {atok=; source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)}) - (49, {atok=; source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)}) - (50, {atok=; source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24)}) - (51, {atok=; source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)}) - (52, {atok=; source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)}) - (53, {atok=; source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)}) - (54, {atok=; source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)}) - (55, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4)}) - (56, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5)}) - (57, {atok=; source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)}) - (58, {atok=; source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7)}) - (59, {atok=; source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)}) - (60, {atok=; source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9)}) - (61, {atok=; source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)}) - (62, {atok=; source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)}) - (63, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2)}) - (64, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)}) - (65, {atok=; source=[10:3..10:27)}) - (66, {atok=; source=["Tesseract.hmp":8:11.."Tesseract.hmp":8:12)}) - (67, {atok=; source=["Tesseract.hmp":8:12.."Tesseract.hmp":8:13)}) - (68, {atok=; source=[10:29..10:54)}) - (69, {atok=; source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)}) - (70, {atok=; source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)}) - (71, {atok=; source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)}) - (72, {atok=; source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24)}) - (73, {atok=; source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)}) - (74, {atok=; source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)}) - (75, {atok=; source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)}) - (76, {atok=; source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)}) - (77, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4)}) - (78, {atok=; source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5)}) - (79, {atok=; source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)}) - (80, {atok=; source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7)}) - (81, {atok=; source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)}) - (82, {atok=; source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9)}) - (83, {atok=; source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)}) - (84, {atok=; source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)}) - (85, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2)}) - (86, {atok=; source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)}) - (87, {atok=; source=[12:3..12:28)}) - (88, {atok=; source=["Tesseract.hmp":8:19.."Tesseract.hmp":8:20)}) - (89, {atok=; source=["Tesseract.hmp":8:20.."Tesseract.hmp":8:21)}) - (90, {atok=; source=["Tesseract.hmp":8:21.."Tesseract.hmp":8:22)}) - (91, {atok=; source=["Tesseract.hmp":8:22.."Tesseract.hmp":8:23)}) - (92, {atok=; source=["Tesseract.hmp":8:23.."Tesseract.hmp":8:23)}) +toks=[ + (0, (Tok_source_directive {source=[1:0..1:20); source_directive=(Constant {path=Some ("Tesseract.hmp"); line=Some (1); io=None})})) + (1, (Tok_open {source=["Tesseract.hmp":1:0.."Tesseract.hmp":1:4)})) + (2, (Tok_whitespace {source=["Tesseract.hmp":1:4.."Tesseract.hmp":1:5)})) + (3, (Tok_cident {source=["Tesseract.hmp":1:5.."Tesseract.hmp":1:10); cident="Basis"})) + (4, (Tok_whitespace {source=["Tesseract.hmp":1:10.."Tesseract.hmp":2:0)})) + (5, (Tok_whitespace {source=["Tesseract.hmp":2:0.."Tesseract.hmp":3:0)})) + (6, (Tok_line_delim {source=["Tesseract.hmp":3:0.."Tesseract.hmp":3:0)})) + (7, (Tok_uident {source=["Tesseract.hmp":3:0.."Tesseract.hmp":3:6); uident=(Constant "square")})) + (8, (Tok_whitespace {source=["Tesseract.hmp":3:6.."Tesseract.hmp":3:7)})) + (9, (Tok_lbrack {source=["Tesseract.hmp":3:7.."Tesseract.hmp":3:8)})) + (10, (Tok_at_op {source=["Tesseract.hmp":3:8.."Tesseract.hmp":3:9); at_op="@"})) + (11, (Tok_uident {source=["Tesseract.hmp":3:9.."Tesseract.hmp":3:15); uident=(Constant "inline")})) + (12, (Tok_rbrack {source=["Tesseract.hmp":3:15.."Tesseract.hmp":3:16)})) + (13, (Tok_whitespace {source=["Tesseract.hmp":3:16.."Tesseract.hmp":3:17)})) + (14, (Tok_eq {source=["Tesseract.hmp":3:17.."Tesseract.hmp":3:18)})) + (15, (Tok_whitespace {source=["Tesseract.hmp":3:18.."Tesseract.hmp":3:19)})) + (16, (Tok_lparen {source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)})) + (17, (Tok_fn {source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)})) + (18, (Tok_whitespace {source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)})) + (19, (Tok_uident {source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24); uident=(Constant "x")})) + (20, (Tok_whitespace {source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)})) + (21, (Tok_eq {source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)})) + (22, (Tok_whitespace {source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)})) + (23, (Tok_whitespace {source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)})) + (24, (Tok_indent {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4); indent=(Constant ())})) + (25, (Tok_uident {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5); uident=(Constant "x")})) + (26, (Tok_whitespace {source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)})) + (27, (Tok_star_op {source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7); star_op="*"})) + (28, (Tok_whitespace {source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)})) + (29, (Tok_uident {source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9); uident=(Constant "x")})) + (30, (Tok_whitespace {source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)})) + (31, (Tok_whitespace {source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)})) + (32, (Tok_dedent {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2); dedent=(Constant ())})) + (33, (Tok_rparen {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)})) + (34, (Tok_whitespace {source=["Tesseract.hmp":5:3.."Tesseract.hmp":6:0)})) + (35, (Tok_whitespace {source=["Tesseract.hmp":6:0.."Tesseract.hmp":7:0)})) + (36, (Tok_line_delim {source=["Tesseract.hmp":7:0.."Tesseract.hmp":7:0)})) + (37, (Tok_uident {source=["Tesseract.hmp":7:0.."Tesseract.hmp":7:9); uident=(Constant "tesseract")})) + (38, (Tok_whitespace {source=["Tesseract.hmp":7:9.."Tesseract.hmp":7:10)})) + (39, (Tok_uident {source=["Tesseract.hmp":7:10.."Tesseract.hmp":7:11); uident=(Constant "x")})) + (40, (Tok_whitespace {source=["Tesseract.hmp":7:11.."Tesseract.hmp":7:12)})) + (41, (Tok_eq {source=["Tesseract.hmp":7:12.."Tesseract.hmp":7:13)})) + (42, (Tok_whitespace {source=["Tesseract.hmp":7:13.."Tesseract.hmp":8:0)})) + (43, (Tok_whitespace {source=["Tesseract.hmp":8:0.."Tesseract.hmp":8:4)})) + (44, (Tok_indent {source=["Tesseract.hmp":8:4.."Tesseract.hmp":8:4); indent=(Constant ())})) + (45, (Tok_lparen {source=["Tesseract.hmp":8:4.."Tesseract.hmp":8:5)})) + (46, (Tok_source_directive {source=[8:5..8:30); source_directive=(Constant {path=Some ("Tesseract.hmp"); line=Some (3); io=Some ({indent=0; omit=19})})})) + (47, (Tok_lparen {source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)})) + (48, (Tok_fn {source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)})) + (49, (Tok_whitespace {source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)})) + (50, (Tok_uident {source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24); uident=(Constant "x")})) + (51, (Tok_whitespace {source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)})) + (52, (Tok_eq {source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)})) + (53, (Tok_whitespace {source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)})) + (54, (Tok_whitespace {source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)})) + (55, (Tok_indent {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4); indent=(Constant ())})) + (56, (Tok_uident {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5); uident=(Constant "x")})) + (57, (Tok_whitespace {source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)})) + (58, (Tok_star_op {source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7); star_op="*"})) + (59, (Tok_whitespace {source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)})) + (60, (Tok_uident {source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9); uident=(Constant "x")})) + (61, (Tok_whitespace {source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)})) + (62, (Tok_whitespace {source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)})) + (63, (Tok_dedent {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2); dedent=(Constant ())})) + (64, (Tok_rparen {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)})) + (65, (Tok_source_directive {source=[10:3..10:27); source_directive=(Constant {path=Some ("Tesseract.hmp"); line=Some (8); io=Some ({indent=4; omit=7})})})) + (66, (Tok_whitespace {source=["Tesseract.hmp":8:11.."Tesseract.hmp":8:12)})) + (67, (Tok_lparen {source=["Tesseract.hmp":8:12.."Tesseract.hmp":8:13)})) + (68, (Tok_source_directive {source=[10:29..10:54); source_directive=(Constant {path=Some ("Tesseract.hmp"); line=Some (3); io=Some ({indent=0; omit=19})})})) + (69, (Tok_lparen {source=["Tesseract.hmp":3:19.."Tesseract.hmp":3:20)})) + (70, (Tok_fn {source=["Tesseract.hmp":3:20.."Tesseract.hmp":3:22)})) + (71, (Tok_whitespace {source=["Tesseract.hmp":3:22.."Tesseract.hmp":3:23)})) + (72, (Tok_uident {source=["Tesseract.hmp":3:23.."Tesseract.hmp":3:24); uident=(Constant "x")})) + (73, (Tok_whitespace {source=["Tesseract.hmp":3:24.."Tesseract.hmp":3:25)})) + (74, (Tok_eq {source=["Tesseract.hmp":3:25.."Tesseract.hmp":3:26)})) + (75, (Tok_whitespace {source=["Tesseract.hmp":3:26.."Tesseract.hmp":4:0)})) + (76, (Tok_whitespace {source=["Tesseract.hmp":4:0.."Tesseract.hmp":4:4)})) + (77, (Tok_indent {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:4); indent=(Constant ())})) + (78, (Tok_uident {source=["Tesseract.hmp":4:4.."Tesseract.hmp":4:5); uident=(Constant "x")})) + (79, (Tok_whitespace {source=["Tesseract.hmp":4:5.."Tesseract.hmp":4:6)})) + (80, (Tok_star_op {source=["Tesseract.hmp":4:6.."Tesseract.hmp":4:7); star_op="*"})) + (81, (Tok_whitespace {source=["Tesseract.hmp":4:7.."Tesseract.hmp":4:8)})) + (82, (Tok_uident {source=["Tesseract.hmp":4:8.."Tesseract.hmp":4:9); uident=(Constant "x")})) + (83, (Tok_whitespace {source=["Tesseract.hmp":4:9.."Tesseract.hmp":5:0)})) + (84, (Tok_whitespace {source=["Tesseract.hmp":5:0.."Tesseract.hmp":5:2)})) + (85, (Tok_dedent {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:2); dedent=(Constant ())})) + (86, (Tok_rparen {source=["Tesseract.hmp":5:2.."Tesseract.hmp":5:3)})) + (87, (Tok_source_directive {source=[12:3..12:28); source_directive=(Constant {path=Some ("Tesseract.hmp"); line=Some (8); io=Some ({indent=4; omit=15})})})) + (88, (Tok_whitespace {source=["Tesseract.hmp":8:19.."Tesseract.hmp":8:20)})) + (89, (Tok_uident {source=["Tesseract.hmp":8:20.."Tesseract.hmp":8:21); uident=(Constant "x")})) + (90, (Tok_rparen {source=["Tesseract.hmp":8:21.."Tesseract.hmp":8:22)})) + (91, (Tok_rparen {source=["Tesseract.hmp":8:22.."Tesseract.hmp":8:23)})) + (92, (Tok_dedent {source=["Tesseract.hmp":8:23.."Tesseract.hmp":8:23); dedent=(Constant ())})) ] context_lookahead=[ ["Tesseract.hmp":3:0.."Tesseract.hmp":3:26): "square [@inline] = (fn x =" diff --git a/bootstrap/test/hmc/source/test_line_context.ml b/bootstrap/test/hmc/source/test_line_context.ml index 1a4c8d5e9..1849767a9 100644 --- a/bootstrap/test/hmc/source/test_line_context.ml +++ b/bootstrap/test/hmc/source/test_line_context.ml @@ -3,61 +3,60 @@ open! Basis open! Hmc let scan_str s = - let rec fn t ctoks = begin - let t', ctok = Scan.next t in - let atok = Scan.ConcreteToken.atok ctok in - match atok with - | Tok_end_of_input -> List.rev ctoks - | _ -> fn t' (ctok :: ctoks) + let rec fn t toks = begin + let t', tok = Scan.next t in + match tok with + | Tok_end_of_input _ -> List.rev toks + | _ -> fn t' (tok :: toks) end in let t = Scan.init (Text.of_string_slice (String.C.Slice.of_string s)) in fn t [] let contextualize source first last = - let ctoks = scan_str source in - let first_ctok = List.nth first ctoks in - let last_ctok = List.nth last ctoks in - let lookahead_ctok_opt = ( + let toks = scan_str source in + let first_tok = List.nth first toks in + let last_tok = List.nth last toks in + let lookahead_tok_opt = ( let rec f last lookahead tail = match tail with | [] -> lookahead - | ctok :: tail' -> begin + | tok :: tail' -> begin let last_line = Text.Pos.line (Source.Cursor.pos (Source.Cursor.unbias (Source.Slice.past - (Scan.ConcreteToken.source last)))) in - let ctok_line = Text.Pos.line (Source.Cursor.pos (Source.Cursor.unbias - (Source.Slice.base (Scan.ConcreteToken.source ctok)))) in - match last_line < ctok_line with - | true -> Some ctok - | false -> f last (Some ctok) tail' + (Scan.Token.source last)))) in + let tok_line = Text.Pos.line (Source.Cursor.pos (Source.Cursor.unbias + (Source.Slice.base (Scan.Token.source tok)))) in + match last_line < tok_line with + | true -> Some tok + | false -> f last (Some tok) tail' end in - let tail = List.drop (succ last) ctoks in - f last_ctok None tail + let tail = List.drop (succ last) toks in + f last_tok None tail ) in - let lookahead = match lookahead_ctok_opt with + let lookahead = match lookahead_tok_opt with | None -> None - | Some ctok -> Some (Source.Slice.past (Scan.ConcreteToken.source ctok)) + | Some tok -> Some (Source.Slice.past (Scan.Token.source tok)) in let source_slice = Source.Slice.of_cursors - ~base:(Source.Slice.base (Scan.ConcreteToken.source first_ctok)) - ~past:(Source.Slice.past (Scan.ConcreteToken.source last_ctok)) in + ~base:(Source.Slice.base (Scan.Token.source first_tok)) + ~past:(Source.Slice.past (Scan.Token.source last_tok)) in let context_lookahead = Source.Slice.line_context ?lookahead source_slice in let context_no_lookahead = Source.Slice.line_context source_slice in - let pp_i_tok (i, ctok) formatter = begin + let pp_i_tok (i, tok) formatter = begin formatter |> Fmt.fmt "(" |> Uns.pp i |> Fmt.fmt ", " - |> Scan.ConcreteToken.pp ctok + |> Scan.Token.pp tok |> Fmt.fmt ")" end in File.Fmt.stdout |> Fmt.fmt "---\nsource=" |> String.fmt ~alt:true ~pretty:true source - |> Fmt.fmt "\nfirst=" |> Scan.ConcreteToken.pp (List.nth first ctoks) - |> Fmt.fmt "\nlast=" |> Scan.ConcreteToken.pp (List.nth last ctoks) + |> Fmt.fmt "\nfirst=" |> Scan.Token.pp (List.nth first toks) + |> Fmt.fmt "\nlast=" |> Scan.Token.pp (List.nth last toks) |> Fmt.fmt "\nlookahead=" |> (Option.pp Source.Cursor.pp) lookahead - |> Fmt.fmt "\nctoks=" - |> (List.fmt ~alt:true pp_i_tok) (List.mapi ctoks ~f:(fun i ctok -> (i, ctok))) + |> Fmt.fmt "\ntoks=" + |> (List.fmt ~alt:true pp_i_tok) (List.mapi toks ~f:(fun i tok -> (i, tok))) |> Fmt.fmt "\ncontext_lookahead=" |> (List.fmt ~alt:true (fun slice formatter -> formatter