/usr/share/doc/gri/html/ParsingSynonyms.html is in gri-html-doc 2.12.26-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gri: How synonyms are parsed</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink="FF0000">
<!-- newfile ParsingSynonyms.html "Gri: How synonyms are parsed" "Programming Gri" -->
<!-- @node Parsing, Simple New Command, Purpose, Adding New Commands -->
<a name="Parsing" ></a>
<img src="./resources/top_banner.gif" alt="navigation map" 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="GriInThePress.html">17: Gri in Press</a><br>
<a href="Acknowledgments.html">18: Acknowledgments</a><br>
<a href="License.html">19: 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: Purpose of Synonyms" shape="rect" coords="557,2,573,24" href="PurposeOfSynonyms.html">
<area alt="Gri: creating a simple new command" shape="rect" coords="581,2,599,24" href="SimpleNewCommand.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: creating a simple new command" shape="rect" coords="581,2,599,24" href="SimpleNewCommand.html">
</map>
<h3>10.11.2: How Gri parses commands</h3>
Whenever Gri reads a command line, it compares it with its list of
commands. This list is searched in this order: (1) the universal
`<font color="82140F"><samp>gri.cmd</samp></font>' file (see <a href="InvokingGri.html#InvokingGri">Invoking Gri</a>), (2) your resource
file (see <a href="ResourceFile.html#ResourceFile">Resource File</a>), if it exists, and then (3) your command
file itself. Gri stops searching when it finds a Gri command that
matches the command line. "Matching" means that the command line is
identical in all words in a Gri command, scanning from the left, until
it encounters a word containing
<ul>
<li>
A quote (e.g. `<font color="#82140F"><code>"string"</code></font>')
<li>
A synonym name (e.g. `<font color="#82140F"><code>\file</code></font>')
<li>
A variable name (e.g. `<font color="#82140F"><code>.number.</code></font>')
<li>
An opening square bracket (e.g. `<font color="#82140F"><code>[option]</code></font>')
<li>
An opening brace (e.g. `<font color="#82140F"><code>{a|b}</code></font>')
<li>
A choice between two items (e.g. `<font color="#82140F"><code>first|second</code></font>')
<li>
A variable-name with a `<font color="#82140F"><code>&</code></font>' character immediately to the left
(e.g. `<font color="#82140F"><code>&.var.</code></font>'). This is a signal that the variable may be
changed inside the newcommand (see <a href="ChangeableCommandArguments.html#TheAmpersandSyntax">The Ampersand Syntax</a>).
<li>
A synonym-name with a `<font color="#82140F"><code>&</code></font>' character immediately to the left
(e.g. `<font color="#82140F"><code>&\syn</code></font>'). This is a signal that the synonym may be
changed inside the newcommand (see <a href="ChangeableCommandArguments.html#TheAmpersandSyntax">The Ampersand Syntax</a>).
</ul>
<p>
When Gri finds a command that matches your command line, it assumes that
this is the intended command, and searches no further. This means that
you must be careful not to have your command hidden by other commands.
For example, if your resource file contained these lines, Gri would
<b>never</b> execute the second new command, because calls to it match
the first command. To avoid this, you may either reverse the order of
the definitions, so that Gri will find the proper routine, or rename one
of the routines.
<p>
<TABLE SUMMARY="Example" BORDER="0" BGCOLOR="#efefef" WIDTH="100%">
<TR>
<TD>
<PRE>
<font color="#82140F">
`Draw foo'
Draw a foo.
{
show "drawing a foo"
}
`Draw foo bar'
Draw a foo bar.
{
show "drawing a foo bar"
}
</font></PRE>
</TD>
</TR>
</TABLE>
<p>
Gri searches the `<font color="#82140F"><samp>gri.cmd</samp></font>' file first, so any new command that you
create that clashes with built-in commands will be ignored by Gri
(see <a href="InvokingGri.html#InvokingGri">Invoking Gri</a>). Gri will warn you of this, and proceed,
ignoring your newer definition. To get around this,
you can use capital letters
to begin the words of your new command. By convention, Gri never uses
capital letters in this way, so a clash is impossible (except with any
similar command you might have defined previously, such as in your
`<font color="#82140F"><samp>~/.grirc</samp></font>' file).
<p>
</table>
<img src="./resources/bottom_banner.gif" alt="navigation map" usemap="#navigate_bottom" border="0">
</body>
</html>
|