Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. class
  2. {
  3. New()
  4. {
  5. .classTable = Object()
  6. .subTable = Object()
  7. .staticIndex = 0
  8. .fieldIndex = 0
  9. .argIndex = 0
  10. .varIndex =0
  11. }
  12. newSubRoutine()
  13. {
  14. .subTable = Object()
  15. .argIndex = 0
  16. .varIndex =0
  17. }
  18.  
  19. Add(name,type,kind)
  20. {
  21. switch kind
  22. {
  23. case "static" :
  24. row = Object(type,kind,.staticIndex++)
  25. .classTable().Add(Object(row,name))
  26. case "field" :
  27. row = Object(type,kind,.fieldIndex++)
  28. .classTable().Add(Object(row,name))
  29. case "arg" :
  30. row = Object(type,kind,.argIndex++)
  31. .subTable().Add(Object(row,name))
  32. case "var" :
  33. row = Object(type,kind,.varIndex++)
  34. .subTable().Add(Object(row,name))
  35. }
  36. }
  37.  
  38. Count(kind)
  39. {
  40. switch kind
  41. {
  42. case "static":
  43. return .staticIndex
  44. case "field":
  45. return .fieldIndex
  46. case "arg":
  47. return .argIndex
  48. case "var" :
  49. return .varIndex
  50. }
  51. }
  52.  
  53. Kind(name)
  54. {
  55. if .subTable.Has?(name)
  56. return .subTable.Find(name)[1]
  57. else
  58. return .classTable.Find(name)[1]
  59. }
  60.  
  61. Type(name)
  62. {
  63. if .subTable.Has?(name)
  64. return .subTable.Find(name)[0]
  65. else
  66. return .classTable.Find(name)[0]
  67. }
  68.  
  69. Index(name)
  70. {
  71. if .subTable.Has?(name)
  72. return .subTable.Find(name)[2]
  73. else
  74. return .classTable.Find(name)[2]
  75. }
  76.  
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement