	[  CLASS]  class
	[     ID]  TmplStack
	[       ]  {
	[     ID]  TVAR1
	[       ]  *
	[     ID]  stkarray
	[       ]  ;
	[    INT]  int
	[     ID]  stksiz
	[       ]  ,
	[     ID]  top
	[       ]  ;
	[ PUBLIC]  public
	[       ]  :
	[     ID]  TmplStack
	[       ]  (
	[    INT]  int
	[     ID]  stacksize
	[       ]  )
	[       ]  {
	[     IF]  if
	[       ]  (
	[     ID]  stacksize
	[    LEQ]  <=
	[ NUMBER]  0
	[       ]  )
	[     ID]  stacksize
	[       ]  =
	[ NUMBER]  1
	[       ]  ;
	[     ID]  stkarray
	[       ]  =
	[    NEW]  new
	[     ID]  TVAR1
	[       ]  [
	[     ID]  stacksize
	[       ]  ]
	[       ]  ;
	[     ID]  stksiz
	[       ]  =
	[     ID]  stacksize
	[       ]  ;
	[     ID]  top
	[       ]  =
	[ NUMBER]  0
	[       ]  ;
	[       ]  }
	[       ]  ~
	[     ID]  TmplStack
	[       ]  (
	[       ]  )
	[       ]  {
	[ DELETE]  delete
	[       ]  [
	[       ]  ]
	[     ID]  stkarray
	[       ]  ;
	[       ]  }
	[   BOOL]  bool
	[     ID]  isEmpty
	[       ]  (
	[       ]  )
	[       ]  {
	[ RETURN]  return
	[     ID]  top
	[    EQL]  ==
	[ NUMBER]  0
	[       ]  ?
	[   TRUE]  true
	[       ]  :
	[  FALSE]  false
	[       ]  ;
	[       ]  }
	[   BOOL]  bool
	[     ID]  isFull
	[       ]  (
	[       ]  )
	[       ]  {
	[ RETURN]  return
	[     ID]  top
	[    EQL]  ==
	[     ID]  stksiz
	[       ]  ?
	[   TRUE]  true
	[       ]  :
	[  FALSE]  false
	[       ]  ;
	[       ]  }
	[   VOID]  void
	[     ID]  push
	[       ]  (
	[  CONST]  const
	[     ID]  TVAR1
	[       ]  &
	[     ID]  elmt
	[       ]  )
	[       ]  {
	[     IF]  if
	[       ]  (
	[     ID]  isFull
	[       ]  (
	[       ]  )
	[       ]  )
	[       ]  {
	[ RETURN]  return
	[       ]  ;
	[       ]  }
	[     ID]  stkarray
	[       ]  [
	[     ID]  top
	[   INCR]  ++
	[       ]  ]
	[       ]  =
	[     ID]  elmt
	[       ]  ;
	[       ]  }
	[     ID]  TVAR1
	[     ID]  pop
	[       ]  (
	[       ]  )
	[       ]  {
	[     IF]  if
	[       ]  (
	[     ID]  isEmpty
	[       ]  (
	[       ]  )
	[       ]  )
	[       ]  {
	[ RETURN]  return
	[       ]  ;
	[       ]  }
	[   ELSE]  else
	[       ]  {
	[   DECR]  --
	[     ID]  top
	[       ]  ;
	[       ]  }
	[ RETURN]  return
	[     ID]  stkarray
	[       ]  [
	[     ID]  top
	[       ]  ]
	[       ]  ;
	[       ]  }
	[       ]  }
	[       ]  ;
