Mercurial > ~dholland > hg > ag > index.cgi
diff examples/fc/fc2.syn @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/fc/fc2.syn Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,52 @@ +/* + AnaGram Programming Examples + FC2: Multiple Fahrenheit-Celsius conversions with signed numbers + and error resynchronization. + + + Copyright 1993 Parsifal Software. All Rights Reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +[ + test file mask = "*.fc2" // C1 + traditional engine /* turn this off for production use */ // C2 +] + +eof = -1 + +grammar + -> [temperature, '\n']..., eof // P1 + +temperature + -> number:n, 'c' + 'C' ={ /* P2 */ + printf("%d\370F = %d\370C\n",9*n/5 + 32,n); + } + -> number:n, 'f' + 'F' ={ /* P3 */ + printf("%d\370F = %d\370C\n",n,5*(n-32)/9); + } + -> error // P4 + +(int) number + -> '-', integer:n =-n; // P5 + -> '+'?, integer:n =n; // P6 + +(int) integer + -> '0-9':d =d-'0'; // P7 + -> integer:n, '0-9':d =10*n+d-'0'; // P8 +