updates to fleet.g
authoradam <adam@megacz.com>
Sun, 22 Jan 2006 08:05:52 +0000 (03:05 -0500)
committeradam <adam@megacz.com>
Sun, 22 Jan 2006 08:05:52 +0000 (03:05 -0500)
darcs-hash:20060122080552-5007d-bfc4d9bbea8c6a1ccafe705e847ac8c40d3682ef.gz

tests/fleet.g

index bf136c6..4d66b4d 100644 (file)
@@ -1,16 +1,12 @@
-//
 // The FLEET Assembly Language Grammar
 // As specified in document 2005-ucies06
-//
 
 // comments are included where the grammar had to go beyond the strict
 // "letter of the law" in ies06
 
-//
 // Note that this is the *entire, complete* formal specification of
 // the grammar.  An equivalent lex+yacc grammar and support code would
 // be several times as long.
-//
 
 Comment     !::= "//" ~[\n]* "\n"
                | "/*" ~[\n]* "*/"
@@ -19,12 +15,16 @@ ws           ::= w**
 w            ::= [\r\n ]
                | Comment
 
+Program      ::= Statement+                            /ws
+
 Statement    ::= Move ";"?                             /ws
                | "{" Statement* "}"
                | Port "RENAMES" Port "ENDRENAME" ";"   /ws
+//             | "#define" Port Port                   /ws
 
-Move         ::= Source      ^"->" Destination         /ws
-               | Destination ^":=" Source              /ws
+Move         ::= Source       ^"->" Destination        /ws
+               | Source       ^"=>" Destination        /ws
+               | Destination  ^":=" Source             /ws
 
 Destination  ::= Port +/ (ws "," ws)
 Source       ::= Port
@@ -33,7 +33,7 @@ Source       ::= Port
 CodeBag      ::= CodeBagName? "{" Statement* "}" ";"?  /ws
 
 // Note: this deviates from ies06
-location     ::= shipname ("." portname)?
+Port         ::= shipname ("." portname)*
 shipname     ::= name     index?
 portname     ::= name     index?
 name         ::= [A-Za-z] [A-Za-z0-9\[\]\.]*