UNPKG

logica

Version:

a compile-to-javascript predicate logic language

28 lines (21 loc) 580 B
var parser = require('./parser.js'); var traverse = require('traverse'); var _ = require('lodash'); function parse(source) { parser.parse(source); var parsed = parser.parser.yy // for variadic Operations, collapse repeated operands traverse(parsed.AST).forEach(function (node) { if (!node) return; switch (node.type) { case 'OPERATION': node.tailOperands = _.flatten(node.tailOperands) break; case 'COMBINATION': node.operands = _.flatten(node.operands) break; } }) return parsed; } module.exports = parse