This project was done as partial fulfillment of the requirements of the 2360651 Technion course on advanced topics in software engineering, in the spring semester of the academic year 2024/25, under the supervision of Yossi GIl
A prolog interpreter in mathematica for final project in advanced topics in software engineering (02360651) under the guildance of Prof Y.Gil
- interpreter ⚙️
- Holds the interpreter code.
⁉️ - Holds the system design. 💻
- Holds the interpreter code.
- parts🎓
- Holds each interpreter part individualy.
▶️
- Holds each interpreter part individualy.
- system_tests 🧪
- Holds checked tests for the interpreter. 🙂
- demonstraition 🎭
- Holds a demonstration of the unification process. 🧨
The interpreter pakacge holds 2 functions:
- this function is the actual interpreter. Calling her will interpret the code in in.pl, and give the output in out.pl. Any errors will appear in the notebook.
- this function set the depth of the recursion in the interpreter. Needed since:
- Infinite loops are possible.
- Mathematica has a recursion limit.
- Use the code from
cd interpreter/code && interpreter.wlin a wolfram notebook. 💡 - This code is a package ready to use.💻
- Write your code in a file called in.pl in the same folder as the notebook. ✍️
- Create a new file named out.pl in the same folder as your notebook. 🤔
- Run the function interpret[] from the package. 🏃♂️
- The results will be in the file out.pl. 😄
- Test that checks that we take care of facts as needed.
- Test to check recursive rule. Specifically, length of a list.
- Test to check some basic list operations.
- Test to check some operations on piano numbers.
- Test to check some complex combinations.
- Test to check some tree predicates.
- test to check behaviour with infinite solutions.