update grammar, move to new version of SBP
authoradam <adam@megacz.com>
Sun, 6 May 2007 08:53:03 +0000 (09:53 +0100)
committeradam <adam@megacz.com>
Sun, 6 May 2007 08:53:03 +0000 (09:53 +0100)
lib/edu.berkeley.sbp.jar
src/edu/berkeley/fleet/assembler/Parser.java
src/edu/berkeley/fleet/assembler/fleet.g
src/edu/berkeley/fleet/slipway/Slipway.java

index b403ac8..d8d8656 100644 (file)
Binary files a/lib/edu.berkeley.sbp.jar and b/lib/edu.berkeley.sbp.jar differ
index 629bb44..3fd059b 100644 (file)
@@ -4,7 +4,6 @@ import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.chr.*;
 import edu.berkeley.sbp.misc.*;
 import edu.berkeley.sbp.meta.*;
-import edu.berkeley.sbp.bind.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
@@ -43,7 +42,7 @@ public class Parser {
             Parser.class.getClassLoader().getResourceAsStream("edu/berkeley/fleet/assembler/fleet.g");
         CharParser metaGrammarParser   = new CharParser(MetaGrammar.newInstance());
         Tree<String> parsedGrammar     = metaGrammarParser.parse(new CharInput(grammarStream)).expand1();
-        grammar                = Grammar.create(parsedGrammar, "s", new Grammar.Bindings() { public Object repeatTag() { return ""; } });
+        grammar                        = GrammarAST.buildFromAST(parsedGrammar, "s", new File[0]);
         return grammar;
     }
 
index 8262356..f00912d 100644 (file)
@@ -5,15 +5,15 @@
 // the grammar.  An equivalent lex+yacc grammar and support code would
 // be several times as long.
 
-Comment        = "//" ~[\n\r]* [\r\n]!
-               | "/*" ~[\n\r]* "*/"
-ws             = ([\r\n ] | Comment)* -> ~[\r\n ]
+Comment        = "//" ~[\n\r]!* [\r\n]!
+               | "/*" ~[\n\r]!* "*/"
+ws             = ([\r\n ] | Comment)!* -> ~[\r\n ]
 
 s               = ws! Program ws!
 Program         = Program:: Directive+/ws
-                | Program:: (Directive+/ws) ws! CodeBagBody
+                | Program:: ("":: Directive+/ws) ws! CodeBagBody
 
-Statement       = Fiber::                  Source  ":" (Instruction +/ ws)     /ws
+Statement       = Fiber::                  Source  ":" ("":: Instruction +/ ws)     /ws
                 | Literal::                int     ":" "sendto" Port       ";" /ws
                 | ShipSpecificLiteral::    SSL     ":" "sendto" Port       ";" /ws
                 | CodeBagDescriptor::      CodeBag ":" "sendto" Port       ";" /ws
@@ -24,8 +24,8 @@ CountField      = Brack::     "[" int "]"
                 | BrackStar:: "[*]"
                 | ParenStar:: "(*)"
 Instruction     = Instruction::
-                        (CountField ws!)?
-                        (Command +/ (ws! "," ws!) ws! ";"!)
+                        ("":: (CountField ws!)?)
+                        ("":: Command +/ (ws! "," ws!) ws! ";"!)
 Command         = Nop::      "nop"
                 | Kill::     "kill"
                 | KillStar:: "kill*"
@@ -44,26 +44,26 @@ Port           = Port::     shipname "." portname
                | SubPort::  shipname "." portname "." portname
                |           ^"()"
 
-CodeBagBody    = Statement +/ ws
+CodeBagBody::  = Statement +/ ws
 CodeBag        = CodeBagRef:: CodeBagName
                | AnonymousCodeBag:: "{" CodeBagBody "}" /ws
 
 CodeBagName         = name
 shipname            = name
-shiptype            = Name:: [A-Z] [A-Za-z0-9\[\]_]**
-ShipSpecificLiteral = Name:: [A-Z] [A-Z0-9\[\]_]**
-portname            = Name:: [a-z] [A-Za-z0-9\[\]_]**
-name                = Name:: [A-Za-z] [A-Za-z0-9\[\]_]**
-index               = "[" [0-9]+ "]" | [0-9]+
-int                 = [\-0-9]++
+shiptype            = Name:: [A-Z]    ("":: [A-Za-z0-9\[\]_]**)
+ShipSpecificLiteral = Name:: [A-Z]    ("":: [A-Z0-9\[\]_]**)
+portname            = Name:: [a-z]    ("":: [A-Za-z0-9\[\]_]**)
+name                = Name:: [A-Za-z] ("":: [A-Za-z0-9\[\]_]**)
+index               = "[" ("":: [0-9]+) "]" | ("":: [0-9]+)
+int                 = "":: [\-0-9]++
 ShipSpecific        = ShipSpecific:: "\"" ~[\"]++ "\""
 
 // the following are not part of the official FLEET syntax and are
 // specific to Adam's interpreter.
 
-Directive      = Memory::  "#memory" "{" (int +/ (ws! "," ws!)) "}" /ws
+Directive      =           "#memory" "{" (Memory:: int +/ (ws! "," ws!)) "}" /ws
                | Import::  "#import" [A-Za-z_.]++ /ws
-               | Include:: "#include" ("\"" (~[\"])+ "\"") /ws
-               | Ship::    "#ship" shipname ":" [0-9A-Za-z_.]++ /ws
+               | Include:: "#include" ws! "\"" ~[\"]+ "\""
+               | Ship::    "#ship" shipname ":" ("":: [0-9A-Za-z_.]++) /ws
                | Expect::  "#expect" int /ws
 
index a27e165..daa7710 100644 (file)
@@ -8,7 +8,6 @@ import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
 import edu.berkeley.sbp.misc.*;
 import edu.berkeley.sbp.meta.*;
-import edu.berkeley.sbp.bind.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;