From: adam Date: Sun, 6 May 2007 08:53:03 +0000 (+0100) Subject: update grammar, move to new version of SBP X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=6e1e4cbebb6524322d687cd6d00353d19a3e6bc6;p=fleet.git update grammar, move to new version of SBP --- diff --git a/lib/edu.berkeley.sbp.jar b/lib/edu.berkeley.sbp.jar index b403ac8..d8d8656 100644 Binary files a/lib/edu.berkeley.sbp.jar and b/lib/edu.berkeley.sbp.jar differ diff --git a/src/edu/berkeley/fleet/assembler/Parser.java b/src/edu/berkeley/fleet/assembler/Parser.java index 629bb44..3fd059b 100644 --- a/src/edu/berkeley/fleet/assembler/Parser.java +++ b/src/edu/berkeley/fleet/assembler/Parser.java @@ -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 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; } diff --git a/src/edu/berkeley/fleet/assembler/fleet.g b/src/edu/berkeley/fleet/assembler/fleet.g index 8262356..f00912d 100644 --- a/src/edu/berkeley/fleet/assembler/fleet.g +++ b/src/edu/berkeley/fleet/assembler/fleet.g @@ -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 diff --git a/src/edu/berkeley/fleet/slipway/Slipway.java b/src/edu/berkeley/fleet/slipway/Slipway.java index a27e165..daa7710 100644 --- a/src/edu/berkeley/fleet/slipway/Slipway.java +++ b/src/edu/berkeley/fleet/slipway/Slipway.java @@ -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.*;