From 445e76a3d7bad5831a9d66665c027c83d4504079 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 15 Jan 2006 18:22:34 -0500 Subject: [PATCH] checkpoint darcs-hash:20060115232234-5007d-8a4b23840c8d0b80055290a88dd84db664b431a7.gz --- src/edu/berkeley/sbp/misc/MetaGrammar.java | 1 + tests/meta.g | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 013ab09..e181600 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -118,6 +118,7 @@ public class MetaGrammar extends StringWalker { else if ("**".equals(head)) return Repeat.maximal0((Element)walk(tree.child(0))); else if ("++".equals(head)) return Repeat.maximal1((Element)walk(tree.child(0))); else if ("?".equals(head)) return Repeat.maybe((Element)walk(tree.child(0))); + else if ("!".equals(head)) return walk(tree.child(0)); else if ("&".equals(head)) return ((Sequence)walk(tree,0)).and(new PreSequence((Element[])Reflection.lub((Object[])walk(tree, 1)), null).buildSequence(null, true, false)); else if ("&~".equals(head)) diff --git a/tests/meta.g b/tests/meta.g index 79e3159..110964f 100644 --- a/tests/meta.g +++ b/tests/meta.g @@ -2,23 +2,23 @@ s ::= Grammar ws => "gram" w !::= " " | "\n" | "\r" -ws !::= w** | w** "//" (~[\n]*) "\n" ws +ws !::= w** | w** "//" (~[\n]*) "\n" !ws wp !::= w++ Grammar ::= r +/ ws => "grammar" r ::= word ^"::=" alternatives /ws | word ^"!::=" alternatives /ws -alternatives ::= (Conjuncts +/ (ws "|" ws)) +/ (ws ">" ws) +alternatives ::= (Conjuncts +/ (!ws "|" !ws)) +/ (!ws ">" !ws) Conjuncts ::= Sequence | Sequence ^"&" e*/ws /ws | Sequence ^"&~" e*/ws /ws ps ::= e*/ws => "ps" - | (e+/ws ws)? "^" Quoted (ws e+/ws)? => "ps2" + | (e+/ws !ws)? "^" Quoted (!ws e+/ws)? => "ps2" psy ::= ps - | ps wp ^"/" ws e + | ps wp ^"/" !ws e psx ::= psy => "psy" // | e "<-" psy /ws => "psyl" | psy "->" e /ws => "psyr" -- 1.7.10.4