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

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
= '\\"'