syn.txt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. struct Node{
  2. };
  3. struct VarNode : public Node{
  4. public Type *semant( Environ *e )=0;
  5. public TNode *translate( Environ *e )=0;
  6. public TNode *evaluate( Environ *e )=0;
  7. };
  8. struct ExprNode : public Node{
  9. public Type *semant( Environ *e )=0;
  10. public TNode *translate( Environ *e )=0;
  11. };
  12. struct ExprSeqNode : public Node{
  13. vector<ExprNode*> exprs;
  14. public Type *semant( Environ *e );
  15. public TNode *translate( Environ *e );
  16. public void push_back( ExprNode *s );
  17. public int size();
  18. };
  19. struct StmtNode : public Node{
  20. public void semant( Environ *e )=0;
  21. public void translate( vector<TNode*> &prog,Environ *e )=0;
  22. };
  23. struct StmtSeqNode : public Node{
  24. vector<StmtNode*> stmts;
  25. public void semant( Environ *e );
  26. public void translate( vector<TNode*> &prog,Environ *e );
  27. public void push_back( StmtNode *s );
  28. public int size();
  29. };
  30. struct DeclNode : public Node{
  31. public void proto( Environ *e )=0;
  32. public void semant( Environ *e )=0;
  33. public void translate( vector<TNode*> &prog,Environ *e )=0;
  34. };
  35. struct DeclSeqNode : public Node{
  36. vector<DeclNode*> decls;
  37. public void proto( Environ *e );
  38. public void semant( Environ *e );
  39. public void translate( vector<TNode*> &prog,Environ *e );
  40. public void push_back( DeclNode *d );
  41. public int size();
  42. };
  43. struct BlockNode : public Node{
  44. DeclSeqNode *decls;
  45. StmtSeqNode *stmts;
  46. public void proto( Environ *e );
  47. public void semant( Environ *e );
  48. public void translate( vector<TNode*> &prog,Environ *e );
  49. };
  50. struct ProgNode : public Node{
  51. BlockNode *block;
  52. public void proto( Environ *e );
  53. public void semant( Environ *e );
  54. public void translate( Environ *e,Codegen &codegen );
  55. };