Site Tools


lval
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


lval [2007/08/06 21:25] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +# $EPIC: lval.txt,v 1.1 2007/08/06 21:25:50 jnelson Exp $
 +
 +======Lvalues (aka lvals)======
 +An lvalue is the token on the left hand side of an assignment operation.
 +More broadly speaking, an lvalue is a //thing// that may be //assigned to//.
 +
 +There are several places where you use an lvalue:
 +| /assign **lval** stuff | Global variable to be assigned a value |
 +| /local **lval** stuff | Local variable to be assigned a value |
 +| @ **lval** = stuff | Global variable to be assigned a value |
 +| /stub assign **lval** filename | Global variable to be loaded on demand |
 +| $unshift(**lval** stuff) | Prepending to a global variable |
 +| /unshift **lval** stuff | Prepending to a global variable |
 +| $push(**lval** stuff) | Appending to a global variable |
 +| /push **lval** stuff  | Appending to a global variable |
 +| $shift(**lval** stuff) | Prepending to a global variable |
 +| /shift **lval** stuff | Prepending to a global variable |
 +| $pop(**lval** stuff) | Prepending to a global variable |
 +| /pop **lval** stuff | Prepending to a global variable |
 +| $aliasctl(SET **lval** ...)  | |
 +| @ **lval**++ | |
 +| @ **lval**-- | |
 +| Any math operator that does an assignment | |
 +| $splice(**lval** stuff) | |
 +| $shiftbrace(**lval**) | |
 +| $sar(r/old/new/**lval**) | |
 +| $msar(r/old/new/**lval**) | |
 +| $getopt(...) | |
 +| /fe (...) **lvals** {...} | |
 +| /fe :**lval** (...) **lvals** {...} | |
 +| Arglists | |
 +
 +======What an lvalue looks like======
 +An lvalue may be prefixed with zero, one, or two colons:
 +   * Zero colons means use a local variable if there is one, otherwise use a global variable.
 +   * One colon means use a local variable only
 +   * Two colons means use a global variable only
 +
 +An lvalue contains any number of characters:
 +   * Any isalpha(3) character
 +   * Any isdigit(3) character
 +   * The underscore ("_")
 +   * The dot (".")
 +
 +Followed by any number of //array subexpressions//, which are any text 
 +expression surrounded by square brackets.  There are no restrictions on 
 +what may be inside an array subexpression.
 +
 +======Examples:======
 + /assign myvar one
 + /echo $myvar                  
 +Will output "one"
 +
 + /local myvar two
 + /echo $myvar                  
 +Will output "two" because local variables overrule global variables
 +
 + /echo $::myvar
 +Will output "one" because two colons forces the global variable to be used.
 +
 + /assign :othervar one
 +Creates a //local// variable, because one colon is prefixed.
 +
 + /assign ::othervar two
 +Creates a //global// variable, because two colons are prefixed.
 +
 + /assign othervar three
 +Changes the //local// variable, because local variables overrule global vars.
 +
 + @ myvar$testing = [one]
 +Invalid because  $'s are not allowed in variable names
 +
 + @ myvar[$testing] = [one]
 +Allowed, because array subexpressions can contain any text expression.
 +Please note that //array subexpressions// are part of the **lval** and
 +are always treated as text, even in an expression!
 +
 + @ myvar.$function() = [one]
 +Invalid, because no $'s are permitted
 +
 + @ myvar[$function()] = [one]
 +Permitted, because the array subexpression can contain any text.
 +
 +
  
lval.txt · Last modified: 2007/08/06 21:25 by 127.0.0.1