         func.call(@, @visit(node.declarations, '$body'), node)
 
     [@indent, header, body, @indent, '}\n']
-
 
 
 


      condition.concat [body, @indent, '}']

    sub_invocation: (node) ->
      params =
        @visit param for param in node.params

        if node.name is 'writeln' then '_output' else '_' + 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 make unparsable JavaScript.
    variable: (node) ->
      '$' + node.name

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