Skip to content

Instantly share code, notes, and snippets.

@jooyunghan
Created December 15, 2015 08:55
Show Gist options
  • Save jooyunghan/b6555bea818532382129 to your computer and use it in GitHub Desktop.
Save jooyunghan/b6555bea818532382129 to your computer and use it in GitHub Desktop.
Tree Parsing with Peg.js
var PEG = require('pegjs');
var parser = PEG.buildParser(`
tree = fork?
fork = name:[a-z] c:children? { return Object.assign({name}, c); }
children = '(' left:tree ',' right:tree ')' {return {left,right}}
`);
var tree = parser.parse('a(b,c(,d))');
console.log(tree);
function treeToString(tree) {
if (tree) {
if (tree.left || tree.right)
return tree.name + '(' + treeToString(tree.left) + ',' + treeToString(tree.right) + ')'
else
return tree.name;
} else {
return "";
}
}
console.log(treeToString(tree));
@jooyunghan
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment