LocationPath();
matchFound = false;
  protected void PrimaryExpr() throws javax.xml.transform.TransformerException  {    int opPos = m_ops.m_opMap[OpMap.MAPINDEX_LENGTH];    if ((m_tokenChar == '\'') || (m_tokenChar == '"'))    {      appendOp(2, OpCodes.OP_LITERAL);      Literal();      m_ops.m_opMap[opPos + OpMap.MAPINDEX_LENGTH] =        m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - opPos;    }    else if (m_tokenChar == '$')    {      nextToken();  // consume '$'      appendOp(2, OpCodes.OP_VARIABLE);      QName();            m_ops.m_opMap[opPos + OpMap.MAPINDEX_LENGTH] =        m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - opPos;    }    else if (m_tokenChar == '(')    {      nextToken();      appendOp(2, OpCodes.OP_GROUP);      Expr();      consumeExpected(')');      m_ops.m_opMap[opPos + OpMap.MAPINDEX_LENGTH] =        m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - opPos;    }    else if ((null != m_token) && ((('.' == m_tokenChar) && (m_token.length() > 1) && Character.isDigit(            m_token.charAt(1))) || Character.isDigit(m_tokenChar)))    {      appendOp(2, OpCodes.OP_NUMBERLIT);      Number();      m_ops.m_opMap[opPos + OpMap.MAPINDEX_LENGTH] =        m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - opPos;    }    else if (lookahead('(', 1) || (lookahead(':', 1) && lookahead('(', 3)))    {      FunctionCall();    }    else    {      LocationPath();    }  }