@@ -49,14 +49,9 @@ export function list(tokeniser, { parser, allowDangler, listName = "list" }) {
49
49
* @param {import("../tokeniser").Tokeniser } tokeniser
50
50
*/
51
51
export function const_value ( tokeniser ) {
52
- return tokeniser . consume (
53
- "true" ,
54
- "false" ,
55
- "Infinity" ,
56
- "-Infinity" ,
57
- "NaN" ,
58
- "decimal" ,
59
- "integer"
52
+ return (
53
+ tokeniser . consumeType ( "decimal" , "integer" ) ||
54
+ tokeniser . consume ( "true" , "false" , "Infinity" , "-Infinity" , "NaN" )
60
55
) ;
61
56
}
62
57
@@ -67,23 +62,26 @@ export function const_value(tokeniser) {
67
62
*/
68
63
export function const_data ( { type, value } ) {
69
64
switch ( type ) {
65
+ case "decimal" :
66
+ case "integer" :
67
+ return { type : "number" , value } ;
68
+ case "string" :
69
+ return { type : "string" , value : value . slice ( 1 , - 1 ) } ;
70
+ }
71
+
72
+ switch ( value ) {
70
73
case "true" :
71
74
case "false" :
72
- return { type : "boolean" , value : type === "true" } ;
75
+ return { type : "boolean" , value : value === "true" } ;
73
76
case "Infinity" :
74
77
case "-Infinity" :
75
- return { type : "Infinity" , negative : type . startsWith ( "-" ) } ;
78
+ return { type : "Infinity" , negative : value . startsWith ( "-" ) } ;
76
79
case "[" :
77
80
return { type : "sequence" , value : [ ] } ;
78
81
case "{" :
79
82
return { type : "dictionary" } ;
80
- case "decimal" :
81
- case "integer" :
82
- return { type : "number" , value } ;
83
- case "string" :
84
- return { type : "string" , value : value . slice ( 1 , - 1 ) } ;
85
83
default :
86
- return { type } ;
84
+ return { type : value } ;
87
85
}
88
86
}
89
87
0 commit comments