Home / release-18July2014
Name Modified Size InfoDownloads / Week
Parent folder
OpenNLC-22July2014a-binary-windows-32bit.zip 2014-07-30 672.2 kB
OpenNLC-22July2014a-binary-linux-x86_64.zip 2014-07-30 736.2 kB
OpenNLC-22July2014-VC++2010Project.zip 2014-07-30 7.2 kB
OpenNLC-22July2014a-source.zip 2014-07-30 240.3 kB
README.txt 2014-07-30 22.6 kB
OpenNLC-18July2014b-binary-windows-32bit.zip 2014-07-19 668.6 kB
OpenNLC-18July2014b-binary-linux-x86_64.zip 2014-07-19 731.2 kB
OpenNLC-18July2014-VC++2010Project.zip 2014-07-19 6.9 kB
OpenNLC-18July2014b-source.zip 2014-07-19 237.8 kB
OpenNLC-18July2014a-binary-linux-x86_64.zip 2014-07-18 731.3 kB
OpenNLC-18July2014a-source.zip 2014-07-18 238.1 kB
LICENSE.txt 2014-07-18 34.5 kB
Totals: 12 Items   4.3 MB 0
//License:
See LICENSE.txt for copy of source license (AGPLv3)

//Copyright:
Author: Richard Bruce Baxter Copyright (c) 2005-2014 Baxter AI (baxterai.com)

//Release Notes:
Compilation of OpenNLC requires OpenGIA source (GIA*.cpp/GIA*.h) - see opengia.net
Ensure GIArules.xml and all input files are formatted for your operating system, e.g. 
	Linux: dos2unix GIArules.xml
	Windows: toDos.exe GIArules.xml (http://www.textpad.com/add-ons/files/utilities/convert.zip)

//Change Record:

Release-17May2014:

OpenNLC 17-May-2014 - first public release
OpenNLC 24-May-2014 - CS compatiblity update; NLCmain.cpp add; #ifdef USE_CS_WORKAROUND executeGIA2(); #endif
OpenNLC 08-June-2014 - update header license intro
OpenNLC 08-June-2014 - NLC_CLASS_DEFINITIONS_ORDER_BY_DEPENDENCIES arrange classes in necessary order for C++ compilation
OpenNLC 08-June-2014 - NLC_CLASS_DEFINITIONS_USE_GENERIC_LIBRARY_ENTITY_CLASS add a top level NLC genericEntity class that all NLC generated classes inherit

Release-18July2014:

OpenNLC 30June2014a - If the sun is not bright, the dog is happy.	if negative
OpenNLC 01-July-2014a - change if statement interpretation; instead of using for loops, use explicit if
OpenNLC 01-July-2014a - While tom is red, eat a pie.	while
OpenNLC 01-July-2014a - While tom is not red, eat a pie.	while negative	
OpenNLC 01-July-2014a - implement condition if statements
OpenNLC 01-July-2014a - implement condition while statements
OpenNLC 03-July-2014a - generalise generateConditionBlocks() and subfunctions to support logicalOperations with default 'for' logical operation, and 'while'/'if' logical operations (ie if list is empty); as this is required for if/while conditions
OpenNLC 03-July-2014a - fold NLC_LOCAL_LISTS_USE_INSTANCE_NAMES code and change all createCodeBlockForPropertyListLocal references to createCodeBlockForPropertyList
OpenNLC 04-July-2014a -> 11July2014a - implement logical condition conjunctions. eg If the sun is bright and the trees are green, the dog is happy.	if concatenation (and/or)
OpenNLC 04-July-2014a - NLC_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_CONJUNCTION_INTO_A_PROPERTY_CONJUNCTION - update transformTheActionOfPossessionEgHavingIntoAproperty() to transfer the "has" condition subject/object of a conjunction condition (ie and/or) to the "has" condition object (eg pie/mouse)
OpenNLC 05-July-2014a - trace all condition conjunctions ("and"/"or") connected to the logical condition ("if/while") object to generate additional logical condition codeblocks			
OpenNLC 05-July-2014a - look for conjunction conditions connected to a) the logical condition ("if/while") object and b) its conditions, and c) its properties/qualities (children) [REDUNDANT: because logical conditions and conjunction conditions will be connected to the children already]
OpenNLC 05-July-2014a - addNewLogicalCondition() must parse all paths (context, children conditions and children properties) regardless of the existence of concatenation conditions and increment logicalConditionConjunctionIndex appropriately
OpenNLC 05-July-2014a - must generate while conjunction logical conditions as follows: while(logicalCondition1 && logicalCondition2){ if(the red dog near the park has an apple){logicalCondition1 = true} if(the tea tree is blue){logicalCondition2 = true}   if(logicalCondition1 && logicalCondition2){the tea tree is blue}} 
OpenNLC 05-July-2014a - change all magic -1 integers to either INT_ARRAY_DEFAULT_VALUE or CPP_STRING_FIND_RESULT_FAIL_VALUE	
OpenNLC 05-July-2014a - update transformTheActionOfPossessionEgHavingIntoAproperty(): generalise NLC_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_CONJUNCTION_INTO_A_PROPERTY_CONJUNCTION to NLC_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_CONDITION_INTO_A_PROPERTY_CONDITION
OpenNLC 05-July-2014a - transformTheActionOfPossessionEgHavingIntoAproperty() pass negatives to has children
OpenNLC 05-July-2014a - redeal with negatives
OpenNLC 06-July-2014a - initialise conditionObjectItem1/conditionObjectItem2
OpenNLC 06-July-2014a - fix setting of currentCodeBlockInTreeAtCurrentLevel1 in addNewLogicalCondition
OpenNLC 06-July-2014a - checkConditionForLogicalCondition() - add setting of logicalConditionConjunctionArray based on logicalConditionConjunctionSubjectEntity 
OpenNLC 06-July-2014a - addNewLogicalCondition(): NLCcodeblock * currentCodeBlockInTreeAtCurrentLevel2 = currentCodeBlockInTreeAtCurrentLevel1;	
OpenNLC 07-July-2014a - generateObjectInitialisationsBasedOnPropertiesAndConditions(); enforce: if(!(entity->isCondition)): do not parse conditions of conditions as one of the conditions is a logical condition conjunction (ie and/or)
OpenNLC 07-July-2014a - update addNewLogicalCondition(): add d) to parse conditions of logical/conjunction condition object's parent: ie; look for conjunction conditions connected to a) the logical condition ("if/while") object and b) its conditions, c) its properties/qualities (children) [REDUNDANT: because logical conditions and conjunction conditions will be connected to the children already], and d) its parent
OpenNLC 08-July-2014a - prevent addNewLogicalCondition() from executing generateContextBlocksAndInitialiseParentIfNecessary() on conditions: 
OpenNLC 08-July-2014a - make checkConditionForLogicalCondition() execute addNewLogicalCondition() on condition subject of conditions connected to conjunction logical conditions (and/or)
OpenNLC 08-July-2014a - RATIONALE: Therefore, NLC must always parse (ie generate for loop code for) all the children (both properties and conditions) of a definite variable when using it
OpenNLC 08-July-2014a - implement NLC_UNTESTED_UPDATE_TO_generateContextBlocksAndInitialiseParentIfNecessary_INITIALISE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT
OpenNLC 08-July-2014a - implement NLC_UNTESTED_UPDATE_TO_generateContextBlocksAndInitialiseParentIfNecessary_INITIALISE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT for when the variable is definite
OpenNLC 08-July-2014a - update addNewLogicalCondition(): MUST FINISH CODING THIS; will not handle conjunctions concerning children of the same parent (eg chicken in "if chicken eats a pie and has an apple, row a boat")
OpenNLC 08-July-2014a - update createCodeBlockForGivenConditions() and createCodeBlockForGivenProperties() to not parse nodes with conjunctions conditions if the node is not the primary node being parsed by generateConditionBlocks()
OpenNLC 08-July-2014a - fix this; checkConditionForLogicalCondition() is executing addNewLogicalCondition() on the condition subject of conditions connected logical condition conjunction, not on the conditions themselves, meaning addNewLogicalCondition() must be passed the primaryEntityInLogicalConditionConjunctionSubset (the condition, not its subject).
OpenNLC 08-July-2014a - check this new implementation wont interfere with any more basic NLC functions (eg generateObjectInitialisationsBasedOnPropertiesAndConditions)
OpenNLC 08-July-2014a - revert 1g4a change - reintroduce createCodeBlockForPropertyListLocal()/NLC_CODEBLOCK_TYPE_FOR_PROPERTY_LIST_LOCAL
OpenNLC 08-July-2014a - prepare code for conjuction class: generateContextBlocksAndInitialiseParentIfNecessary should be passed NULL as primaryEntityInLogicalConditionConjunctionSubset
OpenNLC 08-July-2014a - contain all generateContextBlocksAndInitialiseParentIfNecessary() conjunction variables in a NLClogicalConditionConjunctionVariables class
OpenNLC 08-July-2014a - generateContextBlocksAndInitialiseParentIfNecessary(): remove additional constraints added to execution of generateConditionBlocks()
OpenNLC 08-July-2014a - generateContextBlocksAndInitialiseParentIfNecessary(): switch position of context property item
OpenNLC 08-July-2014a - generateContextBlocksAndInitialiseParentIfNecessary(): execute generateConditionBlocks() irrespective of generateObjectInitialisationsBasedOnPropertiesAndConditions()
OpenNLC 08-July-2014a - change NLC_UNTESTED_UPDATE_TO_generateContextBlocksAndInitialiseParentIfNecessary_INITIALISE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT to generateContextBlocksAndInitialiseParentIfNecessary_PARSE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT
OpenNLC 08-July-2014a - addNewLogicalCondition() generateContextBlocksAndInitialiseParentIfNecessary_PARSE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT: set currentCodeBlockInTree = currentCodeBlockInTreeAtCurrentLevel
OpenNLC 08-July-2014a - update createCodeBlockForGivenConditions() to set *foundLogicalConditionConjunction if conjunctionConditionFound 
OpenNLC 08-July-2014a - update hasConjunctionConditionConnection() to search for conjunction conditions connected to incomingConditionNodeList
OpenNLC 09-July-2014a - simplify and correct transformTheActionOfPossessionEgHavingIntoAproperty() NLC_TRANSFORM_THE_ACTION_OF_POSSESSION_EG_HAVING_CONDITION_INTO_A_PROPERTY_CONDITION implementation
OpenNLC 09-July-2014a - hasConjunctionConditionConnection(): do not parse nodes (ie set conjunctionConditionConnectionFound) with conjunction condition connections if the conjunction condition has already been parsed by checkConditionForLogicalCondition()
OpenNLC 09-July-2014a - update generateCodeBlocksPart0() to write the first logical condition as negative if the object of the logical condition (if/while/for) is negative
OpenNLC 09-July-2014a - update hasConjunctionConditionConnection(); set *foundLogicalConditionConjunction even when conditionEntity == primaryEntityInLogicalConditionConjunctionSubset
OpenNLC 09-July-2014a - update hasConjunctionConditionConnection(); do not overwrite foundLogicalConditionConjunction; always take the first conjunction in subset as the one to parse next
OpenNLC 10-July-2014a - 1. create maximum path, 2. see if any conjunctions fill a subset of that path. This is required if there is more than one conjunction in a sentence, as Stanford parser generates redundant conjunctions
OpenNLC 11-July-2014a - update hasConjunctionConditionConnection(): do not reparse same conjunction conditions
OpenNLC 11-July-2014a - change NLClocalListVariableHasBeenDeclared to NLClocalListVariableHasBeenInitialised
OpenNLC 11-July-2014a - declare local variables (eg pieClassPropertyList) for all indefinite entities (eg "a pie") that have no properties and conditions in the same sentence: declareLocalPropertyListsForAllNonSpecificIndefiniteEntities() and set NLClocalListVariableHasBeenDeclared
OpenNLC 11-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore actions
OpenNLC 11-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore qualitites
OpenNLC 11-July-2014a - comment debug text 
OpenNLC 11-July-2014a - change generateContextBlocksAndInitialiseParentIfNecessary_PARSE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT to NLC_PARSE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT
OpenNLC 11-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore conditions
OpenNLC 11-July-2014a - fix bug in declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(); position of "entity->NLClocalListVariableHasBeenDeclared = true;"
OpenNLC 11-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore already declared lists
OpenNLC 11-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore substance concepts
OpenNLC 11-July-2014a - fix 1g8a update in generateObjectInitialisationsBasedOnPropertiesAndConditions()
OpenNLC 11-July-2014a - initialise plural vars in a for loop instead of adding new instances consecutively
OpenNLC 11-July-2014a - update generateObjectInitialisationsBasedOnPropertiesAndConditions(): remove "&& !(propertyEntity->parsedForNLCcodeBlocks)" and "&& && !(conditionEntity->parsedForNLCcodeBlocks)" conditions
OpenNLC 11-July-2014a - update createCodeBlockAddNewProperty()/createCodeBlockAddNewCondition(); if NLClocalListVariableHasBeenDeclared, set NLClocalListVariableHasBeenInitialised	
OpenNLC 12-July-2014a - Add for logic; "For all/each" (0)
OpenNLC 12-July-2014a - only consider "for" a logical condition entity if it is succeeded immediately by "all", "every" or "each"
OpenNLC 12-July-2014a - change all *ConditionLogical* to *LogicalCondition*
OpenNLC 12-July-2014a - implement NLC_ONLY_SUPPORT_LOGICAL_CONJUNCTION_FOR_AT_START_OF_SENTENCE: this is a more restricted implementation but is faster. It still requires modifications of GIA (it requires entityIndex information to be stored in GIAxmlConversion.cpp [GIAdatabase.cpp is not supported by NLC])
OpenNLC 12-July-2014a - update addNewLogicalCondition() to set currentLogicalConditionObject being parsed by generateContextBlocksAndInitialiseParentIfNecessary() as "grammaticalDefiniteTemp" if logicalOperation == NLC_CONDITION_LOGICAL_OPERATIONS_FOR	
OpenNLC 12-July-2014a - ensure statements after for loop start at original indentation; generateCodeBlocksPart2logicalConditions() restore currentCodeBlockInTreeAtBaseLevel after executing condition 	
OpenNLC 12-July-2014a - generateCodeBlocksPart2logicalConditions() fix currentCodeBlockInTreeAtBaseLevel implementation for while loops
OpenNLC 13-July-2014a - change declareLocalPropertyListsForAllNonSpecificIndefiniteEntities to declareLocalPropertyListsForIndefiniteEntities
OpenNLC 13-July-2014a - place local variable implementation in its own preprocessor def for clarity (NLC_DEFINE_LOCAL_VARIABLES_FOR_ALL_INDEFINATE_ENTITIES)
OpenNLC 13-July-2014a - never parse parents past current sentence [always take local variable if defined]
OpenNLC 13-July-2014a - Actions parse parent condition subject parents as well as property parents - thought I don't think parsing of condition parents is ever necessary in the new (ie 1g8+) local variable implementation 	
OpenNLC 13-July-2014a - ie do not parse parent past a local variable in the same sentence..	
OpenNLC 13-July-2014a - generalise all translator for loop generation code
OpenNLC 13-July-2014a - fold NLC_PARSE_CHILD_PROPERTIES_AND_CONDITIONS_OF_CONTEXT_PARENT changes
OpenNLC 14-July-2014a - declareLocalPropertyListsForAllNonSpecificIndefiniteEntities(): ignore action concepts
OpenNLC 14-July-2014a - prevent getParent from searching condition parents when parsing logical conditions
OpenNLC 14-July-2014a - fix bug in generateContextBlocksAndInitialiseParentIfNecessary(); execute generateConditionBlocks on parentEntity
OpenNLC 14-July-2014a - update generateInitialisationCodeBlock(); add option parseLogicalConditions
OpenNLC 14-July-2014a - generateContextBlocksAndInitialiseParentIfNecessary return true if currentEntity is in same sentence (or is reference), and remove contextFound parameter
OpenNLC 14-July-2014a - update generateInitialisationCodeBlock(): only generate object initialisations when parent is 
OpenNLC 14-July-2014a - move removeRedundantConditionConjunctions() to NLCtranslator.cpp
OpenNLC 14-July-2014a - move "logicalConditionObject->NLClogicalConditionConjunctionIndex = logicalConditionConjunctionIndex;	//set initial logicalConditionConjunctionIndex value " out of "if(logicalOperation != NLC_CONDITION_LOGICAL_OPERATIONS_FOR)" condition
OpenNLC 14-July-2014a - class definitions must ignore conjunctions and logical conditions [fix implementation], eg unordered_map<andClass*, appleClass*> andClassappleClassConditionList;
OpenNLC 14-July-2014a - update identifyAndTagAllLogicalConditionOperations() concepts must be tagged as NLClogicalConditionOperation to prevent generateClassHeirarchy from creating class definitions for logical conditions
OpenNLC 15-July-2014a - update generateContextBlocksAndInitialiseParentIfNecessary() to only reference the local variable for the parent entity (parent for loop), not for any of its children (child for loops); ie do not ever execute createCodeBlockForPropertyListLocal() in generateConditionBlocks():createCodeBlockForGivenProperty()
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: update generateConditionBlocks()/createCodeBlockForGivenConditions()/createCodeBlockForGivenProperties() with option onlyGenerateConditionBlocksIfConnectionsNotParsedForNLC()
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: update generateCodeBlocksPart4objectInitialisations() to execute generateContextBlocksAndInitialiseParentIfNecessary() before executing generateInitialisationCodeBlock() more generally on a definite parent's children
OpenNLC 15-July-2014a - if(!(parentEntity->NLCparsedForlogicalConditionOperations) || parseLogicalConditions)	//change from !(entity->NLCparsedForlogicalConditionOperations)
OpenNLC 15-July-2014a - rearrange NLCtranslatorCodeBlocks.cpp/NLCtranslatorCodeBlocks.h code and create NLCtranslatorCodeBlocksOperations.cpp/NLCtranslatorCodeBlocksOperations.h
OpenNLC 15-July-2014a - start implement NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE for generateCodeBlocksPart2logicalConditions also
OpenNLC 15-July-2014a - prevent generateCodeBlocksPart4objectInitialisations() from parsing concepts; 	
OpenNLC 15-July-2014a - rename generateConditionBlocks() to generateContextBlocks()
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: update generateObjectInitialisationsBasedOnPropertiesAndConditions() with option onlyGenerateContextBlocksIfContextNotGeneratedForNLC
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: set new entity variable NLCcontextGenerated in generateContextBlocksAndInitialiseParentIfNecessary():generateContextBlocks():createCodeBlockForGivenProperties()/createCodeBlockForGivenConditions()) 
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: create clearContextGeneratedVariable to reset entity variable NLCcontextGenerated
OpenNLC 15-July-2014a - NLC_PARSE_OBJECT_CONTEXT_BEFORE_INITIALISE: generateCodeBlocksPart4objectInitialisations():generateCodeBlocksObjectInitialisationsForEntity() do not execute generateObjectInitialisationsBasedOnPropertiesAndConditions() if generateContextBlocksAndInitialiseParentIfNecessary() returns performedAtLeastParentObjectInitialisation=true (ie has already initialised the parent and probably all the children via generateObjectInitialisationsBasedOnPropertiesAndConditions) 
OpenNLC 15-July-2014a - restore previous (<=1g14a) implementation of generateContextBlocksAndInitialiseParentIfNecessary: create initialiseParentIfNecessaryOrGenerateCodeBlocks() for generateCodeBlocksObjectInitialisationsForEntity() as distinct from initialiseParentIfNecessaryAndGenerateCodeBlocks()	
OpenNLC 15-July-2014a - move createCodeBlockForStatements() and children to NLCtranslatorCodeBlocksOperations() 	
OpenNLC 16-July-2014a - NLC_VERIFY_CONNECTIONS_SENTENCE_INDEX: only parse connections if they are in the same sentence index
OpenNLC 16-July-2014a - NLC_VERIFY_CONNECTIONS_SENTENCE_INDEX: implement checkSentenceIndexParsingCodeBlocks() override connection sentence index tests
OpenNLC 16-July-2014a - add condition to generateParentInitialisationCodeBlock(): only initialise indefinite parent if sentenceIndex matches (ie disregard 'wasReference')
OpenNLC 16-July-2014a - fix bug in generateObjectInitialisationsBasedOnPropertiesAndConditions(): change to "if((checkSentenceIndexParsingCodeBlocks(propertyEntity, sentenceIndex, false) || propertyEntity->NLCparsedForCodeBlocks) && (propertyConnection->sentenceIndexTemp == sentenceIndex))"
OpenNLC 17-July-2014a - NLC_TRANSLATE_NEGATIVE_PROPERTIES_AND_CONDITIONS implement negatives; eg "Tom does not have a pie" / "Tom is not near the house"
OpenNLC 17-July-2014a - NLC_TRANSLATE_NEGATIVE_PROPERTIES_AND_CONDITIONS: set negative property connections based on negative "has" action
OpenNLC 17-July-2014a - NLC_TRANSLATE_NEGATIVE_PROPERTIES_AND_CONDITIONS: negative connection implementation for object initialisations						
OpenNLC 18-July-2014a - update generateObjectInitialisationsBasedOnPropertiesAndConditions() to detect negative qualities
OpenNLC 18-July-2014a - NLC_USE_PREPROCESSOR: implement NLC preprocessor		
OpenNLC 18-July-2014a - mark sentence indentation based on the indentation of the line they are contained on. Aim to support multiple sentences per line (assume user is using text wrap) 
OpenNLC 18-July-2014a - create a list of NLCsentence objects per NLCfunction
OpenNLC 18-July-2014a - maintain an array with list of previously parsed codeblocks before entering current logical condition block
OpenNLC 18-July-2014a - if the line has a logical condition operation as the first word (eg If/While/For) and does not contain a full stop, add dummy text ", do this." to the end of the logical condition, such that NLP can parse the logical condition header, and NLC can parse the multi-sentence logical condition based on its indentation. 
OpenNLC 18-July-2014a - add indentation level index to bool logicalCondition[]
OpenNLC 18-July-2014a - retest NLC compilation without NLC_USE_PREPROCESSOR
OpenNLC 18-July-2014a -	handle !useNLCpreprocessor 
OpenNLC 18-July-2014b -	fix NLC compilation without NLC_USE_PREPROCESSOR
OpenNLC 18-July-2014b -	enable NLC compilation on Windows (declareLocalPropertyListsForIndefiniteEntities/generateCodeBlocksObjectInitialisationsForEntity must return a value)
...
OpenNLC 21-July-2014a - handle else, else if
OpenNLC 21-July-2014a - change "else"/"else if" text to "if" using NLC preprocessor, and tag NLCsentence object as "else" or "else if" for automatic reversion by NLC back to their original form (else/else if) 
OpenNLC 21-July-2014a - fix bug in generateCodeBlocksPart2logicalConditions() execution with logicalConditionOperationSubject->isAction: shift "generateCodeBlocksPart3actions" firstCodeBlockInSentence restoration to generateActionCodeBlocks() 	
OpenNLC 21-July-2014a - reference the previous node in the list and add currentCodeBlockInTree
OpenNLC 21-July-2014a - add logicalConditionCase to generateLogicalConditionConjunctionBooleanName
OpenNLC 21-July-2014a - fix NLC compilation without NLC_USE_PREPROCESSOR 
OpenNLC 21-July-2014a - disable NLC_DEBUG_PREPROCESSOR
OpenNLC 21-July-2014a - fix 'while' statements
OpenNLC 21-July-2014a - remove hasConjunctionConditionConnection() warning (outdated)
OpenNLC 21-July-2014a - test code without NLC_PREPROCESSOR_LOGICAL_CONDITION_USE_ROBUST_NLP_INDEPENDENT_CODE; it fails because "else" is connected to "has" action in "Else if the house has a dog" - if !NLC_PREPROCESSOR_LOGICAL_CONDITION_USE_ROBUST_NLP_INDEPENDENT_CODE would need to update transformTheActionOfPossessionEgHavingIntoAproperty() in the future to set elseIfDetect based on the else property much earlier in the NLC translator
OpenNLC 21-July-2014a - NLC_USE_PREPROCESSOR: support question mark as well as fullstop 
Source: README.txt, updated 2014-07-30