From: <jbo...@li...> - 2006-01-14 02:52:28
|
Author: mic...@jb... Date: 2006-01-13 21:52:11 -0500 (Fri, 13 Jan 2006) New Revision: 2096 Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/Expander.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/ExpanderContext.java Log: Expander skeleton Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/Expander.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/Expander.java 2006-01-13 21:10:43 UTC (rev 2095) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/Expander.java 2006-01-14 02:52:11 UTC (rev 2096) @@ -0,0 +1,16 @@ +package org.drools.lang; + +/** + * Expanders provide just in time expansion for expressions in DRL. + * + * Expanders should ideally not make presumptions on any embedded semantic + * language. For instance, java aware pre processing should be done in + * drools-java semantic module, not in the parser itself. Expanders should + * be reusable across semantic languages. + * + * @author Michael Neale + * + */ +public interface Expander { + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/Expander.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/ExpanderContext.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/ExpanderContext.java 2006-01-13 21:10:43 UTC (rev 2095) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/ExpanderContext.java 2006-01-14 02:52:11 UTC (rev 2096) @@ -0,0 +1,71 @@ +package org.drools.lang; + +import java.io.Serializable; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * Expanders are extension points for expanding + * expressions in DRL at parse time. + * This is just-in-time translation, or macro expansion, or + * whatever you want. + * + * The important thing is that it happens at the last possible moment, + * so any errors in expansion are included in the parsers errors. + * + * Just-in-time expansions may include complex pre-compilers, + * or just macros, and everything in between. + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class ExpanderContext implements Serializable { + + private static final long serialVersionUID = 1806461802987228880L; + private boolean enabled = true; + + private final Set expanders; + + /** + * This indicates that at least one expander has been configured for + * this parser configuration. + */ + public boolean isEnabled() { + return enabled; + } + + public ExpanderContext(Collection initialExpanders) { + enabled = true; + this.expanders = new HashSet(initialExpanders); + } + + public ExpanderContext() { + this.expanders = new HashSet(); + } + + public ExpanderContext addExpander(Expander exp) { + expanders.add(exp); + return this; + } + + /** + * Expands the expression Just-In-Time for the parser. + * If the expression is not meant to be expanded, or if no + * appropriate expander is found, it will echo back the same + * expression. + * + * @param expression The "line" or expression to be expanded/pre-compiled. + * @param context The context of the current state of parsing. This can help + * the expander know if it needs to expand, what to do etc. + * + * If <code>isEnabled()</code> is false then it is not required to + * call this method. + */ + public String expand(String expression, RuleParser context) { + return expression; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/lang/ExpanderContext.java ___________________________________________________________________ Name: svn:eol-style + native |