You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
657 B
JavaScript
31 lines
657 B
JavaScript
start
|
|
= deriveTag
|
|
|
|
value
|
|
= deriveTag
|
|
/ array
|
|
/ tuple
|
|
/ string
|
|
|
|
multipleItems
|
|
= item:value subsequentItems:("," value)* { return [item].concat(subsequentItems.map(subsequentItem => subsequentItem[1])); }
|
|
|
|
deriveTag
|
|
= "Derive(" items:multipleItems ")" { return {type: "deriveTag", items: items}; }
|
|
|
|
array
|
|
= "[" items:multipleItems "]" { return {type: "array", items: items}; }
|
|
|
|
tuple
|
|
= "(" items:multipleItems ")" { return {type: "tuple", items: items}; }
|
|
|
|
string
|
|
= '"' chars:stringCharacter* '"' { return chars.join(""); }
|
|
|
|
stringCharacter
|
|
= !('"' / "\\") char:. { return char; }
|
|
/ stringEscapedQuote { return '"'; }
|
|
|
|
stringEscapedQuote
|
|
= '\\"'
|