⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xqresolvenames.java

📁 A framework written in Java for implementing high-level and dynamic languages, compiling them into J
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("name", 1);                  return withContext(meth, exp.getArgs(), "fn:name", 0);                }              case NUMBER_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NumberValue")                    .getDeclaredMethod("numberValue", 1);                  return withContext(meth, exp.getArgs(), "fn:number", 0);                }              case ROOT_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("root", 1);                  return withContext(meth, exp.getArgs(), "fn:root", 0);                }              case BASE_URI_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("baseUri", 1);                  return withContext(meth, exp.getArgs(), "fn:base-uri", 0);                }              case LANG_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("lang", 2);                  return withContext(meth, exp.getArgs(), "fn:lang", 1);                }              case ID_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("id$X", 3);                  return withContext(meth, exp.getArgs(), "fn:id", 1);                }              case IDREF_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("idref", 2);                  return withContext(meth, exp.getArgs(), "fn:idref", 1);                }              case STATIC_BASE_URI_BUILTIN:                {		  Expression[] args = exp.getArgs();                  if ((err = checkArgCount(args, decl, 0, 0)) != null)                    return err;                  return getBaseUriExpr();                }              case NAMESPACE_URI_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.NodeUtils")                    .getDeclaredMethod("namespaceURI", 1);                  return withContext(meth, exp.getArgs(),                                     "fn:namespace-uri", 0);                }              case NORMALIZE_SPACE_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.StringUtils")                    .getDeclaredMethod("normalizeSpace", 1);                  return withContext(meth, exp.getArgs(),                                     "fn:normalize-space", 0);                }              case UNORDERED_BUILTIN:                {		  Expression[] args = exp.getArgs();                  if ((err = checkArgCount(args, decl, 1, 1)) != null)                    return err;                  return args[0];                }              case COMPARE_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.StringUtils")                    .getDeclaredMethod("compare", 3);                  return withCollator(meth, exp.getArgs(), "fn:compare", 2);                }              case STRING_BUILTIN:                return withContext(ClassType.make("gnu.xml.TextUtils")                                   .getDeclaredMethod("asString", 1),                                   exp.getArgs(), "fn:string", 0);              case INDEX_OF_BUILTIN:		{                  Method meth = ClassType.make("gnu.xquery.util.SequenceUtils")                    .getDeclaredMethod("indexOf$X", 4);                  return withCollator(meth, exp.getArgs(), "fn:index-of", 2);                }              case COLLECTION_BUILTIN:                {                  Expression[] args = exp.getArgs();                  ClassType cl = ClassType.make("gnu.xquery.util.NodeUtils");                  Method meth = cl.getDeclaredMethod("collection", 2);                  if ((err = checkArgCount(args, decl, 0, 1)) != null)                    return err;                  Expression base = getBaseUriExpr();                  Expression uri = args.length > 0 ? args[0]                    : QuoteExp.voidExp;                  ApplyExp aexp                    = new ApplyExp(meth, new Expression[]{ uri, base });                  if (code == DOC_BUILTIN)                    aexp.setType(NodeType.documentNodeTest);                  else                    aexp.setType(XDataType.booleanType);                  return aexp;                }              case DOC_BUILTIN:              case DOC_AVAILABLE_BUILTIN:                {                  Expression[] args = exp.getArgs();                  ClassType cl = ClassType.make("gnu.xquery.util.NodeUtils");                  String mname;                  if (code == DOC_BUILTIN)                    {                      mname = "docCached";                      if (parser.warnOldVersion                          && "document".equals(decl.getName()))                        getCompilation()                          .error('w', "replace 'document' by 'doc'");                    }                  else                    mname = "availableCached";                  Method meth = cl.getDeclaredMethod(mname, 2);                  if ((err = checkArgCount(args, decl, 1, 1)) != null)                    return err;                  Expression base = getBaseUriExpr();                  ApplyExp aexp                    = new ApplyExp(meth, new Expression[]{ args[0], base });                  if (code == DOC_BUILTIN)                    aexp.setType(NodeType.documentNodeTest);                  else                    aexp.setType(XDataType.booleanType);                  return aexp;                }              case RESOLVE_URI_BUILTIN:                {                  Expression[] args = exp.getArgs();                  if ((err = checkArgCount(args, decl, 1, 2)) != null)                    return err;                  Expression[] margs = new Expression[2];                  margs[0] = args[0];                  if (args.length == 1)                    margs[1] = getBaseUriExpr();                  else                    margs[1] = args[1];                  Method meth = ClassType.make("gnu.xquery.util.QNameUtils")                    .getDeclaredMethod("resolveURI", 2);                  return new ApplyExp(meth, margs);                }              case DISTINCT_VALUES_BUILTIN:                {                  Method meth = ClassType.make("gnu.xquery.util.DistinctValues")                    .getDeclaredMethod("distinctValues$X", 3);                  return withCollator(meth, exp.getArgs(),                                      "fn:distinct-values", 1);                }              case DEEP_EQUAL_BUILTIN:                {                  Method meth = ClassType.make("gnu.xquery.util.SequenceUtils")                    .getDeclaredMethod("deepEqual", 3);                  return withCollator(meth, exp.getArgs(),                                      "fn:deep-equal", 2);                }              case MIN_BUILTIN:                {                  Method meth = ClassType.make("gnu.xquery.util.MinMax")                    .getDeclaredMethod("min", 2);                  return withCollator(meth, exp.getArgs(),                                      "fn:min", 1);                }              case MAX_BUILTIN:                {                  Method meth = ClassType.make("gnu.xquery.util.MinMax")                    .getDeclaredMethod("max", 2);                  return withCollator(meth, exp.getArgs(),                                      "fn:max", 1);                }              case DEFAULT_COLLATION_BUILTIN:                if ((err = checkArgCount(exp.getArgs(), decl, 0, 0)) != null)                  return err;                NamedCollator coll = parser.defaultCollator;                return QuoteExp.getInstance(coll != null ? coll.getName()                          : NamedCollator.UNICODE_CODEPOINT_COLLATION);              case HANDLE_EXTENSION_BUILTIN:                {                  Compilation comp = getCompilation();                  Expression[] args = exp.getArgs();                  int i = 0;                  for (;  i < args.length - 1;  i += 2)                    {                      Expression pname = args[i];                      String qname = (String) ((QuoteExp) pname).getValue();                      Symbol psymbol = parser.namespaceResolve(qname, false);                      if (psymbol == null)                        ; // error emitted in namespaceResolve                      else if (psymbol.getNamespaceURI().length() == 0)                        comp.error('e', "pragma name cannot be in the empty namespace");                      else                        {                          Expression replacement                            = checkPragma(psymbol, args[i+1]);                          if (replacement != null)                            return replacement;                        }                    }                  if (i < args.length)                    return args[args.length-1];                  String msg = "no recognized pragma or default in extension expression";                  getMessages().error('e', msg, "XQST0079");                  return new ErrorExp(msg);                }	      }	  }      }    proc = exp.getFunctionValue();    if (proc instanceof Type)      {        Expression[] args = exp.getArgs();        if (args.length != 1)          {            messages.error('e', "type constructor requires a single argument");            return exp;          }        return new ApplyExp(XQParser.makeFunctionExp("gnu.xquery.util.CastAs", "castAs"),                            new Expression[] { exp.getFunction(), args[0] });      }    if (proc instanceof MakeElement)      {	MakeElement make = (MakeElement) proc;	// Add namespaces nodes that might be needed.	NamespaceBinding nsBindings = make.getNamespaceNodes();	nsBindings = maybeAddNamespace(MakeElement.getTagName(exp),				       nsBindings);	Expression[] args = exp.getArgs();        Symbol[] attrSyms = new Symbol[args.length];        int nattrSyms = 0;	for (int i = 0;  i < args.length;  i++)	  {	    Expression arg = args[i];	    if (arg instanceof ApplyExp)	      {		ApplyExp app = (ApplyExp) arg;		if (app.getFunction() == MakeAttribute.makeAttributeExp)                  {                    Symbol sym = MakeElement.getTagName(app);                    if (sym != null)                      {                        for (int j = 0;  ;  j++)                          {                            if (j == nattrSyms)                              {                                attrSyms[nattrSyms++] = sym;                                break;                              }                            if (sym.equals(attrSyms[j]))                              {                                getCompilation().setLine(app);                                Symbol elementSym = MakeElement.getTagName(exp);                                String elementName = elementSym == null ? null                                  : elementSym.toString();                                messages.error('e', XMLFilter.duplicateAttributeMessage(sym, elementName), "XQST0040");                              }                          }                      }                    nsBindings = maybeAddNamespace(sym, nsBindings);                  }	      }	  }	if (nsBindings != null)	  make.setNamespaceNodes(nsBindings);      }    return exp;  }  public Expression  checkPragma (Symbol name, Expression contents)  {    return null;  }  Expression getBaseUriExpr ()  {    Compilation comp = getCompilation();    String staticBaseUri = parser.getStaticBaseUri();    if (staticBaseUri != null)      return QuoteExp.getInstance(staticBaseUri);    else      return gnu.kawa.functions.GetModuleClass.getModuleClassURI(comp);  }  static NamespaceBinding maybeAddNamespace(Symbol qname,					    NamespaceBinding bindings)  {    if (qname == null) // Happens if prevously-reported unknown prefix.      return bindings;    String prefix = qname.getPrefix();    String uri = qname.getNamespaceURI();    return NamespaceBinding.maybeAdd(prefix == "" ? null : prefix,                                     uri == "" ? null : uri,                                     bindings);  }  /** Wrap a (known) procedure value as a Declaration. */  static Declaration procToDecl (Object symbol, Object val)  {    Declaration decl = new Declaration(symbol);    decl.setProcedureDecl(true);    decl.noteValue(new QuoteExp(val));    decl.setFlag(Declaration.IS_CONSTANT);    return decl;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -