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

📄 makeprocedure.java

📁 A framework written in Java for implementing high-level and dynamic languages, compiling them into J
💻 JAVA
字号:
package gnu.kawa.functions;import gnu.mapping.*;import gnu.expr.*;public class MakeProcedure extends ProcedureN implements CanInline{  public static final MakeProcedure makeProcedure = new MakeProcedure();  static { makeProcedure.setName("make-procedure"); }  public static GenericProc makeProcedure$V (Object[] args)  {    return GenericProc.make(args);  }  public Object applyN(Object[] args)  {    return GenericProc.make(args);  }  public Expression inline (ApplyExp exp, ExpWalker walker)  {    Expression[] args = exp.getArgs();    int alen = args.length;    Expression method = null;    int countMethods = 0;    String name = null;    for (int i = 0;  i < alen;  i++)      {	Expression arg = args[i];        Object key;	if (arg instanceof QuoteExp            && (key = ((QuoteExp) arg).getValue()) instanceof Keyword)	  {	    String keyword = ((Keyword) key).getName();	    Expression next = args[++i];	    if (keyword == "name")              {                if (next instanceof QuoteExp)                  name = ((QuoteExp) next).getValue().toString();              }	    else if (keyword == "method")              {                countMethods++;                method = next;              }	    else	      ; // result.setProperty(keyword, value);	  }	else          {            countMethods++;            method = arg;          }      }    if (countMethods == 1 && method instanceof LambdaExp)      {        LambdaExp proc = (LambdaExp) method;        for (int i = 0;  i < alen;  i++)          {            Expression arg = args[i];            Object key;            if (arg instanceof QuoteExp                && (key = ((QuoteExp) arg).getValue()) instanceof Keyword)              {                String keyword = ((Keyword) key).getName();                Expression next = args[++i];                if (keyword == "name")                  proc.setName(name);                else if (keyword == "method")                  ;                else                  proc.setProperty(keyword, next);              }          }        return method;      }    return exp;  }}

⌨️ 快捷键说明

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