whole_func_string: function(walk) {
          if (!walk.at('({')) return false;
          var endIdx = walk.indexOf('})');
          if (endIdx === null)
            return false;
          // We got a select menu
          walk.skip(2);
          var ctl = this.formCompiler.createCtl('selectMenu');
          ctl.items = [];
          this.out.push('<select');
          this.emitAttrs({
            id: ctl.id,
            name: ctl.id,
            class: ctl.type
          });
          this.out.push('>');
          this.emitMenuItems(ctl, new SubWalker(walk, walk.position, endIdx));
          this.out.push('</select>');
          walk.startFrom(endIdx).skip(2);
          return true;
        }
func_code_string: function(walk) {
          if (!walk.at('({')) return false;
          var endIdx = walk.indexOf('})');
          if (endIdx === null)
            return false;
          // We got a select menu
          walk.skip(2);
          var ctl = this.formCompiler.createCtl('selectMenu');
          ctl.items = [];
          this.out.push('<select');
          this.emitAttrs({
            id: ctl.id,
            name: ctl.id,
            class: ctl.type
          });
          this.out.push('>');
          this.emitMenuItems(ctl, new SubWalker(walk, walk.position, endIdx));
          this.out.push('</select>');
          walk.startFrom(endIdx).skip(2);
          return true;
        }
func_documentation_string: Select menus are enclosed in parentheses, with each item is enclosed curly
  braces.
  
  Example: `1 + 1 = ({one}{+two}{three})`