<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Grammar</title><link>https://sourceforge.net/p/labrad/wiki/Grammar/</link><description>Recent changes to Grammar</description><atom:link href="https://sourceforge.net/p/labrad/wiki/Grammar/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 31 Jan 2015 05:22:13 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/labrad/wiki/Grammar/feed" rel="self" type="application/rss+xml"/><item><title>Grammar modified by Markus Ansmann</title><link>https://sourceforge.net/p/labrad/wiki/Grammar/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="labrad-grammar-beta-version"&gt;LabRAD Grammar (beta version)&lt;/h1&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The LabRAD Grammar describes in &lt;a class="" href="http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf" rel="nofollow"&gt;EBNF&lt;/a&gt; the &lt;a class="" href="/p/labrad/wiki/DataTypes"&gt;LabRAD Type Tags&lt;/a&gt; (including &lt;a class="" href="../Units"&gt;Units&lt;/a&gt;) used to specify the format of LabRAD data.&lt;/p&gt;
&lt;h2 id="rules"&gt;Rules&lt;/h2&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;anything&lt;/td&gt;&lt;td&gt;= &lt;i&gt;? Any character: 0x00 .. 0xFF ?&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;array&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;*&lt;/b&gt;", [ dimensions ], arraytag&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;arraytag&lt;/td&gt;&lt;td&gt;= [ comment ], ( basic | cluster | unknownempty ), [ comment ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;base&lt;/td&gt;&lt;td&gt;= basechar, { basechar }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;basechar&lt;/td&gt;&lt;td&gt;= letters | "&lt;b&gt;º&lt;/b&gt;" | "&lt;b&gt;'&lt;/b&gt;" | '"&lt;b&gt;' | "&lt;/b&gt;&lt;b&gt;µ&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;basic&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;b&lt;/b&gt;" | "&lt;b&gt;i&lt;/b&gt;" | "&lt;b&gt;w&lt;/b&gt;" | "&lt;b&gt;s&lt;/b&gt;" | value | complex | "&lt;b&gt;t&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cluster&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;(&lt;/b&gt;", [ comment ], tag, { tag }, "&lt;b&gt;)&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;comment&lt;/td&gt;&lt;td&gt;= { ignored }, { "&lt;b&gt;&lt;i&gt;{&lt;/i&gt;&lt;/b&gt;", commentstring, "&lt;b&gt;&lt;i&gt;}&lt;/i&gt;&lt;/b&gt;", { ignored } }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;commentchar&lt;/td&gt;&lt;td&gt;= anything - "&lt;b&gt;&lt;i&gt;}&lt;/i&gt;&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;commentstring&lt;/td&gt;&lt;td&gt;= commentchar, { commentchar }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;complex&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;c&lt;/b&gt;", [ units ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;digit&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;0&lt;/b&gt;" | nonzerodigit&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dimensions&lt;/td&gt;&lt;td&gt;= number&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;end&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;&lt;i&gt;:&lt;/i&gt;&lt;/b&gt;", { anything }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;error&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;E&lt;/b&gt;", [ comment ], [ tag ], [ end ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;exponent&lt;/td&gt;&lt;td&gt;= [ comment ], [ sign ], fraction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fraction&lt;/td&gt;&lt;td&gt;= numberorzero, [ comment ], [ "&lt;b&gt;/&lt;/b&gt;", [ comment ], number ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ignored&lt;/td&gt;&lt;td&gt;= space | tab | "&lt;b&gt;&lt;i&gt;,&lt;/i&gt;&lt;/b&gt;" | "&lt;b&gt;&lt;i&gt;;&lt;/i&gt;&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;letters&lt;/td&gt;&lt;td&gt;= letterscaps | letterslower&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;letterscaps&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;A&lt;/b&gt;" | "&lt;b&gt;B&lt;/b&gt;" | "&lt;b&gt;C&lt;/b&gt;" | "&lt;b&gt;D&lt;/b&gt;" | "&lt;b&gt;E&lt;/b&gt;" | "&lt;b&gt;F&lt;/b&gt;" | "&lt;b&gt;G&lt;/b&gt;" | "&lt;b&gt;H&lt;/b&gt;" | "&lt;b&gt;I&lt;/b&gt;" | "&lt;b&gt;J&lt;/b&gt;" | "&lt;b&gt;K&lt;/b&gt;" | "&lt;b&gt;L&lt;/b&gt;" | "&lt;b&gt;M&lt;/b&gt;" | "&lt;b&gt;N&lt;/b&gt;" | "&lt;b&gt;O&lt;/b&gt;" | "&lt;b&gt;P&lt;/b&gt;" | "&lt;b&gt;Q&lt;/b&gt;" | "&lt;b&gt;R&lt;/b&gt;" | "&lt;b&gt;S&lt;/b&gt;" | "&lt;b&gt;T&lt;/b&gt;" | "&lt;b&gt;U&lt;/b&gt;" | "&lt;b&gt;V&lt;/b&gt;" | "&lt;b&gt;W&lt;/b&gt;" | "&lt;b&gt;X&lt;/b&gt;" | "&lt;b&gt;Y&lt;/b&gt;" | "&lt;b&gt;Z&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;letterslower&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;a&lt;/b&gt;" | "&lt;b&gt;b&lt;/b&gt;" | "&lt;b&gt;c&lt;/b&gt;" | "&lt;b&gt;d&lt;/b&gt;" | "&lt;b&gt;e&lt;/b&gt;" | "&lt;b&gt;f&lt;/b&gt;" | "&lt;b&gt;g&lt;/b&gt;" | "&lt;b&gt;h&lt;/b&gt;" | "&lt;b&gt;i&lt;/b&gt;" | "&lt;b&gt;j&lt;/b&gt;" | "&lt;b&gt;k&lt;/b&gt;" | "&lt;b&gt;l&lt;/b&gt;" | "&lt;b&gt;m&lt;/b&gt;" | "&lt;b&gt;n&lt;/b&gt;" | "&lt;b&gt;o&lt;/b&gt;" | "&lt;b&gt;p&lt;/b&gt;" | "&lt;b&gt;q&lt;/b&gt;" | "&lt;b&gt;r&lt;/b&gt;" | "&lt;b&gt;s&lt;/b&gt;" | "&lt;b&gt;t&lt;/b&gt;" | "&lt;b&gt;u&lt;/b&gt;" | "&lt;b&gt;v&lt;/b&gt;" | "&lt;b&gt;w&lt;/b&gt;" | "&lt;b&gt;x&lt;/b&gt;" | "&lt;b&gt;y&lt;/b&gt;" | "&lt;b&gt;z&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;nonzerodigit&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;1&lt;/b&gt;" | "&lt;b&gt;2&lt;/b&gt;" | "&lt;b&gt;3&lt;/b&gt;" | "&lt;b&gt;4&lt;/b&gt;" | "&lt;b&gt;5&lt;/b&gt;" | "&lt;b&gt;6&lt;/b&gt;" | "&lt;b&gt;7&lt;/b&gt;" | "&lt;b&gt;8&lt;/b&gt;" | "&lt;b&gt;9&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;number&lt;/td&gt;&lt;td&gt;= nonzerodigit, { digit }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;numberorzero&lt;/td&gt;&lt;td&gt;= number | "&lt;b&gt;0&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;sign&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;+&lt;/b&gt;" | "&lt;b&gt;-&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;space&lt;/td&gt;&lt;td&gt;= " "&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;tab&lt;/td&gt;&lt;td&gt;= &lt;i&gt;? TAB character: 0x09 ?&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;tag&lt;/td&gt;&lt;td&gt;= ( basic | cluster | array ), [ comment ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;typetag&lt;/td&gt;&lt;td&gt;= error | ( [ comment ], { tag } , [ end ] )&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;unit&lt;/td&gt;&lt;td&gt;= base, [ comment ], [ "&lt;b&gt;^&lt;/b&gt;", exponent ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;units&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;[&lt;/b&gt;", unitstring, "&lt;b&gt;]&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;unitstring&lt;/td&gt;&lt;td&gt;= [ comment ], ( "1" | unit ), { ( "&lt;b&gt;*&lt;/b&gt;" | "&lt;b&gt;/&lt;/b&gt;" ), unit }&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;unknownempty&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;_&lt;/b&gt;"&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;value&lt;/td&gt;&lt;td&gt;= "&lt;b&gt;v&lt;/b&gt;", [ units ]&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Note:&lt;br /&gt;
This information is not fully verified yet. I am neither convinced that this grammar is complete, self consistent, and makes sense, nor am I sure that the manager implements it in this exact form. It should be roughly correct, but I will have to thoroughly check this. If you have any comments, please let us know.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;~ Markus Ansmann, Dec 13, 2007&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Ansmann</dc:creator><pubDate>Sat, 31 Jan 2015 05:22:13 -0000</pubDate><guid>https://sourceforge.net2826597e8d311ff001fdb7f80fc81fd6fc244a49</guid></item></channel></rss>