<html> <head> <title>Gri: Purpose of Synonyms</title> </head> <body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink="FF0000"> <!-- newfile PurposeOfSynonyms.html "Gri: Purpose of Synonyms" "Programming Gri" --> <!-- @node Purpose, Parsing, Adding New Commands, Adding New Commands --> <a name="Purpose" ></a> <img src="./resources/top_banner.gif" usemap="#navigate_top" border="0"> <table summary="top banner" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150" valign="top"> <font size=-1> <br> Chapters: </br> <a href="Introduction.html">1: Introduction</a><br> <a href="SimpleExample.html">2: Simple example</a><br> <a href="InvokingGri.html">3: Invocation</a><br> <a href="GettingMoreControl.html">4: Finer Control</a><br> <a href="X-Y.html">5: X-Y Plots</a><br> <a href="ContourPlots.html">6: Contour Plots</a><br> <a href="Images.html">7: Image Plots</a><br> <a href="Examples.html">8: Examples</a><br> <a href="Commands.html">9: Gri Commands</a><br> <a href="Programming.html">10: Programming</a><br> <a href="Environment.html">11: Environment</a><br> <a href="Emacs.html">12: Emacs Mode</a><br> <a href="History.html">13: History</a><br> <a href="Installation.html">14: Installation</a><br> <a href="Bugs.html">15: Gri Bugs</a><br> <a href="TestSuite.html">16: Test Suite</a><br> <a href="Acknowledgments.html">17: Acknowledgments</a><br> <a href="License.html">18: License</a><br> <br> Indices:</br> <a href="ConceptIndex.html"><i>Concepts</i></a><br> <a href="CommandIndex.html"><i>Commands</i></a><br> <a href="BuiltinIndex.html"><i>Variables</i></a><br> </font> <td width="500" valign="top"> <map name="navigate_top"> <area alt="index.html#Top" shape="rect" coords="5,2,218,24" href="index.html#Top"> <area alt="NewCommands.html#AddingNewCommands" shape="rect" coords="516,2,532,24" href="NewCommands.html#AddingNewCommands"> <area alt="Gri: Adding new commands" shape="rect" coords="557,2,573,24" href="NewCommands.html"> <area alt="Gri: How synonyms are parsed" shape="rect" coords="581,2,599,24" href="ParsingSynonyms.html"> </map> <map name="navigate_bottom"> <area alt="index.html#Top" shape="rect" coords="5,2,218,24" href="index.html#Top"> <area alt="Gri: How synonyms are parsed" shape="rect" coords="581,2,599,24" href="ParsingSynonyms.html"></map> <h3>10.11.1: Purpose of newcommands</h3> Gri can be extended easily. Primitive commands (e.g. `<font color="#82140F"><code>set x name</code></font>') can be supplemented with so-called "new commands." New commands are a little like subroutines other programming languages. For example, you might find that you often draw filled curves with a particular graylevel (say 0.5), and then return the graylevel to the previous value. This requires you to do the following each time: <p> <TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%"> <TR> <TD> <PRE> <font color="#82140F"> new .old_graylevel. .old_graylevel. = ..graylevel.. set graylevel 0.5 draw curve filled to 0 y set graylevel .old_graylevel. delete .old_graylevel. </font></PRE> </TD> </TR> </TABLE> <p> This gets a bit tedious, and it would obviously be nicer to just say something like <p> <TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%"> <TR> <TD> <PRE> <font color="#82140F"> Draw my kinda curve </font></PRE> </TD> </TR> </TABLE> <p> To make this shortcut, you'd tell Gri about the existence of a new command called `<font color="#82140F"><code>Draw my kinda curve</code></font>', and tell it that the new command can be accomplished by the longer code fragment written above. <p> Once you've learned how to make new commands, you are likely to use them a lot. The following explains how you add new commands. For advice on programming style, etc., (see <a href="ResourceFile.html#ResourceFile">Resource File</a>). <p> </table> <img src="./resources/bottom_banner.gif" usemap="#navigate_bottom" border="0"> </body> </html>