Call Queue/if Call Queue

This is a dialect (and the implementation of it) of Call Queue called if Call Queue with some atoms defined.

Running
contains the functions for if Call Queue. The main interpreter function is  (it's a generator because I want nice stepping and no locking in infinite loops). Here's an example:

var demo = call_queue(`	function a { A; c; d; }	function b { B; e; f; }	function c { C; }	function d { D; }	function e { E; }	function f { F; }	function main { M; a; b; } `);

var result = demo.next.value; while(result != undefined) { output = result.output; result = demo.next.value; } console.log(output.join("")); // "MABCDEF"

Differences to normal Call Queue
Since no atoms are defined, I took the liberty to define, which can be seen here:

function true { 1; true; }

function false { 0; }

function main { if; true; true; false;  }

If you put, it matches the required symbol and calls   and for anything else (like  ), it doesn't match the required symbol and calls.

All other atoms print themselves.

Legal symbols (function names/function calls/atom calls) are this regex.

Implementation
if Call Queue