All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.intershop.beehive.isml.internal.parser.ISMLtoJSPcompiler Maven / Gradle / Ivy

The newest version!
/* Generated By:JavaCC: Do not edit this line. ISMLtoJSPcompiler.java */
package com.intershop.beehive.isml.internal.parser;

import com.intershop.beehive.isml.capi.ISMLException;
import com.intershop.beehive.isml.capi.ISMLTemplateConstants;
import com.intershop.beehive.isml.internal.TemplateCompiler;
import com.intershop.beehive.isml.internal.parser.Token;
import java.io.*;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;

public class ISMLtoJSPcompiler implements TemplateCompiler, ISMLtoJSPcompilerConstants {
    boolean isSSSenabled = false;
    int startline = 1;
    int startcolumn = 1;
    File in = null;
    InputStream inStream = null;

    /* JSP tags */
    protected static String INLINE_SCRIPTING_START  = "<%=";
    protected static String INLINE_SCRIPTING_END    = "%>";
    protected static String SCRIPTING_START         = "<% ";
    protected static String SCRIPTING_END           = " %>";
    protected static String DIRECTIVE_START         = "<%@ ";
    protected static String DIRECTIVE_END           = " %>";


    public boolean compileTemplate( int securityLevel,
                                    OutputStreamWriter out,
                                    File inputfile, InputStream instr)
           throws ISMLException
    {
        /* stack to test correct nesting and ending of IF's and LOOP's */
        List nestingTable = new LinkedList();

        try
        {
            if ( securityLevel==ALLOW_ALL )
            {
                isSSSenabled = true;
            }
            else
            {
                isSSSenabled = false;
            }

            in = inputfile;
            inStream = instr;

            CompactingWriter result = new CompactingWriter(new BufferedWriter(out,
                ISMLTemplateConstants.DEFAULT_TEMPLATE_BUFFERSIZE), out.getEncoding());

            result.print(DIRECTIVE_START);
            result.print(" page buffer=\u005c"none\u005c"");
            result.print(" import=\u005c"java.util.*,java.io.*" +
                ",com.intershop.beehive.core.internal.template.*" +
                ",com.intershop.beehive.core.internal.template.isml.*" +
                ",com.intershop.beehive.core.capi.log.*" +
                ",com.intershop.beehive.core.capi.resource.*" +
                ",com.intershop.beehive.core.capi.util.UUIDMgr,com.intershop.beehive.core.capi.util.XMLHelper" +
                ",com.intershop.beehive.foundation.util.*" +
                ",com.intershop.beehive.core.internal.url.*" +
                ",com.intershop.beehive.core.internal.resource.*" +
                ",com.intershop.beehive.core.capi.pipeline.PipelineDictionary" +
                ",com.intershop.beehive.core.capi.naming.NamingMgr" +
                ",com.intershop.beehive.core.capi.pagecache.PageCacheMgr" +
                ",com.intershop.beehive.core.capi.request.SessionMgr" +
                ",com.intershop.beehive.core.internal.request.SessionMgrImpl" +
                ",com.intershop.beehive.core.pipelet.PipelineConstants\u005c"");
            result.print(" extends=\u005c"com.intershop.beehive.core.internal.template.AbstractTemplate\u005c"");
            result.print(DIRECTIVE_END);

            result.print(SCRIPTING_START);
            result.print("\u005cnboolean _boolean_result=false;\u005cn");
            // replace the original JSP writer with a Wrapper implementation to prevent NPE for NULL string writing
            result.print("out = new WrappedJspWriter(out);\u005cn");
            result.print("TemplateExecutionConfig context = getTemplateExecutionConfig();\u005cn");
            result.print("createTemplatePageConfig(context.getServletRequest());\u005cn");
            result.print("printHeader(out);\u005cn");
            result.print(SCRIPTING_END);
            result.flush();

            this.specification(result, nestingTable);

            if (nestingTable.size()>0)
            {
                throw new ParseException("Error in template " + in.getName() + " : 1 or more ISIF or ISLOOP statement without  or  end tag.");
            }

            if (token_source.brackets != 0)
            {
                throw new ParseException("Error in template " + in.getName() + " : Check for lost opening or closing brackets (\u005c"(\u005c" or \u005c")\u005c").");
            }

            result.print(SCRIPTING_START);
            result.print("printFooter(out);");
            result.print(SCRIPTING_END);
            result.flush();
            return true;
        }
        catch (ParseException e)
        {
            throw new ISMLException(e.getMessage());
        }
        catch (TokenMgrError e)
        {
            throw new ISMLException(e.getMessage());
        }
        catch (IOException e)
        {
            throw new ISMLException(e.getMessage());
        }
    }

/* Main production rule */
  final public void specification(CompactingWriter result, List nestingTable) throws ParseException, IOException {
   Token token = null;
   boolean previewAttributeRemoveFlag = false;
    label_1:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INC_TAG:
      case JSP_TAG:
      case BEAN_TAG:
      case SERVLET_TAG:
      case EJB_TAG:
      case ISCOMMENT:
      case LOSTCOMMENT_END:
      case ISBREAK:
      case ISCACHE:
      case ISCACHEKEY:
      case ISDICTIONARY:
      case ISCONTENT:
      case ISCOOKIE:
      case ISELSE:
      case ISELSIF:
      case ISIF:
      case ISIF_END:
      case CLOSING_ISELSE:
      case ISINCLUDE:
      case ISLOOP:
      case ISLOOP_END:
      case ISFILEBUNDLE:
      case ISFILEBUNDLE_END:
      case ISFORM:
      case ISFORM_END:
      case ISFILE:
      case ISRENDER:
      case ISRENDER_END:
      case ISMODULE:
      case ISNEXT:
      case ISPRINT:
      case ISREDIRECT:
      case ISSELECT:
      case ISSET:
      case ISBINARY:
      case ISPIPELINE:
      case ISTEXT:
      case ISPLACEHOLDER:
      case ISPLACEMENT:
      case ISPLACEMENT_END:
      case ISX:
      case ISX_END:
      case IS_EXPRESSION:
      case IS_EXP_PREVIEW:
      case POWER_HOOK:
      case NO_EXPRESSION_1:
      case NO_EXPRESSION_2:
      case NO_EXPRESSION_3:
      case NO_EXPRESSION_4:
      case NO_EXPRESSION_5:
      case NO_EXPRESSION_6:
      case NO_EXPRESSION_7:
      case CONTENT:
        ;
        break;
      default:
        jj_la1[0] = jj_gen;
        break label_1;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case POWER_HOOK:
        token = jj_consume_token(POWER_HOOK);
            result.print(token);
            result.print(SCRIPTING_START);
            result.print("insertIntershopSignature(request,(com.intershop.beehive.core.capi.request.ServletResponse)response);");
            result.print(SCRIPTING_END);
        break;
      case NO_EXPRESSION_1:
      case NO_EXPRESSION_2:
      case NO_EXPRESSION_3:
      case NO_EXPRESSION_4:
      case NO_EXPRESSION_5:
      case NO_EXPRESSION_6:
      case NO_EXPRESSION_7:
      case CONTENT:
        stuff(result);
            previewAttributeRemoveFlag = false;
        break;
      case INC_TAG:
      case JSP_TAG:
      case BEAN_TAG:
      case SERVLET_TAG:
      case EJB_TAG:
        sss(result);
          previewAttributeRemoveFlag = false;
        break;
      case ISBREAK:
      case ISCACHE:
      case ISCACHEKEY:
      case ISDICTIONARY:
      case ISCONTENT:
      case ISCOOKIE:
      case ISELSE:
      case ISELSIF:
      case ISIF:
      case ISIF_END:
      case ISINCLUDE:
      case ISLOOP:
      case ISLOOP_END:
      case ISFILEBUNDLE:
      case ISFILEBUNDLE_END:
      case ISFORM:
      case ISFORM_END:
      case ISFILE:
      case ISRENDER:
      case ISRENDER_END:
      case ISMODULE:
      case ISNEXT:
      case ISPRINT:
      case ISREDIRECT:
      case ISSELECT:
      case ISSET:
      case ISBINARY:
      case ISPIPELINE:
      case ISTEXT:
      case ISPLACEHOLDER:
      case ISPLACEMENT:
      case ISPLACEMENT_END:
      case ISX:
      case ISX_END:
        isTag(result, nestingTable);
          previewAttributeRemoveFlag = false;
        break;
      case IS_EXPRESSION:
        token = jj_consume_token(IS_EXPRESSION);
                startline = token.beginLine;
                startcolumn = token.beginColumn;
        previewAttributeRemoveFlag = outExpression(result);
        break;
      case IS_EXP_PREVIEW:
        token = jj_consume_token(IS_EXP_PREVIEW);
            if (!previewAttributeRemoveFlag)
            {
                // print usual HTML content
                result.print(token);
            }
            else if (token.toString().charAt(0) == '\u005c"')
            {
                result.print("\u005c"");
            }
            previewAttributeRemoveFlag = false;
        break;
      case ISCOMMENT:
        jj_consume_token(ISCOMMENT);
        label_2:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMENT_CONTENT:
            ;
            break;
          default:
            jj_la1[1] = jj_gen;
            break label_2;
          }
          jj_consume_token(COMMENT_CONTENT);
        }
        jj_consume_token(ISCOMMENT_END);

        break;
      case LOSTCOMMENT_END:
        jj_consume_token(LOSTCOMMENT_END);
            {if (true) throw new ParseException("Error in template " + in.getName() + " : Check comment usage, nesting is not allowed and there must be a starting \u005c"\u005c" (or \u005c"\u005c").");}
        break;
      case CLOSING_ISELSE:
        jj_consume_token(CLOSING_ISELSE);
            {if (true) throw new ParseException("Error in template " + in.getName() + " : Unexpected token  encountered!");}
        break;
      default:
        jj_la1[2] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

/* rule for ISML expressions outside ISML tags */
  final public boolean outExpression(CompactingWriter result) throws ParseException, IOException {
    StringBuilder buffer = new StringBuilder();
    try {
      is_expression(buffer);
      jj_consume_token(EXP_STOP);
            result.print(INLINE_SCRIPTING_START);
            result.print("context.getFormattedValue(" + buffer + ",null)");
            result.print(INLINE_SCRIPTING_END);
            {if (true) return true;}
    } catch (ParseException e) {
        /* this is a workaround for single #'s (as in color codes) */
        /* if is_expression fails the input stream is parsed again */
        /* from the beginning to process all tokens after the '#' */
        /* with scope default */
        if (e.getMessage().indexOf('#') < 0)
        {
            {if (true) throw new ParseException("Error in template " + in.getName() + " : " + e.getMessage());}
        }

        try
        {
            InputStream ins = inStream;
            if (ins != null && ins.markSupported())
            {
                ins.reset();
            }
            else
            {
               ins = new BufferedInputStream(new FileInputStream(in), ISMLTemplateConstants.DEFAULT_TEMPLATE_BUFFERSIZE);
            }
            this.ReInit(ins);

            token_source.SwitchTo(SKIPPER);
            Token skipperToken = getNextToken();
            while (  (skipperToken.beginLine & 
         are just a workarounds for the "single #'s" -
         workaround to speed up template processing significantly
          is a special case for CSS color codes
          is for color codes enclosed in escaped double quotes */
  final public void stuff(CompactingWriter result) throws ParseException, IOException {
    Token stuff;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONTENT:
      stuff = jj_consume_token(CONTENT);
      break;
    case NO_EXPRESSION_1:
      stuff = jj_consume_token(NO_EXPRESSION_1);
      break;
    case NO_EXPRESSION_2:
      stuff = jj_consume_token(NO_EXPRESSION_2);
      break;
    case NO_EXPRESSION_3:
      stuff = jj_consume_token(NO_EXPRESSION_3);
      break;
    case NO_EXPRESSION_4:
      stuff = jj_consume_token(NO_EXPRESSION_4);
      break;
    case NO_EXPRESSION_5:
      stuff = jj_consume_token(NO_EXPRESSION_5);
      break;
    case NO_EXPRESSION_6:
      stuff = jj_consume_token(NO_EXPRESSION_6);
      break;
    case NO_EXPRESSION_7:
      stuff = jj_consume_token(NO_EXPRESSION_7);
      break;
    default:
      jj_la1[3] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        // print usual HTML content
        result.printCompact(stuff);
  }

/**
 * Server side scripting rules
 **/
  final public void sss(CompactingWriter result) throws ParseException, IOException {
    Token stuff;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INC_TAG:
    case JSP_TAG:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INC_TAG:
        stuff = jj_consume_token(INC_TAG);
        break;
      case JSP_TAG:
        stuff = jj_consume_token(JSP_TAG);
        break;
      default:
        jj_la1[4] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            if (isSSSenabled) { result.print(stuff); }
      break;
    case BEAN_TAG:
      beanTag(result);
      break;
    case SERVLET_TAG:
      servletTag(result);
      break;
    case EJB_TAG:
      ejbTag(result);
      break;
    default:
      jj_la1[5] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  final public void beanTag(CompactingWriter result) throws ParseException, IOException {
    Token stuff;
    stuff = jj_consume_token(BEAN_TAG);
        if (isSSSenabled) { result.print(stuff); }
    label_3:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BEAN_CONTENT:
        ;
        break;
      default:
        jj_la1[6] = jj_gen;
        break label_3;
      }
      stuff = jj_consume_token(BEAN_CONTENT);
            if (isSSSenabled) { result.print(stuff); }
    }
    stuff = jj_consume_token(BEAN_ETAG);
        if (isSSSenabled) { result.print(stuff); }
  }

  final public void servletTag(CompactingWriter result) throws ParseException, IOException {
    Token stuff;
    stuff = jj_consume_token(SERVLET_TAG);
        if (isSSSenabled) { result.print(stuff); }
    label_4:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SERVLET_CONTENT:
        ;
        break;
      default:
        jj_la1[7] = jj_gen;
        break label_4;
      }
      stuff = jj_consume_token(SERVLET_CONTENT);
            if (isSSSenabled) { result.print(stuff); }
    }
    stuff = jj_consume_token(SERVLET_ETAG);
        if (isSSSenabled) { result.print(stuff); }
  }

  final public void ejbTag(CompactingWriter result) throws ParseException, IOException {
    Token stuff;
    stuff = jj_consume_token(EJB_TAG);
        if (isSSSenabled) { result.print(stuff); }
    label_5:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EJB_CONTENT:
        ;
        break;
      default:
        jj_la1[8] = jj_gen;
        break label_5;
      }
      stuff = jj_consume_token(EJB_CONTENT);
            if (isSSSenabled) { result.print(stuff); }
    }
    stuff = jj_consume_token(EJB_ETAG);
        if (isSSSenabled) { result.print(stuff); }
  }

/**
 * ISML tag rule
 */
  final public void isTag(CompactingWriter result, List nestingTable) throws ParseException {
    /**
     * the tag factory - map tags to Server Side Scripting
     */
    Token tag = null;
    HashMap attributes = new HashMap();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ISBREAK:
    case ISELSE:
    case ISIF_END:
    case ISLOOP_END:
    case ISFILEBUNDLE_END:
    case ISFORM_END:
    case ISRENDER_END:
    case ISNEXT:
    case ISPLACEMENT_END:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ISIF_END:
        tag = jj_consume_token(ISIF_END);
        break;
      case ISLOOP_END:
        tag = jj_consume_token(ISLOOP_END);
        break;
      case ISBREAK:
        tag = jj_consume_token(ISBREAK);
        break;
      case ISNEXT:
        tag = jj_consume_token(ISNEXT);
        break;
      case ISELSE:
        tag = jj_consume_token(ISELSE);
        break;
      case ISPLACEMENT_END:
        tag = jj_consume_token(ISPLACEMENT_END);
        break;
      case ISFILEBUNDLE_END:
        tag = jj_consume_token(ISFILEBUNDLE_END);
        break;
      case ISRENDER_END:
        tag = jj_consume_token(ISRENDER_END);
        break;
      case ISFORM_END:
        tag = jj_consume_token(ISFORM_END);
        break;
      default:
        jj_la1[9] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case ISMODULE:
      tag = jj_consume_token(ISMODULE);
      label_6:
      while (true) {
        jj_consume_token(TAG_SPACE);
        tagAttribute2(attributes, ATT_ATTRIBUTE, ATT_RETURNATTRIBUTE);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TAG_SPACE:
          ;
          break;
        default:
          jj_la1[10] = jj_gen;
          break label_6;
        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case END_TAG:
        jj_consume_token(END_TAG);
        break;
      case EMPTY_ELEMENT_END_TAG:
        jj_consume_token(EMPTY_ELEMENT_END_TAG);
        break;
      default:
        jj_la1[11] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case ISCACHE:
    case ISCACHEKEY:
    case ISDICTIONARY:
    case ISCONTENT:
    case ISCOOKIE:
    case ISELSIF:
    case ISINCLUDE:
    case ISFILE:
    case ISPRINT:
    case ISREDIRECT:
    case ISSELECT:
    case ISSET:
    case ISBINARY:
    case ISPIPELINE:
    case ISTEXT:
    case ISPLACEHOLDER:
    case ISPLACEMENT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ISPRINT:
        tag = jj_consume_token(ISPRINT);
        break;
      case ISSET:
        tag = jj_consume_token(ISSET);
        break;
      case ISELSIF:
        tag = jj_consume_token(ISELSIF);
        break;
      case ISCACHE:
        tag = jj_consume_token(ISCACHE);
        break;
      case ISCONTENT:
        tag = jj_consume_token(ISCONTENT);
        break;
      case ISREDIRECT:
        tag = jj_consume_token(ISREDIRECT);
        break;
      case ISDICTIONARY:
        tag = jj_consume_token(ISDICTIONARY);
        break;
      case ISINCLUDE:
        tag = jj_consume_token(ISINCLUDE);
        break;
      case ISCOOKIE:
        tag = jj_consume_token(ISCOOKIE);
        break;
      case ISCACHEKEY:
        tag = jj_consume_token(ISCACHEKEY);
        break;
      case ISSELECT:
        tag = jj_consume_token(ISSELECT);
        break;
      case ISBINARY:
        tag = jj_consume_token(ISBINARY);
        break;
      case ISPIPELINE:
        tag = jj_consume_token(ISPIPELINE);
        break;
      case ISTEXT:
        tag = jj_consume_token(ISTEXT);
        break;
      case ISPLACEHOLDER:
        tag = jj_consume_token(ISPLACEHOLDER);
        break;
      case ISPLACEMENT:
        tag = jj_consume_token(ISPLACEMENT);
        break;
      case ISFILE:
        tag = jj_consume_token(ISFILE);
        break;
      default:
        jj_la1[12] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      label_7:
      while (true) {
        jj_consume_token(TAG_SPACE);
        tagAttribute(attributes);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TAG_SPACE:
          ;
          break;
        default:
          jj_la1[13] = jj_gen;
          break label_7;
        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case END_TAG:
        jj_consume_token(END_TAG);
        break;
      case EMPTY_ELEMENT_END_TAG:
        jj_consume_token(EMPTY_ELEMENT_END_TAG);
        break;
      default:
        jj_la1[14] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case ISIF:
    case ISLOOP:
    case ISFILEBUNDLE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ISLOOP:
        tag = jj_consume_token(ISLOOP);
        break;
      case ISIF:
        tag = jj_consume_token(ISIF);
        break;
      case ISFILEBUNDLE:
        tag = jj_consume_token(ISFILEBUNDLE);
        break;
      default:
        jj_la1[15] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      label_8:
      while (true) {
        jj_consume_token(TAG_SPACE);
        tagAttribute(attributes);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TAG_SPACE:
          ;
          break;
        default:
          jj_la1[16] = jj_gen;
          break label_8;
        }
      }
      jj_consume_token(END_TAG);
      break;
    case ISRENDER:
    case ISX:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ISX:
        tag = jj_consume_token(ISX);
        break;
      case ISRENDER:
        tag = jj_consume_token(ISRENDER);
        break;
      default:
        jj_la1[17] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      label_9:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CUST_SPACE:
          ;
          break;
        default:
          jj_la1[18] = jj_gen;
          break label_9;
        }
        jj_consume_token(CUST_SPACE);
        customAttribute(attributes);
      }
      jj_consume_token(CUST_END);
      break;
    case ISFORM:
      tag = jj_consume_token(ISFORM);
      label_10:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CUST_SPACE:
          ;
          break;
        default:
          jj_la1[19] = jj_gen;
          break label_10;
        }
        jj_consume_token(CUST_SPACE);
        formAttribute(attributes);
      }
      jj_consume_token(CUST_END);
      break;
    case ISX_END:
      tag = jj_consume_token(ISX_END);
      jj_consume_token(CUST_END);
      break;
    default:
      jj_la1[20] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        ISMLTagCompiler.compileTag(tag, result, attributes, nestingTable);
  }

/**
 * ISML tag attribute rules
 **/
  final public void tagAttribute(HashMap attributes) throws ParseException {
         tagAttribute2(attributes, -1, -1);
  }

  final public void tagAttribute2(HashMap attributes, int multiValueAttr1, int multiValueAttr2) throws ParseException {
    /**
     * the attribute factory - parses tag-attributes
     */

   Token name=null,value=null;
   String buf;
   StringBuilder buffer1 = new StringBuilder();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ATT_ATTRIBUTE:
    case ATT_RETURNATTRIBUTE:
    case ATT_CHARSET:
    case ATT_COMMENT:
    case ATT_COMPACT:
    case ATT_TEMPLATEMARKER:
    case ATT_CONDITION:
    case ATT_DESCRIPTION:
    case ATT_DOMAIN:
    case ATT_EXTENSIONPOINT:
    case ATT_HOUR:
    case ATT_LOCATION:
    case ATT_HTTPSTATUS:
    case ATT_KEYWORD:
    case ATT_OBJECT:
    case ATT_MAXAGE:
    case ATT_MINUTE:
    case ATT_NAME:
    case ATT_PADDING:
    case ATT_PASSWORD:
    case ATT_PATH:
    case ATT_PERSONALIZED:
    case ATT_SCOPE:
    case ATT_SOURCE:
    case ATT_TEMPLATE:
    case ATT_STRICT:
    case ATT_TYPE:
    case ATT_URL:
    case ATT_USERNAME:
    case ATT_VALUE:
    case ATT_VERSION:
    case ATT_FILE:
    case ATT_STREAM:
    case ATT_RESOURCE:
    case ATT_BYTES:
    case ATT_DOWNLOADNAME:
    case ATT_DICTIONARY:
    case ATT_PIPELINE:
    case ATT_PARAMS:
    case ATT_SYMBOLS:
    case ATT_KEY:
    case ATT_LOCALE:
    case ATT_PARAMETER0:
    case ATT_PARAMETER1:
    case ATT_PARAMETER2:
    case ATT_PARAMETER3:
    case ATT_PARAMETER4:
    case ATT_PARAMETER5:
    case ATT_PARAMETER6:
    case ATT_PARAMETER7:
    case ATT_PARAMETER8:
    case ATT_PARAMETER9:
    case ATT_ID:
    case ATT_PREPEND:
    case ATT_SEPARATOR:
    case ATT_APPEND:
    case ATT_PRESERVEORDER:
    case ATT_REMOVEDUPLICATES:
    case ATT_PLACEHOLDERID:
    case ATT_PROCESSORS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ATT_ATTRIBUTE:
        name = jj_consume_token(ATT_ATTRIBUTE);
        break;
      case ATT_COMMENT:
        name = jj_consume_token(ATT_COMMENT);
        break;
      case ATT_COMPACT:
        name = jj_consume_token(ATT_COMPACT);
        break;
      case ATT_CONDITION:
        name = jj_consume_token(ATT_CONDITION);
        break;
      case ATT_DESCRIPTION:
        name = jj_consume_token(ATT_DESCRIPTION);
        break;
      case ATT_DOMAIN:
        name = jj_consume_token(ATT_DOMAIN);
        break;
      case ATT_HOUR:
        name = jj_consume_token(ATT_HOUR);
        break;
      case ATT_LOCATION:
        name = jj_consume_token(ATT_LOCATION);
        break;
      case ATT_MAXAGE:
        name = jj_consume_token(ATT_MAXAGE);
        break;
      case ATT_MINUTE:
        name = jj_consume_token(ATT_MINUTE);
        break;
      case ATT_NAME:
        name = jj_consume_token(ATT_NAME);
        break;
      case ATT_PADDING:
        name = jj_consume_token(ATT_PADDING);
        break;
      case ATT_PASSWORD:
        name = jj_consume_token(ATT_PASSWORD);
        break;
      case ATT_PATH:
        name = jj_consume_token(ATT_PATH);
        break;
      case ATT_TEMPLATE:
        name = jj_consume_token(ATT_TEMPLATE);
        break;
      case ATT_TYPE:
        name = jj_consume_token(ATT_TYPE);
        break;
      case ATT_URL:
        name = jj_consume_token(ATT_URL);
        break;
      case ATT_USERNAME:
        name = jj_consume_token(ATT_USERNAME);
        break;
      case ATT_VALUE:
        name = jj_consume_token(ATT_VALUE);
        break;
      case ATT_VERSION:
        name = jj_consume_token(ATT_VERSION);
        break;
      case ATT_CHARSET:
        name = jj_consume_token(ATT_CHARSET);
        break;
      case ATT_PERSONALIZED:
        name = jj_consume_token(ATT_PERSONALIZED);
        break;
      case ATT_KEYWORD:
        name = jj_consume_token(ATT_KEYWORD);
        break;
      case ATT_SOURCE:
        name = jj_consume_token(ATT_SOURCE);
        break;
      case ATT_SCOPE:
        name = jj_consume_token(ATT_SCOPE);
        break;
      case ATT_FILE:
        name = jj_consume_token(ATT_FILE);
        break;
      case ATT_STREAM:
        name = jj_consume_token(ATT_STREAM);
        break;
      case ATT_RESOURCE:
        name = jj_consume_token(ATT_RESOURCE);
        break;
      case ATT_BYTES:
        name = jj_consume_token(ATT_BYTES);
        break;
      case ATT_DOWNLOADNAME:
        name = jj_consume_token(ATT_DOWNLOADNAME);
        break;
      case ATT_DICTIONARY:
        name = jj_consume_token(ATT_DICTIONARY);
        break;
      case ATT_PIPELINE:
        name = jj_consume_token(ATT_PIPELINE);
        break;
      case ATT_PARAMS:
        name = jj_consume_token(ATT_PARAMS);
        break;
      case ATT_STRICT:
        name = jj_consume_token(ATT_STRICT);
        break;
      case ATT_SYMBOLS:
        name = jj_consume_token(ATT_SYMBOLS);
        break;
      case ATT_RETURNATTRIBUTE:
        name = jj_consume_token(ATT_RETURNATTRIBUTE);
        break;
      case ATT_KEY:
        name = jj_consume_token(ATT_KEY);
        break;
      case ATT_PARAMETER0:
        name = jj_consume_token(ATT_PARAMETER0);
        break;
      case ATT_PARAMETER1:
        name = jj_consume_token(ATT_PARAMETER1);
        break;
      case ATT_PARAMETER2:
        name = jj_consume_token(ATT_PARAMETER2);
        break;
      case ATT_PARAMETER3:
        name = jj_consume_token(ATT_PARAMETER3);
        break;
      case ATT_PARAMETER4:
        name = jj_consume_token(ATT_PARAMETER4);
        break;
      case ATT_PARAMETER5:
        name = jj_consume_token(ATT_PARAMETER5);
        break;
      case ATT_PARAMETER6:
        name = jj_consume_token(ATT_PARAMETER6);
        break;
      case ATT_PARAMETER7:
        name = jj_consume_token(ATT_PARAMETER7);
        break;
      case ATT_PARAMETER8:
        name = jj_consume_token(ATT_PARAMETER8);
        break;
      case ATT_PARAMETER9:
        name = jj_consume_token(ATT_PARAMETER9);
        break;
      case ATT_LOCALE:
        name = jj_consume_token(ATT_LOCALE);
        break;
      case ATT_ID:
        name = jj_consume_token(ATT_ID);
        break;
      case ATT_PREPEND:
        name = jj_consume_token(ATT_PREPEND);
        break;
      case ATT_SEPARATOR:
        name = jj_consume_token(ATT_SEPARATOR);
        break;
      case ATT_APPEND:
        name = jj_consume_token(ATT_APPEND);
        break;
      case ATT_PRESERVEORDER:
        name = jj_consume_token(ATT_PRESERVEORDER);
        break;
      case ATT_EXTENSIONPOINT:
        name = jj_consume_token(ATT_EXTENSIONPOINT);
        break;
      case ATT_REMOVEDUPLICATES:
        name = jj_consume_token(ATT_REMOVEDUPLICATES);
        break;
      case ATT_PLACEHOLDERID:
        name = jj_consume_token(ATT_PLACEHOLDERID);
        break;
      case ATT_OBJECT:
        name = jj_consume_token(ATT_OBJECT);
        break;
      case ATT_TEMPLATEMARKER:
        name = jj_consume_token(ATT_TEMPLATEMARKER);
        break;
      case ATT_PROCESSORS:
        name = jj_consume_token(ATT_PROCESSORS);
        break;
      case ATT_HTTPSTATUS:
        name = jj_consume_token(ATT_HTTPSTATUS);
        break;
      default:
        jj_la1[21] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ASSIGN:
        jj_consume_token(ASSIGN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TAG_SPACE:
          jj_consume_token(TAG_SPACE);
          break;
        default:
          jj_la1[22] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case QUOTE:
          jj_consume_token(QUOTE);
          jj_consume_token(ATT_EXPR);
          is_expression(buffer1);
          jj_consume_token(EXP_STOP);
          jj_consume_token(QUOTE);
          break;
        case ATT_EXPR:
          jj_consume_token(ATT_EXPR);
          is_expression(buffer1);
          jj_consume_token(EXP_STOP);
          break;
        default:
          jj_la1[23] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                    storeAttribute(attributes, '#' + String.valueOf(name.kind),buffer1.toString(),name.kind==multiValueAttr1 || name.kind==multiValueAttr2);
        break;
      case ATT_VALUE1:
      case ATT_VALUE2:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ATT_VALUE1:
          value = jj_consume_token(ATT_VALUE1);
          break;
        case ATT_VALUE2:
          value = jj_consume_token(ATT_VALUE2);
          break;
        default:
          jj_la1[24] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                    String realValue = value.toString();
                    realValue = realValue.substring(1).trim();
                    if (value.kind == ATT_VALUE1)
                    {
                        storeAttribute(attributes, String.valueOf(name.kind),
                                       realValue.substring(1,realValue.length()-1), name.kind==multiValueAttr1 || name.kind==multiValueAttr2);
                    }
                    else
                    {
                        storeAttribute(attributes, String.valueOf(name.kind),realValue, name.kind==multiValueAttr1 || name.kind==multiValueAttr2);
                    }
        break;
      default:
        jj_la1[25] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case ATT_ALIAS:
    case ATT_COUNTER:
    case ATT_ENCODE:
    case ATT_FORMAT:
    case ATT_ITERATOR:
    case ATT_MODE:
    case ATT_PREVIEW:
    case ATT_SECURE:
    case ATT_SESSION:
    case ATT_STYLE:
    case ATT_DISABLED:
    case ATT_CLASS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ATT_ALIAS:
        name = jj_consume_token(ATT_ALIAS);
        break;
      case ATT_ENCODE:
        name = jj_consume_token(ATT_ENCODE);
        break;
      case ATT_FORMAT:
        name = jj_consume_token(ATT_FORMAT);
        break;
      case ATT_MODE:
        name = jj_consume_token(ATT_MODE);
        break;
      case ATT_PREVIEW:
        name = jj_consume_token(ATT_PREVIEW);
        break;
      case ATT_ITERATOR:
        name = jj_consume_token(ATT_ITERATOR);
        break;
      case ATT_SECURE:
        name = jj_consume_token(ATT_SECURE);
        break;
      case ATT_SESSION:
        name = jj_consume_token(ATT_SESSION);
        break;
      case ATT_STYLE:
        name = jj_consume_token(ATT_STYLE);
        break;
      case ATT_COUNTER:
        name = jj_consume_token(ATT_COUNTER);
        break;
      case ATT_DISABLED:
        name = jj_consume_token(ATT_DISABLED);
        break;
      case ATT_CLASS:
        name = jj_consume_token(ATT_CLASS);
        break;
      default:
        jj_la1[26] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case VALUE_Q:
        value = jj_consume_token(VALUE_Q);
        break;
      case VALUE_N:
        value = jj_consume_token(VALUE_N);
        break;
      default:
        jj_la1[27] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            buf = value.toString();
            if (value.kind==VALUE_Q)
            {
                buf = buf.substring(1,buf.length()-1);
            }
            storeAttribute(attributes, String.valueOf(name.kind),buf, name.kind==multiValueAttr1 || name.kind==multiValueAttr2);
      break;
    default:
      jj_la1[28] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  final public void storeAttribute(HashMap attributes, String name, String value, boolean isMultivalue) throws ParseException {
                if (!isMultivalue)
                {
                        attributes.put(name, value);
                }
                else
                {
                        @SuppressWarnings("unchecked")
                        ArrayList v = (ArrayList)attributes.get(name);
                        if (v == null)
                        {
                                v = new ArrayList();
                                attributes.put(name, v);
                        }
                        v.add(value);
                }
  }

/**
 * ISML form tag attribute rule
 **/
  final public void formAttribute(HashMap attributes) throws ParseException {
    /**
     * the attribute factory - parses tag-attributes
     */

   Token name=null,value=null;
   StringBuilder buffer1 = new StringBuilder();
    name = jj_consume_token(CUST_ATT_NAME);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CUST_ASSIGN:
      jj_consume_token(CUST_ASSIGN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_SPACE:
        jj_consume_token(CUST_SPACE);
        break;
      default:
        jj_la1[29] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_QUOTE:
        jj_consume_token(CUST_QUOTE);
        jj_consume_token(CUST_EXPR);
        is_expression(buffer1);
        jj_consume_token(EXP_STOP);
        jj_consume_token(CUST_QUOTE);
        break;
      case CUST_EXPR:
        jj_consume_token(CUST_EXPR);
        is_expression(buffer1);
        jj_consume_token(EXP_STOP);
        break;
      default:
        jj_la1[30] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                attributes.put('#' + name.toString().trim(),buffer1);
      break;
    case CUST_ATT_VALUE1:
    case CUST_ATT_VALUE2:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_ATT_VALUE1:
        value = jj_consume_token(CUST_ATT_VALUE1);
        break;
      case CUST_ATT_VALUE2:
        value = jj_consume_token(CUST_ATT_VALUE2);
        break;
      default:
        jj_la1[31] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                String realValue = value.toString();
                realValue = realValue.substring(1).trim();
                if (value.kind == CUST_ATT_VALUE1)
                {
                    attributes.put(name.toString().trim(),
                                   realValue.substring(1,realValue.length()-1));
                }
                else
                {
                    attributes.put(name.toString().trim(),realValue);
                }
      break;
    default:
      jj_la1[32] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

/**
 * ISML custom tag attribute rule
 **/
  final public void customAttribute(HashMap attributes) throws ParseException {
    /**
     * the attribute factory - parses tag-attributes
     */

   Token name=null,value=null;
   StringBuilder buffer1 = new StringBuilder();
    name = jj_consume_token(CUST_ATT_NAME);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CUST_ASSIGN:
      jj_consume_token(CUST_ASSIGN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_SPACE:
        jj_consume_token(CUST_SPACE);
        break;
      default:
        jj_la1[33] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_QUOTE:
        jj_consume_token(CUST_QUOTE);
        jj_consume_token(CUST_EXPR);
        is_expression(buffer1);
        jj_consume_token(EXP_STOP);
        jj_consume_token(CUST_QUOTE);
        break;
      case CUST_EXPR:
        jj_consume_token(CUST_EXPR);
        is_expression(buffer1);
        jj_consume_token(EXP_STOP);
        break;
      default:
        jj_la1[34] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                attributes.put(name.toString().trim(),buffer1);
      break;
    case CUST_ATT_VALUE1:
    case CUST_ATT_VALUE2:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CUST_ATT_VALUE1:
        value = jj_consume_token(CUST_ATT_VALUE1);
        break;
      case CUST_ATT_VALUE2:
        value = jj_consume_token(CUST_ATT_VALUE2);
        break;
      default:
        jj_la1[35] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                String realValue = value.toString();
                realValue = realValue.substring(1).trim();
                if (value.kind == CUST_ATT_VALUE1)
                {
                    attributes.put(name.toString().trim(),
                                   realValue.substring(1,realValue.length()-1));
                }
                else
                {
                    attributes.put(name.toString().trim(),realValue);
                }
      break;
    default:
      jj_la1[36] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

/*
 * ISML Action syntax rule
 */
  final public void is_action(StringBuilder jsp_buffer) throws ParseException {
    StringBuilder buffer = new StringBuilder();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case F7:
      jj_consume_token(F7);
      jj_consume_token(BRACKET_OPEN);
                // start Method
                jsp_buffer.append("(new URLPipelineAction(");
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BRACKET_OPEN:
      case JSP_EMBEDDED_EXPRESSION:
      case JSP_EMBEDDED_EL:
      case ADD:
      case SUB:
      case NOT:
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case STRING_SINGLEQUOTED:
      case STRING_DOUBLEQUOTED:
      case DOUBLE:
      case VARNAME:
        is_expression(buffer);
                // parameter action
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
          is_expression(buffer);
                    // parameter server group
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            jj_consume_token(COMMA);
            is_expression(buffer);
                        // parameter domain
                        jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                        buffer.setLength(0);
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              jj_consume_token(COMMA);
              is_expression(buffer);
                            // parameter locale
                            jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                            buffer.setLength(0);
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                jj_consume_token(COMMA);
                is_expression(buffer);
                                // parameter currency
                                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                                buffer.setLength(0);
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                                    // parameter appID
                                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                  break;
                default:
                  jj_la1[37] = jj_gen;
                  ;
                }
                break;
              default:
                jj_la1[38] = jj_gen;
                ;
              }
              break;
            default:
              jj_la1[39] = jj_gen;
              ;
            }
            break;
          default:
            jj_la1[40] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[41] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[42] = jj_gen;
        ;
      }
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
      break;
    case F20:
      jj_consume_token(F20);
      jj_consume_token(BRACKET_OPEN);
                // start Method
                jsp_buffer.append("(new URLServletAction(");
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BRACKET_OPEN:
      case JSP_EMBEDDED_EXPRESSION:
      case JSP_EMBEDDED_EL:
      case ADD:
      case SUB:
      case NOT:
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case STRING_SINGLEQUOTED:
      case STRING_DOUBLEQUOTED:
      case DOUBLE:
      case VARNAME:
        is_expression(buffer);
                // parameter servlet name
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
          is_expression(buffer);
                    // parameter server group
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
          break;
        default:
          jj_la1[43] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[44] = jj_gen;
        ;
      }
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
      break;
    case F22:
      jj_consume_token(F22);
      jj_consume_token(BRACKET_OPEN);
                // start Method
                jsp_buffer.append("(new URLServiceAction(");
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BRACKET_OPEN:
      case JSP_EMBEDDED_EXPRESSION:
      case JSP_EMBEDDED_EL:
      case ADD:
      case SUB:
      case NOT:
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case STRING_SINGLEQUOTED:
      case STRING_DOUBLEQUOTED:
      case DOUBLE:
      case VARNAME:
        is_expression(buffer);
                // parameter action
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
          is_expression(buffer);
                    // parameter server group
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            jj_consume_token(COMMA);
            is_expression(buffer);
                        // parameter domain
                        jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                        buffer.setLength(0);
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              jj_consume_token(COMMA);
              is_expression(buffer);
                            // parameter locale
                            jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                            buffer.setLength(0);
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                jj_consume_token(COMMA);
                is_expression(buffer);
                                // parameter currency
                                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                                buffer.setLength(0);
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                                    // parameter appID
                                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                  break;
                default:
                  jj_la1[45] = jj_gen;
                  ;
                }
                break;
              default:
                jj_la1[46] = jj_gen;
                ;
              }
              break;
            default:
              jj_la1[47] = jj_gen;
              ;
            }
            break;
          default:
            jj_la1[48] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[49] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[50] = jj_gen;
        ;
      }
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
      break;
    default:
      jj_la1[51] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

/*
 * ISML expression syntax rule
 */
  final public void is_expression(StringBuilder jsp_buffer) throws ParseException {
    StringBuilder buffer2 = new StringBuilder();
    boolean flag = true;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case NOT:
      jj_consume_token(NOT);
      operator(buffer2);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AND:
      case OR:
        flag = boolean_expr(jsp_buffer,buffer2,true);
        break;
      default:
        jj_la1[52] = jj_gen;
        ;
      }
            if (flag)
            {
                /* special handling of case (NOT operator()) */
                jsp_buffer.append("(!Boolean.valueOf(String.valueOf(" + buffer2+ "))) ");
            }
      break;
    case BRACKET_OPEN:
    case JSP_EMBEDDED_EXPRESSION:
    case JSP_EMBEDDED_EL:
    case ADD:
    case SUB:
    case F1:
    case F2:
    case F3:
    case F4:
    case F5:
    case F6:
    case F7:
    case F8:
    case F9:
    case F10:
    case F11:
    case F12:
    case F13:
    case F14:
    case F15:
    case F16:
    case F17:
    case F18:
    case F19:
    case F20:
    case F21:
    case F22:
    case F25:
    case F26:
    case F27:
    case F34:
    case F35:
    case F36:
    case F37:
    case F38:
    case F39:
    case F40:
    case F41:
    case F42:
    case F43:
    case F44:
    case F45:
    case F46:
    case STRING_SINGLEQUOTED:
    case STRING_DOUBLEQUOTED:
    case DOUBLE:
    case VARNAME:
      operator(buffer2);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ADD:
      case SUB:
      case MUL:
      case DIV:
      case MOD:
      case I_EG:
      case I_NE:
      case I_GE:
      case I_LE:
      case I_GT:
      case I_LT:
      case CAT:
      case EQ:
      case NE:
      case AND:
      case OR:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case I_EG:
        case I_NE:
        case I_GE:
        case I_LE:
        case I_GT:
        case I_LT:
          flag = arithmetic_comp(jsp_buffer,buffer2);
          break;
        case EQ:
        case NE:
          flag = string_comp(jsp_buffer,buffer2);
          break;
        case AND:
        case OR:
          flag = boolean_expr(jsp_buffer,buffer2,false);
          break;
        case ADD:
        case SUB:
        case MUL:
        case DIV:
        case MOD:
          flag = arithmetic_expr(jsp_buffer,buffer2);
          break;
        case CAT:
          flag = string_expr(jsp_buffer,buffer2);
          break;
        default:
          jj_la1[53] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[54] = jj_gen;
        ;
      }
                if (flag)
                {
                    /* special handling if expression is just a single operator */
                    jsp_buffer.append(buffer2.toString());
                }
      break;
    default:
      jj_la1[55] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

/* addition to ISML expression syntax rule */
  final public void operator(StringBuilder jsp_buffer) throws ParseException {
    if (jj_2_1(3)) {
      function(jsp_buffer);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case JSP_EMBEDDED_EXPRESSION:
        jsp_embedded_expression(jsp_buffer);
        break;
      case JSP_EMBEDDED_EL:
        jsp_embedded_el(jsp_buffer);
        break;
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case VARNAME:
        var(jsp_buffer);
        break;
      case ADD:
      case SUB:
      case STRING_SINGLEQUOTED:
      case STRING_DOUBLEQUOTED:
      case DOUBLE:
        constant(jsp_buffer);
        break;
      case BRACKET_OPEN:
        bracket(jsp_buffer);
        break;
      default:
        jj_la1[56] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

/* rule for arithmetic comparisation operations */
  final public boolean arithmetic_comp(StringBuilder jsp_buffer,StringBuilder buffer2) throws ParseException {
    Token op = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case I_EG:
      op = jj_consume_token(I_EG);
      break;
    case I_NE:
      op = jj_consume_token(I_NE);
      break;
    case I_GE:
      op = jj_consume_token(I_GE);
      break;
    case I_LE:
      op = jj_consume_token(I_LE);
      break;
    case I_GT:
      op = jj_consume_token(I_GT);
      break;
    case I_LT:
      op = jj_consume_token(I_LT);
      break;
    default:
      jj_la1[57] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
            jsp_buffer.append("((");
            /* String to double conversions not supported yet
                jsp_buffer.append(" ((("+buffer2+")instanceof Number)?
                jsp_buffer.append("(((Number) " + buffer2 + ").doubleValue()):");
                jsp_buffer.append("((Double.valueOf(context.getFormattedValue(" + buffer2 + ",null))).doubleValue())) " + op.toString());
            */
            jsp_buffer.append(" ((Number) " + buffer2 + ").doubleValue() " + op.toString());
             /* clearbuffer */
            buffer2.setLength(0);
    operator(buffer2);
        jsp_buffer.append("((Number)("+buffer2+")).doubleValue()) ? Boolean.TRUE : Boolean.FALSE)");
        {if (true) return false;} /* more than one operator */

    throw new Error("Missing return statement in function");
  }

/* rule for string comparisation operations */
  final public boolean string_comp(StringBuilder jsp_buffer,StringBuilder buffer2) throws ParseException {
    Token op = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQ:
      op = jj_consume_token(EQ);
      break;
    case NE:
      op = jj_consume_token(NE);
      break;
    default:
      jj_la1[58] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
            jsp_buffer.append("((");
            if (op.kind==NE)
            {
                jsp_buffer.append("!");
            }
            jsp_buffer.append("(context.getFormattedValue(" + buffer2 + ",null).equals(context.getFormattedValue(");
             /* clearbuffer */
            buffer2.setLength(0);
    operator(buffer2);
        jsp_buffer.append(buffer2 + ",null)))) ? Boolean.TRUE : Boolean.FALSE)");
        {if (true) return false;} /* more than one operator */

    throw new Error("Missing return statement in function");
  }

/* rule for arithmetic operations */
  final public boolean arithmetic_expr(StringBuilder jsp_buffer,StringBuilder buffer2) throws ParseException {
    int i = 0;
    Token op = null;
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ADD:
        op = jj_consume_token(ADD);
        break;
      case SUB:
        op = jj_consume_token(SUB);
        break;
      case MUL:
        op = jj_consume_token(MUL);
        break;
      case DIV:
        op = jj_consume_token(DIV);
        break;
      case MOD:
        op = jj_consume_token(MOD);
        break;
      default:
        jj_la1[59] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            if (i==0)
            {
                jsp_buffer.append("(Double.valueOf(");
            }
            /* String to double conversions not supported yet
                jsp_buffer.append(" ((("+buffer2+")instanceof Number)?
                jsp_buffer.append("(((Number) " + buffer2 + ").doubleValue()):");
                jsp_buffer.append("((Double.valueOf(context.getFormattedValue(" + buffer2 + ",null))).doubleValue())) " + op.toString());
            */
            jsp_buffer.append(" ((Number) " + buffer2 + ").doubleValue() " + op.toString());
            buffer2.setLength(0);
            i++;
      operator(buffer2);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ADD:
      case SUB:
      case MUL:
      case DIV:
      case MOD:
        ;
        break;
      default:
        jj_la1[60] = jj_gen;
        break label_11;
      }
    }
        jsp_buffer.append("((Number) " + buffer2 + ").doubleValue()))");
        {if (true) return false;} /* more than one operator */

    throw new Error("Missing return statement in function");
  }

/* rule for string operations */
  final public boolean string_expr(StringBuilder jsp_buffer,StringBuilder buffer2) throws ParseException {
    label_12:
    while (true) {
      jj_consume_token(CAT);
            jsp_buffer.append("context.getFormattedValue(" + buffer2 + ",null) + ");
            buffer2.setLength(0);
      operator(buffer2);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CAT:
        ;
        break;
      default:
        jj_la1[61] = jj_gen;
        break label_12;
      }
    }
        jsp_buffer.append("context.getFormattedValue(" + buffer2 + ",null)");
        {if (true) return false;} /* more than one operator */

    throw new Error("Missing return statement in function");
  }

/* rule for boolean operations */
  final public boolean boolean_expr(StringBuilder jsp_buffer,StringBuilder buffer2,boolean notSwitch) throws ParseException {
    int i = 0;
    Token op = null;
    label_13:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AND:
        op = jj_consume_token(AND);
        break;
      case OR:
        op = jj_consume_token(OR);
        break;
      default:
        jj_la1[62] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            if (i==0)
            {
                jsp_buffer.append("((");
            }
            if (notSwitch)
            {
                jsp_buffer.append("!");
            }
            jsp_buffer.append("Boolean.parseBoolean(String.valueOf(" + buffer2 + ")) ");
            jsp_buffer.append((op.kind==AND)?"&& ":"|| ");
             /* clearbuffer */
            buffer2.setLength(0);
            notSwitch = false;
            i=1;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOT:
        jj_consume_token(NOT);
                notSwitch = true;
        break;
      default:
        jj_la1[63] = jj_gen;
        ;
      }
      operator(buffer2);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AND:
      case OR:
        ;
        break;
      default:
        jj_la1[64] = jj_gen;
        break label_13;
      }
    }
        if (notSwitch)
        {
            jsp_buffer.append("!");
        }
        jsp_buffer.append("Boolean.valueOf(String.valueOf(" + buffer2 + "))))");
        {if (true) return false;} /* more than one operator */

    throw new Error("Missing return statement in function");
  }

/* rule for paranthising */
  final public void bracket(StringBuilder jsp_buffer) throws ParseException {
    jj_consume_token(BRACKET_OPEN);
        jsp_buffer.append("(");
    is_expression(jsp_buffer);
    jj_consume_token(BRACKET_CLOSE);
        jsp_buffer.append(")");
  }

/* rules for ISML expression constants */
  final public void constant(StringBuilder jsp_buffer) throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_SINGLEQUOTED:
    case STRING_DOUBLEQUOTED:
      stringConstant(jsp_buffer);
      break;
    case ADD:
    case SUB:
    case DOUBLE:
      numberConstant(jsp_buffer);
      break;
    default:
      jj_la1[65] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  final public void stringConstant(StringBuilder jsp_buffer) throws ParseException {
    Token value = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_SINGLEQUOTED:
      value = jj_consume_token(STRING_SINGLEQUOTED);
      break;
    case STRING_DOUBLEQUOTED:
      value = jj_consume_token(STRING_DOUBLEQUOTED);
      break;
    default:
      jj_la1[66] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        boolean hasPreviousSlash = false;
        boolean hasPreviousQuote = false;
        char currentChar;
        String stringValue = value.toString();

        jsp_buffer.append('\u005c"');

        for (int i=1; i<(stringValue.length()-1); i++)
        {
            currentChar = stringValue.charAt(i);

            // handling of special characters
            switch (currentChar)
            {
                case '\u005c\u005c':
                    hasPreviousSlash = !hasPreviousSlash;
                    jsp_buffer.append('\u005c\u005c');
                    break;
                case 'd':
                    if (hasPreviousSlash)
                    {
                        jsp_buffer.append('\u005c"');
                        hasPreviousSlash = false;
                    }
                    else
                    {
                        jsp_buffer.append('d');
                    }
                    break;
                case 's':
                    if (hasPreviousSlash)
                    {
                        jsp_buffer.append('\u005c'');
                        hasPreviousSlash = false;
                    }
                    else
                    {
                        jsp_buffer.append('s');
                    }
                    break;
                case '\u005c'':
                    if (value.kind == STRING_SINGLEQUOTED)
                    {
                        if (hasPreviousQuote)
                        {
                            jsp_buffer.append('\u005c\u005c');
                            jsp_buffer.append('\u005c'');
                            hasPreviousQuote = false;
                        }
                        else if (hasPreviousSlash)
                        {
                            jsp_buffer.append('\u005c'');
                            hasPreviousSlash = false;
                        }
                        else
                        {
                            hasPreviousQuote = true;
                        }
                    }
                    else
                    {
                        if (hasPreviousSlash)
                        {
                            jsp_buffer.append('\u005c'');
                            hasPreviousSlash = false;
                        }
                        else
                        {
                            jsp_buffer.append('\u005c\u005c');
                            jsp_buffer.append('\u005c'');
                        }
                    }
                    break;
                case '\u005c"':
                    if (value.kind == STRING_DOUBLEQUOTED)
                    {
                        if (hasPreviousQuote)
                        {
                            jsp_buffer.append('\u005c\u005c');
                            jsp_buffer.append('\u005c"');
                            hasPreviousQuote = false;
                        }
                        else if (hasPreviousSlash)
                        {
                            jsp_buffer.append('\u005c"');
                            hasPreviousSlash = false;
                        }
                        else
                        {
                            hasPreviousQuote = true;
                        }
                    }
                    else
                    {
                        if (hasPreviousSlash)
                        {
                            jsp_buffer.append('\u005c"');
                            hasPreviousSlash = false;
                        }
                        else
                        {
                            jsp_buffer.append('\u005c\u005c');
                            jsp_buffer.append('\u005c"');
                        }
                    }
                    break;
                default:
                    jsp_buffer.append(currentChar);
                    hasPreviousSlash = false;
                    hasPreviousQuote = false;
            }
        }
        jsp_buffer.append('\u005c"');
  }

  final public void numberConstant(StringBuilder jsp_buffer) throws ParseException {
    Token value = null;
    Token sign  = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ADD:
    case SUB:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ADD:
        sign = jj_consume_token(ADD);
        break;
      case SUB:
        sign = jj_consume_token(SUB);
        break;
      default:
        jj_la1[67] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[68] = jj_gen;
      ;
    }
    value = jj_consume_token(DOUBLE);
        if (sign==null)
        {
            jsp_buffer.append("Double.valueOf(" + value + ")");
        }
        else
        {
            jsp_buffer.append("Double.valueOf(" + sign + value + ")");
        }
  }

/* rule for ISML expression functions */
  final public void function(StringBuilder jsp_buffer) throws ParseException {
    Token value = null;
    StringBuilder buffer = null;
    boolean flag = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case F1:
      jj_consume_token(F1);
      jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("(hasLoopElements(\u005c"");
      var_name(jsp_buffer);
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("\u005c") ? Boolean.TRUE : Boolean.FALSE)");
      break;
    case F2:
      jj_consume_token(F2);
      jj_consume_token(BRACKET_OPEN);
      jj_consume_token(BRACKET_CLOSE);
            jsp_buffer.append("isSSSenabled()");
      break;
    case F3:
      jj_consume_token(F3);
      jj_consume_token(BRACKET_OPEN);
                // getHeader
                jsp_buffer.append("(request.getHeader(context.getFormattedValue(");
      is_expression(jsp_buffer);
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null)))");
      break;
    case F4:
      jj_consume_token(F4);
      jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("context.getFormattedValue(");
                value = null;
      is_expression(jsp_buffer);
                jsp_buffer.append(',');
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        jj_consume_token(COMMA);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case F1:
        case F2:
        case F3:
        case F4:
        case F5:
        case F6:
        case F7:
        case F8:
        case F9:
        case F10:
        case F11:
        case F12:
        case F13:
        case F14:
        case F15:
        case F16:
        case F17:
        case F18:
        case F19:
        case F20:
        case F21:
        case F22:
        case F25:
        case F26:
        case F27:
        case F34:
        case F35:
        case F36:
        case F37:
        case F38:
        case F39:
        case F40:
        case F41:
        case F42:
        case F43:
        case F44:
        case F45:
        case F46:
        case STRING_SINGLEQUOTED:
        case STRING_DOUBLEQUOTED:
        case VARNAME:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case STRING_SINGLEQUOTED:
          case STRING_DOUBLEQUOTED:
            stringConstant(jsp_buffer);
                        flag =true;
            break;
          case F1:
          case F2:
          case F3:
          case F4:
          case F5:
          case F6:
          case F7:
          case F8:
          case F9:
          case F10:
          case F11:
          case F12:
          case F13:
          case F14:
          case F15:
          case F16:
          case F17:
          case F18:
          case F19:
          case F20:
          case F21:
          case F22:
          case F25:
          case F26:
          case F27:
          case F34:
          case F35:
          case F36:
          case F37:
          case F38:
          case F39:
          case F40:
          case F41:
          case F42:
          case F43:
          case F44:
          case F45:
          case F46:
          case VARNAME:
            value = varName();
                        jsp_buffer.append("Integer.valueOf(");
                        jsp_buffer.append(value.toString());
                        jsp_buffer.append(')');
                        flag =true;
            break;
          default:
            jj_la1[69] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[70] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
                        jsp_buffer.append(',');
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case STRING_SINGLEQUOTED:
          case STRING_DOUBLEQUOTED:
            stringConstant(jsp_buffer);
                             flag =true;
            break;
          default:
            jj_la1[71] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[72] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[73] = jj_gen;
        ;
      }
      jj_consume_token(BRACKET_CLOSE);
                if (!flag)
                {
                    jsp_buffer.append("null");
                }
                jsp_buffer.append(')');
      break;
    case F5:
      jj_consume_token(F5);
      jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(true,");

                buffer = new StringBuilder();
      is_action(jsp_buffer);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        jj_consume_token(COMMA);
        is_expression(buffer);
                    jsp_buffer.append(",(new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
        label_14:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[74] = jj_gen;
            break label_14;
          }
          jj_consume_token(COMMA);
          is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
        }
        break;
      default:
        jj_la1[75] = jj_gen;
        ;
      }
      jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
      break;
    default:
      jj_la1[99] = jj_gen;
      if (jj_2_2(3)) {
        jj_consume_token(F27);
        jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("executePipeline(");

                buffer = new StringBuilder();
        stringConstant(jsp_buffer);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
          is_expression(buffer);
                    jsp_buffer.append(",(new URLParameterSet().addURLParameter(new URLParameter(" + buffer + ")))");
                    buffer.setLength(0);
          label_15:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[76] = jj_gen;
              break label_15;
            }
            jj_consume_token(COMMA);
            is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(new URLParameter(" + buffer + "))");
                        buffer.setLength(0);
          }
          break;
        default:
          jj_la1[77] = jj_gen;
          ;
        }
        jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(',');
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case F25:
          jj_consume_token(F25);
          jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(false,");

                buffer = new StringBuilder();
          is_action(jsp_buffer);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            jj_consume_token(COMMA);
            is_expression(buffer);
                    jsp_buffer.append(",(new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
            label_16:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                ;
                break;
              default:
                jj_la1[78] = jj_gen;
                break label_16;
              }
              jj_consume_token(COMMA);
              is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
            }
            break;
          default:
            jj_la1[79] = jj_gen;
            ;
          }
          jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
          break;
        default:
          jj_la1[100] = jj_gen;
          if (jj_2_3(8)) {
            jj_consume_token(F6);
            jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(true,");

                buffer = new StringBuilder();
            is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
            jj_consume_token(COMMA);
            is_expression(buffer);
                // parameter host
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
            jj_consume_token(COMMA);
            is_expression(buffer);
                // parameter port
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
            jj_consume_token(COMMA);
            is_action(buffer);
                // parameter action
                jsp_buffer.append(", " + buffer);
                buffer.setLength(0);
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              jj_consume_token(COMMA);
              is_expression(buffer);
                    jsp_buffer.append(", (new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
              label_17:
              while (true) {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  ;
                  break;
                default:
                  jj_la1[80] = jj_gen;
                  break label_17;
                }
                jj_consume_token(COMMA);
                is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
              }
              break;
            default:
              jj_la1[81] = jj_gen;
              ;
            }
            jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case F6:
              jj_consume_token(F6);
              jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(true,");

                buffer = new StringBuilder();
              is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
              jj_consume_token(COMMA);
              is_expression(buffer);
                // parameter port
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
              jj_consume_token(COMMA);
              is_action(buffer);
                // parameter action
                jsp_buffer.append(", " + buffer);
                buffer.setLength(0);
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                jj_consume_token(COMMA);
                is_expression(buffer);
                    jsp_buffer.append(", (new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
                label_18:
                while (true) {
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                    ;
                    break;
                  default:
                    jj_la1[82] = jj_gen;
                    break label_18;
                  }
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
                }
                break;
              default:
                jj_la1[83] = jj_gen;
                ;
              }
              jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
              break;
            default:
              jj_la1[101] = jj_gen;
              if (jj_2_4(8)) {
                jj_consume_token(F26);
                jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(false,");

                buffer = new StringBuilder();
                is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                jj_consume_token(COMMA);
                is_expression(buffer);
                // parameter host
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                jj_consume_token(COMMA);
                is_expression(buffer);
                // parameter port
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                jj_consume_token(COMMA);
                is_action(buffer);
                // parameter action
                jsp_buffer.append(", " + buffer);
                buffer.setLength(0);
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                    jsp_buffer.append(", (new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
                  label_19:
                  while (true) {
                    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                    case COMMA:
                      ;
                      break;
                    default:
                      jj_la1[84] = jj_gen;
                      break label_19;
                    }
                    jj_consume_token(COMMA);
                    is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
                  }
                  break;
                default:
                  jj_la1[85] = jj_gen;
                  ;
                }
                jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
              } else {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case F26:
                  jj_consume_token(F26);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("url(false,");

                buffer = new StringBuilder();
                  is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter port
                jsp_buffer.append(", context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_action(buffer);
                // parameter action
                jsp_buffer.append(", " + buffer);
                buffer.setLength(0);
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                    jj_consume_token(COMMA);
                    is_expression(buffer);
                    jsp_buffer.append(", (new URLParameterSet().addURLParameter(" + buffer + "))");
                    buffer.setLength(0);
                    label_20:
                    while (true) {
                      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                      case COMMA:
                        ;
                        break;
                      default:
                        jj_la1[86] = jj_gen;
                        break label_20;
                      }
                      jj_consume_token(COMMA);
                      is_expression(buffer);
                        jsp_buffer.append(".addURLParameter(" + buffer + ")");
                        buffer.setLength(0);
                    }
                    break;
                  default:
                    jj_la1[87] = jj_gen;
                    ;
                  }
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F8:
                  jj_consume_token(F8);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null),context.getFormattedValue(");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null)");
                  break;
                case F9:
                  jj_consume_token(F9);
                  jj_consume_token(BRACKET_OPEN);
            jsp_buffer.append("context.webRoot(");
            buffer = new StringBuilder();
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case BRACKET_OPEN:
                  case JSP_EMBEDDED_EXPRESSION:
                  case JSP_EMBEDDED_EL:
                  case ADD:
                  case SUB:
                  case NOT:
                  case F1:
                  case F2:
                  case F3:
                  case F4:
                  case F5:
                  case F6:
                  case F7:
                  case F8:
                  case F9:
                  case F10:
                  case F11:
                  case F12:
                  case F13:
                  case F14:
                  case F15:
                  case F16:
                  case F17:
                  case F18:
                  case F19:
                  case F20:
                  case F21:
                  case F22:
                  case F25:
                  case F26:
                  case F27:
                  case F34:
                  case F35:
                  case F36:
                  case F37:
                  case F38:
                  case F39:
                  case F40:
                  case F41:
                  case F42:
                  case F43:
                  case F44:
                  case F45:
                  case F46:
                  case STRING_SINGLEQUOTED:
                  case STRING_DOUBLEQUOTED:
                  case DOUBLE:
                  case VARNAME:
                    is_expression(buffer);
                // optional parameter server group
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                    jj_consume_token(COMMA);
                    is_expression(buffer);
                    // optional parameter locale ID
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
                    break;
                  default:
                    jj_la1[88] = jj_gen;
                    ;
                  }
                  jj_consume_token(BRACKET_CLOSE);
            jsp_buffer.append(")");
                  break;
                case F10:
                  jj_consume_token(F10);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("(disableErrorMessages().isDefined(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
                  break;
                case F11:
                  jj_consume_token(F11);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("stringToHtml(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null))");
                  break;
                case F12:
                  jj_consume_token(F12);
                  jj_consume_token(BRACKET_OPEN);
                // pad
                jsp_buffer.append("pad(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null),((Number)(");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")).intValue())");
                  break;
                case F13:
                  jj_consume_token(F13);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("stringToXml(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null))");
                  break;
                case F14:
                  jj_consume_token(F14);
                  jj_consume_token(BRACKET_OPEN);
                // trim
                jsp_buffer.append("(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null).trim())");
                  break;
                case F15:
                  jj_consume_token(F15);
                  jj_consume_token(BRACKET_OPEN);
                // lcase
                jsp_buffer.append("(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null).toLowerCase())");
                  break;
                case F16:
                  jj_consume_token(F16);
                  jj_consume_token(BRACKET_OPEN);
                // ucase
                jsp_buffer.append("(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null).toUpperCase())");
                  break;
                case F17:
                  jj_consume_token(F17);
                  jj_consume_token(BRACKET_OPEN);
                // len
                jsp_buffer.append("(Double.valueOf(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null).length()))");
                  break;
                case F18:
                  jj_consume_token(F18);
                  jj_consume_token(BRACKET_OPEN);
                // val
                jsp_buffer.append("(val(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null)))");
                  break;
                case F19:
                  jj_consume_token(F19);
                  jj_consume_token(BRACKET_OPEN);
                // getCookie
                jsp_buffer.append("(getCookieValue(request,context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null)))");
                  break;
                case F21:
                  jj_consume_token(F21);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("contentURL(");

                buffer = new StringBuilder();
                  is_expression(buffer);
                // parameter file name
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                    jj_consume_token(COMMA);
                    is_expression(buffer);
                    // optional parameter locale ID
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
                    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                    case COMMA:
                      jj_consume_token(COMMA);
                      is_expression(buffer);
                    // optional parameter locale ID
                    jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                    buffer.setLength(0);
                      break;
                    default:
                      jj_la1[89] = jj_gen;
                      ;
                    }
                    break;
                  default:
                    jj_la1[90] = jj_gen;
                    ;
                  }
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F34:
                  jj_consume_token(F34);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("(hasNext(\u005c"");
                  var_name(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("\u005c") ? Boolean.TRUE : Boolean.FALSE)");
                  break;
                case F35:
                  jj_consume_token(F35);
                  jj_consume_token(BRACKET_OPEN);
                // replace
                jsp_buffer.append("replace(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null),(String)(");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                jsp_buffer.append("),(String)(");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
                  break;
                case F36:
                  jj_consume_token(F36);
                  jj_consume_token(BRACKET_OPEN);
                // split
                jsp_buffer.append("split(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null),(String)(");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append("))");
                  break;
                case F37:
                  jj_consume_token(F37);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("existsTemplate(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null))");
                  break;
                case F38:
                  jj_consume_token(F38);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("context.webRoot(");

                buffer = new StringBuilder();
                  is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter host
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter port
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter server group
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter locale id
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F39:
                  jj_consume_token(F39);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("context.contentURL(");

                buffer = new StringBuilder();
                  is_expression(buffer);
                // parameter protocol
                jsp_buffer.append("context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter host
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter port
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter server group
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter locale id
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(COMMA);
                  is_expression(buffer);
                // parameter content ref
                jsp_buffer.append(",context.getFormattedValue(" + buffer + ",null)");
                buffer.setLength(0);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F40:
                  jj_consume_token(F40);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("(");
                buffer = new StringBuilder();
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case BRACKET_OPEN:
                  case JSP_EMBEDDED_EXPRESSION:
                  case JSP_EMBEDDED_EL:
                  case ADD:
                  case SUB:
                  case NOT:
                  case F1:
                  case F2:
                  case F3:
                  case F4:
                  case F5:
                  case F6:
                  case F7:
                  case F8:
                  case F9:
                  case F10:
                  case F11:
                  case F12:
                  case F13:
                  case F14:
                  case F15:
                  case F16:
                  case F17:
                  case F18:
                  case F19:
                  case F20:
                  case F21:
                  case F22:
                  case F25:
                  case F26:
                  case F27:
                  case F34:
                  case F35:
                  case F36:
                  case F37:
                  case F38:
                  case F39:
                  case F40:
                  case F41:
                  case F42:
                  case F43:
                  case F44:
                  case F45:
                  case F46:
                  case STRING_SINGLEQUOTED:
                  case STRING_DOUBLEQUOTED:
                  case DOUBLE:
                  case VARNAME:
                    is_expression(buffer);
                    jsp_buffer.append("(new ParameterMap().addParameter(" + buffer + "))");
                    buffer.setLength(0);
                    label_21:
                    while (true) {
                      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                      case COMMA:
                        ;
                        break;
                      default:
                        jj_la1[91] = jj_gen;
                        break label_21;
                      }
                      jj_consume_token(COMMA);
                      is_expression(buffer);
                        jsp_buffer.append(".addParameter(" + buffer + ")");
                        buffer.setLength(0);
                    }
                    break;
                  default:
                    jj_la1[92] = jj_gen;
                    ;
                  }
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F41:
                  jj_consume_token(F41);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("new ParameterEntry(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(")");
                  break;
                case F42:
                  jj_consume_token(F42);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("getTemplateSourceLocation(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                  jj_consume_token(BRACKET_CLOSE);
                jsp_buffer.append(",null))");
                  break;
                case F43:
                  jj_consume_token(F43);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("localizeText(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null)");
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                //optional parameter locale 
                jsp_buffer.append(",");
                    jj_consume_token(COMMA);
                    is_expression(jsp_buffer);
                    break;
                  default:
                    jj_la1[93] = jj_gen;
                    ;
                  }
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                //optional parameter domain-site
                jsp_buffer.append(",");
                    jj_consume_token(COMMA);
                    is_expression(jsp_buffer);
                    break;
                  default:
                    jj_la1[94] = jj_gen;
                    ;
                  }
                jsp_buffer.append(")");
                  jj_consume_token(BRACKET_CLOSE);
                  break;
                case F44:
                  jj_consume_token(F44);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("localizeTextEx(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null),");
                  jj_consume_token(COMMA);
                  is_expression(jsp_buffer);
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                //optional parameter locale 
                jsp_buffer.append(",");
                    jj_consume_token(COMMA);
                    is_expression(jsp_buffer);
                    break;
                  default:
                    jj_la1[95] = jj_gen;
                    ;
                  }
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                //optional parameter domain-site
                jsp_buffer.append(",");
                    jj_consume_token(COMMA);
                    is_expression(jsp_buffer);
                    break;
                  default:
                    jj_la1[96] = jj_gen;
                    ;
                  }
                jsp_buffer.append(")");
                  jj_consume_token(BRACKET_CLOSE);
                  break;
                case F45:
                  jj_consume_token(F45);
                  jj_consume_token(BRACKET_OPEN);
                buffer = new StringBuilder();
                  is_expression(buffer);
                    jsp_buffer.append("new ParameterList().addParameter(" + buffer + ")");
                    buffer.setLength(0);
                  label_22:
                  while (true) {
                    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                    case COMMA:
                      ;
                      break;
                    default:
                      jj_la1[97] = jj_gen;
                      break label_22;
                    }
                    jj_consume_token(COMMA);
                    is_expression(buffer);
                        jsp_buffer.append(".addParameter(" + buffer + ")");
                        buffer.setLength(0);
                  }
                  jj_consume_token(BRACKET_CLOSE);
                  break;
                case F46:
                  jj_consume_token(F46);
                  jj_consume_token(BRACKET_OPEN);
                jsp_buffer.append("encodeString(context.getFormattedValue(");
                  is_expression(jsp_buffer);
                jsp_buffer.append(",null)");
                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                  case COMMA:
                //optional parameter encoding 
                jsp_buffer.append(",(String)(");
                    jj_consume_token(COMMA);
                    is_expression(jsp_buffer);
                jsp_buffer.append(")");
                    break;
                  default:
                    jj_la1[98] = jj_gen;
                    ;
                  }
                jsp_buffer.append(")");
                  jj_consume_token(BRACKET_CLOSE);
                  break;
                case VARNAME:
                  userDefinedFunction(jsp_buffer);
                  break;
                default:
                  jj_la1[102] = jj_gen;
                  jj_consume_token(-1);
                  throw new ParseException();
                }
              }
            }
          }
        }
      }
    }
  }

  final public void userDefinedFunction(StringBuilder jsp_buffer) throws ParseException {
  Token name = null;
  StringBuilder buffer = null;
    name = jj_consume_token(VARNAME);
    jj_consume_token(BRACKET_OPEN);
                                jsp_buffer.append("customFunction(\u005c"");
                        jsp_buffer.append(name);
                        jsp_buffer.append("\u005c"");
    label_23:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BRACKET_OPEN:
      case JSP_EMBEDDED_EXPRESSION:
      case JSP_EMBEDDED_EL:
      case ADD:
      case SUB:
      case NOT:
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case STRING_SINGLEQUOTED:
      case STRING_DOUBLEQUOTED:
      case DOUBLE:
      case VARNAME:
        ;
        break;
      default:
        jj_la1[103] = jj_gen;
        break label_23;
      }
                                  jsp_buffer.append(",");
      is_expression(jsp_buffer);
      label_24:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[104] = jj_gen;
          break label_24;
        }
                                                jsp_buffer.append(",");
        jj_consume_token(COMMA);
        is_expression(jsp_buffer);
      }
    }
                           jsp_buffer.append(")");
    jj_consume_token(BRACKET_CLOSE);
  }

/* rule for embedded JSP expressions */
  final public void jsp_embedded_expression(StringBuilder jsp_buffer) throws ParseException {
    Token exp = null;
    exp = jj_consume_token(JSP_EMBEDDED_EXPRESSION);
        jsp_buffer.append(SCRIPTING_END);
        jsp_buffer.append(SCRIPTING_START);
        // remove <%= %>
        String ex = exp.toString();
        jsp_buffer.append(ex.substring(3, ex.length() - 2));
        jsp_buffer.append(SCRIPTING_END);
        jsp_buffer.append(SCRIPTING_START);
  }

/* rule for embedded JSP expression language */
  final public void jsp_embedded_el(StringBuilder jsp_buffer) throws ParseException {
    Token exp = null;
    exp = jj_consume_token(JSP_EMBEDDED_EL);
        // pass simply through as JSP EL like ${}
        jsp_buffer.append("pageContext.getExpressionEvaluator().evaluate(\u005c"");

        // escape any double quotes within the in EL expression
        String el = exp.toString();
        for (int i = 0; i < el.length(); i++)
        {
                char ch = el.charAt(i);
                if (ch == '"')
                {
                        jsp_buffer.append('\u005c\u005c');
                    }
                jsp_buffer.append(ch);
            }

        jsp_buffer.append("\u005c", Object.class, pageContext.getVariableResolver(), null)");
  }

/* rule for ISML expression variables */
  final public void var(StringBuilder jsp_buffer) throws ParseException {
            jsp_buffer.append("getObject(\u005c"");
    var_name(jsp_buffer);
            jsp_buffer.append("\u005c")");
  }

  final public void var_name(StringBuilder jsp_buffer) throws ParseException {
    Token varname = null;
    varname = varName();
        jsp_buffer.append(varname);
    label_25:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COLON:
        ;
        break;
      default:
        jj_la1[105] = jj_gen;
        break label_25;
      }
      if (jj_2_5(3)) {
        jj_consume_token(COLON);
        varname = varName();
        jj_consume_token(BRACKET_OPEN);
                      jsp_buffer.append(':');
                      jsp_buffer.append(varname);
                      jsp_buffer.append('(');
        path_parameter(jsp_buffer);
        jj_consume_token(BRACKET_CLOSE);
                      jsp_buffer.append(')');
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COLON:
          jj_consume_token(COLON);
          varname = varName();
                  jsp_buffer.append(':');
                  jsp_buffer.append(varname);
          break;
        default:
          jj_la1[106] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
  }

  final public Token varName() throws ParseException {
        Token varname = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case VARNAME:
      varname = jj_consume_token(VARNAME);
      break;
    case F1:
      varname = jj_consume_token(F1);
      break;
    case F2:
      varname = jj_consume_token(F2);
      break;
    case F3:
      varname = jj_consume_token(F3);
      break;
    case F4:
      varname = jj_consume_token(F4);
      break;
    case F5:
      varname = jj_consume_token(F5);
      break;
    case F6:
      varname = jj_consume_token(F6);
      break;
    case F7:
      varname = jj_consume_token(F7);
      break;
    case F8:
      varname = jj_consume_token(F8);
      break;
    case F9:
      varname = jj_consume_token(F9);
      break;
    case F10:
      varname = jj_consume_token(F10);
      break;
    case F11:
      varname = jj_consume_token(F11);
      break;
    case F12:
      varname = jj_consume_token(F12);
      break;
    case F13:
      varname = jj_consume_token(F13);
      break;
    case F14:
      varname = jj_consume_token(F14);
      break;
    case F15:
      varname = jj_consume_token(F15);
      break;
    case F16:
      varname = jj_consume_token(F16);
      break;
    case F17:
      varname = jj_consume_token(F17);
      break;
    case F18:
      varname = jj_consume_token(F18);
      break;
    case F19:
      varname = jj_consume_token(F19);
      break;
    case F20:
      varname = jj_consume_token(F20);
      break;
    case F21:
      varname = jj_consume_token(F21);
      break;
    case F22:
      varname = jj_consume_token(F22);
      break;
    case F25:
      varname = jj_consume_token(F25);
      break;
    case F26:
      varname = jj_consume_token(F26);
      break;
    case F27:
      varname = jj_consume_token(F27);
      break;
    case F34:
      varname = jj_consume_token(F34);
      break;
    case F35:
      varname = jj_consume_token(F35);
      break;
    case F36:
      varname = jj_consume_token(F36);
      break;
    case F37:
      varname = jj_consume_token(F37);
      break;
    case F38:
      varname = jj_consume_token(F38);
      break;
    case F39:
      varname = jj_consume_token(F39);
      break;
    case F40:
      varname = jj_consume_token(F40);
      break;
    case F41:
      varname = jj_consume_token(F41);
      break;
    case F42:
      varname = jj_consume_token(F42);
      break;
    case F43:
      varname = jj_consume_token(F43);
      break;
    case F44:
      varname = jj_consume_token(F44);
      break;
    case F45:
      varname = jj_consume_token(F45);
      break;
    case F46:
      varname = jj_consume_token(F46);
      break;
    default:
      jj_la1[107] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
            {if (true) return varname;}
    throw new Error("Missing return statement in function");
  }

/* rule for parameter in ISML object path */
  final public void path_parameter(StringBuilder jsp_buffer) throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_DOUBLEQUOTED:
      path_constant(jsp_buffer);
      break;
    case F1:
    case F2:
    case F3:
    case F4:
    case F5:
    case F6:
    case F7:
    case F8:
    case F9:
    case F10:
    case F11:
    case F12:
    case F13:
    case F14:
    case F15:
    case F16:
    case F17:
    case F18:
    case F19:
    case F20:
    case F21:
    case F22:
    case F25:
    case F26:
    case F27:
    case F34:
    case F35:
    case F36:
    case F37:
    case F38:
    case F39:
    case F40:
    case F41:
    case F42:
    case F43:
    case F44:
    case F45:
    case F46:
    case VARNAME:
      var_name(jsp_buffer);
      break;
    default:
      jj_la1[108] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    label_26:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[109] = jj_gen;
        break label_26;
      }
      jj_consume_token(COMMA);
                               jsp_buffer.append(',');
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STRING_DOUBLEQUOTED:
        path_constant(jsp_buffer);
        break;
      case F1:
      case F2:
      case F3:
      case F4:
      case F5:
      case F6:
      case F7:
      case F8:
      case F9:
      case F10:
      case F11:
      case F12:
      case F13:
      case F14:
      case F15:
      case F16:
      case F17:
      case F18:
      case F19:
      case F20:
      case F21:
      case F22:
      case F25:
      case F26:
      case F27:
      case F34:
      case F35:
      case F36:
      case F37:
      case F38:
      case F39:
      case F40:
      case F41:
      case F42:
      case F43:
      case F44:
      case F45:
      case F46:
      case VARNAME:
        var_name(jsp_buffer);
        break;
      default:
        jj_la1[110] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

/* rule for constant parameters in ISML object path */
  final public void path_constant(StringBuilder jsp_buffer) throws ParseException {
    Token value = null;
    value = jj_consume_token(STRING_DOUBLEQUOTED);
        String stringValue = value.toString();

        jsp_buffer.append('\u005c\u005c');
        jsp_buffer.append('\u005c"');

        // the constant value without the quotes
        jsp_buffer.append(stringValue.substring(1, stringValue.length() - 1));
        jsp_buffer.append('\u005c\u005c');
        jsp_buffer.append('\u005c"');
  }

  private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_1(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(0, xla); }
  }

  private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_2(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(1, xla); }
  }

  private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_3(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(2, xla); }
  }

  private boolean jj_2_4(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_4(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(3, xla); }
  }

  private boolean jj_2_5(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_5(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(4, xla); }
  }

  private boolean jj_3R_120() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_133()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_50() {
    if (jj_scan_token(F19)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_92() {
    if (jj_scan_token(JSP_EMBEDDED_EL)) return true;
    return false;
  }

  private boolean jj_3_1() {
    if (jj_3R_27()) return true;
    return false;
  }

  private boolean jj_3R_73() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_1()) {
    jj_scanpos = xsp;
    if (jj_3R_80()) {
    jj_scanpos = xsp;
    if (jj_3R_81()) {
    jj_scanpos = xsp;
    if (jj_3R_82()) {
    jj_scanpos = xsp;
    if (jj_3R_83()) {
    jj_scanpos = xsp;
    if (jj_3R_84()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_131() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_127() {
    if (jj_3R_30()) return true;
    return false;
  }

  private boolean jj_3R_49() {
    if (jj_scan_token(F18)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_90() {
    if (jj_3R_100()) return true;
    return false;
  }

  private boolean jj_3R_126() {
    if (jj_3R_28()) return true;
    return false;
  }

  private boolean jj_3R_89() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_119() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_126()) {
    jj_scanpos = xsp;
    if (jj_3R_127()) return true;
    }
    return false;
  }

  private boolean jj_3R_88() {
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_87() {
    if (jj_3R_98()) return true;
    return false;
  }

  private boolean jj_3R_86() {
    if (jj_3R_97()) return true;
    return false;
  }

  private boolean jj_3R_75() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_86()) {
    jj_scanpos = xsp;
    if (jj_3R_87()) {
    jj_scanpos = xsp;
    if (jj_3R_88()) {
    jj_scanpos = xsp;
    if (jj_3R_89()) {
    jj_scanpos = xsp;
    if (jj_3R_90()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_106() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_119()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_120()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_48() {
    if (jj_scan_token(F17)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_91() {
    if (jj_scan_token(JSP_EMBEDDED_EXPRESSION)) return true;
    return false;
  }

  private boolean jj_3R_79() {
    if (jj_3R_29()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_131()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_67() {
    if (jj_3R_73()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_75()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_74() {
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_47() {
    if (jj_scan_token(F16)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_34() {
    if (jj_scan_token(F4)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_106()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_66() {
    if (jj_scan_token(NOT)) return true;
    if (jj_3R_73()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_74()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_29() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_66()) {
    jj_scanpos = xsp;
    if (jj_3R_67()) return true;
    }
    return false;
  }

  private boolean jj_3R_46() {
    if (jj_scan_token(F15)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_33() {
    if (jj_scan_token(F3)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_32() {
    if (jj_scan_token(F2)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_45() {
    if (jj_scan_token(F14)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_72() {
    if (jj_scan_token(VARNAME)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_79()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_31() {
    if (jj_scan_token(F1)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_68()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_44() {
    if (jj_scan_token(F13)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_27() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_31()) {
    jj_scanpos = xsp;
    if (jj_3R_32()) {
    jj_scanpos = xsp;
    if (jj_3R_33()) {
    jj_scanpos = xsp;
    if (jj_3R_34()) {
    jj_scanpos = xsp;
    if (jj_3R_35()) {
    jj_scanpos = xsp;
    if (jj_3_2()) {
    jj_scanpos = xsp;
    if (jj_3R_36()) {
    jj_scanpos = xsp;
    if (jj_3_3()) {
    jj_scanpos = xsp;
    if (jj_3R_37()) {
    jj_scanpos = xsp;
    if (jj_3_4()) {
    jj_scanpos = xsp;
    if (jj_3R_38()) {
    jj_scanpos = xsp;
    if (jj_3R_39()) {
    jj_scanpos = xsp;
    if (jj_3R_40()) {
    jj_scanpos = xsp;
    if (jj_3R_41()) {
    jj_scanpos = xsp;
    if (jj_3R_42()) {
    jj_scanpos = xsp;
    if (jj_3R_43()) {
    jj_scanpos = xsp;
    if (jj_3R_44()) {
    jj_scanpos = xsp;
    if (jj_3R_45()) {
    jj_scanpos = xsp;
    if (jj_3R_46()) {
    jj_scanpos = xsp;
    if (jj_3R_47()) {
    jj_scanpos = xsp;
    if (jj_3R_48()) {
    jj_scanpos = xsp;
    if (jj_3R_49()) {
    jj_scanpos = xsp;
    if (jj_3R_50()) {
    jj_scanpos = xsp;
    if (jj_3R_51()) {
    jj_scanpos = xsp;
    if (jj_3R_52()) {
    jj_scanpos = xsp;
    if (jj_3R_53()) {
    jj_scanpos = xsp;
    if (jj_3R_54()) {
    jj_scanpos = xsp;
    if (jj_3R_55()) {
    jj_scanpos = xsp;
    if (jj_3R_56()) {
    jj_scanpos = xsp;
    if (jj_3R_57()) {
    jj_scanpos = xsp;
    if (jj_3R_58()) {
    jj_scanpos = xsp;
    if (jj_3R_59()) {
    jj_scanpos = xsp;
    if (jj_3R_60()) {
    jj_scanpos = xsp;
    if (jj_3R_61()) {
    jj_scanpos = xsp;
    if (jj_3R_62()) {
    jj_scanpos = xsp;
    if (jj_3R_63()) {
    jj_scanpos = xsp;
    if (jj_3R_64()) {
    jj_scanpos = xsp;
    if (jj_3R_65()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_65() {
    if (jj_3R_72()) return true;
    return false;
  }

  private boolean jj_3R_43() {
    if (jj_scan_token(F12)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_112() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_138() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_42() {
    if (jj_scan_token(F11)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_123() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(156)) {
    jj_scanpos = xsp;
    if (jj_scan_token(157)) return true;
    }
    return false;
  }

  private boolean jj_3R_114() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_123()) jj_scanpos = xsp;
    if (jj_scan_token(DOUBLE)) return true;
    return false;
  }

  private boolean jj_3R_64() {
    if (jj_scan_token(F46)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_112()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_111() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_130() {
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_138()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_41() {
    if (jj_scan_token(F10)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_63() {
    if (jj_scan_token(F45)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_111()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_137() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_78() {
    if (jj_scan_token(F22)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_130()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_70() {
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_118() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_129() {
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_137()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_40() {
    if (jj_scan_token(F9)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_70()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_117() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_39() {
    if (jj_scan_token(F8)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_62() {
    if (jj_scan_token(F44)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_117()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_118()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_77() {
    if (jj_scan_token(F20)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_129()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_110() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_109() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_61() {
    if (jj_scan_token(F43)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_109()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_110()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_136() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_60() {
    if (jj_scan_token(F42)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_128() {
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_136()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_38() {
    if (jj_scan_token(F26)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_59() {
    if (jj_scan_token(F41)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_121() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    return false;
  }

  private boolean jj_3R_76() {
    if (jj_scan_token(F7)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_128()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_69() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_76()) {
    jj_scanpos = xsp;
    if (jj_3R_77()) {
    jj_scanpos = xsp;
    if (jj_3R_78()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_71() {
    if (jj_3R_29()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_121()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_58() {
    if (jj_scan_token(F40)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_71()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_28() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(212)) {
    jj_scanpos = xsp;
    if (jj_scan_token(213)) return true;
    }
    return false;
  }

  private boolean jj_3_4() {
    if (jj_scan_token(F26)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_102() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_94() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_101()) {
    jj_scanpos = xsp;
    if (jj_3R_102()) return true;
    }
    return false;
  }

  private boolean jj_3R_101() {
    if (jj_3R_28()) return true;
    return false;
  }

  private boolean jj_3R_95() {
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_140() {
    if (jj_scan_token(STRING_DOUBLEQUOTED)) return true;
    return false;
  }

  private boolean jj_3R_139() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_103() {
    if (jj_scan_token(NOT)) return true;
    return false;
  }

  private boolean jj_3R_135() {
    if (jj_3R_68()) return true;
    return false;
  }

  private boolean jj_3R_134() {
    if (jj_3R_140()) return true;
    return false;
  }

  private boolean jj_3R_57() {
    if (jj_scan_token(F39)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_132() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_134()) {
    jj_scanpos = xsp;
    if (jj_3R_135()) return true;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_139()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_37() {
    if (jj_scan_token(F6)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_96() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(170)) {
    jj_scanpos = xsp;
    if (jj_scan_token(171)) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_103()) jj_scanpos = xsp;
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_85() {
    Token xsp;
    if (jj_3R_96()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_96()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_105() {
    if (jj_scan_token(CAT)) return true;
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_100() {
    Token xsp;
    if (jj_3R_105()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_105()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_56() {
    if (jj_scan_token(F38)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_55() {
    if (jj_scan_token(F37)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_30() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(217)) {
    jj_scanpos = xsp;
    if (jj_scan_token(173)) {
    jj_scanpos = xsp;
    if (jj_scan_token(174)) {
    jj_scanpos = xsp;
    if (jj_scan_token(175)) {
    jj_scanpos = xsp;
    if (jj_scan_token(176)) {
    jj_scanpos = xsp;
    if (jj_scan_token(177)) {
    jj_scanpos = xsp;
    if (jj_scan_token(178)) {
    jj_scanpos = xsp;
    if (jj_scan_token(179)) {
    jj_scanpos = xsp;
    if (jj_scan_token(180)) {
    jj_scanpos = xsp;
    if (jj_scan_token(181)) {
    jj_scanpos = xsp;
    if (jj_scan_token(182)) {
    jj_scanpos = xsp;
    if (jj_scan_token(183)) {
    jj_scanpos = xsp;
    if (jj_scan_token(184)) {
    jj_scanpos = xsp;
    if (jj_scan_token(185)) {
    jj_scanpos = xsp;
    if (jj_scan_token(186)) {
    jj_scanpos = xsp;
    if (jj_scan_token(187)) {
    jj_scanpos = xsp;
    if (jj_scan_token(188)) {
    jj_scanpos = xsp;
    if (jj_scan_token(189)) {
    jj_scanpos = xsp;
    if (jj_scan_token(190)) {
    jj_scanpos = xsp;
    if (jj_scan_token(191)) {
    jj_scanpos = xsp;
    if (jj_scan_token(192)) {
    jj_scanpos = xsp;
    if (jj_scan_token(193)) {
    jj_scanpos = xsp;
    if (jj_scan_token(194)) {
    jj_scanpos = xsp;
    if (jj_scan_token(195)) {
    jj_scanpos = xsp;
    if (jj_scan_token(196)) {
    jj_scanpos = xsp;
    if (jj_scan_token(197)) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) {
    jj_scanpos = xsp;
    if (jj_scan_token(199)) {
    jj_scanpos = xsp;
    if (jj_scan_token(200)) {
    jj_scanpos = xsp;
    if (jj_scan_token(201)) {
    jj_scanpos = xsp;
    if (jj_scan_token(202)) {
    jj_scanpos = xsp;
    if (jj_scan_token(203)) {
    jj_scanpos = xsp;
    if (jj_scan_token(204)) {
    jj_scanpos = xsp;
    if (jj_scan_token(205)) {
    jj_scanpos = xsp;
    if (jj_scan_token(206)) {
    jj_scanpos = xsp;
    if (jj_scan_token(207)) {
    jj_scanpos = xsp;
    if (jj_scan_token(208)) {
    jj_scanpos = xsp;
    if (jj_scan_token(209)) {
    jj_scanpos = xsp;
    if (jj_scan_token(210)) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_3() {
    if (jj_scan_token(F6)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_122() {
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_30()) return true;
    return false;
  }

  private boolean jj_3R_116() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_104() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(156)) {
    jj_scanpos = xsp;
    if (jj_scan_token(157)) {
    jj_scanpos = xsp;
    if (jj_scan_token(158)) {
    jj_scanpos = xsp;
    if (jj_scan_token(159)) {
    jj_scanpos = xsp;
    if (jj_scan_token(160)) return true;
    }
    }
    }
    }
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_54() {
    if (jj_scan_token(F36)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_99() {
    Token xsp;
    if (jj_3R_104()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_104()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_124() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_36() {
    if (jj_scan_token(F25)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_69()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_116()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3_5() {
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_30()) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_132()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_53() {
    if (jj_scan_token(F35)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_113() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_5()) {
    jj_scanpos = xsp;
    if (jj_3R_122()) return true;
    }
    return false;
  }

  private boolean jj_3R_107() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_124()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_52() {
    if (jj_scan_token(F34)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_68()) return true;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_68() {
    if (jj_3R_30()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_113()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_125() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_98() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(168)) {
    jj_scanpos = xsp;
    if (jj_scan_token(169)) return true;
    }
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3_2() {
    if (jj_scan_token(F27)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_28()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_107()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_108() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_125()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_93() {
    if (jj_3R_68()) return true;
    return false;
  }

  private boolean jj_3R_115() {
    if (jj_scan_token(COMMA)) return true;
    return false;
  }

  private boolean jj_3R_84() {
    if (jj_3R_95()) return true;
    return false;
  }

  private boolean jj_3R_83() {
    if (jj_3R_94()) return true;
    return false;
  }

  private boolean jj_3R_82() {
    if (jj_3R_93()) return true;
    return false;
  }

  private boolean jj_3R_81() {
    if (jj_3R_92()) return true;
    return false;
  }

  private boolean jj_3R_80() {
    if (jj_3R_91()) return true;
    return false;
  }

  private boolean jj_3R_97() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(161)) {
    jj_scanpos = xsp;
    if (jj_scan_token(162)) {
    jj_scanpos = xsp;
    if (jj_scan_token(163)) {
    jj_scanpos = xsp;
    if (jj_scan_token(164)) {
    jj_scanpos = xsp;
    if (jj_scan_token(165)) {
    jj_scanpos = xsp;
    if (jj_scan_token(166)) return true;
    }
    }
    }
    }
    }
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_51() {
    if (jj_scan_token(F21)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_29()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_108()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  private boolean jj_3R_133() {
    if (jj_3R_28()) return true;
    return false;
  }

  private boolean jj_3R_35() {
    if (jj_scan_token(F5)) return true;
    if (jj_scan_token(BRACKET_OPEN)) return true;
    if (jj_3R_69()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_115()) jj_scanpos = xsp;
    if (jj_scan_token(BRACKET_CLOSE)) return true;
    return false;
  }

  /** Generated Token Manager. */
  public ISMLtoJSPcompilerTokenManager token_source;
  JavaCharStream jj_input_stream;
  /** Current token. */
  public Token token;
  /** Next token. */
  public Token jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  private int jj_gen;
  final private int[] jj_la1 = new int[111];
  static private int[] jj_la1_0;
  static private int[] jj_la1_1;
  static private int[] jj_la1_2;
  static private int[] jj_la1_3;
  static private int[] jj_la1_4;
  static private int[] jj_la1_5;
  static private int[] jj_la1_6;
  static {
      jj_la1_init_0();
      jj_la1_init_1();
      jj_la1_init_2();
      jj_la1_init_3();
      jj_la1_init_4();
      jj_la1_init_5();
      jj_la1_init_6();
   }
   private static void jj_la1_init_0() {
      jj_la1_0 = new int[] {0xfffffffe,0x0,0xfffffffe,0x0,0x6,0x3e,0x0,0x0,0x0,0x52a24100,0x0,0x0,0x8408be00,0x0,0x0,0x510000,0x0,0x8000000,0x0,0x0,0xfffbff00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_1() {
      jj_la1_1 = new int[] {0x3fffff,0x400000,0x3fffff,0x3fc000,0x0,0x0,0x1000000,0x10000000,0x4000000,0x100,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_2() {
      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0xffffffc0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffc0,0x2,0x30,0x1,0x5,0x2,0x30,0x1,0x5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_3() {
      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_4() {
      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0xc0000,0x0,0x10000,0xc0000,0x0,0x10000,0x0,0x0,0x0,0x0,0x3,0x10000,0x300000,0xc000,0x2c000,0x3ffc,0xc00000,0x3fff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3d000000,0x0,0x3d000000,0x0,0x0,0x0,0x0,0x0,0x3d000000,0x0,0x0,0xf0000000,0xf0000000,0x3d000000,0x3d000000,0x0,0x0,0xf0000000,0xf0000000,0x0,0x0,0x0,0x0,0x30000000,0x0,0x30000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3d000000,0x0,0x0,0x0,0x3d000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3d000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_5() {
      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffff000,0x0,0xfffff000,0x0,0x0,0x0,0x0,0x0,0xfffff000,0x80000,0xc00,0xfff,0xfff,0xfffff000,0xffffe000,0x7e,0x300,0x1,0x1,0x80,0xc00,0x1000,0xc00,0x0,0x0,0x0,0x0,0xffffe000,0xffffe000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffff000,0x0,0x0,0x0,0xfffff000,0x0,0x0,0x0,0x0,0x0,0x0,0x3e000,0x0,0x40000,0xfff00000,0xfffff000,0x0,0x0,0x0,0xffffe000,0xffffe000,0x0,0xffffe000,};
   }
   private static void jj_la1_init_6() {
      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x277ffff,0x1000000,0x277ffff,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x277ffff,0x5,0x0,0x0,0x0,0x277ffff,0x277ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x700000,0x300000,0x0,0x0,0x237ffff,0x237ffff,0x300000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x277ffff,0x1000000,0x1000000,0x1000000,0x277ffff,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x0,0x8,0x0,0x207ffd2,0x277ffff,0x1000000,0x800000,0x800000,0x207ffff,0x227ffff,0x1000000,0x227ffff,};
   }
  final private JJCalls[] jj_2_rtns = new JJCalls[5];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public ISMLtoJSPcompiler(java.io.InputStream stream) {
     this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public ISMLtoJSPcompiler(java.io.InputStream stream, String encoding) {
    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
    token_source = new ISMLtoJSPcompilerTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream) {
     ReInit(stream, null);
  }
  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream, String encoding) {
    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor. */
  public ISMLtoJSPcompiler(java.io.Reader stream) {
    jj_input_stream = new JavaCharStream(stream, 1, 1);
    token_source = new ISMLtoJSPcompilerTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.Reader stream) {
    jj_input_stream.ReInit(stream, 1, 1);
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor with generated Token Manager. */
  public ISMLtoJSPcompiler(ISMLtoJSPcompilerTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(ISMLtoJSPcompilerTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  private Token jj_consume_token(int kind) throws ParseException {
    Token oldToken;
    if ((oldToken = token).next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    if (token.kind == kind) {
      jj_gen++;
      if (++jj_gc > 100) {
        jj_gc = 0;
        for (int i = 0; i < jj_2_rtns.length; i++) {
          JJCalls c = jj_2_rtns[i];
          while (c != null) {
            if (c.gen < jj_gen) c.first = null;
            c = c.next;
          }
        }
      }
      return token;
    }
    token = oldToken;
    jj_kind = kind;
    throw generateParseException();
  }

  static private final class LookaheadSuccess extends java.lang.Error { }
  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
  private boolean jj_scan_token(int kind) {
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos.next == null) {
        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
      } else {
        jj_lastpos = jj_scanpos = jj_scanpos.next;
      }
    } else {
      jj_scanpos = jj_scanpos.next;
    }
    if (jj_rescan) {
      int i = 0; Token tok = token;
      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
      if (tok != null) jj_add_error_token(kind, i);
    }
    if (jj_scanpos.kind != kind) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
    return false;
  }


/** Get the next Token. */
  final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

/** Get the specific Token. */
  final public Token getToken(int index) {
    Token t = token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  private int jj_ntk() {
    if ((jj_nt=token.next) == null)
      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
    else
      return (jj_ntk = jj_nt.kind);
  }

  private java.util.List jj_expentries = new java.util.ArrayList();
  private int[] jj_expentry;
  private int jj_kind = -1;
  private int[] jj_lasttokens = new int[100];
  private int jj_endpos;

  private void jj_add_error_token(int kind, int pos) {
    if (pos >= 100) return;
    if (pos == jj_endpos + 1) {
      jj_lasttokens[jj_endpos++] = kind;
    } else if (jj_endpos != 0) {
      jj_expentry = new int[jj_endpos];
      for (int i = 0; i < jj_endpos; i++) {
        jj_expentry[i] = jj_lasttokens[i];
      }
      jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) {
        int[] oldentry = (int[])(it.next());
        if (oldentry.length == jj_expentry.length) {
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              continue jj_entries_loop;
            }
          }
          jj_expentries.add(jj_expentry);
          break jj_entries_loop;
        }
      }
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
    jj_expentries.clear();
    boolean[] la1tokens = new boolean[223];
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 111; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1< jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
          }
        }
        p = p.next;
      } while (p != null);
      } catch(LookaheadSuccess ls) { }
    }
    jj_rescan = false;
  }

  private void jj_save(int index, int xla) {
    JJCalls p = jj_2_rtns[index];
    while (p.gen > jj_gen) {
      if (p.next == null) { p = p.next = new JJCalls(); break; }
      p = p.next;
    }
    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  }

  static final class JJCalls {
    int gen;
    Token first;
    int arg;
    JJCalls next;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy