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
+