 
 class JSCodeGenerator
   constructor: ->
+    # Initiailize the... indent amount, I guess.
     @indentAmount = '  '
 
+  # Compiles the given AST.
   compile: (ast) ->
     # I guess I should initialize the indent or something.
     @indent = '  '

    # I don't know what else to do other than visit the node.
    # Regardless... here it is:
    @visit ast

  # Returns an action for a JS binary operator.
  @makeBinOp: (binop) -> (node) ->

      # Hack! I should have a table of builtins, but instead, I have only
      # implemented this one and only method.
      subroutineName =
        # TODO: Handle other builtins.
        if node.name is 'writeln'
          '_output'
        else
          @subroutineNameFor node.name

      "#{subroutineName}(#{paramList})"

    # Variables are complicated, but I'm just going to do the following naïve
    # thing: Just spit out a dollar and the name. The dollar is so that people
    # don't name a Pal variable 'return' and generate invalid JavaScript.
    variable: (node) -> @variableNameFor(node.name)

    # Got to place strings in quotes and escape characters.
    string: (node) ->
