tcl

Tcl Language Constructs

Syntax#

  • # This is a valid comment
  • # This is a valid { comment }

Placing Comments

Comments in Tcl are best thought of as another command.
A comment consists of a # followed by any number of characters up to the next newline. A comment can appear wherever a command can be placed.

# this is a valid comment
proc hello { } {
  # the next comment needs the ; before it to indicate a new command is
  # being started.
  puts "hello world" ; # this is valid
  puts "dlrow olleh" # this is not a valid comment

  # the comment below appears in the middle of a string.
  # is is not valid.
  set hw {
      hello ; # this is not a valid comment 
      world 
      }

  gets stdin inputfromuser
  switch inputfromuser {
     # this is not a valid comment. 
     # switch expects a word to be here.
     go {
       # this is valid.  The switch on 'go' contains a list of commands
       hello
     }
     stop {
       exit
     }
  }
}

Braces in comments

Due to the way the Tcl language parser works, braces in the code must be properly matched. This includes the braces in comments.

proc hw {} { 
   # this { code will fail
   puts {hello world}
}

A missing close-brace: possible unbalanced brace in comment error will be thrown.

proc hw {} {
  # this { comment } has matching braces.
  puts {hello world}
}

This will work as the braces are paired up properly.

Quoting

In the Tcl language in many cases, no special quoting is needed.

These are valid strings:

abc123
4.56e10
my^variable-for.my%use

The Tcl language splits words on whitespace, so any literals or strings with whitespace should be quoted. There are two ways to quote strings. With braces and with quotation marks.

{hello world}
"hello world"

When quoting with braces, no substitutions are performed. Embedded braces may be escaped with a backslash, but note that the backslash is part of the string.

% puts {\{ \}}
\{ \}
% puts [string length {\{ \}}]
5
% puts {hello [world]}
hello [world]
% set alpha abc123
abc123
% puts {$alpha}
$alpha

When quoting with double quotes, command, backslash and variable substitutions are processed.

% puts "hello [world]"
invalid command name "world"
% proc world {} { return my-world }
% puts "hello [world]"
hello my-world
% puts "hello\tworld"
hello   world
% set alpha abc123
abc123
% puts "$alpha"
abc123
% puts "\{ \}"
{ }

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow