summaryrefslogtreecommitdiff
path: root/prolog
AgeCommit message (Collapse)Author
2016-01-06Remove unused importsTimotej Lazar
2016-01-04Add function to find predicates used by a Prolog programTimotej Lazar
2015-12-11Rename a functionTimotej Lazar
2015-12-11Use a more general method for extracting editsTimotej Lazar
This is a large overhaul of monkey code. Before, only edits within individual lines were tracked, which required a Prolog-specific method for splitting a program into a list of lines for every rule. In this version, modifications can be tracked within arbitrary code ranges. Ranges to be tracked are determined by selecting "interesting" subtrees in the AST of the starting code version. The new method is simpler, less language-dependent and easier to extend. The downside is that a program must be syntactically correct before we can attempt to fix it (the previous approach could handle programs with syntax errors in some cases). This commit also integrates a call to monkey.fix in prolog_session.hint, by running it if no other hint is found.
2015-12-10Support Tree objects in python.util.stringifyTimotej Lazar
2015-12-10Disable debug info when generating Prolog parserTimotej Lazar
2015-12-10Sort token list for Prolog parserTimotej Lazar
Ensures the cached version of parsetab.py is used.
2015-12-10Fix a parser bugTimotej Lazar
2015-12-10Add prolog.util.parse methodTimotej Lazar
2015-12-10Use the NLTK ParentedTree class for parser outputTimotej Lazar
2015-12-10Add copyright infoTimotej Lazar
2015-11-30Limit the number of inferences for Prolog queriesTimotej Lazar
2015-11-27Fix: response on /pengine/destroy_all is just "ok"Timotej Lazar
2015-11-18Disable predicate autoloading in Prolog engineTimotej Lazar
So that for example append/3 and member/2 are not accessible to users when solving conc/3 and memb/2.
2015-11-18Fix test code in prolog.engineTimotej Lazar
2015-11-04Fix prolog.engine.check_answersTimotej Lazar
Variables not specified in the set of expected answers are now ignored.
2015-10-05Add the prolog runner to be used for daemonisation in init scripts.Aleš Smodiš
2015-09-17Replace prolog.engine.ask_all with check_answersTimotej Lazar
When testing a program we can stop searching for new solutions after we have received a wrong one.
2015-09-10Update prolog engine (sasha's aux functions for prolog hint testing added).Aleksander Sadikov
2015-08-30Replaced localhost with 127.0.0.1Aleksander Sadikov
Windows takes a while to resolve the above.
2015-08-28Fix regex for stripping internal Prolog engine IDsTimotej Lazar
2015-08-27Strip trailing periods from Prolog queriesTimotej Lazar
2015-08-27Replace prolog.engine.run with ask_allTimotej Lazar
Creating and destroying the pengine should be handled somewhere else. This commit also removes query functionality from prolog.engine.create.
2015-08-27Fix a typo and add a commentTimotej Lazar
2015-08-26Use /destroy_all to abort and destroy penginesTimotej Lazar
Poorly documented, but works better than abort & destroy.
2015-08-21Add a hashbang line to the Prolog server scriptTimotej Lazar
2015-08-20Add a Prolog pengine server for running queriesTimotej Lazar
Run with "swipl main.pl".
2015-08-20Add prolog.engine.runTimotej Lazar
Collects all the answers to a given query within the specified timeout.
2015-08-20Simplify and privatize prolog.engine.get_messageTimotej Lazar
2015-08-20Add a timeout option for prolog.engine requestsTimotej Lazar
2015-08-20Replace strip_html function in prolog.engineTimotej Lazar
2015-08-11Print 'true' on success with no bindingsTimotej Lazar
2015-08-11Disable parser generationTimotej Lazar
The parser is currently unused.
2015-08-11Improve error & warning reportingTimotej Lazar
Hope it does not break anything.
2015-08-11Use json-html format for Prolog repliesTimotej Lazar
The only way to get residuals in CLP queries.
2015-08-11Merge prolog.engine.create{,_and_ask} functionsTimotej Lazar
2015-08-11Remove app-specific code from prolog.engineTimotej Lazar
2015-08-11Specify timeout when generating test casesTimotej Lazar
2015-08-11Silence warnings from ply.lex.lex()Timotej Lazar
2015-08-11Use Node class from monkey.util in parserTimotej Lazar
Also simplify rules for list expressions.
2015-08-11Add a parser for (simplified) PrologTimotej Lazar
2015-08-11Always lex , as COMMA, never as NAMETimotej Lazar
Also a testing loop to prolog.lexer.
2015-08-11Remove unused function from prolog.utilTimotej Lazar
2015-08-11Print a random failing test for incorrect solutionTimotej Lazar
2015-08-11prolog.engine: use .get() to access replyTimotej Lazar
In case SWI engine goes insane and returns a malformed reply (has happened). Also fix the test case in this file to use the new, classless methods.
2015-08-11Annotate tokens instead of splitting programTimotej Lazar
Instead of splitting the program by line numbers, do limited parsing (enough to distinguish , in "memb(X,Y)" from , in "a :- b, c."). Each token in the parsed program is annotated with rule and part number. Rewrite monkey.fix.step to take program as a sequence of annotated tokens instead of lists of lines and rules. Improve message passing to website.
2015-08-11Simplify calls to prolog.util.map_varsTimotej Lazar
2015-08-11Move normalize to prolog.utilTimotej Lazar
2015-08-11Clean up prolog.util.decomposeTimotej Lazar
2015-08-11Remove all trailing punctuation from linesTimotej Lazar
Remove trailing sequences of COMMAs and PERIODs when extracting edits from a trace. This is because subgoal order is rarely important in Prolog, and we don't care if the edit happened on the last line or not. This means that we treat for example "conc(A,B)," → "conc(A,B,C)." the same as "conc(A,B)" → "conc(A,B,C)".