@@ -49,14 +49,9 @@ export function list(tokeniser, { parser, allowDangler, listName = "list" }) {
4949 * @param {import("../tokeniser").Tokeniser } tokeniser
5050 */
5151export 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" )
6055 ) ;
6156}
6257
@@ -67,23 +62,26 @@ export function const_value(tokeniser) {
6762 */
6863export function const_data ( { type, value } ) {
6964 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 ) {
7073 case "true" :
7174 case "false" :
72- return { type : "boolean" , value : type === "true" } ;
75+ return { type : "boolean" , value : value === "true" } ;
7376 case "Infinity" :
7477 case "-Infinity" :
75- return { type : "Infinity" , negative : type . startsWith ( "-" ) } ;
78+ return { type : "Infinity" , negative : value . startsWith ( "-" ) } ;
7679 case "[" :
7780 return { type : "sequence" , value : [ ] } ;
7881 case "{" :
7982 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 ) } ;
8583 default :
86- return { type } ;
84+ return { type : value } ;
8785 }
8886}
8987
0 commit comments