Pancode is mostly whitespace-insensitive, as most commands are a single character in length. Anything which is not subject to the below rules is simply treated as a symbol command, i.e. an individual single-character command. Note that this applies to characters which do not have an assigned command yet, and in this case it is an error to execute such a nonexistent command.
There are no commands whose name consists of whitespace. All whitespace characters are skipped over during parsing.
      Comments in Pancode begin with «
      and end with ». The delimiting
      characters can be nested within the comment. Any text inside a
      comment will be ignored.
    
Integers may be written directly into Pancode and will resolve to special commands which push themselves onto the stack. An integer is defined to be an optional minus sign, followed by at least one decimal digit. Note that the entire integer must be contiguous and not contain whitespace within it, or else it will be seen as multiple tokens by the parser.
      There are also three special numerical constants: ∞ (for
      infinity), -∞ (for
      negative infinity), and 👿
      (for NaN).
    
      There is currently no way to input literal non-integers into
      Pancode source. This functionality may be added in the future.
      In the meantime, there are several commands to push common
      fractions (namely, the vulgar fraction characters such as ½).
    
      String literals are denoted, as usual, with quotation
      marks ". Between the quotation marks, everything on
      the inside (including whitespace and newlines) is treated as
      part of the string contents. Backslash escape sequences may be
      used. Currently, \n (newline), \"
      (literal quote), and \\ (literal backslash) are the
      only supported escape sequences.
    
      Functions are provided by wrapping the relevant code in square
      brackets [ and ]. A function, when
      executed, pushes itself onto the stack. A function on the stack
      can be called in several ways, the most direct being the
      call $ command.
    
      Note that if you try to pretty-print a function (such as
      with .), you will get a literal which, if run as
      Pancode source, will behave identically when called to the
      function used to produce it. However, the two functions may or
      may not compare equal, especially in the case of functions
      produced by ● (curry) or ○ (compose),
      which internally use more efficient representations.
    
      As a special shortcut, if you want to construct a function which
      consists of exactly one command, you may do so by preceding the
      command with a backtick `. So, for
      instance, `× is equivalent to [×]
    
      Enclosing a block of code in corner brackets (「 and 」)
      creates a Slip. Slips are sort of like functions, in that they
      store blocks of code to be executed. However, a slip immediately
      executes when evaluated, so a sequence of commands inside of a
      slip behaves equivalently to the same commands without the slip.
    
You'll seldom use slips directly, but they come up as a result of macro-style expansion code sometimes.
      The two characters → and ← are treated
      specially. When one of these characters is encountered, the next
      non-whitespace character is consumed as well and treated as a
      variable name. Then a single command is created, which assigns
      to or reads from the variable with the given name.
    
      For technical reasons, the following characters cannot be used
      as variable
      names: ", -, ∞, 👿,
      ASCII digits, whitespace, and comment delimiters («
      and »)
    
      The global variable characters are just syntax sugar, to make
      calling the global variable commands more convenient. If X is
      a valid variable identifier, then →X behaves identically to 'X ↲,
      and ←X behaves identically to 'X ↳.
    
      A single ' apostrophe causes the next command to be
      treated specially. The apostrophe and the following command form
      a composite command which, when evaluated, simply pushes the
      given value to the stack. If the following command is a symbol,
      this pushes the symbol (and all attached modifiers) rather than
      evaluating it as a plain symbol command would. If the following
      command is a string or numerical literal, this pushes the string
      or number.
    
      The runtime representation of a quoted command is a box.
      That is, the expression ''a, when evaluated, will
      push a box containing the symbol a onto the stack.
      It is equivalent, at runtime, to the expression 'a ⊂.
    
      The command following ' shall not be an assignment
      to or query from a global variable. If it is, the behavior is
      undefined. This behavior may be specified in a future version of
      Pancode.
    
      Every symbol command is succeeded by zero or more modifiers,
      which in some cases may change the behavior of the command.
      There are currently two types of modifiers in Pancode. The first
      is
      numerical
      modifiers, supplied as numbers from 0 to 20 using the
      characters  ⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳. The second
      is prime
      modifiers, supplied using the ′ character.
    
Note that only symbol commands can have modifiers. It is a syntax error to have a modifier attached to a number, string, global variable assignment, or any other kind of command.