<html>
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" href="../coverage.css"/>  <title> mw_parser/flow.clj </title>
 </head>
 <body>
<span class="covered" title="1 out of 1 forms covered">
                001&nbsp;&nbsp;(ns&nbsp;^{:doc&nbsp;&quot;A&nbsp;very&nbsp;simple&nbsp;parser&nbsp;which&nbsp;parses&nbsp;flow&nbsp;rules.&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:author&nbsp;&quot;Simon&nbsp;Brooke&quot;}
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                003&nbsp;&nbsp;&nbsp;mw-parser.flow
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                004&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[clojure.string&nbsp;:refer&nbsp;[join]]
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[mw-parser.declarative&nbsp;:refer&nbsp;[build-parser]]
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[mw-parser.simplify&nbsp;:refer&nbsp;[simplify-second-of-two]]))
                </span><br/>
<span class="blank" title="0 out of 0 forms covered">
                007&nbsp;&nbsp;
                </span><br/>
<span class="covered" title="1 out of 1 forms covered">
                008&nbsp;&nbsp;(def&nbsp;flow-grammar
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                009&nbsp;&nbsp;&nbsp;&nbsp;&quot;Grammar&nbsp;for&nbsp;flow&nbsp;rules.
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;My&nbsp;initial&nbsp;conception&nbsp;of&nbsp;this&nbsp;would&nbsp;be&nbsp;that&nbsp;production&nbsp;rules&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                012&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if-then&nbsp;rules)&nbsp;and&nbsp;flow&nbsp;rules&nbsp;(flow-from-to&nbsp;rules)&nbsp;would&nbsp;be&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                013&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entirely&nbsp;separate,&nbsp;presented&nbsp;to&nbsp;the&nbsp;parser&nbsp;as&nbsp;separate&nbsp;text&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                014&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files,&nbsp;and&nbsp;parsed&nbsp;and&nbsp;compiled&nbsp;by&nbsp;different&nbsp;chains&nbsp;of&nbsp;functions.
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                015&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                016&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;appears&nbsp;not&nbsp;to&nbsp;be&nbsp;necessary.&nbsp;Flow&nbsp;rules&nbsp;are&nbsp;easy&nbsp;to&nbsp;parse
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                017&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;the&nbsp;same&nbsp;parser&nbsp;as&nbsp;production&nbsp;rules&nbsp;--&nbsp;a&nbsp;lot&nbsp;of&nbsp;the&nbsp;grammar&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;intentionally&nbsp;common&nbsp;--&nbsp;and&nbsp;the&nbsp;rules&nbsp;are&nbsp;easily&nbsp;discriminated
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;the&nbsp;compilation&nbsp;(&#x27;generate&#x27;)&nbsp;stage.
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                020&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                021&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;basic&nbsp;rule&nbsp;I&nbsp;want&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;compile&nbsp;at&nbsp;this&nbsp;stage&nbsp;is&nbsp;the&nbsp;&#x27;mutual
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aid&#x27;&nbsp;rule:
                </span><br/>
<span class="blank" title="0 out of 0 forms covered">
                023&nbsp;&nbsp;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`flow&nbsp;1&nbsp;food&nbsp;from&nbsp;house&nbsp;having&nbsp;food&nbsp;&gt;&nbsp;1&nbsp;to&nbsp;house&nbsp;with&nbsp;least&nbsp;food&nbsp;within&nbsp;2`
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                025&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;
                </span><br/>
<span class="covered" title="16 out of 16 forms covered">
                026&nbsp;&nbsp;&nbsp;&nbsp;(join&nbsp;&quot;\n&quot;&nbsp;[&quot;FLOW-RULE&nbsp;:=&nbsp;FLOW&nbsp;SPACE&nbsp;QUANTITY&nbsp;SPACE&nbsp;PROPERTY&nbsp;SPACE&nbsp;FROM&nbsp;SPACE&nbsp;SOURCE&nbsp;SPACE&nbsp;TO-HOW&nbsp;SPACE&nbsp;DESTINATION;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PERCENTAGE&nbsp;:=&nbsp;NUMBER&nbsp;#&#x27;%&#x27;;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;QUANTITY&nbsp;:=&nbsp;PERCENTAGE&nbsp;|&nbsp;NUMBER&nbsp;|&nbsp;EXPRESSION&nbsp;|&nbsp;SOME;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;SOURCE&nbsp;:=&nbsp;STATE&nbsp;|&nbsp;STATE&nbsp;SPACE&nbsp;WITH&nbsp;SPACE&nbsp;CONDITIONS;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DESTINATION&nbsp;:=&nbsp;STATE&nbsp;|&nbsp;STATE&nbsp;SPACE&nbsp;WITH&nbsp;SPACE&nbsp;FLOW-CONDITIONS&nbsp;|&nbsp;STATE&nbsp;SPACE&nbsp;WITHIN&nbsp;SPACE&nbsp;VALUE&nbsp;SPACE&nbsp;WITH&nbsp;SPACE&nbsp;FLOW-CONDITIONS;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DETERMINER&nbsp;:=&nbsp;MOST&nbsp;|&nbsp;LEAST;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DETERMINER-CONDITION&nbsp;:=&nbsp;DETERMINER&nbsp;SPACE&nbsp;PROPERTY&nbsp;|&nbsp;DETERMINER&nbsp;SPACE&nbsp;PROPERTY;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;FLOW-CONDITIONS&nbsp;:=&nbsp;DETERMINER-CONDITION&nbsp;|&nbsp;CONDITIONS&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;STATE&nbsp;:=&nbsp;SYMBOL;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TO-HOW&nbsp;:=&nbsp;TO&nbsp;|&nbsp;TO-EACH&nbsp;|&nbsp;TO-FIRST;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TO-EACH&nbsp;:=&nbsp;TO&nbsp;SPACE&nbsp;EACH&nbsp;|&nbsp;TO&nbsp;SPACE&nbsp;ALL;&quot;
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TO-FIRST&nbsp;:=&nbsp;TO&nbsp;SPACE&nbsp;FIRST&quot;]))
                </span><br/>
<span class="blank" title="0 out of 0 forms covered">
                038&nbsp;&nbsp;
                </span><br/>
<span class="covered" title="1 out of 1 forms covered">
                039&nbsp;&nbsp;(def&nbsp;parse-flow
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                040&nbsp;&nbsp;&nbsp;&nbsp;&quot;Parse&nbsp;the&nbsp;argument,&nbsp;assumed&nbsp;to&nbsp;be&nbsp;a&nbsp;string&nbsp;in&nbsp;the&nbsp;correct&nbsp;syntax,&nbsp;and&nbsp;return&nbsp;a&nbsp;parse&nbsp;tree.&quot;
                </span><br/>
<span class="covered" title="6 out of 6 forms covered">
                041&nbsp;&nbsp;&nbsp;&nbsp;(build-parser&nbsp;flow-grammar))
                </span><br/>
<span class="blank" title="0 out of 0 forms covered">
                042&nbsp;&nbsp;
                </span><br/>
<span class="covered" title="1 out of 1 forms covered">
                043&nbsp;&nbsp;(defn&nbsp;simplify-flow
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                044&nbsp;&nbsp;&nbsp;&nbsp;[tree]
                </span><br/>
<span class="covered" title="4 out of 4 forms covered">
                045&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(coll?&nbsp;tree)
                </span><br/>
<span class="covered" title="7 out of 7 forms covered">
                046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;(first&nbsp;tree)
                </span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
                047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:CONDITION&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="covered" title="3 out of 3 forms covered">
                048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:CONDITIONS&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="covered" title="3 out of 3 forms covered">
                049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:DETERMINER&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                050&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:DETERMINER-CONDITION&nbsp;(simplify-determiner-condition&nbsp;tree)
                </span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
                051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:EXPRESSION&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:FLOW&nbsp;nil
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                053&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:FLOW-CONDITIONS&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="covered" title="3 out of 3 forms covered">
                054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:PROPERTY&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
                055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:PROPERTY-CONDITION-OR-EXPRESSION&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:SPACE&nbsp;nil
                </span><br/>
<span class="covered" title="3 out of 3 forms covered">
                057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:QUANTITY&nbsp;(simplify-second-of-two&nbsp;tree)
                </span><br/>
<span class="covered" title="4 out of 4 forms covered">
                058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:STATE&nbsp;(list&nbsp;:PROPERTY-CONDITION
                </span><br/>
<span class="covered" title="4 out of 4 forms covered">
                059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;:SYMBOL&nbsp;&quot;state&quot;)
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#x27;(:QUALIFIER
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:EQUIVALENCE
                </span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
                062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:IS&nbsp;&quot;is&quot;)))
                </span><br/>
<span class="covered" title="3 out of 3 forms covered">
                063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;:EXPRESSION
                </span><br/>
<span class="covered" title="6 out of 6 forms covered">
                064&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;:VALUE&nbsp;(second&nbsp;tree))))
                </span><br/>
<span class="covered" title="7 out of 7 forms covered">
                065&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove&nbsp;nil?&nbsp;(map&nbsp;simplify-flow&nbsp;tree)))
                </span><br/>
<span class="covered" title="1 out of 1 forms covered">
                066&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree))
                </span><br/>
<span class="blank" title="0 out of 0 forms covered">
                067&nbsp;&nbsp;
                </span><br/>
 </body>
</html>