From 1e8506b9723a432c2c010b0f91b17cd0b68f6f68 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 13 Jul 2006 17:43:50 -0400 Subject: [PATCH] checkpoint darcs-hash:20060713214350-5007d-4a9695efeb8dac98fe780cb7c3b699367dae496f.gz --- src/edu/berkeley/sbp/meta/MetaGrammarBindings.java | 11 ++++++++--- tests/meta.g | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index 9ccf8a8..742918b 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -85,12 +85,17 @@ public class MetaGrammarBindings { } } - public static @bind.as("#import") GrammarNode poundimport(String fileName) { - System.err.println("#import " + fileName); + public static @bind.as("#import") GrammarNode poundimport(String fileName, String as) { + if (as==null) as = ""; + System.err.println("#import " + fileName + " as " + as); try { Tree t = new CharParser(MetaGrammar.make()).parse(new FileInputStream(fileName)).expand1(); Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); - return (MetaGrammarBindings.GrammarNode)red.invoke(t); + String oldprefix = prefix; + prefix = as; + GrammarNode gn = (GrammarNode)red.invoke(t); + prefix = oldprefix; + return gn; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); diff --git a/tests/meta.g b/tests/meta.g index 51e55be..4416d55 100644 --- a/tests/meta.g +++ b/tests/meta.g @@ -7,9 +7,9 @@ s = ws! Grammar ws! Grammar = Declaration +/ ws Declaration = NonTerminal - | ^"#import" ws! FileName //(ws! "as" ws! Prefix)? + | ^"#import" ws! FileName (ws! "as" ws! Prefix)? -//Prefix = ([a-zA-Z] ".")+ "*" +Prefix = ([a-zA-Z] ".")+ "*" FileName = FileNameChar+ -> [\r\n ] FileNameChar = Space:: "\\ " | ~[\r\n ] -- 1.7.10.4