mw-parser.generate

Generate Clojure source from simplified parse trees.

generate

(generate tree)

Generate code for this (fragment of a) parse tree

generate-action

(generate-action tree others)

From this tree, assumed to be a syntactically correct action, generate and return the appropriate clojure fragment.

generate-condition

(generate-condition tree)

From this tree, assumed to be a syntactically correct condition clause, generate and return the appropriate clojure fragment.

generate-conditions

(generate-conditions tree)

From this tree, assumed to be a syntactically correct conditions clause, generate and return the appropriate clojure fragment.

generate-conjunct-condition

(generate-conjunct-condition tree)

From this tree, assumed to be a syntactically conjunct correct condition clause, generate and return the appropriate clojure fragment.

generate-disjunct-condition

(generate-disjunct-condition tree)

From this tree, assumed to be a syntactically correct disjunct condition clause, generate and return the appropriate clojure fragment.

generate-disjunct-property-condition

(generate-disjunct-property-condition tree)(generate-disjunct-property-condition _tree property qualifier expression)

From this tree, assumed to be a syntactically property condition clause where the expression is a a disjunction, generate and return the appropriate clojure fragment. TODO: this is definitely still wrong!

generate-disjunct-value

(generate-disjunct-value tree)

Generate a disjunct value. Essentially what we need here is to generate a flat list of values, since the member has already been taken care of.

generate-flow

(generate-flow tree)

TODO: write docs

generate-multiple-actions

(generate-multiple-actions tree)

From this tree, assumed to be one or more syntactically correct actions, generate and return the appropriate clojure fragment.

generate-neighbours-condition

(generate-neighbours-condition tree)(generate-neighbours-condition tree quantifier-type)(generate-neighbours-condition comp1 quantity property-condition distance)(generate-neighbours-condition comp1 quantity property-condition)

Generate code for a condition which refers to neighbours.

generate-numeric-expression

(generate-numeric-expression tree)

From this tree, assumed to be a syntactically correct numeric expression, generate and return the appropriate clojure fragment.

generate-probable-action

(generate-probable-action tree)(generate-probable-action tree others)

From this tree, assumed to be a syntactically correct probable action, generate and return the appropriate clojure fragment.

generate-property-condition

(generate-property-condition tree)(generate-property-condition tree expression-type)

From this tree, assumed to be a syntactically property condition clause, generate and return the appropriate clojure fragment.

generate-qualifier

(generate-qualifier tree)

From this tree, assumed to be a syntactically correct qualifier, generate and return the appropriate clojure fragment.

generate-ranged-property-condition

(generate-ranged-property-condition tree property expression)

From this tree, assumed to be a syntactically property condition clause for this property where the expression is a numeric range, generate and return the appropriate clojure fragment.

generate-rule

(generate-rule tree)

From this tree, assumed to be a syntactically correct rule specification, generate and return the appropriate rule as a function of two arguments.

generate-simple-action

(generate-simple-action tree)(generate-simple-action tree others)

From this tree, assumed to be a syntactically correct simple action, generate and return the appropriate clojure fragment.

generate-within-condition

(generate-within-condition tree)(generate-within-condition tree quantifier-type)

Generate code for a condition which refers to neighbours within a specified distance. NOTE THAT there’s clearly masses of commonality between this and generate-neighbours-condition, and that some refactoring is almost certainly desirable. It may be that it’s better to simplify a NEIGHBOURS-CONDITION into a WITHIN-CONDITION in the simplification stage.