// $ANTLR 3.2 Sep 23, 2009 12:02:23 /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g 2013-01-08 11:23:57 package org.jactr.io.antlr3.builder; import java.util.Collection; import java.util.Map; import java.util.HashMap; import java.util.Set; import java.util.TreeSet; import org.jactr.io.antlr3.misc.*; import org.jactr.core.model.IModel; import org.jactr.core.model.basic.BasicModel; import org.jactr.core.module.IModule; import org.jactr.core.module.declarative.*; import org.jactr.core.module.declarative.six.*; import org.jactr.core.module.procedural.*; import org.jactr.core.module.procedural.six.*; import org.jactr.core.extensions.IExtension; import org.jactr.core.chunk.IChunk; import org.jactr.core.chunktype.IChunkType; import org.jactr.core.production.IProduction; import org.jactr.core.production.ISymbolicProduction; import org.jactr.core.buffer.IActivationBuffer; import org.jactr.core.slot.*; import org.jactr.core.production.action.*; import org.jactr.core.production.condition.*; import org.jactr.core.utils.parameter.IParameterized; import org.jactr.scripting.action.*; import org.jactr.scripting.condition.*; import org.jactr.scripting.*; import org.jactr.core.production.CannotInstantiateException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javolution.util.FastList; import org.antlr.runtime.*; import org.antlr.runtime.tree.*;import java.util.Stack; import java.util.List; import java.util.ArrayList; public class JACTRBuilder extends TreeParser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "MODEL", "LIBRARY", "MODULES", "MODULE", "EXTENSIONS", "EXTENSION", "DECLARATIVE_MEMORY", "CHUNK_TYPE", "CHUNKS", "CHUNK", "PROCEDURAL_MEMORY", "PRODUCTION", "PARAMETERS", "PARAMETER", "BUFFERS", "BUFFER", "CONDITIONS", "MATCH_CONDITION", "QUERY_CONDITION", "SCRIPTABLE_CONDITION", "PROXY_CONDITION", "ACTIONS", "ADD_ACTION", "SET_ACTION", "REMOVE_ACTION", "MODIFY_ACTION", "OUTPUT_ACTION", "SCRIPTABLE_ACTION", "PROXY_ACTION", "LANG", "SCRIPT", "VARIABLE", "STRING", "NUMBER", "IDENTIFIER", "CHUNK_IDENTIFIER", "CHUNK_TYPE_IDENTIFIER", "SLOTS", "SLOT", "LT", "GT", "EQUALS", "NOT", "WITHIN", "GTE", "LTE", "OR", "AND", "LOGIC", "CLASS_SPEC", "NAME", "PARENT", "PARENTS", "UNKNOWN" }; public static final int LT=43; public static final int LOGIC=52; public static final int PARAMETERS=16; public static final int SCRIPTABLE_ACTION=31; public static final int CHUNK=13; public static final int GTE=48; public static final int PROXY_CONDITION=24; public static final int EQUALS=45; public static final int LIBRARY=5; public static final int NOT=46; public static final int CHUNK_TYPE=11; public static final int AND=51; public static final int EOF=-1; public static final int LTE=49; public static final int ADD_ACTION=26; public static final int ACTIONS=25; public static final int PARENT=55; public static final int NAME=54; public static final int EXTENSIONS=8; public static final int UNKNOWN=57; public static final int PROCEDURAL_MEMORY=14; public static final int IDENTIFIER=38; public static final int PARAMETER=17; public static final int PRODUCTION=15; public static final int DECLARATIVE_MEMORY=10; public static final int MODEL=4; public static final int MODULES=6; public static final int REMOVE_ACTION=28; public static final int MATCH_CONDITION=21; public static final int SCRIPT=34; public static final int PROXY_ACTION=32; public static final int CHUNK_IDENTIFIER=39; public static final int NUMBER=37; public static final int BUFFER=19; public static final int MODULE=7; public static final int CONDITIONS=20; public static final int SCRIPTABLE_CONDITION=23; public static final int CHUNK_TYPE_IDENTIFIER=40; public static final int PARENTS=56; public static final int MODIFY_ACTION=29; public static final int VARIABLE=35; public static final int CLASS_SPEC=53; public static final int SLOT=42; public static final int BUFFERS=18; public static final int OR=50; public static final int WITHIN=47; public static final int CHUNKS=12; public static final int SLOTS=41; public static final int GT=44; public static final int SET_ACTION=27; public static final int QUERY_CONDITION=22; public static final int EXTENSION=9; public static final int OUTPUT_ACTION=30; public static final int LANG=33; public static final int STRING=36; // delegates // delegators protected static class Model_scope { IModel model; Map<String, IChunk> knownChunks; Map<String, IChunkType> knownChunkTypes; Map<IChunk, Collection<CommonTree>> chunkParameters; Map<IProduction, Collection<CommonTree>> productionParameters; Collection<IExtension> extensions; Collection<String> sourceChunks; CommonTree modelDescriptor; } protected Stack Model_stack = new Stack(); public JACTRBuilder(TreeNodeStream input) { this(input, new RecognizerSharedState()); } public JACTRBuilder(TreeNodeStream input, RecognizerSharedState state) { super(input, state); } public String[] getTokenNames() { return JACTRBuilder.tokenNames; } public String getGrammarFileName() { return "/Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g"; } static private final transient Log LOGGER = LogFactory.getLog(JACTRBuilder.class); static private String NULL = "null"; static private String NIL = "nil"; static private String T = "t"; private Collection<Exception> _warnings = new ArrayList<Exception>(); private Collection<Exception> _errors = new ArrayList<Exception>(); public void reportError(RecognitionException re) { reportException(re); } public void reportException(Exception e) { if(e instanceof BuilderWarning) _warnings.add(e); else { LOGGER.error(e.getMessage(), e); _errors.add(e); } } public Collection<Exception> getWarnings() { return _warnings; } public Collection<Exception> getErrors() { return _errors; } /** apply the parameters in the parametersNode to parameterized */ public void applyParameters(IParameterized parameterized, Collection<CommonTree> parameterNodes) { for(CommonTree param: parameterNodes) { String pName = param.getChild(0).toString(); String pVal = param.getChild(1).toString(); if(LOGGER.isDebugEnabled()) LOGGER.debug(parameterized+"."+pName+" => "+pVal); try { parameterized.setParameter(pName, pVal); } catch(Exception e) { throw new BuilderWarning("Error while setting parameter "+parameterized+"."+pName+" to "+pVal, param, e); } } } protected Object resolveKeywords(String strToResolve) { if(NULL.equalsIgnoreCase(strToResolve)) return null; if(NIL.equalsIgnoreCase(strToResolve)) return null; if(T.equalsIgnoreCase(strToResolve)) return Boolean.TRUE; /** I'd rather use Boolean.valueOf() but it returns false unless the string is equal to "true" - and doesn't throw any formatting exceptions if it is nothing like "false" */ if("true".equalsIgnoreCase(strToResolve)) return Boolean.TRUE; if("false".equalsIgnoreCase(strToResolve)) return Boolean.FALSE; return strToResolve; } /** * we use stringbuilders to mark string literals, which are removed during resolveSlots, but * that is only called on chunks and chunktypes, not conditions/actions. this takes care of that. * @param slot * @return */ protected ISlot cleanupSlot(ISlot slot) { if (slot instanceof ILogicalSlot) { FastList<ISlot> children = FastList.newInstance(); ((ILogicalSlot)slot).getSlots(children); for(ISlot s : children) cleanupSlot(s); FastList.recycle(children); } else { Object value = slot.getValue(); if (value instanceof StringBuilder) ((IMutableSlot) slot).setValue(value.toString()); } return slot; } private Collection<String> getSourceChunks(CommonTree model) { Collection<String> rtn = new ArrayList<String>(); Map<String, CommonTree> bufferTrees = ASTSupport.getMapOfTrees(model, BUFFER); for(String bufferName : bufferTrees.keySet()) { //get the all identifiers Collection<CommonTree> identifierTrees = ASTSupport.getAllDescendantsWithType(bufferTrees.get(bufferName), CHUNK_IDENTIFIER); LOGGER.debug(identifierTrees.size()+" source chunks in "+bufferName); for(CommonTree chunkIdentifier : identifierTrees) { String chunkName = chunkIdentifier.getText(); rtn.add(chunkName.toLowerCase()); } } return rtn; } protected void resolveSlots(ISlotContainer slotContainer, Map<String, IChunk> knownChunks, Map<String, IChunkType> knownChunkTypes) { if(LOGGER.isDebugEnabled()) LOGGER.debug("resolving slots for "+slotContainer); for(ISlot slot : slotContainer.getSlots()) { //getSlots will usually return an immutable copy to dissuade modifications if(slotContainer instanceof IUniqueSlotContainer) //but getSlot should return the actual slot slot = ((IUniqueSlotContainer)slotContainer).getSlot(slot.getName()); if(LOGGER.isDebugEnabled()) LOGGER.debug("Attempting resolution of "+slot); if(slot instanceof IMutableSlot) { IMutableSlot mutable = (IMutableSlot) slot; Object value = mutable.getValue(); if(!mutable.isVariableValue()) { if(value instanceof StringBuilder) { //this is a real string, not one that needs to be reoslved mutable.setValue(value.toString()); } else if(value instanceof String) { String strVal = (String) value; //attempt to resolve boolean changed = true; Object newValue = resolveKeywords(strVal); if(newValue==strVal) { /* it wasn't a keyword, could still be a string or an identifier */ //more resolution is necessary //newValue = model.getDeclarativeModule().getChunk(strVal); //if(newValue == null) newValue = knownChunks.get(strVal.toLowerCase()); //if(newValue == null) newValue = model.getDeclarativeModule().getChunkType(strVal); if(newValue==null) newValue = knownChunkTypes.get(strVal.toLowerCase()); if(newValue==null) { /* nope, just a string */ newValue=strVal; } changed = newValue!=strVal; } if(changed) { //resolve if(LOGGER.isDebugEnabled()) LOGGER.debug("changing slot "+slot.getName()+" value from "+strVal+" to "+newValue); mutable.setValue(newValue); if(mutable.getValue()!=newValue) reportException(new BuilderError("Could not change slot "+slot.getName()+" value from "+strVal+" to "+newValue, null)); } } } } else reportException(new BuilderError("Could not resolve slot since it is immutable "+slot+" contained within "+slotContainer, null)); } } private String partialStream(String[] stream, int index) { String result = ""; for(int i = index+1; i < stream.length; i++) { result += stream[i] + " "; } return result; } public void setModel(IModel model) { Model_stack.push(new Model_scope()); ((Model_scope)Model_stack.peek()).model = model; ((Model_scope)Model_stack.peek()).productionParameters = new HashMap<IProduction, Collection<CommonTree>>(); //if(((Model_scope)Model_stack.peek()).knownChunks == null) ((Model_scope)Model_stack.peek()).knownChunks = new HashMap<String, IChunk>(); //if(((Model_scope)Model_stack.peek()).knownChunkTypes == null)((Model_scope)Model_stack.peek()).knownChunkTypes = new HashMap<String, IChunkType>(); } // $ANTLR start "model" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:354:1: model returns [IModel model] : ^(m= MODEL name= NAME modules extensions buffers library p= parameters ) ; public final IModel model() throws RecognitionException { Model_stack.push(new Model_scope()); IModel model = null; CommonTree m=null; CommonTree name=null; Collection<CommonTree> p = null; model = null; ((Model_scope)Model_stack.peek()).knownChunks = new HashMap<String, IChunk>(); ((Model_scope)Model_stack.peek()).knownChunkTypes = new HashMap<String, IChunkType>(); ((Model_scope)Model_stack.peek()).chunkParameters = new HashMap<IChunk, Collection<CommonTree>>(); ((Model_scope)Model_stack.peek()).productionParameters = new HashMap<IProduction, Collection<CommonTree>>(); ((Model_scope)Model_stack.peek()).extensions = new ArrayList<IExtension>(); ((Model_scope)Model_stack.peek()).sourceChunks = new ArrayList<String>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:365:1: ( ^(m= MODEL name= NAME modules extensions buffers library p= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:365:3: ^(m= MODEL name= NAME modules extensions buffers library p= parameters ) { m=(CommonTree)match(input,MODEL,FOLLOW_MODEL_in_model330); match(input, Token.DOWN, null); name=(CommonTree)match(input,NAME,FOLLOW_NAME_in_model334); if(LOGGER.isDebugEnabled()) LOGGER.debug("got model def for "+(name!=null?name.getText():null)); String modelName = (name!=null?name.getText():null); model = new BasicModel(modelName); ((Model_scope)Model_stack.peek()).model = model; ((Model_scope)Model_stack.peek()).modelDescriptor = (CommonTree) m; pushFollow(FOLLOW_modules_in_model346); modules(); state._fsp--; pushFollow(FOLLOW_extensions_in_model348); extensions(); state._fsp--; pushFollow(FOLLOW_buffers_in_model350); buffers(); state._fsp--; pushFollow(FOLLOW_library_in_model352); library(); state._fsp--; pushFollow(FOLLOW_parameters_in_model356); p=parameters(); state._fsp--; match(input, Token.UP, null); /* we apply model parameters, then the other parameters */ applyParameters(model, p); //now we can resolve the parameters for the chunks for(IChunk chunk : ((Model_scope)Model_stack.peek()).chunkParameters.keySet()) applyParameters(chunk.getSubsymbolicChunk(), ((Model_scope)Model_stack.peek()).chunkParameters.get(chunk)); //we allow the chunktype parameters to be set with the chunktype creation // since it won't likely depend upon the model's parameters.. // and the production parameters for(IProduction production : ((Model_scope)Model_stack.peek()).productionParameters.keySet()) applyParameters(production.getSubsymbolicProduction(), ((Model_scope)Model_stack.peek()).productionParameters.get(production)); /** we need to insert the chunks into the buffers */ Map<String, CommonTree> bufferTrees = ASTSupport.getMapOfTrees(m, BUFFER); for(String bufferName : bufferTrees.keySet()) { LOGGER.debug("Checking "+bufferName+" for source chunks to insert"); IActivationBuffer buffer = ((Model_scope)Model_stack.peek()).model.getActivationBuffer(bufferName); if(buffer==null) throw new BuilderError(bufferName+" is not a known buffer", bufferTrees.get(bufferName)); //get the all identifiers Collection<CommonTree> identifierTrees = ASTSupport.getAllDescendantsWithType(bufferTrees.get(bufferName), CHUNK_IDENTIFIER); LOGGER.debug(identifierTrees.size()+" source chunks in "+bufferName); for(CommonTree chunkIdentifier : identifierTrees) { String chunkName = chunkIdentifier.getText(); IChunk chunk = null; /* */ chunk = ((Model_scope)Model_stack.peek()).knownChunks.get(chunkName.toLowerCase()); if(chunk==null) throw new BuilderError(chunkName+" is not a known chunk", chunkIdentifier); buffer.addSourceChunk(chunk); } } /* install the extensions.. */ for(IExtension extension : ((Model_scope)Model_stack.peek()).extensions) model.install(extension); /* everything is done, call initialize */ try { model.initialize(); } catch(Exception e) { reportException(e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { Model_stack.pop(); } return model; } // $ANTLR end "model" // $ANTLR start "library" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:447:1: library : ^( LIBRARY declarativeMemory proceduralMemory ) ; public final void library() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:448:1: ( ^( LIBRARY declarativeMemory proceduralMemory ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:448:3: ^( LIBRARY declarativeMemory proceduralMemory ) { match(input,LIBRARY,FOLLOW_LIBRARY_in_library370); match(input, Token.DOWN, null); pushFollow(FOLLOW_declarativeMemory_in_library372); declarativeMemory(); state._fsp--; pushFollow(FOLLOW_proceduralMemory_in_library374); proceduralMemory(); state._fsp--; match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "library" // $ANTLR start "declarativeMemory" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:450:1: declarativeMemory : ( ^( DECLARATIVE_MEMORY ( chunkType )+ ) | DECLARATIVE_MEMORY ) ; public final void declarativeMemory() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:454:2: ( ( ^( DECLARATIVE_MEMORY ( chunkType )+ ) | DECLARATIVE_MEMORY ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:454:4: ( ^( DECLARATIVE_MEMORY ( chunkType )+ ) | DECLARATIVE_MEMORY ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:454:4: ( ^( DECLARATIVE_MEMORY ( chunkType )+ ) | DECLARATIVE_MEMORY ) int alt2=2; int LA2_0 = input.LA(1); if ( (LA2_0==DECLARATIVE_MEMORY) ) { int LA2_1 = input.LA(2); if ( (LA2_1==DOWN) ) { alt2=1; } else if ( (LA2_1==PROCEDURAL_MEMORY) ) { alt2=2; } else { NoViableAltException nvae = new NoViableAltException("", 2, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 2, 0, input); throw nvae; } switch (alt2) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:454:5: ^( DECLARATIVE_MEMORY ( chunkType )+ ) { match(input,DECLARATIVE_MEMORY,FOLLOW_DECLARATIVE_MEMORY_in_declarativeMemory391); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:455:14: ( chunkType )+ int cnt1=0; loop1: do { int alt1=2; int LA1_0 = input.LA(1); if ( (LA1_0==CHUNK_TYPE) ) { alt1=1; } switch (alt1) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:455:15: chunkType { pushFollow(FOLLOW_chunkType_in_declarativeMemory408); chunkType(); state._fsp--; } break; default : if ( cnt1 >= 1 ) break loop1; EarlyExitException eee = new EarlyExitException(1, input); throw eee; } cnt1++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:455:30: DECLARATIVE_MEMORY { match(input,DECLARATIVE_MEMORY,FOLLOW_DECLARATIVE_MEMORY_in_declarativeMemory415); } break; } /*we now have all the chunks and all the chunkTypes we can add them all to the model and then apply the parameters and resolve any slot values */ /* resolve the slot values of the chunktypes */ for(IChunkType chunkType : ((Model_scope)Model_stack.peek()).knownChunkTypes.values()) resolveSlots(chunkType.getSymbolicChunkType(), ((Model_scope)Model_stack.peek()).knownChunks, ((Model_scope)Model_stack.peek()).knownChunkTypes); /* @bug this will not handle default slot values correctly if the chunks are defined after the chunktype is defined */ IDeclarativeModule decMod = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule(); Collection<String> sourceChunks = getSourceChunks(((Model_scope)Model_stack.peek()).modelDescriptor); //now for the chunks for(IChunk chunk : ((Model_scope)Model_stack.peek()).knownChunks.values()) { resolveSlots(chunk.getSymbolicChunk(), ((Model_scope)Model_stack.peek()).knownChunks, ((Model_scope)Model_stack.peek()).knownChunkTypes); //now we can add the chunk to the model if(!sourceChunks.contains(chunk.getSymbolicChunk().getName().toLowerCase())) try { if(LOGGER.isDebugEnabled()) LOGGER.debug("Adding chunk "+chunk+" to model"); decMod.addChunk(chunk).get(); } catch(Exception e) { throw new BuilderError("Could not add chunk "+chunk, null, e); } } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "declarativeMemory" // $ANTLR start "proceduralMemory" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:494:1: proceduralMemory : ( ^( PROCEDURAL_MEMORY ( production )+ ) | PROCEDURAL_MEMORY ) ; public final void proceduralMemory() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:2: ( ( ^( PROCEDURAL_MEMORY ( production )+ ) | PROCEDURAL_MEMORY ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:4: ( ^( PROCEDURAL_MEMORY ( production )+ ) | PROCEDURAL_MEMORY ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:4: ( ^( PROCEDURAL_MEMORY ( production )+ ) | PROCEDURAL_MEMORY ) int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==PROCEDURAL_MEMORY) ) { int LA4_1 = input.LA(2); if ( (LA4_1==DOWN) ) { alt4=1; } else if ( (LA4_1==UP) ) { alt4=2; } else { NoViableAltException nvae = new NoViableAltException("", 4, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 4, 0, input); throw nvae; } switch (alt4) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:5: ^( PROCEDURAL_MEMORY ( production )+ ) { match(input,PROCEDURAL_MEMORY,FOLLOW_PROCEDURAL_MEMORY_in_proceduralMemory431); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:25: ( production )+ int cnt3=0; loop3: do { int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==PRODUCTION) ) { alt3=1; } switch (alt3) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:25: production { pushFollow(FOLLOW_production_in_proceduralMemory433); production(); state._fsp--; } break; default : if ( cnt3 >= 1 ) break loop3; EarlyExitException eee = new EarlyExitException(3, input); throw eee; } cnt3++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:495:40: PROCEDURAL_MEMORY { match(input,PROCEDURAL_MEMORY,FOLLOW_PROCEDURAL_MEMORY_in_proceduralMemory439); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "proceduralMemory" // $ANTLR start "modules" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:1: modules : ( ^( MODULES ( module )+ ) | MODULES ) ; public final void modules() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:9: ( ( ^( MODULES ( module )+ ) | MODULES ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:11: ( ^( MODULES ( module )+ ) | MODULES ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:11: ( ^( MODULES ( module )+ ) | MODULES ) int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==MODULES) ) { int LA6_1 = input.LA(2); if ( (LA6_1==DOWN) ) { alt6=1; } else if ( (LA6_1==EXTENSIONS) ) { alt6=2; } else { NoViableAltException nvae = new NoViableAltException("", 6, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 6, 0, input); throw nvae; } switch (alt6) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:12: ^( MODULES ( module )+ ) { match(input,MODULES,FOLLOW_MODULES_in_modules451); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:22: ( module )+ int cnt5=0; loop5: do { int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0==MODULE) ) { alt5=1; } switch (alt5) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:22: module { pushFollow(FOLLOW_module_in_modules453); module(); state._fsp--; } break; default : if ( cnt5 >= 1 ) break loop5; EarlyExitException eee = new EarlyExitException(5, input); throw eee; } cnt5++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:497:33: MODULES { match(input,MODULES,FOLLOW_MODULES_in_modules459); } break; } /* check to see what modules have been installed we must have at least IDeclarativeModule and IProceduralModule */ if(((Model_scope)Model_stack.peek()).model.getModule(IDeclarativeModule.class)==null) { reportException(new BuilderWarning("No IDeclarativeModule was specified, installing DefaultDeclarativeModule6")); ((Model_scope)Model_stack.peek()).model.install(new DefaultDeclarativeModule6()); } if(((Model_scope)Model_stack.peek()).model.getModule(IProceduralModule.class)==null) { reportException(new BuilderWarning("No IProceduralModule was specified, installing DefaultProceduralModule6")); ((Model_scope)Model_stack.peek()).model.install(new DefaultProceduralModule6()); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "modules" // $ANTLR start "module" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:518:1: module : ^(m= MODULE c= CLASS_SPEC p= parameters ) ; public final void module() throws RecognitionException { CommonTree m=null; CommonTree c=null; Collection<CommonTree> p = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:518:9: ( ^(m= MODULE c= CLASS_SPEC p= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:518:11: ^(m= MODULE c= CLASS_SPEC p= parameters ) { m=(CommonTree)match(input,MODULE,FOLLOW_MODULE_in_module477); match(input, Token.DOWN, null); c=(CommonTree)match(input,CLASS_SPEC,FOLLOW_CLASS_SPEC_in_module481); pushFollow(FOLLOW_parameters_in_module485); p=parameters(); state._fsp--; match(input, Token.UP, null); String className = (c!=null?c.getText():null); LOGGER.debug("Got module "+className); //install the module //instantiate try { //load the class Class<IModule> moduleClass = (Class<IModule>)getClass().getClassLoader().loadClass(className); IModule module = moduleClass.newInstance(); //apply parameters if(module instanceof IParameterized) applyParameters((IParameterized)module, p); //install ((Model_scope)Model_stack.peek()).model.install(module); } catch(Exception e) { throw new BuilderError("Could not install module "+className,m, e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "module" // $ANTLR start "extensions" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:543:1: extensions : ( ^( EXTENSIONS ( extension )+ ) | EXTENSIONS ) ; public final void extensions() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:2: ( ( ^( EXTENSIONS ( extension )+ ) | EXTENSIONS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:4: ( ^( EXTENSIONS ( extension )+ ) | EXTENSIONS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:4: ( ^( EXTENSIONS ( extension )+ ) | EXTENSIONS ) int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==EXTENSIONS) ) { int LA8_1 = input.LA(2); if ( (LA8_1==DOWN) ) { alt8=1; } else if ( (LA8_1==BUFFERS) ) { alt8=2; } else { NoViableAltException nvae = new NoViableAltException("", 8, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 8, 0, input); throw nvae; } switch (alt8) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:5: ^( EXTENSIONS ( extension )+ ) { match(input,EXTENSIONS,FOLLOW_EXTENSIONS_in_extensions500); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:18: ( extension )+ int cnt7=0; loop7: do { int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==EXTENSION) ) { alt7=1; } switch (alt7) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:18: extension { pushFollow(FOLLOW_extension_in_extensions502); extension(); state._fsp--; } break; default : if ( cnt7 >= 1 ) break loop7; EarlyExitException eee = new EarlyExitException(7, input); throw eee; } cnt7++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:544:32: EXTENSIONS { match(input,EXTENSIONS,FOLLOW_EXTENSIONS_in_extensions508); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "extensions" // $ANTLR start "extension" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:546:1: extension : ^(e= EXTENSION c= CLASS_SPEC p= parameters ) ; public final void extension() throws RecognitionException { CommonTree e=null; CommonTree c=null; Collection<CommonTree> p = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:547:2: ( ^(e= EXTENSION c= CLASS_SPEC p= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:547:4: ^(e= EXTENSION c= CLASS_SPEC p= parameters ) { e=(CommonTree)match(input,EXTENSION,FOLLOW_EXTENSION_in_extension523); match(input, Token.DOWN, null); c=(CommonTree)match(input,CLASS_SPEC,FOLLOW_CLASS_SPEC_in_extension527); pushFollow(FOLLOW_parameters_in_extension531); p=parameters(); state._fsp--; match(input, Token.UP, null); String className = (c!=null?c.getText():null); LOGGER.debug("Got extension "+className); //install the module //instantiate try { //load the class Class<IExtension> extensionClass = (Class<IExtension>)getClass().getClassLoader().loadClass(className); IExtension ext = extensionClass.newInstance(); //apply parameters if(ext instanceof IParameterized) applyParameters((IParameterized)ext, p); //install later.. after we have finished the configuration ((Model_scope)Model_stack.peek()).extensions.add(ext); } catch(Exception ex) { throw new BuilderError("Could not build extension "+className,e, ex); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "extension" // $ANTLR start "buffers" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:572:1: buffers : ( ^( BUFFERS ( buffer )+ ) | BUFFERS ) ; public final void buffers() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:1: ( ( ^( BUFFERS ( buffer )+ ) | BUFFERS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:3: ( ^( BUFFERS ( buffer )+ ) | BUFFERS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:3: ( ^( BUFFERS ( buffer )+ ) | BUFFERS ) int alt10=2; int LA10_0 = input.LA(1); if ( (LA10_0==BUFFERS) ) { int LA10_1 = input.LA(2); if ( (LA10_1==DOWN) ) { alt10=1; } else if ( (LA10_1==LIBRARY) ) { alt10=2; } else { NoViableAltException nvae = new NoViableAltException("", 10, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 10, 0, input); throw nvae; } switch (alt10) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:4: ^( BUFFERS ( buffer )+ ) { match(input,BUFFERS,FOLLOW_BUFFERS_in_buffers547); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:15: ( buffer )+ int cnt9=0; loop9: do { int alt9=2; int LA9_0 = input.LA(1); if ( (LA9_0==BUFFER) ) { alt9=1; } switch (alt9) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:15: buffer { pushFollow(FOLLOW_buffer_in_buffers550); buffer(); state._fsp--; } break; default : if ( cnt9 >= 1 ) break loop9; EarlyExitException eee = new EarlyExitException(9, input); throw eee; } cnt9++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:578:26: BUFFERS { match(input,BUFFERS,FOLLOW_BUFFERS_in_buffers556); } break; } LOGGER.debug("got buffers tag"); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "buffers" // $ANTLR start "buffer" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:583:1: buffer : ^(b= BUFFER name= NAME chunks p= parameters ) ; public final void buffer() throws RecognitionException { CommonTree b=null; CommonTree name=null; Collection<CommonTree> p = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:583:9: ( ^(b= BUFFER name= NAME chunks p= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:583:11: ^(b= BUFFER name= NAME chunks p= parameters ) { b=(CommonTree)match(input,BUFFER,FOLLOW_BUFFER_in_buffer572); match(input, Token.DOWN, null); name=(CommonTree)match(input,NAME,FOLLOW_NAME_in_buffer576); pushFollow(FOLLOW_chunks_in_buffer578); chunks(); state._fsp--; pushFollow(FOLLOW_parameters_in_buffer582); p=parameters(); state._fsp--; match(input, Token.UP, null); String bufferName = (name!=null?name.getText():null); LOGGER.debug("got buffer name "+bufferName); /* buffers are created by the modules, so we just apply the parameters the chunks will be inserted after the library is done loading */ IActivationBuffer buffer = ((Model_scope)Model_stack.peek()).model.getActivationBuffer(bufferName); if(buffer==null) throw new BuilderError(bufferName+" is not a known buffer", b); if(buffer instanceof IParameterized) applyParameters((IParameterized)buffer, p); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "buffer" // $ANTLR start "chunkType" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:600:1: chunkType returns [IChunkType chunkType] : ^(c= CHUNK_TYPE n= NAME p= parents s= slots chunks param= parameters ) ; public final IChunkType chunkType() throws RecognitionException { IChunkType chunkType = null; CommonTree c=null; CommonTree n=null; Collection<IChunkType> p = null; Collection<ISlot> s = null; Collection<CommonTree> param = null; chunkType = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:604:1: ( ^(c= CHUNK_TYPE n= NAME p= parents s= slots chunks param= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:604:3: ^(c= CHUNK_TYPE n= NAME p= parents s= slots chunks param= parameters ) { c=(CommonTree)match(input,CHUNK_TYPE,FOLLOW_CHUNK_TYPE_in_chunkType605); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_chunkType609); pushFollow(FOLLOW_parents_in_chunkType613); p=parents(); state._fsp--; pushFollow(FOLLOW_slots_in_chunkType618); s=slots(); state._fsp--; /* we create the chunktype once we have enough info to work with the compiler ensures us that parents are defined already */ String chunkTypeName = (n!=null?n.getText():null); IModel model = ((Model_scope)Model_stack.peek()).model; try { chunkType = model.getDeclarativeModule().createChunkType(p, chunkTypeName).get(); if(LOGGER.isDebugEnabled()) LOGGER.debug("created chunktype "+chunkType); } catch(Exception e) { throw new BuilderError("Could not create chunk-type "+chunkTypeName, c, e); } //insert all the slots for(ISlot slot : s) chunkType.getSymbolicChunkType().addSlot(slot); ((Model_scope)Model_stack.peek()).knownChunkTypes.put(chunkTypeName.toLowerCase(), chunkType); /*add the chunkType to the model this must be done before chunks is called */ if(LOGGER.isDebugEnabled()) LOGGER.debug("Adding chunktype "+chunkType+" to model"); model.getDeclarativeModule().addChunkType(chunkType); pushFollow(FOLLOW_chunks_in_chunkType625); chunks(); state._fsp--; pushFollow(FOLLOW_parameters_in_chunkType630); param=parameters(); state._fsp--; match(input, Token.UP, null); applyParameters(chunkType.getSubsymbolicChunkType(), param); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return chunkType; } // $ANTLR end "chunkType" // $ANTLR start "chunks" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:644:1: chunks returns [Collection cl] : ( ^( CHUNKS (c= chunk | id= CHUNK_IDENTIFIER )+ ) | CHUNKS ) ; public final Collection chunks() throws RecognitionException { Collection cl = null; CommonTree id=null; IChunk c = null; cl = new ArrayList(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:3: ( ( ^( CHUNKS (c= chunk | id= CHUNK_IDENTIFIER )+ ) | CHUNKS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:5: ( ^( CHUNKS (c= chunk | id= CHUNK_IDENTIFIER )+ ) | CHUNKS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:5: ( ^( CHUNKS (c= chunk | id= CHUNK_IDENTIFIER )+ ) | CHUNKS ) int alt12=2; int LA12_0 = input.LA(1); if ( (LA12_0==CHUNKS) ) { int LA12_1 = input.LA(2); if ( (LA12_1==DOWN) ) { alt12=1; } else if ( (LA12_1==PARAMETERS) ) { alt12=2; } else { NoViableAltException nvae = new NoViableAltException("", 12, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 12, 0, input); throw nvae; } switch (alt12) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:6: ^( CHUNKS (c= chunk | id= CHUNK_IDENTIFIER )+ ) { match(input,CHUNKS,FOLLOW_CHUNKS_in_chunks654); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:15: (c= chunk | id= CHUNK_IDENTIFIER )+ int cnt11=0; loop11: do { int alt11=3; int LA11_0 = input.LA(1); if ( (LA11_0==CHUNK) ) { alt11=1; } else if ( (LA11_0==CHUNK_IDENTIFIER) ) { alt11=2; } switch (alt11) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:650:16: c= chunk { pushFollow(FOLLOW_chunk_in_chunks659); c=chunk(); state._fsp--; cl.add(c); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:651:27: id= CHUNK_IDENTIFIER { id=(CommonTree)match(input,CHUNK_IDENTIFIER,FOLLOW_CHUNK_IDENTIFIER_in_chunks691); cl.add((id!=null?id.getText():null)); } break; default : if ( cnt11 >= 1 ) break loop11; EarlyExitException eee = new EarlyExitException(11, input); throw eee; } cnt11++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:652:32: CHUNKS { match(input,CHUNKS,FOLLOW_CHUNKS_in_chunks727); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return cl; } // $ANTLR end "chunks" // $ANTLR start "chunk" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:654:1: chunk returns [IChunk ch] : ^(c= CHUNK n= NAME p= PARENT s= slots param= parameters ) ; public final IChunk chunk() throws RecognitionException { IChunk ch = null; CommonTree c=null; CommonTree n=null; CommonTree p=null; Collection<ISlot> s = null; Collection<CommonTree> param = null; ch= null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:657:3: ( ^(c= CHUNK n= NAME p= PARENT s= slots param= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:657:5: ^(c= CHUNK n= NAME p= PARENT s= slots param= parameters ) { c=(CommonTree)match(input,CHUNK,FOLLOW_CHUNK_in_chunk748); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_chunk752); p=(CommonTree)match(input,PARENT,FOLLOW_PARENT_in_chunk756); pushFollow(FOLLOW_slots_in_chunk760); s=slots(); state._fsp--; pushFollow(FOLLOW_parameters_in_chunk764); param=parameters(); state._fsp--; match(input, Token.UP, null); LOGGER.debug("got chunk def "+(n!=null?n.getText():null)+" isa "+(p!=null?p.getText():null)); String chunkName = (n!=null?n.getText():null); String parentName = (p!=null?p.getText():null); IModel model = ((Model_scope)Model_stack.peek()).model; if(((Model_scope)Model_stack.peek()).knownChunks.containsKey(chunkName)) reportException(new BuilderWarning(chunkName+" already exists, replacing", c)); IChunkType parentType = null; try { parentType = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType(parentName).get(); } catch(Exception e) { LOGGER.error("Could not get chunktype "+parentName, e); } if(parentType==null) throw new BuilderError(parentName+" is not a recognized chunk-type", p); try { ch = model.getDeclarativeModule().createChunk(parentType, chunkName).get(); } catch(Exception e) { throw new BuilderError("Could not create chunk "+chunkName, c, e); } ((Model_scope)Model_stack.peek()).knownChunks.put(chunkName.toLowerCase(), ch); //add slots for(ISlot slot : s) try { ch.getSymbolicChunk().addSlot(slot); } catch(Exception e) { reportException(new BuilderWarning("Could not add slot "+slot.getName()+" to chunk "+chunkName, c, e)); } //save the parameters for later because chunks in associative links might not exist yet ((Model_scope)Model_stack.peek()).chunkParameters.put(ch, param); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ch; } // $ANTLR end "chunk" // $ANTLR start "production" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:706:1: production returns [IProduction production] : ^(p= PRODUCTION n= NAME conds= conditions acts= actions params= parameters ) ; public final IProduction production() throws RecognitionException { IProduction production = null; CommonTree p=null; CommonTree n=null; Collection<ICondition> conds = null; Collection<IAction> acts = null; Collection<CommonTree> params = null; production = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:710:2: ( ^(p= PRODUCTION n= NAME conds= conditions acts= actions params= parameters ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:710:4: ^(p= PRODUCTION n= NAME conds= conditions acts= actions params= parameters ) { p=(CommonTree)match(input,PRODUCTION,FOLLOW_PRODUCTION_in_production787); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_production791); pushFollow(FOLLOW_conditions_in_production795); conds=conditions(); state._fsp--; pushFollow(FOLLOW_actions_in_production799); acts=actions(); state._fsp--; pushFollow(FOLLOW_parameters_in_production803); params=parameters(); state._fsp--; match(input, Token.UP, null); String productionName = (n!=null?n.getText():null); LOGGER.debug("Got a production def "+productionName); /** we can just create the production, no need to worry about resolution since all declarative elements have been defined */ IModel model = ((Model_scope)Model_stack.peek()).model; try { production = model.getProceduralModule().createProduction(productionName).get(); } catch(Exception e) { throw new BuilderError("Could not create production "+productionName, p, e); } //insert the contents ISymbolicProduction symProd = production.getSymbolicProduction(); for(ICondition condition : conds) { symProd.addCondition(condition); } for(IAction action : acts) symProd.addAction(action); //store the parameters for later ((Model_scope)Model_stack.peek()).productionParameters.put(production, params); //add to the model model.getProceduralModule().addProduction(production); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return production; } // $ANTLR end "production" // $ANTLR start "conditions" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:745:1: conditions returns [Collection<ICondition> rtn] : ^( CONDITIONS (c= check | q= query | s= scriptCond | p= proxyCond )+ ) ; public final Collection<ICondition> conditions() throws RecognitionException { Collection<ICondition> rtn = null; IBufferCondition c = null; QueryCondition q = null; ScriptableCondition s = null; ProxyCondition p = null; rtn = new ArrayList<ICondition>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:749:2: ( ^( CONDITIONS (c= check | q= query | s= scriptCond | p= proxyCond )+ ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:749:4: ^( CONDITIONS (c= check | q= query | s= scriptCond | p= proxyCond )+ ) { match(input,CONDITIONS,FOLLOW_CONDITIONS_in_conditions825); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:749:17: (c= check | q= query | s= scriptCond | p= proxyCond )+ int cnt13=0; loop13: do { int alt13=5; switch ( input.LA(1) ) { case MATCH_CONDITION: { alt13=1; } break; case QUERY_CONDITION: { alt13=2; } break; case SCRIPTABLE_CONDITION: { alt13=3; } break; case PROXY_CONDITION: { alt13=4; } break; } switch (alt13) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:749:18: c= check { pushFollow(FOLLOW_check_in_conditions830); c=check(); state._fsp--; rtn.add(c); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:750:15: q= query { pushFollow(FOLLOW_query_in_conditions850); q=query(); state._fsp--; rtn.add(q); } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:751:15: s= scriptCond { pushFollow(FOLLOW_scriptCond_in_conditions870); s=scriptCond(); state._fsp--; rtn.add(s); } break; case 4 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:752:15: p= proxyCond { pushFollow(FOLLOW_proxyCond_in_conditions890); p=proxyCond(); state._fsp--; rtn.add(p); } break; default : if ( cnt13 >= 1 ) break loop13; EarlyExitException eee = new EarlyExitException(13, input); throw eee; } cnt13++; } while (true); match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "conditions" // $ANTLR start "actions" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:755:1: actions returns [Collection<IAction> rtn] : ^( ACTIONS (a= add | s= set | r= remove | m= modify | sc= scriptAct | p= proxyAct | o= output )+ ) ; public final Collection<IAction> actions() throws RecognitionException { Collection<IAction> rtn = null; AddAction a = null; SetAction s = null; RemoveAction r = null; ModifyAction m = null; ScriptableAction sc = null; ProxyAction p = null; OutputAction o = null; rtn = new ArrayList<IAction>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:759:2: ( ^( ACTIONS (a= add | s= set | r= remove | m= modify | sc= scriptAct | p= proxyAct | o= output )+ ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:759:4: ^( ACTIONS (a= add | s= set | r= remove | m= modify | sc= scriptAct | p= proxyAct | o= output )+ ) { match(input,ACTIONS,FOLLOW_ACTIONS_in_actions926); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:759:14: (a= add | s= set | r= remove | m= modify | sc= scriptAct | p= proxyAct | o= output )+ int cnt14=0; loop14: do { int alt14=8; switch ( input.LA(1) ) { case ADD_ACTION: { alt14=1; } break; case SET_ACTION: { alt14=2; } break; case REMOVE_ACTION: { alt14=3; } break; case MODIFY_ACTION: { alt14=4; } break; case SCRIPTABLE_ACTION: { alt14=5; } break; case PROXY_ACTION: { alt14=6; } break; case OUTPUT_ACTION: { alt14=7; } break; } switch (alt14) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:759:15: a= add { pushFollow(FOLLOW_add_in_actions931); a=add(); state._fsp--; rtn.add(a); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:760:20: s= set { pushFollow(FOLLOW_set_in_actions956); s=set(); state._fsp--; rtn.add(s); } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:761:20: r= remove { pushFollow(FOLLOW_remove_in_actions981); r=remove(); state._fsp--; rtn.add(r); } break; case 4 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:762:20: m= modify { pushFollow(FOLLOW_modify_in_actions1006); m=modify(); state._fsp--; rtn.add(m); } break; case 5 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:763:20: sc= scriptAct { pushFollow(FOLLOW_scriptAct_in_actions1031); sc=scriptAct(); state._fsp--; rtn.add(sc); } break; case 6 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:764:20: p= proxyAct { pushFollow(FOLLOW_proxyAct_in_actions1056); p=proxyAct(); state._fsp--; rtn.add(p); } break; case 7 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:765:20: o= output { pushFollow(FOLLOW_output_in_actions1081); o=output(); state._fsp--; rtn.add(o); } break; default : if ( cnt14 >= 1 ) break loop14; EarlyExitException eee = new EarlyExitException(14, input); throw eee; } cnt14++; } while (true); match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "actions" // $ANTLR start "check" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:768:1: check returns [IBufferCondition rtn] : ^( MATCH_CONDITION n= NAME ( (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? )? ) ; public final IBufferCondition check() throws RecognitionException { IBufferCondition rtn = null; CommonTree n=null; CommonTree c=null; CommonTree ct=null; CommonTree v=null; Collection<ISlot> sl = null; rtn = null; String bufferName = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:776:2: ( ^( MATCH_CONDITION n= NAME ( (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:776:4: ^( MATCH_CONDITION n= NAME ( (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? )? ) { match(input,MATCH_CONDITION,FOLLOW_MATCH_CONDITION_in_check1124); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_check1128); bufferName = (n!=null?n.getText():null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:777:17: ( (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? )? int alt17=2; int LA17_0 = input.LA(1); if ( (LA17_0==VARIABLE||(LA17_0>=CHUNK_IDENTIFIER && LA17_0<=CHUNK_TYPE_IDENTIFIER)) ) { alt17=1; } switch (alt17) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:777:18: (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:777:18: (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) int alt15=3; switch ( input.LA(1) ) { case CHUNK_IDENTIFIER: { alt15=1; } break; case CHUNK_TYPE_IDENTIFIER: { alt15=2; } break; case VARIABLE: { alt15=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 15, 0, input); throw nvae; } switch (alt15) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:777:19: c= CHUNK_IDENTIFIER { c=(CommonTree)match(input,CHUNK_IDENTIFIER,FOLLOW_CHUNK_IDENTIFIER_in_check1152); try { IChunk chunk = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunk((c!=null?c.getText():null)).get(); if(chunk!=null) rtn = new ChunkCondition(bufferName, chunk); else throw new BuilderError((c!=null?c.getText():null)+" is not a valid chunk", c); } catch(Exception e) { LOGGER.error("Could not get chunk "+(c!=null?c.getText():null), e); } } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:792:19: ct= CHUNK_TYPE_IDENTIFIER { ct=(CommonTree)match(input,CHUNK_TYPE_IDENTIFIER,FOLLOW_CHUNK_TYPE_IDENTIFIER_in_check1176); try { IChunkType chunkType = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType((ct!=null?ct.getText():null)).get(); if(chunkType!=null) rtn = new ChunkTypeCondition(bufferName, chunkType); else throw new BuilderError((ct!=null?ct.getText():null)+" is not a valid chunktype", ct); } catch(Exception e) { LOGGER.error("Could not get chunktype "+(ct!=null?ct.getText():null), e); } } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:807:19: v= VARIABLE { v=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_check1216); rtn = new VariableCondition(bufferName, (v!=null?v.getText():null)); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:812:17: (sl= slots )? int alt16=2; int LA16_0 = input.LA(1); if ( (LA16_0==SLOTS) ) { alt16=1; } switch (alt16) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:812:18: sl= slots { pushFollow(FOLLOW_slots_in_check1275); sl=slots(); state._fsp--; IChunkType newIsa = null; IChunkType isA = (rtn instanceof ChunkTypeCondition) ? ((ChunkTypeCondition)rtn).getChunkType() : null; for(ISlot slot : sl) { try { LOGGER.debug("seeing if slot " + slot + " is an isa so we can fold it in."); if(slot.getName().equals(":isa") && isA != null) { newIsa = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType(slot.getValue().toString()).get(); if(isA.isA(newIsa)) newIsa = null; } else ((ISlotContainer)rtn).addSlot(cleanupSlot(slot)); } catch(Exception e) { LOGGER.error("Could not get chunktype "+slot.getValue(), e); ((ISlotContainer)rtn).addSlot(cleanupSlot(slot)); } } if(newIsa != null){ //with multiple inheritance, this test is incorrect //if(!newIsa.isA(((ChunkTypeCondition)rtn).getChunkType()) && !((ChunkTypeCondition)rtn).getChunkType().isA(newIsa)) { // throw new BuilderError(", ct); //} else if(newIsa.isA(isA)) rtn = new ChunkTypeCondition(rtn.getBufferName(), newIsa, ((ChunkTypeCondition)rtn).getRequest().getSlots()); } } break; } } break; } match(input, Token.UP, null); if(rtn==null) rtn = new ChunkTypeCondition(bufferName, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "check" // $ANTLR start "unknownList" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:847:1: unknownList : ^( UNKNOWN ( . )* ) ; public final void unknownList() throws RecognitionException { try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:848:2: ( ^( UNKNOWN ( . )* ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:848:4: ^( UNKNOWN ( . )* ) { match(input,UNKNOWN,FOLLOW_UNKNOWN_in_unknownList1329); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:848:14: ( . )* loop18: do { int alt18=2; int LA18_0 = input.LA(1); if ( ((LA18_0>=MODEL && LA18_0<=UNKNOWN)) ) { alt18=1; } else if ( (LA18_0==UP) ) { alt18=2; } switch (alt18) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:848:14: . { matchAny(input); } break; default : break loop18; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "unknownList" // $ANTLR start "query" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:852:1: query returns [QueryCondition rtn] : ^( QUERY_CONDITION n= NAME sl= slots ) ; public final QueryCondition query() throws RecognitionException { QueryCondition rtn = null; CommonTree n=null; Collection<ISlot> sl = null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:856:1: ( ^( QUERY_CONDITION n= NAME sl= slots ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:856:3: ^( QUERY_CONDITION n= NAME sl= slots ) { match(input,QUERY_CONDITION,FOLLOW_QUERY_CONDITION_in_query1351); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_query1355); pushFollow(FOLLOW_slots_in_query1359); sl=slots(); state._fsp--; match(input, Token.UP, null); rtn = new QueryCondition((n!=null?n.getText():null)); for(ISlot slot : sl) rtn.addSlot(cleanupSlot(slot)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "query" // $ANTLR start "scriptCond" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:863:1: scriptCond returns [ScriptableCondition rtn] : ^( SCRIPTABLE_CONDITION l= LANG s= SCRIPT ) ; public final ScriptableCondition scriptCond() throws RecognitionException { ScriptableCondition rtn = null; CommonTree l=null; CommonTree s=null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:867:2: ( ^( SCRIPTABLE_CONDITION l= LANG s= SCRIPT ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:867:4: ^( SCRIPTABLE_CONDITION l= LANG s= SCRIPT ) { match(input,SCRIPTABLE_CONDITION,FOLLOW_SCRIPTABLE_CONDITION_in_scriptCond1380); match(input, Token.DOWN, null); l=(CommonTree)match(input,LANG,FOLLOW_LANG_in_scriptCond1384); s=(CommonTree)match(input,SCRIPT,FOLLOW_SCRIPT_in_scriptCond1388); match(input, Token.UP, null); //we currently dont support lang.. try { IScriptableFactory factory = ScriptingManager.getFactory((l!=null?l.getText():null)); if(factory==null) throw new BuilderError("Could not find scripting engine for " + (l!=null?l.getText():null), l); IConditionScript script = factory.createConditionScript((s!=null?s.getText():null)); rtn = new ScriptableCondition(script); } catch(Exception e) { throw new BuilderError("Could not compile script because "+e.getMessage(), s, e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "scriptCond" // $ANTLR start "proxyCond" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:885:1: proxyCond returns [ProxyCondition rtn] : ^( PROXY_CONDITION c= CLASS_SPEC (sl= slots )? ) ; public final ProxyCondition proxyCond() throws RecognitionException { ProxyCondition rtn = null; CommonTree c=null; Collection<ISlot> sl = null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:889:1: ( ^( PROXY_CONDITION c= CLASS_SPEC (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:889:3: ^( PROXY_CONDITION c= CLASS_SPEC (sl= slots )? ) { match(input,PROXY_CONDITION,FOLLOW_PROXY_CONDITION_in_proxyCond1410); match(input, Token.DOWN, null); c=(CommonTree)match(input,CLASS_SPEC,FOLLOW_CLASS_SPEC_in_proxyCond1414); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:889:34: (sl= slots )? int alt19=2; int LA19_0 = input.LA(1); if ( (LA19_0==SLOTS) ) { alt19=1; } switch (alt19) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:889:35: sl= slots { pushFollow(FOLLOW_slots_in_proxyCond1419); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); try { rtn = new ProxyCondition((c!=null?c.getText():null)); if(sl!=null) for(ISlot slot : sl) rtn.addSlot(cleanupSlot(slot)); } catch(Exception e) { throw new BuilderError("Could not create proxy condition"+(c!=null?c.getText():null), c, e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "proxyCond" // $ANTLR start "add" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:905:1: add returns [AddAction rtn] : ^(a= ADD_ACTION n= NAME (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? ) ; public final AddAction add() throws RecognitionException { AddAction rtn = null; CommonTree a=null; CommonTree n=null; CommonTree c=null; CommonTree ct=null; CommonTree v=null; Collection<ISlot> sl = null; rtn = null; String bufferName = null; Object ref = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:911:1: ( ^(a= ADD_ACTION n= NAME (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:911:3: ^(a= ADD_ACTION n= NAME (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) (sl= slots )? ) { a=(CommonTree)match(input,ADD_ACTION,FOLLOW_ADD_ACTION_in_add1455); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_add1459); bufferName = (n!=null?n.getText():null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:912:17: (c= CHUNK_IDENTIFIER | ct= CHUNK_TYPE_IDENTIFIER | v= VARIABLE ) int alt20=3; switch ( input.LA(1) ) { case CHUNK_IDENTIFIER: { alt20=1; } break; case CHUNK_TYPE_IDENTIFIER: { alt20=2; } break; case VARIABLE: { alt20=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 20, 0, input); throw nvae; } switch (alt20) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:912:18: c= CHUNK_IDENTIFIER { c=(CommonTree)match(input,CHUNK_IDENTIFIER,FOLLOW_CHUNK_IDENTIFIER_in_add1482); try { ref = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunk((c!=null?c.getText():null)).get(); if(ref==null) throw new BuilderError((c!=null?c.getText():null)+" is not a valid chunk", c); } catch(Exception e) { LOGGER.error("Could not get chunk "+(c!=null?c.getText():null), e); } } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:925:19: ct= CHUNK_TYPE_IDENTIFIER { ct=(CommonTree)match(input,CHUNK_TYPE_IDENTIFIER,FOLLOW_CHUNK_TYPE_IDENTIFIER_in_add1524); try { ref = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType((ct!=null?ct.getText():null)).get(); if(ref==null) throw new BuilderError((ct!=null?ct.getText():null)+" is not a chunktype", ct); } catch(Exception e) { LOGGER.error("Could not get chunktype "+(ct!=null?ct.getText():null),e); } } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:938:19: v= VARIABLE { v=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_add1564); ref = (v!=null?v.getText():null); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:942:20: (sl= slots )? int alt21=2; int LA21_0 = input.LA(1); if ( (LA21_0==SLOTS) ) { alt21=1; } switch (alt21) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:942:21: sl= slots { pushFollow(FOLLOW_slots_in_add1607); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); IChunkType newIsa = null; IChunkType isA = (IChunkType) ((ref instanceof IChunkType) ? ref : null); rtn = new AddAction(bufferName, ref); if(sl != null) { for(ISlot slot : sl) { try { /** retrieval buffer can take a :isa chunktype or :isa not chunktype */ if(slot.getName().equals(ISlot.ISA) && isA != null) { if(bufferName.equals(IActivationBuffer.RETRIEVAL)) rtn.addSlot(cleanupSlot(slot)); else { newIsa = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType(slot.getValue().toString()).get(); IConditionalSlot cSlot = (IConditionalSlot) slot; if(cSlot.getCondition() == IConditionalSlot.EQUALS) { if(!isA.isA(newIsa)) { if(newIsa.isA(isA)) { rtn.setChunkType(newIsa); isA = newIsa; } else LOGGER.warn("can't handle multiple inheritance yet, so can't specify add of both " + newIsa + " and " + isA); } } else { throw new BuilderError("Cannot handle :isa not in a buffer other than retrieval", a); } } } else rtn.addSlot(cleanupSlot(slot)); } catch(Exception e) { LOGGER.error("Could not get chunktype "+slot.getValue(), e); rtn.addSlot(cleanupSlot(slot)); } } } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "add" // $ANTLR start "set" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:998:1: set returns [SetAction rtn] : ^(a= SET_ACTION n= NAME (c= CHUNK_IDENTIFIER | v= VARIABLE )? (sl= slots )? ) ; public final SetAction set() throws RecognitionException { SetAction rtn = null; CommonTree a=null; CommonTree n=null; CommonTree c=null; CommonTree v=null; Collection<ISlot> sl = null; rtn = null; String bufferName = null; Object ref = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1004:1: ( ^(a= SET_ACTION n= NAME (c= CHUNK_IDENTIFIER | v= VARIABLE )? (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1004:3: ^(a= SET_ACTION n= NAME (c= CHUNK_IDENTIFIER | v= VARIABLE )? (sl= slots )? ) { a=(CommonTree)match(input,SET_ACTION,FOLLOW_SET_ACTION_in_set1633); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_set1637); bufferName = (n!=null?n.getText():null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1005:17: (c= CHUNK_IDENTIFIER | v= VARIABLE )? int alt22=3; int LA22_0 = input.LA(1); if ( (LA22_0==CHUNK_IDENTIFIER) ) { alt22=1; } else if ( (LA22_0==VARIABLE) ) { alt22=2; } switch (alt22) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1005:18: c= CHUNK_IDENTIFIER { c=(CommonTree)match(input,CHUNK_IDENTIFIER,FOLLOW_CHUNK_IDENTIFIER_in_set1660); try { ref = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunk((c!=null?c.getText():null)).get(); if(ref==null) throw new BuilderError((c!=null?c.getText():null)+" is not a valid chunk", c); } catch(Exception e) { LOGGER.error("Could not get chunk "+(c!=null?c.getText():null), e); } } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1018:19: v= VARIABLE { v=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_set1714); ref = (v!=null?v.getText():null); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1022:21: (sl= slots )? int alt23=2; int LA23_0 = input.LA(1); if ( (LA23_0==SLOTS) ) { alt23=1; } switch (alt23) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1022:22: sl= slots { pushFollow(FOLLOW_slots_in_set1758); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); rtn = new SetAction(bufferName, ref); if(sl!=null) for(ISlot slot : sl) rtn.addSlot(cleanupSlot(slot)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "set" // $ANTLR start "remove" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1031:1: remove returns [RemoveAction rtn] : ^(r= REMOVE_ACTION n= NAME (i= IDENTIFIER | v= VARIABLE )? (sl= slots )? ) ; public final RemoveAction remove() throws RecognitionException { RemoveAction rtn = null; CommonTree r=null; CommonTree n=null; CommonTree i=null; CommonTree v=null; Collection<ISlot> sl = null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1035:1: ( ^(r= REMOVE_ACTION n= NAME (i= IDENTIFIER | v= VARIABLE )? (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1035:3: ^(r= REMOVE_ACTION n= NAME (i= IDENTIFIER | v= VARIABLE )? (sl= slots )? ) { r=(CommonTree)match(input,REMOVE_ACTION,FOLLOW_REMOVE_ACTION_in_remove1782); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_remove1786); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1036:17: (i= IDENTIFIER | v= VARIABLE )? int alt24=3; int LA24_0 = input.LA(1); if ( (LA24_0==IDENTIFIER) ) { alt24=1; } else if ( (LA24_0==VARIABLE) ) { alt24=2; } switch (alt24) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1036:18: i= IDENTIFIER { i=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_remove1808); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1037:19: v= VARIABLE { v=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_remove1830); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1038:20: (sl= slots )? int alt25=2; int LA25_0 = input.LA(1); if ( (LA25_0==SLOTS) ) { alt25=1; } switch (alt25) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1038:21: sl= slots { pushFollow(FOLLOW_slots_in_remove1855); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); String bufferName = (n!=null?n.getText():null); if(i!=null || v!=null) reportException(new BuilderWarning("jACT-R core does not currently support remove action precise specifications", ((i==null)?v:i))); rtn = new RemoveAction(bufferName); if(sl!=null) for(ISlot slot : sl) rtn.addSlot(cleanupSlot(slot)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "remove" // $ANTLR start "modify" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1050:1: modify returns [ModifyAction rtn] : ^( MODIFY_ACTION n= NAME (sl= slots )? ) ; public final ModifyAction modify() throws RecognitionException { ModifyAction rtn = null; CommonTree n=null; Collection<ISlot> sl = null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1054:1: ( ^( MODIFY_ACTION n= NAME (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1054:3: ^( MODIFY_ACTION n= NAME (sl= slots )? ) { match(input,MODIFY_ACTION,FOLLOW_MODIFY_ACTION_in_modify1876); match(input, Token.DOWN, null); n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_modify1880); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1054:28: (sl= slots )? int alt26=2; int LA26_0 = input.LA(1); if ( (LA26_0==SLOTS) ) { alt26=1; } switch (alt26) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1054:28: sl= slots { pushFollow(FOLLOW_slots_in_modify1884); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); String bufferName = (n!=null?n.getText():null); rtn = new ModifyAction(bufferName); if(sl!=null) for(ISlot slot: sl) rtn.addSlot(cleanupSlot(slot)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "modify" // $ANTLR start "scriptAct" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1063:1: scriptAct returns [ScriptableAction rtn] : ^(root= SCRIPTABLE_ACTION l= LANG s= SCRIPT ) ; public final ScriptableAction scriptAct() throws RecognitionException { ScriptableAction rtn = null; CommonTree root=null; CommonTree l=null; CommonTree s=null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1067:2: ( ^(root= SCRIPTABLE_ACTION l= LANG s= SCRIPT ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1067:4: ^(root= SCRIPTABLE_ACTION l= LANG s= SCRIPT ) { root=(CommonTree)match(input,SCRIPTABLE_ACTION,FOLLOW_SCRIPTABLE_ACTION_in_scriptAct1907); match(input, Token.DOWN, null); l=(CommonTree)match(input,LANG,FOLLOW_LANG_in_scriptAct1911); s=(CommonTree)match(input,SCRIPT,FOLLOW_SCRIPT_in_scriptAct1915); match(input, Token.UP, null); //we currently dont support lang.. try { IScriptableFactory factory = ScriptingManager.getFactory((l!=null?l.getText():null)); if(factory==null) throw new BuilderError("Could not find scripting engine for "+ (l!=null?l.getText():null), l); IActionScript script = factory.createActionScript((s!=null?s.getText():null)); rtn = new ScriptableAction(script); } catch(Exception e) { throw new BuilderError("Could not compile script because "+e.getMessage(), s, e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "scriptAct" // $ANTLR start "proxyAct" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1085:1: proxyAct returns [ProxyAction rtn] : ^( PROXY_ACTION c= CLASS_SPEC (sl= slots )? ) ; public final ProxyAction proxyAct() throws RecognitionException { ProxyAction rtn = null; CommonTree c=null; Collection<ISlot> sl = null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1089:1: ( ^( PROXY_ACTION c= CLASS_SPEC (sl= slots )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1089:3: ^( PROXY_ACTION c= CLASS_SPEC (sl= slots )? ) { match(input,PROXY_ACTION,FOLLOW_PROXY_ACTION_in_proxyAct1936); match(input, Token.DOWN, null); c=(CommonTree)match(input,CLASS_SPEC,FOLLOW_CLASS_SPEC_in_proxyAct1940); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1089:31: (sl= slots )? int alt27=2; int LA27_0 = input.LA(1); if ( (LA27_0==SLOTS) ) { alt27=1; } switch (alt27) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1089:32: sl= slots { pushFollow(FOLLOW_slots_in_proxyAct1945); sl=slots(); state._fsp--; } break; } match(input, Token.UP, null); try { rtn = new ProxyAction((c!=null?c.getText():null)); if(sl!=null) for(ISlot slot : sl) rtn.addSlot(cleanupSlot(slot)); } catch(Exception e) { throw new BuilderError("Could not create proxy action"+(c!=null?c.getText():null), c, e); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "proxyAct" // $ANTLR start "output" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1104:1: output returns [OutputAction rtn] : ^( OUTPUT_ACTION s= STRING ) ; public final OutputAction output() throws RecognitionException { OutputAction rtn = null; CommonTree s=null; rtn = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1108:2: ( ^( OUTPUT_ACTION s= STRING ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1108:4: ^( OUTPUT_ACTION s= STRING ) { match(input,OUTPUT_ACTION,FOLLOW_OUTPUT_ACTION_in_output1976); match(input, Token.DOWN, null); s=(CommonTree)match(input,STRING,FOLLOW_STRING_in_output1980); match(input, Token.UP, null); rtn = new OutputAction((s!=null?s.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return rtn; } // $ANTLR end "output" // $ANTLR start "parents" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1113:1: parents returns [Collection<IChunkType> pl] : ( ^( PARENTS (p= PARENT )+ ) | PARENTS ) ; public final Collection<IChunkType> parents() throws RecognitionException { Collection<IChunkType> pl = null; CommonTree p=null; pl = new ArrayList<IChunkType>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1116:3: ( ( ^( PARENTS (p= PARENT )+ ) | PARENTS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1116:9: ( ^( PARENTS (p= PARENT )+ ) | PARENTS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1116:9: ( ^( PARENTS (p= PARENT )+ ) | PARENTS ) int alt29=2; int LA29_0 = input.LA(1); if ( (LA29_0==PARENTS) ) { int LA29_1 = input.LA(2); if ( (LA29_1==DOWN) ) { alt29=1; } else if ( (LA29_1==SLOTS) ) { alt29=2; } else { NoViableAltException nvae = new NoViableAltException("", 29, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 29, 0, input); throw nvae; } switch (alt29) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1116:10: ^( PARENTS (p= PARENT )+ ) { match(input,PARENTS,FOLLOW_PARENTS_in_parents2005); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1117:4: (p= PARENT )+ int cnt28=0; loop28: do { int alt28=2; int LA28_0 = input.LA(1); if ( (LA28_0==PARENT) ) { alt28=1; } switch (alt28) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1117:5: p= PARENT { p=(CommonTree)match(input,PARENT,FOLLOW_PARENT_in_parents2014); String parentName = p.getText(); IChunkType parentType = ((Model_scope)Model_stack.peek()).knownChunkTypes.get(parentName.toLowerCase()); if(parentType==null) throw new BuilderError("Could not find chunk-type "+parentName, p); else pl.add(parentType); } break; default : if ( cnt28 >= 1 ) break loop28; EarlyExitException eee = new EarlyExitException(28, input); throw eee; } cnt28++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1124:21: PARENTS { match(input,PARENTS,FOLLOW_PARENTS_in_parents2038); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return pl; } // $ANTLR end "parents" // $ANTLR start "slots" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1126:1: slots returns [Collection<ISlot> sl] : ( ^( SLOTS (s= slot | l= logic )+ ) | SLOTS ) ; public final Collection<ISlot> slots() throws RecognitionException { Collection<ISlot> sl = null; ISlot s = null; ISlot l = null; sl = new ArrayList<ISlot>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:2: ( ( ^( SLOTS (s= slot | l= logic )+ ) | SLOTS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:4: ( ^( SLOTS (s= slot | l= logic )+ ) | SLOTS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:4: ( ^( SLOTS (s= slot | l= logic )+ ) | SLOTS ) int alt31=2; int LA31_0 = input.LA(1); if ( (LA31_0==SLOTS) ) { int LA31_1 = input.LA(2); if ( (LA31_1==DOWN) ) { alt31=1; } else if ( (LA31_1==UP||LA31_1==CHUNKS||LA31_1==PARAMETERS) ) { alt31=2; } else { NoViableAltException nvae = new NoViableAltException("", 31, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 31, 0, input); throw nvae; } switch (alt31) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:5: ^( SLOTS (s= slot | l= logic )+ ) { match(input,SLOTS,FOLLOW_SLOTS_in_slots2057); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:13: (s= slot | l= logic )+ int cnt30=0; loop30: do { int alt30=3; int LA30_0 = input.LA(1); if ( (LA30_0==SLOT) ) { alt30=1; } else if ( (LA30_0==LOGIC) ) { alt30=2; } switch (alt30) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1129:14: s= slot { pushFollow(FOLLOW_slot_in_slots2062); s=slot(); state._fsp--; sl.add(s); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1130:5: l= logic { pushFollow(FOLLOW_logic_in_slots2072); l=logic(); state._fsp--; sl.add(l); } break; default : if ( cnt30 >= 1 ) break loop30; EarlyExitException eee = new EarlyExitException(30, input); throw eee; } cnt30++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1131:9: SLOTS { match(input,SLOTS,FOLLOW_SLOTS_in_slots2084); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return sl; } // $ANTLR end "slots" // $ANTLR start "parameters" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1133:1: parameters returns [Collection<CommonTree> params] : ( ^( PARAMETERS (p= parameter )+ ) | PARAMETERS ) ; public final Collection<CommonTree> parameters() throws RecognitionException { Collection<CommonTree> params = null; CommonTree p = null; params = new ArrayList<CommonTree>(); try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:2: ( ( ^( PARAMETERS (p= parameter )+ ) | PARAMETERS ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:4: ( ^( PARAMETERS (p= parameter )+ ) | PARAMETERS ) { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:4: ( ^( PARAMETERS (p= parameter )+ ) | PARAMETERS ) int alt33=2; int LA33_0 = input.LA(1); if ( (LA33_0==PARAMETERS) ) { int LA33_1 = input.LA(2); if ( (LA33_1==DOWN) ) { alt33=1; } else if ( (LA33_1==UP) ) { alt33=2; } else { NoViableAltException nvae = new NoViableAltException("", 33, 1, input); throw nvae; } } else { NoViableAltException nvae = new NoViableAltException("", 33, 0, input); throw nvae; } switch (alt33) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:5: ^( PARAMETERS (p= parameter )+ ) { match(input,PARAMETERS,FOLLOW_PARAMETERS_in_parameters2108); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:18: (p= parameter )+ int cnt32=0; loop32: do { int alt32=2; int LA32_0 = input.LA(1); if ( (LA32_0==PARAMETER) ) { alt32=1; } switch (alt32) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:19: p= parameter { pushFollow(FOLLOW_parameter_in_parameters2113); p=parameter(); state._fsp--; params.add(p); } break; default : if ( cnt32 >= 1 ) break loop32; EarlyExitException eee = new EarlyExitException(32, input); throw eee; } cnt32++; } while (true); match(input, Token.UP, null); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1141:54: PARAMETERS { match(input,PARAMETERS,FOLLOW_PARAMETERS_in_parameters2122); } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return params; } // $ANTLR end "parameters" // $ANTLR start "parameter" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1145:1: parameter returns [CommonTree param] : ^(p= PARAMETER NAME STRING ) ; public final CommonTree parameter() throws RecognitionException { CommonTree param = null; CommonTree p=null; param = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1149:2: ( ^(p= PARAMETER NAME STRING ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1149:4: ^(p= PARAMETER NAME STRING ) { p=(CommonTree)match(input,PARAMETER,FOLLOW_PARAMETER_in_parameter2147); match(input, Token.DOWN, null); match(input,NAME,FOLLOW_NAME_in_parameter2149); match(input,STRING,FOLLOW_STRING_in_parameter2151); match(input, Token.UP, null); param = p; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return param; } // $ANTLR end "parameter" // $ANTLR start "logic" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1154:1: logic returns [ISlot ls] : ^(l= LOGIC (v= AND | v= OR | v= NOT ) (s1= logic | s1= slot ) (s2= logic | s2= slot )? ) ; public final ISlot logic() throws RecognitionException { ISlot ls = null; CommonTree l=null; CommonTree v=null; ISlot s1 = null; ISlot s2 = null; ls = null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:1: ( ^(l= LOGIC (v= AND | v= OR | v= NOT ) (s1= logic | s1= slot ) (s2= logic | s2= slot )? ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:3: ^(l= LOGIC (v= AND | v= OR | v= NOT ) (s1= logic | s1= slot ) (s2= logic | s2= slot )? ) { l=(CommonTree)match(input,LOGIC,FOLLOW_LOGIC_in_logic2178); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:13: (v= AND | v= OR | v= NOT ) int alt34=3; switch ( input.LA(1) ) { case AND: { alt34=1; } break; case OR: { alt34=2; } break; case NOT: { alt34=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 34, 0, input); throw nvae; } switch (alt34) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:14: v= AND { v=(CommonTree)match(input,AND,FOLLOW_AND_in_logic2183); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:20: v= OR { v=(CommonTree)match(input,OR,FOLLOW_OR_in_logic2187); } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:25: v= NOT { v=(CommonTree)match(input,NOT,FOLLOW_NOT_in_logic2191); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:32: (s1= logic | s1= slot ) int alt35=2; int LA35_0 = input.LA(1); if ( (LA35_0==LOGIC) ) { alt35=1; } else if ( (LA35_0==SLOT) ) { alt35=2; } else { NoViableAltException nvae = new NoViableAltException("", 35, 0, input); throw nvae; } switch (alt35) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:33: s1= logic { pushFollow(FOLLOW_logic_in_logic2197); s1=logic(); state._fsp--; } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:42: s1= slot { pushFollow(FOLLOW_slot_in_logic2201); s1=slot(); state._fsp--; } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:51: (s2= logic | s2= slot )? int alt36=3; int LA36_0 = input.LA(1); if ( (LA36_0==LOGIC) ) { alt36=1; } else if ( (LA36_0==SLOT) ) { alt36=2; } switch (alt36) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:52: s2= logic { pushFollow(FOLLOW_logic_in_logic2207); s2=logic(); state._fsp--; } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1162:61: s2= slot { pushFollow(FOLLOW_slot_in_logic2211); s2=slot(); state._fsp--; } break; } match(input, Token.UP, null); LOGGER.debug("got a logical slot " + v + " " + s1 + " " + s2); int op = -1; switch((v!=null?v.getType():0)) { case AND : op = ILogicalSlot.AND; break; case OR : op = ILogicalSlot.OR; break; case NOT : op = ILogicalSlot.NOT; break; default : reportException(new BuilderError("Cannot have logical slot of type " + (v!=null?v.getType():0), l)); } try { ls = new DefaultLogicalSlot(op, s1, s2); } catch(CannotInstantiateException e) { reportException(new BuilderError("Can only put slots as arguments of DefaultLogicalSlot", l)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ls; } // $ANTLR end "logic" // $ANTLR start "slot" // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1181:1: slot returns [ISlot sl] : ^(s= SLOT (n= NAME | n= VARIABLE ) (c= EQUALS | c= GT | c= GTE | c= LT | c= LTE | c= NOT | c= WITHIN ) (v= IDENTIFIER | v= VARIABLE | v= STRING | v= NUMBER ) ) ; public final ISlot slot() throws RecognitionException { ISlot sl = null; CommonTree s=null; CommonTree n=null; CommonTree c=null; CommonTree v=null; sl=null; try { // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:1: ( ^(s= SLOT (n= NAME | n= VARIABLE ) (c= EQUALS | c= GT | c= GTE | c= LT | c= LTE | c= NOT | c= WITHIN ) (v= IDENTIFIER | v= VARIABLE | v= STRING | v= NUMBER ) ) ) // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:3: ^(s= SLOT (n= NAME | n= VARIABLE ) (c= EQUALS | c= GT | c= GTE | c= LT | c= LTE | c= NOT | c= WITHIN ) (v= IDENTIFIER | v= VARIABLE | v= STRING | v= NUMBER ) ) { s=(CommonTree)match(input,SLOT,FOLLOW_SLOT_in_slot2237); match(input, Token.DOWN, null); // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:12: (n= NAME | n= VARIABLE ) int alt37=2; int LA37_0 = input.LA(1); if ( (LA37_0==NAME) ) { alt37=1; } else if ( (LA37_0==VARIABLE) ) { alt37=2; } else { NoViableAltException nvae = new NoViableAltException("", 37, 0, input); throw nvae; } switch (alt37) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:13: n= NAME { n=(CommonTree)match(input,NAME,FOLLOW_NAME_in_slot2242); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:20: n= VARIABLE { n=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_slot2246); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:32: (c= EQUALS | c= GT | c= GTE | c= LT | c= LTE | c= NOT | c= WITHIN ) int alt38=7; switch ( input.LA(1) ) { case EQUALS: { alt38=1; } break; case GT: { alt38=2; } break; case GTE: { alt38=3; } break; case LT: { alt38=4; } break; case LTE: { alt38=5; } break; case NOT: { alt38=6; } break; case WITHIN: { alt38=7; } break; default: NoViableAltException nvae = new NoViableAltException("", 38, 0, input); throw nvae; } switch (alt38) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:33: c= EQUALS { c=(CommonTree)match(input,EQUALS,FOLLOW_EQUALS_in_slot2252); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:42: c= GT { c=(CommonTree)match(input,GT,FOLLOW_GT_in_slot2256); } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:47: c= GTE { c=(CommonTree)match(input,GTE,FOLLOW_GTE_in_slot2260); } break; case 4 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:53: c= LT { c=(CommonTree)match(input,LT,FOLLOW_LT_in_slot2264); } break; case 5 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:58: c= LTE { c=(CommonTree)match(input,LTE,FOLLOW_LTE_in_slot2268); } break; case 6 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:64: c= NOT { c=(CommonTree)match(input,NOT,FOLLOW_NOT_in_slot2272); } break; case 7 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1188:70: c= WITHIN { c=(CommonTree)match(input,WITHIN,FOLLOW_WITHIN_in_slot2276); } break; } // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1189:23: (v= IDENTIFIER | v= VARIABLE | v= STRING | v= NUMBER ) int alt39=4; switch ( input.LA(1) ) { case IDENTIFIER: { alt39=1; } break; case VARIABLE: { alt39=2; } break; case STRING: { alt39=3; } break; case NUMBER: { alt39=4; } break; default: NoViableAltException nvae = new NoViableAltException("", 39, 0, input); throw nvae; } switch (alt39) { case 1 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1189:24: v= IDENTIFIER { v=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_slot2305); } break; case 2 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1190:24: v= VARIABLE { v=(CommonTree)match(input,VARIABLE,FOLLOW_VARIABLE_in_slot2332); } break; case 3 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1190:35: v= STRING { v=(CommonTree)match(input,STRING,FOLLOW_STRING_in_slot2336); } break; case 4 : // /Users/harrison/Archive/Development/workspaces/jactr-env-dev/org.jactr.io/src/org/jactr/io/antlr3/builder/JACTRBuilder.g:1190:44: v= NUMBER { v=(CommonTree)match(input,NUMBER,FOLLOW_NUMBER_in_slot2340); } break; } match(input, Token.UP, null); LOGGER.debug("got slot def "+(n!=null?n.getText():null)+" "+(c!=null?c.getText():null)+" "+(v!=null?v.getText():null)); String slotName = (n!=null?n.getText():null); int condition = IConditionalSlot.EQUALS; switch((c!=null?c.getType():0)) { case GT : condition = IConditionalSlot.GREATER_THAN; break; case GTE : condition = IConditionalSlot.GREATER_THAN_EQUALS; break; case LT : condition = IConditionalSlot.LESS_THAN; break; case LTE : condition = IConditionalSlot.LESS_THAN_EQUALS; break; case NOT : condition = IConditionalSlot.NOT_EQUALS; break; case WITHIN : condition = IConditionalSlot.WITHIN; break; default : condition = IConditionalSlot.EQUALS; } if((c!=null?c.getType():0)==WITHIN) reportException(new BuilderError("Within is not currently supported", c)); Object value = null; if((v!=null?v.getType():0) == NUMBER) try { value = Double.parseDouble((v!=null?v.getText():null)); } catch(NumberFormatException nfe) { reportException(new BuilderWarning("Could not create number from "+(v!=null?v.getText():null)+" assuming its a string", v, nfe)); value = (v!=null?v.getText():null); } else if((v!=null?v.getType():0) == STRING) { //we pass a stringBuilder if it is to be a string to differentiate // it from an unresolved string reference value = new StringBuilder((v!=null?v.getText():null)); //value = (v!=null?v.getText():null); } else { //we will attempt resolution.. but we may still need to do it again later //first we try the chunks try { value = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunk((v!=null?v.getText():null)).get(); } catch(Exception e) { LOGGER.error("Could not get chunk "+(v!=null?v.getText():null), e); } if(value==null) //then chunktypes try { value = ((Model_scope)Model_stack.peek()).model.getDeclarativeModule().getChunkType((v!=null?v.getText():null)).get(); } catch(Exception e) { LOGGER.error("Could not get chunktype "+(v!=null?v.getText():null),e); } if(value==null) //then production?? try { value = ((Model_scope)Model_stack.peek()).model.getProceduralModule().getProduction((v!=null?v.getText():null)).get(); } catch(Exception e) { LOGGER.error("Could not get production "+(v!=null?v.getText():null),e); } //if we are still null, then we need to hold // on for resolution later if(value==null) value = resolveKeywords((v!=null?v.getText():null)); } if(slotName.equalsIgnoreCase("isa")) { //special case here LOGGER.error("testing ISA conditions; condition is " + condition + " and value isa " + value.getClass()); if (!(value instanceof IChunkType)) { reportException(new BuilderError("isa slot test must have a chunk-type as a value.", v)); } } if((n!=null?n.getType():0)==VARIABLE) sl = new DefaultVariableConditionalSlot(slotName, condition, value); else sl = new DefaultConditionalSlot(slotName, condition, value); if(LOGGER.isDebugEnabled()) LOGGER.debug("created slot "+sl); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return sl; } // $ANTLR end "slot" // Delegated rules public static final BitSet FOLLOW_MODEL_in_model330 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_model334 = new BitSet(new long[]{0x0000000000000040L}); public static final BitSet FOLLOW_modules_in_model346 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_extensions_in_model348 = new BitSet(new long[]{0x0000000000040000L}); public static final BitSet FOLLOW_buffers_in_model350 = new BitSet(new long[]{0x0000000000000020L}); public static final BitSet FOLLOW_library_in_model352 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_model356 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LIBRARY_in_library370 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_declarativeMemory_in_library372 = new BitSet(new long[]{0x0000000000004000L}); public static final BitSet FOLLOW_proceduralMemory_in_library374 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DECLARATIVE_MEMORY_in_declarativeMemory391 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_chunkType_in_declarativeMemory408 = new BitSet(new long[]{0x0000000000000808L}); public static final BitSet FOLLOW_DECLARATIVE_MEMORY_in_declarativeMemory415 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PROCEDURAL_MEMORY_in_proceduralMemory431 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_production_in_proceduralMemory433 = new BitSet(new long[]{0x0000000000008008L}); public static final BitSet FOLLOW_PROCEDURAL_MEMORY_in_proceduralMemory439 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_MODULES_in_modules451 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_module_in_modules453 = new BitSet(new long[]{0x0000000000000088L}); public static final BitSet FOLLOW_MODULES_in_modules459 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_MODULE_in_module477 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CLASS_SPEC_in_module481 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_module485 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_EXTENSIONS_in_extensions500 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_extension_in_extensions502 = new BitSet(new long[]{0x0000000000000208L}); public static final BitSet FOLLOW_EXTENSIONS_in_extensions508 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_EXTENSION_in_extension523 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CLASS_SPEC_in_extension527 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_extension531 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BUFFERS_in_buffers547 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_buffer_in_buffers550 = new BitSet(new long[]{0x0000000000080008L}); public static final BitSet FOLLOW_BUFFERS_in_buffers556 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BUFFER_in_buffer572 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_buffer576 = new BitSet(new long[]{0x0000000000001000L}); public static final BitSet FOLLOW_chunks_in_buffer578 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_buffer582 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CHUNK_TYPE_in_chunkType605 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_chunkType609 = new BitSet(new long[]{0x0100000000000000L}); public static final BitSet FOLLOW_parents_in_chunkType613 = new BitSet(new long[]{0x0000020000000000L}); public static final BitSet FOLLOW_slots_in_chunkType618 = new BitSet(new long[]{0x0000000000001000L}); public static final BitSet FOLLOW_chunks_in_chunkType625 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_chunkType630 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CHUNKS_in_chunks654 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_chunk_in_chunks659 = new BitSet(new long[]{0x0000008000002008L}); public static final BitSet FOLLOW_CHUNK_IDENTIFIER_in_chunks691 = new BitSet(new long[]{0x0000008000002008L}); public static final BitSet FOLLOW_CHUNKS_in_chunks727 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CHUNK_in_chunk748 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_chunk752 = new BitSet(new long[]{0x0080000000000000L}); public static final BitSet FOLLOW_PARENT_in_chunk756 = new BitSet(new long[]{0x0000020000000000L}); public static final BitSet FOLLOW_slots_in_chunk760 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_chunk764 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PRODUCTION_in_production787 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_production791 = new BitSet(new long[]{0x0000000000100000L}); public static final BitSet FOLLOW_conditions_in_production795 = new BitSet(new long[]{0x0000000002000000L}); public static final BitSet FOLLOW_actions_in_production799 = new BitSet(new long[]{0x0000000000010000L}); public static final BitSet FOLLOW_parameters_in_production803 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CONDITIONS_in_conditions825 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_check_in_conditions830 = new BitSet(new long[]{0x0000000001E00008L}); public static final BitSet FOLLOW_query_in_conditions850 = new BitSet(new long[]{0x0000000001E00008L}); public static final BitSet FOLLOW_scriptCond_in_conditions870 = new BitSet(new long[]{0x0000000001E00008L}); public static final BitSet FOLLOW_proxyCond_in_conditions890 = new BitSet(new long[]{0x0000000001E00008L}); public static final BitSet FOLLOW_ACTIONS_in_actions926 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_add_in_actions931 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_set_in_actions956 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_remove_in_actions981 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_modify_in_actions1006 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_scriptAct_in_actions1031 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_proxyAct_in_actions1056 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_output_in_actions1081 = new BitSet(new long[]{0x00000001FC000008L}); public static final BitSet FOLLOW_MATCH_CONDITION_in_check1124 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_check1128 = new BitSet(new long[]{0x0000018800000008L}); public static final BitSet FOLLOW_CHUNK_IDENTIFIER_in_check1152 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_CHUNK_TYPE_IDENTIFIER_in_check1176 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_VARIABLE_in_check1216 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_check1275 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_UNKNOWN_in_unknownList1329 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_QUERY_CONDITION_in_query1351 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_query1355 = new BitSet(new long[]{0x0000020000000000L}); public static final BitSet FOLLOW_slots_in_query1359 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SCRIPTABLE_CONDITION_in_scriptCond1380 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_LANG_in_scriptCond1384 = new BitSet(new long[]{0x0000000400000000L}); public static final BitSet FOLLOW_SCRIPT_in_scriptCond1388 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PROXY_CONDITION_in_proxyCond1410 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CLASS_SPEC_in_proxyCond1414 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_proxyCond1419 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ADD_ACTION_in_add1455 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_add1459 = new BitSet(new long[]{0x0000018800000000L}); public static final BitSet FOLLOW_CHUNK_IDENTIFIER_in_add1482 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_CHUNK_TYPE_IDENTIFIER_in_add1524 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_VARIABLE_in_add1564 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_add1607 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SET_ACTION_in_set1633 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_set1637 = new BitSet(new long[]{0x0000028800000008L}); public static final BitSet FOLLOW_CHUNK_IDENTIFIER_in_set1660 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_VARIABLE_in_set1714 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_set1758 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_REMOVE_ACTION_in_remove1782 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_remove1786 = new BitSet(new long[]{0x0000024800000008L}); public static final BitSet FOLLOW_IDENTIFIER_in_remove1808 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_VARIABLE_in_remove1830 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_remove1855 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_MODIFY_ACTION_in_modify1876 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_modify1880 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_modify1884 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SCRIPTABLE_ACTION_in_scriptAct1907 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_LANG_in_scriptAct1911 = new BitSet(new long[]{0x0000000400000000L}); public static final BitSet FOLLOW_SCRIPT_in_scriptAct1915 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PROXY_ACTION_in_proxyAct1936 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CLASS_SPEC_in_proxyAct1940 = new BitSet(new long[]{0x0000020000000008L}); public static final BitSet FOLLOW_slots_in_proxyAct1945 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_OUTPUT_ACTION_in_output1976 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_STRING_in_output1980 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PARENTS_in_parents2005 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_PARENT_in_parents2014 = new BitSet(new long[]{0x0080000000000008L}); public static final BitSet FOLLOW_PARENTS_in_parents2038 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SLOTS_in_slots2057 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_slot_in_slots2062 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_logic_in_slots2072 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_SLOTS_in_slots2084 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PARAMETERS_in_parameters2108 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_parameter_in_parameters2113 = new BitSet(new long[]{0x0000000000020008L}); public static final BitSet FOLLOW_PARAMETERS_in_parameters2122 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_PARAMETER_in_parameter2147 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_parameter2149 = new BitSet(new long[]{0x0000001000000000L}); public static final BitSet FOLLOW_STRING_in_parameter2151 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_LOGIC_in_logic2178 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_AND_in_logic2183 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_OR_in_logic2187 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_NOT_in_logic2191 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_logic_in_logic2197 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_slot_in_logic2201 = new BitSet(new long[]{0x0010040000000008L}); public static final BitSet FOLLOW_logic_in_logic2207 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_slot_in_logic2211 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SLOT_in_slot2237 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_NAME_in_slot2242 = new BitSet(new long[]{0x0003F80000000000L}); public static final BitSet FOLLOW_VARIABLE_in_slot2246 = new BitSet(new long[]{0x0003F80000000000L}); public static final BitSet FOLLOW_EQUALS_in_slot2252 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_GT_in_slot2256 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_GTE_in_slot2260 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_LT_in_slot2264 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_LTE_in_slot2268 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_NOT_in_slot2272 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_WITHIN_in_slot2276 = new BitSet(new long[]{0x0000007800000000L}); public static final BitSet FOLLOW_IDENTIFIER_in_slot2305 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_VARIABLE_in_slot2332 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_STRING_in_slot2336 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_NUMBER_in_slot2340 = new BitSet(new long[]{0x0000000000000008L}); }