Patch title: Release 93 bulk changes
Abstract:
File: /language/basic/shortcut.pli
Key:
    Removed line
    Added line
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

abstract
  [This will record += -= *= \= %= ^= and /= operators that will be expanded just like a macro would be with a classical compiler]

scope "/pliant/language/" "/pliant/install/"
module "/pliant/install/ring2.pli"


function shortcut e op
  arg_rw Expression e ; arg Str op
  if e:size<>2
    return
  e compile_as (expression duplicate e ident ":=" subexpressions (duplicate e:0) (expression duplicate e ident op subexpressions e:0 e:1))
  # e compile_as (expression duplicate e ident ":=" subexpressions (duplicate e:0) (expression duplicate e ident op subexpressions e:0 e:1))
  e compile_as (expression ident ":=" subexpressions (duplicate e:0) (expression ident op subexpressions e:0 e:1))

function shortcut op
  arg Str op
  runtime_compile id (cast op+"=" Ident) op op
    meta id e
      shortcut e op
    operator id 510h 1000000000 1000000000
    export id

shortcut "+"
shortcut "-"
shortcut "*"
shortcut "\"
shortcut "%"
shortcut "^"
shortcut "/"