DTCodeType.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. package tinybasic;
  2. import java.util.Stack;
  3. import java.util.Vector;
  4. import antlr.collections.AST;
  5. public class DTCodeType {
  6.     protected Stack callDepthStack;
  7.     class SaveEnv{
  8. protected Scope scope;
  9. protected Vector args;
  10. SaveEnv(Scope scope,Vector args){
  11.     this.scope=scope;
  12.     this.args=args;
  13. }
  14. Scope getScope(){return scope;}
  15. Vector getArgs() { return args;}
  16.     }
  17.     
  18.     protected AST entry,cb;
  19.     protected Context theContext;
  20.     protected Scope scope;
  21.     protected Vector args;
  22.     
  23.     String name;
  24.     
  25.     class CodeContext {
  26. protected Context context;
  27. protected Scope scope;
  28. protected Vector args;
  29. CodeContext (Context context,Scope scope,Vector args){
  30.     this.context=context;
  31.     this.scope=scope;
  32.     this.args=args;
  33. }
  34.     }
  35.     
  36.     public DTCodeType(AST entry,AST cb,Scope scope,Vector args,String name){
  37. this.entry = entry ;
  38. this.cb = cb ;
  39. this.scope = scope;
  40. this.args = args ;
  41. this.name = name ;
  42. callDepthStack=new Stack();
  43.     }
  44.     public void newCall(Context context){
  45. CodeContext codeContext=new CodeContext(context,scope,args);
  46. callDepthStack.push(codeContext);
  47. context.pushScope(scope);
  48.     }
  49.     
  50.     public void attachArg(int argnum,DTDataType arg){
  51. DTDataType proxy=(DTDataType)args.elementAt(argnum);
  52. proxy.attach(arg);
  53.     }
  54.     
  55.     public AST getAST(){
  56. return this.entry;
  57.     }
  58. }