Remove duplication between Atom.is_valid and should_be_atom
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
This commit is contained in:
parent
8f57c6d795
commit
bafb710a5b
|
@ -75,7 +75,8 @@ type block_string_line_kind =
|
||||||
let comment = ';' [^ '\n' '\r']*
|
let comment = ';' [^ '\n' '\r']*
|
||||||
let newline = '\r'? '\n'
|
let newline = '\r'? '\n'
|
||||||
let blank = [' ' '\t' '\012']
|
let blank = [' ' '\t' '\012']
|
||||||
let atom_char = [^ ';' '(' ')' '"' ' ' '\t' '\r' '\n' '\012']
|
let atom_char =
|
||||||
|
[^ ';' '(' ')' '"' ' ' '\t' '\r' '\n' '\000'-'\032' '\127'-'\255']
|
||||||
let digit = ['0'-'9']
|
let digit = ['0'-'9']
|
||||||
let hexdigit = ['0'-'9' 'a'-'f' 'A'-'F']
|
let hexdigit = ['0'-'9' 'a'-'f' 'A'-'F']
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ module Atom = struct
|
||||||
let rec loop s i len =
|
let rec loop s i len =
|
||||||
i = len ||
|
i = len ||
|
||||||
match String.unsafe_get s i with
|
match String.unsafe_get s i with
|
||||||
| '"' | '(' | ')' | ';' | ' ' | '\t' | '\n' | '\012' | '\r' -> false
|
| '"' | '(' | ')' | ';' | '\000'..'\032' | '\127'..'\255' -> false
|
||||||
| _ -> loop s (i + 1) len
|
| _ -> loop s (i + 1) len
|
||||||
in
|
in
|
||||||
fun s ->
|
fun s ->
|
||||||
|
@ -52,19 +52,8 @@ let atom s =
|
||||||
|
|
||||||
let unsafe_atom_of_string s = Atom(A s)
|
let unsafe_atom_of_string s = Atom(A s)
|
||||||
|
|
||||||
let should_be_atom =
|
|
||||||
let rec loop s i len =
|
|
||||||
i = len ||
|
|
||||||
match String.unsafe_get s i with
|
|
||||||
| '"' | '(' | ')' | ';' | '\000'..'\032' | '\127'..'\255' -> false
|
|
||||||
| _ -> loop s (i + 1) len
|
|
||||||
in
|
|
||||||
fun s ->
|
|
||||||
let len = String.length s in
|
|
||||||
len > 0 && loop s 0 len
|
|
||||||
|
|
||||||
let atom_or_quoted_string s =
|
let atom_or_quoted_string s =
|
||||||
if should_be_atom s then Atom (A s)
|
if Atom.is_valid s then Atom (A s)
|
||||||
else Quoted_string s
|
else Quoted_string s
|
||||||
|
|
||||||
let quote_length s =
|
let quote_length s =
|
||||||
|
@ -260,7 +249,7 @@ module Ast = struct
|
||||||
| List of Loc.t * t list
|
| List of Loc.t * t list
|
||||||
|
|
||||||
let atom_or_quoted_string loc s =
|
let atom_or_quoted_string loc s =
|
||||||
if should_be_atom s then Atom (loc, A s)
|
if Atom.is_valid s then Atom (loc, A s)
|
||||||
else Quoted_string (loc, s)
|
else Quoted_string (loc, s)
|
||||||
|
|
||||||
let loc (Atom (loc, _) | Quoted_string (loc, _) | List (loc, _)) = loc
|
let loc (Atom (loc, _) | Quoted_string (loc, _) | List (loc, _)) = loc
|
||||||
|
|
Loading…
Reference in New Issue