Our features are n-grams (including skip-grams) conjoined with tree-grams on the logical form side.
on the utterance side (e.g., 'stack red on orange'), we use unigrams ('stack', * , * ), bigrams ('red', 'on', * ), trigrams ('red', 'on', 'orange'), and skip-trigrams ('stack', * , 'on').