{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Implementing a toy language : interpreter and compiler\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to decompose the interpreter and compiler building process as much as\n", "possible, we will decompose our task into a number of \"languages\" with increasing capabilities :\n", "1. **const** : only one numerical constant (of integral type).\n", "2. **addsub** : additions and subtraction.\n", "3. **addmult** : additions, subtractions, multiplications and division, with priorities\n", "4. **arith** : same as *addmult*, with parenthesis.\n", "5. **lang0** : any number of expressions that can be either arithmetic expressions for the *arith* language or assignment of the result of such an expression into a variable. Expressions can also use variables. The code returns the value of the last expression.\n", "6. **lang1** : same as *lang0* with arguments written as `%0`, `%1`,…\n", "\n", "For each of these languages we will provide two execution models :\n", "1. *interpretation* : the code is turned into a function that evaluates the AST when called.\n", "2. *compilation* : the code is turned into a function that calls a static method from a dynamically compiled class.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First getting the dependencies from maven (might take some time, so one has to wait until the final output before going further)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "init_cell": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "null" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%classpath add mvn rhizome rhizome 0.2.9\n", "%classpath add mvn instaparse instaparse 1.4.9\n", "\n", ";; with leiningen one would have a project.clj with\n", ";;\n", ";;(defproject languages \"0.1.0-SNAPSHOT\"\n", ";; :description \"FIXME: write description\"\n", ";; :url \"http://example.com/FIXME\"\n", ";; :license {:name \"Eclipse Public License\"\n", ";; :url \"http://www.eclipse.org/legal/epl-v10.html\"}\n", ";; :dependencies [[org.clojure/clojure \"1.8.0\"]\n", ";; [instaparse \"1.4.9\"]\n", ";; [rhizome \"0.2.9\"]])\n", "(use 'instaparse.core)\n", "(System/setProperty \"java.awt.headless\" \"true\");; required for the notebook\n", "(use 'rhizome.viz)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **Const** language\n", "\n", "If we only ever wanted to parse integers, of course we would just use `Integer.pasreInt()` or actually `Long.parseLong()`. However, as this is just a stepping stone to more interesting languages, we will use the same infrastructure of parsing and then interpreting or compiling.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parser\n", "When represented as a string of characters, integers are a string of one or more digits possibly prefixed by a minus sign for negative numbers.\n", "\n", "One could write the following parsing rule using only literal terminals :\n", "`number= '-'? ('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')+`\n", "\n", "Note that this will accept leading zeros while we could also want to forbid them.\n", "Parsing the string `\"-123\"` would give the following result :`[:number \"-\" \"1\" \"2\" \"3\"]`\n", "So it would be up to the AST processing step to collate those strings before turning them into a number.\n", "\n", "In order to speed both the parsing and the processing of our numbers, we can /tokenize/ them with a regular expression instead :\n", "`NUMBER= #'-?[0-9]+'`\n", "In Clojure, we can build the parser using the instaparse library :" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[:PROG [:NUMBER \"-123\"]]\n" ] }, { "data": { "text/plain": [ "null" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ ";;(use 'instaparse.core)\n", "(def const-parser\n", " (instaparse.core/parser\n", " \"PROG= NUMBER\n", " NUMBER= #'-?[0-9]+'\"))\n", " \n", "(prn (const-parser \"-123\"))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(instaparse.core/visualize (const-parser \"-256\") :output-file :buffered-image )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But this minimal parser fails to parse strings that we would want to consider valid :" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse error at line 1, column 1:\n", " -123456 \n", "^\n", "Expected:\n", "#\"-?[0-9]+\" (followed by end-of-string)\n", "\n" ] }, { "data": { "text/plain": [ "null" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(prn (const-parser \" -123456 \"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we want to handle spaces before and after the number, we have to modify the grammar accordingly. For efficiency reasons, we also handle the plurality of consecutive spaces at the lexing stage with a regular expression :" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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snewkGCX+w/USLovege7wwXPWbBgQabrEL7g+vwOv8fv9u7d2+6D++G+uD+8qRS/s90FyQOxnovn5bl5rvPPP9/Gg2sxPjTwZrxop6rCDZE1lKTGeQVpIBfqNh35IQUdE+kGQT8lCsYhLfYYW3QgjVAFvbhgfh3Yh4S/+H3ug/vhvrg/7pP7JaEA8qFxoJ5CQBYJnrOQq6kiq/A/5wtJIZRl+SUne9IEJScJABAPFTz4N873f5/rcd1EGpQJIquQZHzwwQdG1ljbSAoiqyCyCiKrILIKIqvIKoisgsgqiKyCyCqyCiKrILIKIqsgsgoiq8gqiKyCyCqIrILIKoisIqsgsgoiqyCyCiKryCqIrILIKoisgsgqiKwiqyCyCiKrILIKIqsgsoqsgsgqiKyCyCqIrCKrILIKIqsgsgoiqyCyiqyCyCqIrILIKoisgsgqsgoiqyCyCiKrILKKrBoMkVUQWQWRVcgx1q1bl2l380mTJhlZp06dmunz9evXa7BEVqHA3t6uXW6fffYxcmZ3lChRwv39998aNJFVKCjUrVvX7b333lkSlb83atRIgyWyCgWJUaNGuSJFimRJVv4+fvx4DZbIKhQkNm7c6IoWLZolWYsVK+Z++eUXDZbIKhQ0mjZtaoSMR9RWrVppkERWIQx46qmnspSs06dP1yCJrEIY8Ntvv7l99903rhd427ZtGiSRVQgLLr744j1UYf591VVXaXBEViFMeP7552NK1tdee02DI7IKYcKff/7p9t9//0xE5d98LoisQsjQuXNnV7x48QwV+Prrr9egiKxCGDFnzpxMknXhwoUaFJFVCCPI/T344IONqBUqVHC7d+/WoIisQkHZpZs3b97jIIvpq6++sqNTp05G1m7dumV8xt9jfU/2rMhaqEFMc8OGDe6zzz5z77//vqmmzzzzjHviiSfc0KFDXf/+/d1tt93mrr32WnfJJZe4Cy+80J177rnurLPOcjVr1nQnn3yyq1q1qjv88MNd2bJl3X777ZdQVU1eD36H36tUqZL9/imnnGL3w31xf23btrX75b5vv/12N2DAAHsenuvZZ5+156SWdvXq1fb827dv12QQWfMXf/zxh/viiy/cO++841544QU3btw4N3jwYHfrrbe6q6++2jVv3tyddtppNslJQMiKEHhnOe+EE05wZ555ppGgZcuWRoIOHTqY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RFahwN7erl1un332MXJmd5QoUcL9/fffGjSRVSgo1K1b1+29995ZEpW/N2rUSIMlsgoFiVGjRrkiRYpkSVb+Pn78eA2WyCoUJDZu3OiKFi2aJVmLFSvmfvnlFw2WyCoUNJo2bWqEjEfUVq1aaZBEViEMeOqpp7KUrNOnT9cgiaxCGPDbb7+5fffdN64XeNu2bRokkVUICy6++OI9VGH+fdVVV2lwRFYhTHj++edjStbXXntNgyOyCmHCn3/+6fbff/9MROXffC6IrELI0LlzZ1e8ePEMFfj666/XoIisQhgxZ86cTJJ14cKFGhSRVQgjyP09+OCDjagVKlRwu3fv1qCIrEJBg3DN5s2bMw4ymb766ivXqVMnI2u3bt3s33zuP+/333/X4ImsQqLYsmWL++KLL9y7777rXnnlFTdx4kT373//2/Xp08d16dLFXXLJJe788893Z511lqtZs6Y75phj3OGHH+7Kli2bUIVNogfX47rVqlWz32ncuLH9Lr/ftWtXd/fdd9t9kXTx6quv2v2uWbPG/frrr3qJImt6SLzly5e7l19+2ZLsmfDt27c3IkA6khRiEQfPLX8/88wz3bnnnmuE6dChg+vevbu766673MCBA90jjzzixo4d6/7zn/+4Z555JtPxxhtvmM3KAbG8/589e/Ye5z755JN2Ha5333332fX5He6TeC2/f8YZZ7ijjz56Dw+zP9kCkjdp0sTus2/fvm706NG2+FD4LgkusoYChENWrFjhnnvuOTdkyBB37bXXWgnaYYcdlmlCU2tapUoV16BBA0tO6NWrlxsxYoSbOXOme/vtt+0aGzZssLrUsD8v9/nJJ5+4+fPnG+EfffRR17NnT3fFFVfY81WuXHmP2tqKFSvaIoWUfvjhhy0WvHLlytA/r8gaUfz8888mof71r3+Z5Dn11FMzwiOeKlm7dm135ZVXugEDBliHhvfff98m9z///FOoxorn5bnfe+89N2XKFNe/f38jc61atdwBBxyQaRGrUaOG69ixoxs6dKibO3eu27RpkyabyJo4du7c6ZYsWWJ2Wrt27cye8yZY6dKlrdD7uuuuc2PGjHHvvPOOEVlIHD/99JNbtGiRqcuo3ajapUqVyhjjI444wtRwCIx9LAkssmaABHfsuzvvvNPVr18/w55kAqG+YW8+++yz5gxSGCQ1YFw///xzN2PG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" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-parser\n", " (instaparse.core/parser\n", " \"prog= spaces number spaces\n", " number=#'-?[0-9]+'\n", " <spaces> = <#'[ ]'*>\"))\n", " \n", "(instaparse.core/visualize (const-parser \" -123456 \") :output-file :buffered-image )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercice : What if we remove the angle brackets in the grammar rules ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **const** interpreter\n", "\n", "The simplest interpreter would be something like :" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-interpreter" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ " (defn const-interpreter [ast]\n", " (instaparse.core/transform {:number #(Long/parseLong %)} ast))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[:prog -123]\n" ] }, { "data": { "text/plain": [ "null" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ " (prn (-> \"-123\" const-parser const-interpreter))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, as we will want reuse code between the various languages, we will\n", "separate the language specific transform map and a generic function to turn an\n", "AST into a clojure function.\n", "\n", "The generic function taking a transform map and returning the function turning an\n", "AST into a clojure function : " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/dynamic-eval" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn dynamic-eval [interpreter]\n", " (fn[ast]\n", " (fn[]\n", " (instaparse.core/transform interpreter ast))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use this function for our **const** language to create a `const-eval`\n", "function that will turn an AST into a clojure function:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-eval" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-interpreting\n", " {:prog identity\n", " :number #(Long/parseLong %)})\n", "(def const-eval (dynamic-eval const-interpreting))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function can be called on the result of parsing a string :" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-eval-test" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-eval-test (-> \"-123 \" const-parser const-eval))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result can then be called like any other clojure function :" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-123" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(const-eval-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## const compiler\n", "The compiler will be implemented in two steps :\n", "- turning the AST into a sequence of vectors. Each vector representing a\n", " bytecode instruction and the parameters, if any, of the instruction.\n", "- generating a class with a static method implementing the bytecodes sequence\n", " , dynamically loading this class and returning a clojure function calling the static method of the generated\n", " class.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generating the instructions sequence\n", "As we will be processing an AST, we can do this with a transform map :" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-compiling" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-compiling\n", " {:prog (fn[& instrs](conj (reduce into [[:loadi 0]] instrs)[:reti]))\n", " :number #(vector [:loadi (Long/parseLong %)])})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first `[:loadi 0]` will be useful when we allow empty programs : we will\n", "then always have a 0 on the stack, to return if nothing has been put on the\n", "stack by the program." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[:loadi 0] [:loadi -123] [:reti]]\n" ] }, { "data": { "text/plain": [ "null" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(prn (->> \"-123\" const-parser (instaparse.core/transform const-compiling)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The actual bytecode will be generated by reducing a function over our sequence\n", "of bytecode instructions, calling the relevant method from a [MethodVisitor](http://asm.ow2.org/asm50/javadoc/user/org/objectweb/asm/MethodVisitor.html)\n", "object. The simplest way to implement it is the following :" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "class clojure.asm.commons.GeneratorAdapter" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ " (import '(clojure.asm Opcodes Type ClassWriter))\n", " (import '(clojure.asm.commons Method GeneratorAdapter))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-instr-generating" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn const-instr-generating [mv instr]\n", " \"Generate the method call to an org.objectweb.asm.MethodVisitor for a given instruction.\"\n", " (do\n", " (condp = (first instr)\n", " :loadi (.visitLdcInsn mv (int (second instr)))\n", " :reti (.visitInsn mv Opcodes/IRETURN)\n", " )\n", " mv))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A `compiled` function will take care of creating class with a given class name,\n", "generating the bytecode in a static method called `run` and returning a clojure\n", "function calling the static method. We will be forward thinking by taking a\n", "number of arguments as a parameter, even if this argument will be 0 for all of\n", "our languages until **lang1**. The `bytecode-generator` will be a function calling\n", "the reducing function over the sequence of bytecode instructions, taking the\n", "`MethodVisitor` as argument :\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/compiled" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn compiled [n-args class-name bytecode-generator]\n", " (let [cw (ClassWriter. (+ ClassWriter/COMPUTE_FRAMES ClassWriter/COMPUTE_MAXS ))\n", " init (Method/getMethod \"void <init>()\")\n", " meth-name \"run\"\n", " meth-sig (str \"(\" (apply str (repeat n-args \"I\")) \")I\")]\n", " (.visit cw Opcodes/V1_6 Opcodes/ACC_PUBLIC (.replace class-name \\. \\/) nil \"java/lang/Object\" nil)\n", " (doto (GeneratorAdapter. Opcodes/ACC_PUBLIC init nil nil cw)\n", " (.visitCode)\n", " (.loadThis)\n", " (.invokeConstructor (Type/getType Object) init)\n", " (.returnValue)\n", " (.endMethod))\n", " (doto (.visitMethod cw (+ Opcodes/ACC_PUBLIC Opcodes/ACC_STATIC) meth-name meth-sig nil nil )\n", " (.visitCode)\n", " (bytecode-generator)\n", " (.visitMaxs 0 0 )\n", " (.visitEnd))\n", " (.visitEnd cw)\n", " (let [b (.toByteArray cw)\n", " cl (clojure.lang.DynamicClassLoader.)]\n", " (.defineClass cl class-name b nil))\n", " (fn [& args] (clojure.lang.Reflector/invokeStaticMethod class-name meth-name (into-array args))))\n", " )\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It can be used in a `bytecode-generating-eval` function to create a compiler\n", "that will take an ast as argument and return the function created with `compiled` :" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/bytecode-generating-eval" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn bytecode-generating-eval [n-args class-name compiling instr-generating]\n", " (fn[ast]\n", " (let[instrs (instaparse.core/transform compiling ast)\n", " generate-prog (fn[mv] (reduce instr-generating mv instrs))]\n", " (compiled n-args class-name generate-prog))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using this function for our **const** language would be :" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-compiler" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-compiler (bytecode-generating-eval 0 \"ConstCompiler\" const-compiling const-instr-generating))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Such a compiler can then be used like :" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/const-compiler-test" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-compiler-test (-> \"-123\" const-parser const-compiler ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the resulting function is a normal clojure function :" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-123" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(const-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Improving the instructions generating reducing function\n", "The `const-instr-generating` function defined above works perfectly fine. In\n", "order to define other languages, we could just replace it with new functions\n", "adding cases to the `condp` expression. However, it can also be rewritten to be\n", "_extended_ rather than replaced, by using dynamic dispatching on the instruction\n", "type. This can easily be done in clojure with a *multimethod*. A dispatching\n", "implementation could use a `generate-instr` multimethod :\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/dispatching-bytecode-generating-eval" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defmulti generate-instr (fn [mv [instr & args]] instr))\n", "(defn dispatching-bytecode-generating-eval [n-args class-name compiling]\n", " (fn[ast]\n", " (let[instrs (instaparse.core/transform compiling ast)\n", " generate-prog (fn[mv] (reduce generate-instr mv instrs))]\n", " (compiled n-args class-name generate-prog))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `generate-instr` multimethod is defined as dispatching according to the\n", "value of the first element of the vector argument (which will be the keyword\n", "indicating the kind of bytecode instruction).\n", "For our **const** language, we only need two implementation mirroring the two\n", "cases of the `condp` in `const-instr-generating` :" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "clojure.lang.MultiFn@6b366a13" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defmethod generate-instr :loadi [mv [instr & args]]\n", " (doto mv\n", " (.visitLdcInsn (int (first args)))))\n", "\n", "(defmethod generate-instr :reti [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/IRETURN)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The new implementation is called exactly in the same way :" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-123" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def const-compiler (dispatching-bytecode-generating-eval 0 \"ConstCompiler\" const-compiling))\n", "(def const-compiler-test (-> \"-123\" const-parser const-compiler))\n", "(const-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# AddSub language\n", "\n", "## Parser\n", "\n", "We define an `add-sub` rule with the foresight that it will be useful to\n", "represent operations of a given priority for the parsing step. However, we do\n", "not need such a node in our AST so we use angle brackets \"<>\" to remove them for\n", "the resulting AST :" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addsub-parser" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-parser\n", " (instaparse.core/parser\n", " \"prog= spaces add-sub spaces\n", " <add-sub>= number | add | sub\n", " add= add-sub spaces <'+'> spaces number\n", " sub= add-sub spaces <'-'> spaces number\n", " number= #'-?[0-9]+'\n", " <spaces>= <#'\\\\s*'>\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parser can be used on a sample string :" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(-> \"1+2-3-1\" addsub-parser (instaparse.core/visualize :output-file :buffered-image ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpreter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can define our interpreting transform map by adding the functions to process\n", "the new `:add` and `:sub` nodes in the AST :" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addsub-interpreting" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-interpreting\n", " (assoc const-interpreting :add + :sub -))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then reuse our previous functions :" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-eval (dynamic-eval addsub-interpreting))\n", "(def addsub-eval-test (-> \"1+2-3-1\" addsub-parser addsub-eval))\n", "(addsub-eval-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compiler\n", "\n", "The bytecode sequence for a binary operation is the concatenation of the\n", "bytecode sequence for the first operand, the bytecode sequence for the second\n", "operand, and the specific bytecode for the given operation. We define a function\n", "`assoc-binary-op` to add such function to a transform map turning an AST into a\n", "sequence of bytecode instructions. The `op` argument is the AST node and the\n", "`instr` argument is the keyword representing bytecode instruction :\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/assoc-binary-op" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn assoc-binary-op [m [op instr]]\n", " (let[binary-op-compiling (fn[op]\n", " (fn[instrs-v0 instrs-v1]\n", " (conj (into instrs-v0 instrs-v1) [op])))]\n", " (assoc m op (binary-op-compiling instr))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it to create our `addsub` transform map :" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addsub-compiling" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-compiling\n", " (reduce assoc-binary-op const-compiling [[:add :addi][:sub :subi]]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can test it :" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[:loadi 0] [:loadi 1] [:loadi 2] [:addi] [:loadi 3] [:subi] [:loadi 1] [:subi] [:reti]]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(str (->> \"1+2-3-1\" addsub-parser (instaparse.core/transform addsub-compiling)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We just have to add the multimethod definitions for the new instructions :" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "clojure.lang.MultiFn@6b366a13" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defmethod generate-instr :addi [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/IADD)))\n", "\n", "(defmethod generate-instr :subi [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/ISUB)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **addsub** compiler can then be created reusing our previous functions :" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addsub-compiler" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-compiler (dispatching-bytecode-generating-eval 0 \"AddsubCompiler\" addsub-compiling))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it as usual :" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addsub-compiler-test (-> \"1+ 2 - 3 - 1\" addsub-parser addsub-compiler))\n", "(addsub-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Addmult language\n", "## Parser\n", "As we define a top down parser, we first try to match the lowest priority expressions :" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addmult-parser" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-parser\n", " (instaparse.core/parser\n", " \"prog= spaces add-sub spaces\n", " <add-sub>= mult-div | add | sub\n", " add= add-sub spaces <'+'> spaces mult-div\n", " sub= add-sub spaces <'-'> spaces mult-div\n", " <mult-div>= number | mult | div\n", " mult= mult-div spaces <'*'> spaces number\n", " div= mult-div spaces <'/'> spaces number\n", " number= #'-?[0-9]+'\n", " <spaces>= <#'\\\\s*'>\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use this parser on a sample program :" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(-> \"1 + 3 * -2 -1\" addmult-parser (instaparse.core/visualize :output-file :buffered-image ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpreter\n", "We can add the new AST node types to the transform map :" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addmult-interpreting" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-interpreting (assoc addsub-interpreting :mult * :div /))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And reuse our previous functions :" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addmult-eval" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-eval (dynamic-eval addmult-interpreting ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The interpreter can be used as usual :" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-6" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-eval-test (-> \"1 + 3 * -2 -1\" addmult-parser addmult-eval))\n", "(addmult-eval-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compiler\n", "We can easily add the two new binary operations :" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "clojure.lang.MultiFn@6b366a13" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-compiling\n", " (reduce assoc-binary-op addsub-compiling [[:mult :multi][:div :divi]]))\n", "\n", "(defmethod generate-instr :multi [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/IMUL)))\n", "\n", "(defmethod generate-instr :divi [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/IDIV)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then reuse the previous functions :" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/addmult-compiler" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-compiler (dispatching-bytecode-generating-eval 0 \"AddmultCompiler\" addmult-compiling))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This compiler can be used as usual :" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-6" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def addmult-compiler-test (-> \"1 + 3 * -2 - 1\" addmult-parser addmult-compiler))\n", "(addmult-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Arith language\n", "## Parser\n", "We can update our grammar to allow grouping by matching parentheses. This is done by introducing a high priority `factor` that can be either a `number` or an expresssion (lowest level : `add-sub`) between parentheses :" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/arith-parser" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def arith-parser\n", " (instaparse.core/parser\n", " \"prog = spaces add-sub spaces\n", " <add-sub> = mult-div | add | sub\n", " add = add-sub spaces <'+'> spaces mult-div\n", " sub = add-sub spaces <'-'> spaces mult-div\n", " <mult-div> = term | mult | div\n", " mult = mult-div spaces <'*'> spaces term\n", " div = mult-div spaces <'/'> spaces term\n", " <term> = number | <'('> add-sub <')'>\n", " <spaces> = <#'\\\\s'*>\n", " number = #'-?[0-9]+'\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use this grammar on a sample program :" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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06ePFS1a1INb7ty5fX++JUuWMDggxAEAAFyOAwcO2LBhw7wqp3buCnVaP6eKyfLly31DcSC2VFXTVElVfAsUKODBLUuWLNauXTubOnUqazJBiAMAAIhLf/zxh3344Ye+VklTLnUBni9fPnvooYe8Srdz504GCRGcPn3aq2r9+/e3evXqeXMSvW60OXe3bt3sm2++8ccAhDgAAIAEuDifN2+e9ejRw2644Qa/MNdRsGBBa9OmjX3wwQe2du3aoN1UHPFD021nzJjhm6LXqVPH0qVL568LhX5NydXrYtu2bQwUCHEAAACJTc1PJk2aZN27d7dq1aqFVVyyZs1qDRs2tJ49e9rYsWPt999/ZwpmEnH06FFbsGCBNx/RJvJly5b1hjiBtW3Nmzf39/3888929uxZBgyEOAAAgGCmtU/ff/+9b1dw1113eYUuUK3LmDGj1a5d25544gn7+OOPbenSpd5MBcHp3LlztnnzZps+fbpPi2zZsqUVK1bM10jq56lqW9WqVe2RRx6xzz77zDZt2sSggRAHAACQFKhJippavPHGG3bfffdZiRIlwio3OnLlymV169a1zp072zvvvGOzZ8+2rVu30uwigRw6dMib1YwePdo7RrZo0cKra+pOGvgZZcqUyadJPvnkk745/Jo1a6iygRAHAACQnJw8edJWrlzpUy1ffPFFD3cVKlQIW0ulQx0x1clQ4aF9+/b2wgsv2CeffGLfffedbdmyxT8HLm7//v32yy+/+LRXhWRVQrVOrXz58pY5c+aw8daRP39+u+WWW+zRRx+1wYMHe/imcQ0IcQAAAIiRGqKoAYa6F2rPOjXKUMMUbXWgjpiBqXyBQ23q1fHw5ptvttatW3ul6M033/Rq0axZs3xdlqYEHjx4MMmsyTtx4oTt3r3bN8leuHChhzMFLoXcjh072h133OHTHBXIUqdOHWG8rrnmGitdurTdfvvtHtQ0VuPGjfNx0lo3AIQ4AACAOHXq1ClvkqIK0ahRo2zAgAH21FNPedBTK3sFlGzZskUILpFDX+HCha1ixYq+qXmzZs3swQcftE6dOnkTlueff97Xf73//vu+T95XX33lIUlfL3AsXrzYpx+GP9avX+/VwcChKmPkx6iCGPgcmjKq8KSwqa+j7+O1117z56BKmZ5Pq1atPGzVqFHDg6qahqRNmzba70thTaFN4U0hTmFOoU7hTs//xx9/tL179/ICAghxAAAAwRv2duzY4WFK4WnixIk2YsQID0u9e/e2Ll26+BTOW2+91at82shcTTvUiEWdNcNP60yIQ19TawOLFCni69H0fDStUXvzPfDAAx5UX375ZQ+XX3zxhbfzV2OYDRs2+HRJAIQ4AAAA2P+109dUzPBVNh0rVqyIUml77LHHvBmIpjhGft+6desifPyuXbu8oQjNWwBCHAAAABLJe++95xU8AIQ4AAAAEOIAEOIAAABAiANAiAMAACDEASDEAQAAgBAHgBAHAAAAQhwAQhwAAAAhDgAhDgAAAIQ4AIQ4AAAAEOIAEOIAAAAIcQAIcQAAACDEASDEAQAAgBAHgBAHAABAiANAiAMAAAAhDgAhDgAAAIQ4AIQ4AAAAQhwAQhwAAAAIcQAIcQAAACDEASDEAQAAEOIAEOIAAABAiANAiAMAAAAhDgAhDgAAgBAHgBAHAAAAQhwAQhwAAAAIcQAIcQAAAIQ4AIQ4AAAAEOIAEOIAAABAiANAiAMAACDEASDEAQAAgBAHgBAHAAAAQhwAQhwAAAAhDgAhDgAAAIQ4AIQ4AAAAEOIAEOIAAACSjHXr1tny5cvDjqefftrSpEkT4W06Dh48yGABhDgAAAAkpmXLltl//vOfWB116tRhwABCHAAAABLT8ePH7ZprrrlogEuRIoX17t2bAQMIcQAAAEhsbdq0sauvvvqiQW7t2rUMFkCIAwAAQGKbMWPGBcPbVVddZaVKlWKgAEIcAAAAgsHZs2ctW7ZsMYa4lClT2uuvv85AAYQ4AAAABIsuXbrEOKVSlbitW7cySAAhDgAAAMFiwYIFMTY0uemmmxgggBAHAACAYHL+/HnLly9ftCFu8ODBDBBAiAMAAECweeaZZ6JMqdR6uD179jA4ACEOAAAAQXeFt3JllADXoEEDBgYgxAEAACBYlShRwhuZBBqafPbZZwwKQIgDAABAsOrXr59X4BTiUqdObUeOHGFQAEIcAAAAgtXmzZu9Aqfj7rvvZkAAQhwAAACCwfHjx+3QoUMRjh07dtiWLVusTJkyXon74IMP/N/79u2L8th///2XQQQIcQAAALgQBaf9+/fbxo0bbenSpTZ9+nQbNWqUDRo0yF544QX73//+Z61bt7Z77rnHG5JUr17dKlasaEWKFLE8efJY1qxZo90L7kqOtGnT+uctXLiwlSxZ0ipXrmz16tWz2267zVq0aGEdOnSwHj162GuvvWZDhw618ePH23fffWerVq3y0PjPP//wgwUIcQAAAKFHYWbt2rU2c+ZM+/TTT+3ll1+2Rx991Jo2bWpVqlSxvHnzhq1Vi3ykT5/eChQoYBUqVLD69etbkyZNPEB17NjRg13Pnj3tlVdesYEDB9qwYcPs448/tnHjxkU4Jk+ebHPnzg07FBAD/z9nzpwojx8zZox/Lu0h179/f+vTp489/fTT1qlTJ2vXrp1/fQXJGjVqeLjLmTPnBZ+/HlO3bl1r27atfx4FU32dRYsWedij8gcQ4gAAABLc3r17beHChTZy5EivnCmwKOTkypUrQqjRerTcuXN7KFMgUxh78cUXbfjw4TZp0iRbsGCB/frrr/bnn3/aqVOnQmoM1ChFUzR/+uknmz17tofBd955x7p16+ZVxNq1a1uxYsUsXbp0EcYkTZo0HvQaN27swVQfM2XKFB+H06dP8+ICCHEAAACX7+DBg/bDDz/Yhx9+6NU0VZiyZ88eIZSoslarVi1r3769vfTSS/b555+HVZ0IJf/n8OHDHtJmzJhh77//vj355JNemdSavfAhTxuUK+A1b97c+vbt61M2169fb2fPnmUQAUIcAABA1MCmipKmP95xxx0ezgLhIlWqVB44WrZs6a37J06c6KHkxIkTDFwcUCVSVUlN6+zatavdcsstPm0zMP7aIkFrAjt37mwjRoywNWvW2Llz5xg4EOIAAACSC63LWrlypa/X0tS/okWLhgWGbNmy2a233mrPPfecjR071te3nTlzhkFLBGr+ouYpWq+nxiply5YNW4+n9Xeastm9e3cP1QcOHGDAQIgDAABISlQ501Q+dXwMTInUVL6aNWv69D6t6dq0aRMDFeTUOEZVOzV3UWVU3TT1s0yRIoWvPXzqqads6tSpbG4OQhwAAEAoXuyrQnP//feHNRxRU42bb77Zm4soCLBmLWnYtWuXb9Hw4IMPWqFChfxnrYrdTTfd5N08Nf0SIMQBAAAEob/++ss++ugju/32233fM13Mawres88+6y32WcOWPGzdutW3X7j33nstU6ZM/jrQHnuq0n3//fc0SgEhDgAAIDGdPHnS9yFTC391N1QFRlMktefZhg0bGKBkTg1QtB2EGqZcd911YesetQ/eihUrGCAQ4gAA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bUg8++rKK6+0odw1atRwJ554YpYOEvYxz6latartbfYBhif7okePHrZHBg0aZNcA9g/GqbdXQ/cZTXf49/nnn892ry5YsOCofTpnzpy0133ggQfsb91+++1u4MCBdgxcfzimtm3b2jFyrBwzTqDsrkVlypRxZ555pmvZsqVdf2699VY3ZswYWzPW7r333nMHDhzQCSUiBofaunXrzGHJPmGvhe4z5ndyzl144YWWdcEeYu888cQTaef8smXL3EsvvWSPl19+Oe37nJc8l9/hd3kNXr9QoULpOhfz+jgzJk2aZNcBRbOFEBJxKQwi4pNPPnGvvfaaeeERHRhICCwiYxl5CrkZ4RGnCBvj7tprrzUhhPeb9CluQGvWrLFo3Oeff55StVt//vmnpbgQgcPQY90wUqn9IdKIwdylSxfXvHlz6x6JQRnaNtpLhSSKhkcVUZtZpI3IA58BUcGePXtaNJCbM15djIUvvvhC2zVAsI8+/PBDExmPPfaYdX5EgDRt2tTOI69raeijePHirlq1atYkAcHTu3dvNzd0YQEAADIySURBVGzYMPt9zxHy7rvvuu3bt1t6cip584mCfPnll/be2C+8V94ze4g1YC1woDRq1MjEH1H5jDrBnnrqqe68885zV199ta05onLp0qX2WWisR7DBifbII49YZMxz8uEkwFF5/fXXmwNv1apV5lyJF9xjiTZzXnIvPuuss+wYvAh2u3bt3KOPPqqh4UIIibhkBG/czp07zbPHxbxv374m0kjn8C723gPRUbt2bde+fXtLI8QDjkecKBKvIaMlemhYgjGJ0YenderUqTaUG48qQg+xFv45YFCS2okgxOAkJRVDlKioSF2o2STqTWSKKBpGGSIN0R8eTSL6TaSYVFwiyRiTdIfEuUBKs9Krooc1Y+2IYuAswTFF9KNTp06WvklEPjyKWa5cORN5OL+I5uHUwYGFiBSpB58t12+cI57Q5/Mng+Ttt9/2xefOMeBIJbWYzBDGfXCsZJXgqP3444/1QQohJOL8Bg09Fi9e7EaOHOk6duxokRzvAu7NbuLmg+dwwIAB5r179dVXLRonoyOxEAnZsGGDmzdvnkX1SMkhSlCqVKmj0jYxGhDZU6ZMMXGnTpXJBalXiPrZs2dbWiJpyRUqVEiXVksHUjz67GMi3aQy40xBZChNKnGw9nv37nWrV6+2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Hv78+fO77777TosihA+pX7++7VUejRs31oIIIYQQQiIuqOzYscO8+jzat2+vBRHCp0yYMMEaD7FXJ0+erAURQgghhERcEPn222/dN99848444wyLxE2dOtW+/vXXX7U4QviE33//3fblxx9/bFE4mhHRlZLv8TMhhBBCCIm4FGL//v1uxYoVbty4ca5nz56udevWJthKlCiRacty71GgQAF38sknu3PPPdddcskl7vbbb3czZ850GzZscIcPH9biChEj/vjjD/fJJ5+4BQsWuHvvvdd16dLFNWnSxFWtWtUdd9xx2e7V448/3p7btGlTd+WVV7oRI0a4559/3qLsf/75pxZYCCGEEBJxfgbv/GOPPeY6d+6cbgZcoUKFXO3atV2HDh3czTff7EaNGmUNTObOnWvGHkJv8eLFbtmyZfa9OXPmuEceecSGDHfr1s21aNHCVahQIe31/vrXv1p9zm233eaWLFnifvrpJy2+EFGItjVr1tg+xLFSuHDhtL11wgknuEaNGpmQ69+/vzlgcJ6wL9mjL730kj0WLVpk3+NnPOfWW2+132nYsKH7+9//nvZ6RYoUcRdeeKEbPXq0e/vttyXqhBBCCCER5wfee+89N2TIEFetWjUz2ki1qlevns2Ai7U3/ocffnBr1651EydOdJ06dXJlypSxv1mwYEHXrl0799RTT1mKlxAiPUeOHHFLly511157bVokHIHVpk0bGx/wyiuvxHQ+44EDB8w5M3LkSNeqVas0oViqVCl33XXXmcPmt99+0wcjhBBCCIm4vOL777+3Jgc1atRI89736NHDvPN5HRXbvn27e/DBBy3tkqYLxx57rLv66qst0iBE0Nm5c6elIiOe2KtVqlSxr3GGEJHLK6idY0/i3Dn11FPtWEqXLm0OoN27d+uDEkIIISTiRLzAu37LLbdYDQwpjdSqvfzyy3lqDGYFNXikbXlG4llnneXmz5/v/v3vf+vDE4Fi/fr17qKLLjLHRrFixVy/fv3c5s2bfXN8mzZtcn369HFFixa1Y6Qz7caNG/XBCSGEEBJxIlZ8/fXXZgSStohBeNddd5lg8iukbyIumzdvbmKOiOHChQv1QYqU5/3333dt27a1MQA0G3niiSfcL7/84tvj/fnnn92UKVNc5cqV7Zgvvvhi9+GHH+qDFEIIISTiRG7EEAYWjQoQb/fcc0/SDeN+66230sQcTRzowidEqkGKM44WalIRb88880xSNREhmk9NK2KOKD9NVX788Ud9sEIIIYREnIgGamkaNGhg3nE6RB48eDCp38+LL77oKlasaDVzY8aMUYqlSBloEkKTH9Kc77///qRuGEIDFrpmMtqgXLly1nBFCCGEEBJxIgJmz57t/va3v7lKlSq5N998M2XeF2lljCWgBqdly5Yx7cYnRCIEz4ABA8zRQpR57969KfPePvvsM9uj7NU77rhDQ8WFEEIIiTiRGUSnSGMi9ZBZb6RopSK0PqczHtELaoiESDYYpcFMtvz587uxY8emZGSZ90SjItIrmzVrlnSp3EIIIYSQiIs7ePWZvXbMMcfYoO1UhygcA8iJOL766qs6AUTSQJTqH//4h817Y1RAqkM2QPHixa1B0eeff64TQAghhJCIE0CqEl3hqBdbsGBBYN43jRNIQytQoICEnEgK9u3b504++WR3yimn2IzEoPDRRx/Z+ybFm1EnQgghhJCICzSkLHXv3t3SsmiQEDRoAtGmTRtXuHBhm60lhF85dOiQq169uqtQoYKJuaBBBJJmJzVr1lRqpRBCCCERF2xGjhxpzQNoSR5UmFVVv359q5NTsxPhRxgXQF0YKZTbtm0L7Dps2bLFUiuJoKvDrBBCCCERF0jeeecdaxowdOjQwK/Fl19+6U488UTXqlUrGYfCd9B2n3rVlStXBn4tli9fbo4nGroIIYQQQiIuUBw+fNideuqpFoFS++70xuGECRO0GMI3bNq0yZwtQ4YM0WL8l4EDB1otK5E5IYQQQkjEBQaGAmMYBjk1KyOuu+46d8IJJ6jmRviG5s2bWzdKOVv+B910K1eu7C688EIthhBCCCERFwyYMVWsWDHXu3fvmL823eOaNGli/3/++edt5tyiRYuOet5XX33lpk6dak1FaKrC81566aWYvHZuoPPd8ccf726//XadKCLh0GwoHud5pPsJ4fjiiy+6yy67zJUvX972KhH82267zbq7JnKvzps3z1739ddf14kihBBCSMSlPuPGjbNUJOrAEiXiWrZsaT8LffhBxAECrmjRou6XX37RySISCjWapDzHg0j2k/f9jB50icxsj+TFXqV2tVatWu6iiy7SiSKEEEJIxKU+DM3t2LFjwgxDuPLKK12PHj3c4sWLXc+ePX0l4nbu3Bn4jp0i8ezdu9eamTzxxBMJ26vsz0suucQtWbLEjodOrqtXr7b0Tp4/fvz4hO7VSZMmuXz58rn9+/frhBFCCCEk4lKXzZs3m0EVr5lwOTHebrrpJl+JOGjatKnqbURCeeCBB9xxxx2XZdpiXu9VD/Yqz+/UqVNC9yq1q8cee6x7+OGHdcIIIYQQEnGpC50XqWuJV6pgqoi4ESNGWEol87mESASkCdLUJF7EQsRdf/31Cd+rjRs3tpo9IYQQQkjEpSykMdarV89XxxSpiMtLaJbAMRG5FCIRMNj7zjvv9NUx/fTTT+61115zVapUcX/5y1/cqlWrEn5M1LCWLVtWJ4wQQgghEZe60CSBWjSJuKw5ePCgHdPChQt10og854cffrDzb86cOb44nueeey5dUxM6VPI9P/D000/bMf366686cYQQQgiJuNSE2UqDBg2SiMuGP/74w5qbTJs2TSeNyHNorsOeePXVV30p4sqVK+fGjh3ri2PzUjv37dunE0cIIYSQiEtNSpcu7e69916JuAgoUqSIe/DBB3XSiDxn06ZNtifWrVvnq+MinfKdd96x0Qcc36hRoxJ+TGvWrLFj+fDDD3XiCCGEEBJxqYk3qFciLmtoaEIkjoHkQuQ1n376qe0J6s/8yJEjR1zhwoV9UYvmDURnBIIQQgghJOJSkrp169pcNom4rPnqq6/smOisJ0ReQ+t8zj+/1J1lJOIYf8CMtkQzc+ZMW6t4ddwVQgghhERcwrniiitco0aNJOKy4a233rJj2rBhg04akef8+9//dsWKFUt46nO3bt3cXXfd5davX2/Ckpl1pFO2adPG9kft2rUTvlZ08CxZsqROGiGEEEIiLnUZP368DcfFk55IMAxDGyWEP7Zu3ZrQ4xs9erQ7/vjj3e+//66TRiQEhBKPRHL++ednuke5jrzxxhsJX6dmzZq59u3b64QRQgghJOJSFzzqGGArV66UiMsCGjfEc9CyENnBwPm//e1vCW2d//nnn9txkIbN3LpChQq5qlWruuuuu87q9hLNzz//bM6W+++/XyeMEEIIIRGXupCmRXOT7t27azEygVblxxxzjJsyZYoWQyQMRBIDtWfPnq3FyITp06dbA6Ldu3drMYQQQgiJuNQGzzpNCahxEUczfPhw8+4zcFmIRNK4cWNLaRQZ07BhQ0XMhRBCCIm4YHDgwAETcXfccYcWI4xvvvnGFS9e3PXu3VuLIRLOvHnzfJH+7EdefvllW5sXX3xRiyGEEEJIxAUDOroVLFhQs5XCGDBggM2/+vLLL7UYIuGQ/lyvXj1Xp04d+7/4D8xxrFmzpu867QohhBBCIi6ukCpYpkwZa+Ah4/A/rF271v31r39NeFt3IUJZvXq11X2NHTtWi/FfRo4caWvCuAMhhBBCSMQFiuXLl8s4/C/Mv6pSpYo755xz3G+//aaTQ/iKgQMHugIFCmhu4f/Pu+++6/Lnz++GDh2qE0MIIYSQiAuucYhBtGzZssCuAaKtdevW1s59586dOimE72CuI4O1K1SoYG3/g8pnn33mypUr5xo0aKAZjkIIIYREXHD5448/XIcOHWz+E2lbQYNU0m7dupmQpVGCEH4F8YaIq169ujt06FDg3v9XX33lqlWr5k455RRrziSEEEIIibhA88svv1gr86JFiwaqCx6e/J49e1pK6dy5c3UiCN/zySefuFKlSrkzzjgjUE2J9u/fb41MGDi+bds2nQhCCCGERJyA77//3l1wwQVWdxMEQUNjlxYtWtj71TBlkUxs3rzZUgorVqzoPv7445R/vx9++KE76aSTLAq5detWnQBCCCGERJwIhcjUNddc4/7yl7+4m2++2epwUtUoJCUtaJFHkTqQWklkinEYM2fOTNn3OWPGDHf88ccHLvIohBBCSMSJqKBGbNy4cRaholNjKnn6mS01fvx4d+yxx7qzzz7bUtOESFaIJnfp0sUGXpMWTDQ9Vfj2229d165d7b1Rs/rTTz/pAxdCCCEk4kR2vPfee9ZyHzE3ePBg9/PPPyf1+1m3bp1196P+rV+/fu7w4cP6kEVK8OSTT1pE7sQTT3TPPPNMUr8XnEhPPfWU1f0VKVLEPf300/qAhRBCCIk4EQ2//vqrGzZsmCtYsKArX768mzJlStLNUNu+fbu7+uqrTbzVqlXLvf322/pgRcqxb98+d/nll1vkqlGjRu71119PuvewYsUKV79+fXsPnTt3tmYmQgghhJCIEznk008/dVdccYUJIZopTJ482feROZo/kI6VL18+V7ZsWTdx4kQbpyBEKoMQIuKMEGrSpImNzSCN2K9wbEuWLHHnnnuuHXPdunXda6+9pg9SCCGEkIgTsYKGIJ6YYzB279693QcffOCb42NUAulXnkFIB79HHnnEIopCBAVSEhctWmQ1reyDSpUqudGjR7svvvjCN8dIlG3kyJHmFOIY69Wr55YuXaoPTwghhJCIE/Fi9+7dbujQoVaDgwHGAN4hQ4ZYHR0GZF7y3XffuWeffdZdeuml7rjjjrPOms2bN3fz5s1LutRPIWLNmjVrLCJNSvQxxxzjmjZt6h5++GG3Z8+ehFw3HnroIUv3xBFUqFAh16NHD/fOO+/ogxJCCCEk4kRegUhavHixGWJ///vfTdCdcMIJrn379masYZz9+OOPMf2bu3btcgsXLnS33nqrpY1hmCLc6tSp4+677z5L/RRCpOebb75x06ZNcxdeeKE1K2KvVq5c2fYujUS2bNliI0ZieW0gck/TFbpLEg3kb9IZtm3btvZ9OlAKIYQQQkjEJRAMQJop3HXXXebtx/OP0YbAOuWUU8xw69Onj6VQYTQuW7bMvfnmm279+vVm7CG+iOTxNXU9CDVSIYn4YQTS8IBudbwmDwb/0rBk6tSpCYkqCJGsMIqASDWzIM8880yLirGn8ufP72rUqOE6duzo+vfvb6NGZs2aZfuRhkDszW3bttmD//M9fsZzxo4da44V0q2Z6cZr8Zo4Wc466yzXt29ft2DBAhuLIIQQQgghEedTaOGPKEOwDRo0yP3zn/80465EiRJpQiy7BxGDk08+2TVo0MAE25gxY6xuRkN/hYgdRMQYek/znxtvvNGdd955rmrVqpaeHOleZSA3v9OsWTPXq1cvN2nSJLdq1SpLdxZCCCGEkIhLEYH32Wef2bBtPPqkXRLF4/80SiEqd/DgQS2UEAmGdGj249atW21/rl692h78n+/xMw3iFkIIIYREnBBCCCGEEEJIxAkhhBBCCCGEkIgTQgghhBBCCCERJ4QQQgghhBBBEXH/H9k13gFbTnDiAAAAAElFTkSuQmCC" }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(-> \"(1 + 3) * -2 -1\" arith-parser (instaparse.core/visualize :output-file :buffered-image ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ## Interpreter\n", " The AST containts exactly the same kind of nodes as for the **addmult** language (neither the new `(` and `)` symbols nor the new `term` rule produce any node), so the interpreter is exactly the same:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-9" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def arith-eval-test (-> \"(1 + 3) * -2 -1\" arith-parser addmult-eval))\n", "(arith-eval-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For exactly the same reason, the compiler is exactly the same as the **addmult** compiler:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-8" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def arith-compiler-test (-> \"1 + 3 * (-2 - 1)\" arith-parser addmult-compiler))\n", "(arith-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lang0\n", "## Parser\n", "We update the parser to define :\n", "- a program as a sequence of expressions\n", "- an expression that can be either an assignment or an arithmetic expression\n", "- variables that can either be used on the left hand side of an assignment or as a read (\"varget\") on the right hand side\n", "- factor that replaces term and also allows for `varget` or assignments (the value of the assignment expression is the assigned value)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang0-parser" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-parser\n", " (instaparse.core/parser\n", " \"prog = (spaces expr spaces <';'> spaces)*\n", " <expr> = assig | add-sub\n", " assig = varname spaces <'='> spaces expr\n", " <add-sub> = mult-div | add | sub\n", " add = add-sub spaces <'+'> spaces mult-div\n", " sub = add-sub spaces <'-'> spaces mult-div\n", " <mult-div> = factor | mult |div\n", " mult = mult-div spaces <'*'> spaces factor\n", " div = mult-div spaces <'/'> spaces factor\n", " <factor> = number | <'('> spaces expr spaces <')'> | varget |assig\n", " <spaces> = <#'\\\\s*'>\n", " number = #'-?[0-9]+'\n", " varget = varname\n", " varname = #'[a-zA-Z]\\\\w*'\"))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parser can be used on a sample program :" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABvAAAAIxCAYAAACby//pAACAAElEQVR42uzdCZzNZf//8XssY1+GLCNEaFEhIlGyFelOSagQSUqi5VbdpYi62+9uZanuSlQoRSGlEkWhbClSlqxjyzrGOrj+j/fn/n/P78xqxmzfc87r+XicR5lzZubMNWe+5/p+39fnc/3NAQAAAAAAAAAAAPCLZX9jDAAAAAAAAAAAAADfIMADAAAAAAAAAAAAfIQADwAAAAAAAAAAAPARAjwAAAAgN+zZsyfFbdOmTW7dunUpbvp4ao8HAAAAAAARgQAPAAAASO7EiRNu165dbs2aNe6nn35yX375pfvggw/c66+/7p599ln38MMPuzvvvNN16tTJtW/f3rVu3do1btzY1a9f35199tmucuXKLiYmxkVHR7u//e1v2X7T19XXr1Klin2/Bg0a2PfX89Dz0fPS89Pz1PPV8/7www/dV1995RYtWuTWrl3rdu/e7U6ePMkvGwAAAAAA/yHAAwAAQOQ4evSohXJz5861QO6VV15xjz76qOvRo4e75pprXN26dV3FihVdvnz5Ug3O8ufP78444wxXq1Yt16hRoySBWe/evd0999zjHnnkEffkk0+65557zo0ePdq98cYbbvz48W7SpElJbtOmTXNff/11mrepU6em+Bx9HX09fV19fX0ffb++ffva9w8OFBs2bOhq1qzpypYta887rZ8nNjbW1atXz7Vr18717NnTPfbYYzYuCvw0Tgr7NG4AAAAAACDXEOABAAAgfCQmJlpApwDszTffdIMGDXLdunVzl19+uTvzzDNTBHNFihSxCrYmTZq4Dh06uHvvvdcNGzbMvfXWW27KlCluzpw57ueff3YbN250+/fvD+mx0fPfsGGDW7ZsmZs9e7b9fBqjoUOHun79+rkbbrjBxqFatWo2LsHjpHFTVaHGsXv37u6JJ56wMZo1a5YFfBp3AAAAAACQbQjwAAAAEHri4+OtFeR7771nFWMdO3Z0tWvXTtKyUtVlVatWdVdccUUgdHr77bctdFq1alXIB3I5bd++fe63336zMFRh3eOPP27jqBBPYV5wGKpxv/DCC91NN91koen777/vFi9e7A4cOMBAAgAAAACQeQR4AAAA8Lf169dbtZgCuGuvvdb2fQuuDlNId9VVV7n+/ftba8lvvvnG/fnnn+7Y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a1pwpqq9adOmWWineW7Tpk1diRIlAu+HWtyiqj3NeRX+ad47b948Fx8fzwACAIBIQIAHAEBOOXnypBs1apQrVKiQXYRQiJdRVNkBkUMVBmeccYb9navd2IkTJxgUAEDEUtWegjoFdpr7KsBTkBcVFZWkak+Bn4I/zZkVBCoQ5D0UAACEEQI8AEDajh07ZifQyW86OU7tpj0skj/2wIEDETl2O3fudNdee61dYPAuNqhV0L59+1J9PFV2QHjTsTC942nPnj3t717HAP37zz//TPXxCQkJDCYAICIdOXLEFrlpzqzQTi031XqzaNGigWBPC+e06E2tOhX+qXWnWngePHiQAcRpveaSz8V03pbW+fCOHTtSPJ7XHgAgCwjwACDcTjC2b9/uVq1a5ebPn+9mzJjh3n//fTdixAg3bNgw98ADD9hFYp3QXnPNNVbdpZPeOnXq2KrWChUq2GrW4NWt2XlTIKWvX716dXfuuefa91ZVmp5Hx44d3S233OLuueceN2jQIPfSSy+5t99+202ZMsXNmTPH/fzzz27jxo0h0TJn5syZrly5craXVfIx0M/jocoO8J/Dhw/bcfT33393P/74o/vyyy/tQqGC9Oeff9499thjdpy69dZb7Vh69dVXu1atWtnxrG7dunYsPfPMM+1Y51Xf5tStcOHC9n0qV65s37devXr2PHRM0fPS8+vatavr16+fPe8XXnjBfg79PF999ZX9fH/88YddbNL7BwAAoSouLs7mz3qfGzBggL0XxsbGJnnf1L/1cS2WGT58uD1eoQvCax63detWt3LlSvf999+76dOnu3fffde98sor7sknn3T33Xefu+2222yO1KZNG9eyZUubO1144YU2lypfvrwrXbp0js3d1CK2TJky9r3OO+88+95XXnmlvS69edu9997rnnjiCffyyy+7d955x3366afuu+++c7/88ost6ozUBbIAEKEI8AAgFGiSrrBHF1x1AvLiiy9aGKcJfvPmzS300UXc9C7y6oRVj2vSpEkgMLv55pvtBFYnuQqN/vWvfwUu8HoXeZPfPv/8czvZTes2efLkFJ8zduxY+3o6cVJgpYDu4Ycftu/do0ePQKDYokULuwBdrVo1V6pUqXR/nqpVq7rLLrvMXX/99a5v3752Qvb666+7qVOnugULFthJvFpY5qZDhw7ZWCoAVbVd8uet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MUOLIoSILc8995z0PCFihAJ4QohsUABPCBE2CuCJBBTAEyJbLr/8crfJJpsoM1vEkmXLlrlq1aq5Ll26aDFKjOXLl1vbOBzXHTp0cKtWrdKiCCFiB50WSGgYPXq0FkOIGKAAnhAiGxTAE0KEjQJ4IgEF8ITIFuZ+4dwWIm589913rkmTJm677bZz//rXv7QgJcrkyZNttiGJCiNHjlSyghAidrRs2dJ17dpVCyFEDFAATwiRDQrgCSHCRgE8kYACeEJkw6+//mpzUa6++mothogVv//+u+vUqZM9/0uWLNGClDhff/21O+uss9yf//xn16xZM/fSSy9pUYQQseG8885z9erV00IIEQMUwBNCZIMCeEKIsFEATySgAJ4Q2TBv3jxrLydntogbw4YNs7l3U6dO1WLEiEWLFrnddtvNrbfeeq5bt25u9erVWhQhRMnDWYe+99FHH2kxhChxFMATQmSDAnhCiLBRAE8koACeENkwfPhwV7VqVffzzz9rMURsmDlzplViDRo0SIsRQ3777Td322232ezDWrVquXHjxllFphBClCqfffaZBfCmTJmixRCixFEATwiRDQrgCSHCRgE8kYACeEJkw6GHHuratGmjhRCxYdWqVa5GjRr23GsWWrz55JNPrAoPp/a+++7r3nrrLS2KEKJk2WabbVzfvn21EEKUOArgCSGyQQE8IUTYKIAnElAAT4hMoQqlevXqbsiQIVoMEQv+/e9/uxYtWri6deu6L7/8UgsijFmzZrntttvOrb/++jYn7/vvv9eiCCFKDhIWaCEshChtFMATQmSDAnhCiLBRAE8koACeEJny6quvWuXJ7NmztRgiFvTo0cNVqVLFLVy4UIsh1oI2wldddZU9H1SpPPbYY1oUIURJccstt1iiwg8//KDFEKKEUQBPCJENCuAJIcJGATyRgAJ4QmRj3G244Ybuxx9/1GKIkoeZZwSsx4wZo8UQKXn33XfdQQcdZM9Khw4d3AcffKBFEUKUBK+99prJtjlz5mgxhChxG08BPCFEpiiAJ4QIGwXwRAIK4AlRHgMGDHDbb7+9O+OMM9z999/vPv30U9epUye39957a3FEybN48WJzZPTu3VuLIdJi+vTp7h//+IerWrWqu/TSS61CTwghogyt0zfZZBM3dOhQm/l5xx13uJNOOsk1btzYdEMhRDRhP9Ndwl/9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dq1cuXKdn+dKp7T+xBNPLGsPRLugl156SR+AKCirV692N998sz2bDRs2LHOOE6hLVZXH13v16pXX+6R1crJ99+mnn6bcqx9//HHS3/n111/1wQsRAThXg3v36aefNhlFtv2HH36Ycu+Xd1Zzfffdd1pcIYoEOgGwL3faaSfTMe688077908//aTFEUIk5bfffiuzA5gfj+yYO3eufU0+IyFENiA7kCHIEmQKnbM+++wz+xoyR8QaBfBE6UOAjl7kzDLo37+/ZVXuscce7h//+Mc680ySXdWrVzdnzZ577ulOPfVUd+ONN7pZs2a5L774Qosbw2cJh/ySJUvciy++aNkw9913n7vlllvcVVdd5S644AJ7Rrp06eI6derk2rRp41q3bm1zE3fccUe3zTbbuFq1arnNNttsnRl0YV8bbbSRvQ6tPHjd5s2bu1133bWs6m6HHXZwxx9/vDvzzDPdxRdf7K699lpzWDzwwAPmoFy4cKFlIxNIVLBB5BMcaTNmzHCDBw927dq1W6vl64YbbrjWc07gLxkExXGev/baa27OnDlu+vTp7p577jH5TZus8847z/Xo0cMdffTR7vDDD7e9ioxnr1Jhw57ZfPPNbQ/lcp96xZxzhtds1KiR3QMVhtzTYYcdZvfYvXt3d+6551oV+KhRo9y4cePctGnT3OzZs90rr7xiiSesmxBxgarxTz75xGbTcV6hl7HPJ06c6G677Tar7CUTnn1DsP+YY46xvXTQQQfZ3mKPsddw2LP3OCvZ71zBNpn5uqpVq2avTcsc7oekMe5v9913t/vl4v65TjnlFHf22We7iy66yHSPW2+91ZLNHnroobLze+nSpRZglFwQwpmsYG9cf/31dvajW7D3a9SoUeHeRO9APqAjdOzY0Q0YMMBNmDDBLV682P373//W4gpRotDGbsWKFe6RRx6xs5ZEwwMOOMA1adJknXEUyS7mVm277bZu7733dscee6y79NJL3ZQpU+x8lm0tRDyhm8dbb73lJk+ebHYKfkNkBEnMifM0k12bbrqpySDsgpNOOsm6xdFhC1+AKHkUwBOlB45bWhngtPEBC1+x0aBBAzPacIYiMEePHm3Ck+vJJ580447rwQcftK+NGTPGXXHFFe60004zJ+/OO++8lgO5fv36pszxcxKa0eTbb7+1uYY4/+699143cuRIc4rxjBx6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AeGss84Kd911Vxg3bpwJPqka/fXXX+GTTz4JQ4YMCZdddlk4/PDDw4477hgaNmwYateuvdC1uswyy4SNNtoobLfdduHQQw8Nl1xySXj00UfDRx99FJN/kpKLbrqxY8eG22+/PfznP/8J++23X9h6663DGmusERZffPEFrn2S+auttlrYfPPNw9577x1OPPHEcPPNN4cXXngh7pspSZIkSdJCmMCTpJoyadKk0L9//5gAIPmWCfIttdRSoVmzZqFNmzbh5JNPDj179gwDBgwIDz30UHjsscfCM888E4YNGxaGDx8ef+3BBx8Mffr0CRdeeGE4+uij495bDRo0iMFCvh/7cG211Vaha9euYejQoeGHH37w4EsVRMKOgD1jMAm6r7DCCnPX6korrRS22WabcMghh4TTTz89XHvttXF0Juvy8ccfD08//XR46qmn4nrl19gLi85Z1uJhhx0Wtt9++1C3bt2532/ZZZcNu+++e1zzo0aNMqEn5RmJNRLsp556amjatOncEdaLLrpo2GCDDcJee+0VjjvuuNCtW7dwyy23xHXO14gRI+K653rN/8+vkfQjYd+5c+ew7777xgIdim8y63/99dcPxxxzTCy+mTZtmgdfkiRJklSaCTxJyqV33nknBvoy++MQBGzevHms5CfIN3HixGoL2mc6Bfr27TtPkpCxfgQdCSbOmjXLN0Uq5Y8//oiBdzpk6tWrNze5tttuu4UePXrE4PwXX3xRbX8f3bfPPfdcuOKKK+LaXH755ePfufLKK8eAPsnAX3/91TdGqgHsNUtn3C677BILYFiL6623XiyQoZimOjvbOde8//77sRDnlFNOCU2aNIlJQgpwttxyy9jlS3euJEmSJEnBBJ4kVT/2xLntttvCFltsEQOBK664Ykyo0U1X091wkydPjiM6d9hhh5g8JJl38MEHxxFeUrGbOnVquOiii8Lqq68e1yqdrHTL0Q1HoL2mkMR//fXXw3nnnRdHc/Ja6NQ788wzw8cff+wbJVUzOm3plqXznaQd4zBJ2N96663h888/r9HXwp55DzzwQGjfvn0sHGD9t2rVKnb3/vLLL75ZkiRJklS8TOBJUnX5+uuvwznnnBOWW265mCzbZ5994kit33//PRGvb+bMmXGc38YbbxwDhJtsskkc8UcgUyomdMa2a9curlPWKyPu3nzzzcS8vgkT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q4wWXH755UOPHj38wKigNGzYMBx77LGJW/v5/N6l3XTTTfEc+f333/uBkSRJkqR0MoEnSSXdc889sWNl9uzZOfn+hZLA6927d+x+qu69h6SKokt16623ztn3r44EXqdOnfK+Vvfee+84klcqFCTtuU4/+OCDeV/7r7/+euyW32CDDeIemHXq1Al77bVXeP755/O+9idOnBi///Dhw/3QSJIkSVI6mcCTpJI6d+4cx98lSUUTeDUps7/OK6+84odGeUEg/LTTTkvUa5ozZ04M3G+44YYxwfDSSy/l/TWxZyVdeH/99ZcfGhWEwYMHx+vP1KlT8/5aytsDk/35nn766by+NvYGrVu3bujWrZsfGkmSJElKJxN4klQSnSoHHnhgol5TEhN4dN7xmu6++24/NKpxJKMWXXTRcNtttyXi9Tz88MPzBO/XX3/9+GtJMGTIkPiaZsyY4QdHBeHaa68NtWvXTsRrad68ebjzzjvDF198Ef7444/w3XffxTW32GKLxU68fKPbj25lSZIkSVIqmcCTpJK22GKLcMIJJyTqNSUxgYdll102XHfddX5oVONmzZoV1wQj6JKgdAJvzTXXjEmGJKBLltf0/vvv+8FRQTjvvPPCuuuum4jXMmHChHDIIYfENU/SruR5oGnTpnl/fW3btg2tW7f2QyNJkiRJ6WQCT5JKYvTdWWedlajXlNQEHgFLR3MpHyZPnhzXxHPPPZeo18UIzddeey0GzHl9l19+ed5f03vvvRdfy+jRo/3gqCB06dIlNGnSJO+vg+QdhSzljdHcZJNN8v4ajz322NCiRQs/NJIkSZKUTibwJKmkZs2ahRNPPDFRrympCTxGmCWly0jF5euvv45rgr2wkui3336L62ONNdbI+2shccexItkgFYJzzz03NGjQIO+vo2PHjnFtcc/wwQcfhJ9//nnu762wwgqJSOAxEpzR4JIkSZKkVDKBJ0kl7brrrqF9+/aJek1JTOCRoPjXv/4V7rrrLj80qnF//vlnWGSRRcLtt9+eyNfH+lhmmWXiSL18Gzp0aDx/fPXVV35wVBCuvvrqsPzyy+f9dey8885xL072vitp7NixienA23HHHcOhhx7qh0aSJEmS0skEniSVREV9EvatKSmJCbx33303vqYXXnjBD43yon79+nkfd3vUUUfFMbJvvPFG+O6778KPP/4YR2juueeecX1sueWWeT9OJDtIJpL0lApBZs/JfCeljz766Pg6evXqFb799tt4Dnj88cfj/nyLL754IhJ4dAGzZ6AkSZIkKZVM4ElSSQMGDIidPQTi8omkQHn76vDFuK58uuWWW2KA8qeffvJDo7zo0KFDaNWqVV5fAx045a3RpZZaKrz44ot5P05t2rSJr1MqFNOnT49r7NFHH83r62A8LfcLpdc+iT0SZ/lO4GX2Ch02bJgfGkmSJElKJxN4klTSxIkTY8CLsXP5lPQEHmNGt956az8wypvevXvHJNn333+ft9fwxRdfhJ49e8a1ULdu3bD00kuHjTfeOBx//PFh0qRJeT9Gv//+e1h55ZXDhRde6AdGBYU98OhOz7cnnngiNG/ePHa51qtXL5x55plx3SUhgceIYRKMs2fP9gMjSZIkSelkAk+SStt8881D27ZtPRDlYFRYrVq1wjXXXOPBUN7QhcMec/369fNglOOxxx6LCf+3337bg6GCcvbZZ4c6deqEX3/91YNRjm233TbstttuHghJkiRJSi8TeJJUGp09SyyxRN7310mqG264IR6fmTNnejCUV3vvvXfsflHZ2IvPTlkVoo8++ij861//Cvfff78Howx06XN8HnzwQQ+GJEmSJKWXCTxJKo0OsxVXXDF06dLFg1HKnDlzwuqrrx6OOOIID4bybsSIEYkYeZtEr776agzgDxw40IOhgtS6devQsGHD8Mcff3gwSmHMdf369e1QlCRJkqR0M4EnSWW5+uqrw+KLLx73xNP/XHLJJXHfsc8++8yDoUTYddddQ6NGjQzil/D333+HVq1axXHAf/31lwdEBemtt96Ke7zdeuutHowSxowZE5P3d911lwdDkiRJktLNBJ4klYWq9fXWWy8Gwf/8808PyP979913Y/LurLPO8mAoOXcy48fHvfC6d+/uwfivPn36xAD+s88+68FQQTvmmGNix/yUKVM8GP/v559/Dptuumlo1qyZyXtJkiRJSj8TeJJUnrFjx8YuPBMDIfzyyy+hcePGMTBIgFBKEjpD6cQZOXJk0R+L9957L9SqVSuccsopfjBU8L777ruw7rrrWmzzXyeeeGIstHn77bf9cEiSJElS+pnAk6QFITGw6KKLhkcffbRojwFV/O3atQtLL710mDBhgh8KJQ6B++233z7Uq1cvTJo0qWiPw/Tp02Pn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" }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(-> \"a=1+1*3;b=a-2; a+b;\" lang0-parser (instaparse.core/visualize :output-file :buffered-image ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpreter\n", "\n", "Now, our interpreter must be able to access an environment, so that assignments\n", "can have an effect. This environment is a map, mapping from variable names (as\n", "keywords) to values, with a special key `:_ret` for the current value of an\n", "expression. When evaluating the nodes of an AST with a transform map, each node\n", "will evaluate to the new environment. The first transform map just reduces the actual\n", "transform map over the environment :" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/make-lang0-instr-interpreting" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn make-interpreting [make-instr-interpreting init-env]\n", " {:prog (fn [& instrs] (:_ret (reduce\n", " (fn[env instr]\n", " (instaparse.core/transform (make-instr-interpreting env) instr))\n", " init-env\n", " instrs)))})\n", "(defn make-lang0-instr-interpreting [env]\n", " { :assig (fn[{varname :_ret :as env1} {value :_ret :as env2}]\n", " (assoc (merge env1 env2) varname value :_ret value))\n", " :add (fn[{v1 :_ret :as env1} {v2 :_ret :as env2}]\n", " (assoc (merge env1 env2) :_ret (+ v1 v2)))\n", " :sub (fn[{v1 :_ret :as env1} {v2 :_ret :as env2}]\n", " (assoc (merge env1 env2) :_ret (- v1 v2)))\n", " :mult (fn[{v1 :_ret :as env1} {v2 :_ret :as env2}]\n", " (assoc (merge env1 env2) :_ret (* v1 v2)))\n", " :div (fn[{v1 :_ret :as env1} {v2 :_ret :as env2}]\n", " (assoc (merge env1 env2) :_ret (quot v1 v2)))\n", " :number #(assoc env :_ret (Integer/parseInt %))\n", " :varname #(assoc env :_ret (keyword %))\n", " :varget (fn [{varname :_ret :as env1}]\n", " (assoc env1 :_ret (varname env1)))})\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can reuse the previous functions :" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang0-interpret" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-interpret (dynamic-eval (make-interpreting make-lang0-instr-interpreting {:_ret 0})))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And test our interpreter as usual:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-interpret-test (->> \"a=1+1*3;b=a-2; a+b;\" lang0-parser lang0-interpret))\n", "(lang0-interpret-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compiler\n", "We update the transform map :" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang0-compiling" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-compiling\n", " (assoc addmult-compiling\n", " :varget #(vector [:load %])\n", " :assig (fn[var instrs](conj instrs [:store var]))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But we also have to replace variable names with numbers (the JVM bytecode numbers arguments and local variables in the order they appear in a method). We are forward thinking by taking a =nb-args= argument even if for now we will\n", "number our variables starting with 0." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/to-numeric-vars" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(use 'clojure.set)\n", ";; helper function that replaces all the values in map m with the given value v\n", "(defn replace-vals [m v]\n", " (into {} (map vector (keys m) (repeat v ))))\n", "\n", "(defn to-numeric-vars[nb-args ast]\n", " (let[varnames\n", " (instaparse.core/transform\n", " (assoc (replace-vals\n", " lang0-compiling\n", " (fn[& instrs] (apply clojure.set/union (filter set? instrs))))\n", " :varname (fn[varname]#{varname}))\n", " ast)\n", " name->num (into {} (map vector varnames (iterate inc nb-args)))]\n", " (instaparse.core/transform {:varname #(get name->num %)} ast)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can test this helper function :" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[:prog [:assig 0 [:add [:number \"1\"] [:mult [:number \"1\"] [:number \"3\"]]]] [:assig 1 [:sub [:varget 0] [:number \"2\"]]] [:add [:varget 0] [:varget 1]]]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(str (->> \"a=1+1*3;b=a-2; a+b;\" lang0-parser (to-numeric-vars 0)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And see how it works when called before compiling to bytecode representation :" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[:loadi 0] [:loadi 1] [:loadi 1] [:loadi 3] [:multi] [:addi] [:store 0] [:load 0] [:loadi 2] [:subi] [:store 1] [:load 0] [:load 1] [:addi] [:reti]]" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(str (->> \"a=1+1*3;b=a-2; a+b;\" lang0-parser (to-numeric-vars 0) (instaparse.core/transform lang0-compiling)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also have to provide the new implementations for the `generate-instr` multimethod.\n", "For the assignment, we first duplicate the value at the top of the stack (that\n", "will be assigned) so that it will still be there after the assignment (`store`\n", "instruction). This enables us to use assignments as expressions : the value of\n", "the assignment expression is the assigned value." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "clojure.lang.MultiFn@6b366a13" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defmethod generate-instr :load [mv [instr & args]]\n", " (doto mv\n", " (.visitVarInsn Opcodes/ILOAD (int (first args)))))\n", "\n", "(defmethod generate-instr :store [mv [instr & args]]\n", " (doto mv\n", " (.visitInsn Opcodes/DUP)\n", " (.visitVarInsn Opcodes/ISTORE (int (first args)))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then reuse our previous functions :" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang0-compiler" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-compiler (dispatching-bytecode-generating-eval 0 \"Lang0Compiler\" lang0-compiling))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And test our compiler as usual :" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang0-compiler-test (->> \"a=1 + 3 * (-2 - 1);b= 0 - a;\" lang0-parser (to-numeric-vars 0) lang0-compiler))\n", "(lang0-compiler-test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lang1\n", "## Parser\n", "We just add arguments as a special kind of variables in the `varget` rule, their names begin of the form \"%0\", \"%1\",…" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang1-parser" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang1-parser\n", " (instaparse.core/parser\n", " \"prog = (spaces expr spaces <';'> spaces)*\n", " <expr> = assig | add-sub\n", " assig = varname spaces <'='> spaces expr\n", " <add-sub> = mult-div | add | sub\n", " add = add-sub spaces <'+'> spaces mult-div\n", " sub = add-sub spaces <'-'> spaces mult-div\n", " <mult-div> = factor | mult |div\n", " mult = mult-div spaces <'*'> spaces factor\n", " div = mult-div spaces <'/'> spaces factor\n", " <factor> = number | <'('> spaces expr spaces <')'> | varget |assig\n", " <spaces> = <#'\\\\s*'>\n", " number = #'-?[0-9]+'\n", " varget = varname | argument\n", " varname = #'[a-zA-Z]\\\\w*'\n", " argument= <'%'>#'[0-9]+'\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can test this parser on a sample program :" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "image/png": "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tbX1tm3bMjIyCn2Vbt26JZzx27BhQzm9oS4RMXASERER0f9z9+7dzp07I+NVrFhxy5Ytnz59KpTViIyM7Nmzp7Kycrly5bAaWVlZ7BoiYuAkIiIiUgR///23EDsNDQ0nTJhw79496Sz348ePGzdurFu3rpKSkqWl5V9//SX7tzIiIgZOIiIiIvrXHjx4MHnyZGNjY8S/GjVqzJkzJzo6WhILevPmTUBAACKulpaWsrJyx44dg4KCZOGcXiJi4CQiIiIiCfr8+fPBgwf79etXvHhxJM9SpUo5OzuvWbMmIiIiLS0tf++ZlZUVFxe3b98+Dw8PW1tb5e/s7e2XL1/Om9ASEQMnERERUZHz5cuXU6dOzZw5s0mTJhoaGgifSInW1tZdunRBbvTx8dm6deuJEycuX76MLHr79m1ESvwQHh6O/3XgwIHVq1dPnz69f//+9erV09HRUfoO/33QoEH+/v4JCQlsYSJi4CQiIiKi/6SnpyNJbt682dPTs3379jY2NoaGhkp50tTUtLS0tLe3R8JctmwZoilDJhExcBIRERHRL/n06dOTJ09iY2MjIiLCwsLOnz+PH2JiYuLi4pKTk9k+RMTASURERERERAycRERERERERAycRERERERExMBJREREREREcub/A2r2Pzgy4iRLAAAAAElFTkSuQmCC" }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(-> \"a=%0;a + %1 *3;\" lang1-parser (instaparse.core/visualize :output-file :buffered-image ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpreter\n", "Instead of starting with an empty environment, we fill the initial environment\n", "with arguments :" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/dynamic-eval-args" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn args-to-env[args]\n", " (into {} (map-indexed #(vector (keyword (str \"%\" %1)) %2) args)))\n", "\n", "(defn dynamic-eval-args [make-interpreter]\n", " (fn[ast]\n", " (fn[& args]\n", " (instaparse.core/transform (make-interpreting make-interpreter\n", " (assoc (args-to-env args)\n", " :_ret 0))\n", " ast))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can easily update the transform map from **lang0** :" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/make-lang1-instr-interpreting" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn make-lang1-instr-interpreting [env]\n", " (assoc (make-lang0-instr-interpreting env)\n", " :argument #(assoc env :_ret (keyword (str \"%\" %)))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And define our interpreter :" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang1-interpret" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang1-interpret (dynamic-eval-args make-lang1-instr-interpreting))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The interpreter can be called as usual, except that now we can pass arguments to our function when we call it :" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang1-interpret-test (->> \"a=%0;a + %1 *3;\" lang1-parser lang1-interpret))\n", "(lang1-interpret-test 2 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compiler\n", "In order to implement the compiler, we will first have to be able to know how\n", "many arguments are used in a program. This can be easily done with a transform\n", "map :" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/nb-args" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn nb-args[ast]\n", " (inc (instaparse.core/transform (assoc (replace-vals\n", " lang0-compiling (fn[& args]\n", " (apply max (conj (filter number? args)\n", " -1))))\n", " :argument #(Integer/parseInt %))\n", " ast)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can test this function :" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(->> \"a=%0;a + %1 *3;\" lang1-parser nb-args)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we add an AST transformation step to replace the `:argument` nodes with the\n", "value of the argument number:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/args->varnum" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn args->varnum[ast]\n", " (instaparse.core/transform {:argument #(Integer/parseInt %)} ast))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a few steps in the compilation chain will depend on the number of arguments,\n", "we define a new function instead of just piping our AST through the various\n", "stages :" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'beaker_clojure_shell_4f789a8e-b6ba-4007-bb3d-461d7e03438f/lang1-compiler-chain" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn lang1-compiler-chain[class-name ast]\n", " (let[n-args (nb-args ast)\n", " compiler (dispatching-bytecode-generating-eval n-args class-name lang0-compiling)]\n", " (->> ast args->varnum (to-numeric-vars n-args) compiler)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then use this function after parsing as follows :" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "17" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def lang1-compiler-test (->> \"a=%0;a + %1 *3;\" lang1-parser (lang1-compiler-chain \"Lang1Compiler\")))\n", "(lang1-compiler-test 2 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## TODO use EasyForm for interactive interpreting and compiling" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "83589154-fa3d-4c13-b7fc-059bfcd4664f", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(def form (doto (com.twosigma.beakerx.easyform.EasyForm. \"Test Form\")\n", " (.addTextField \"Name\")\n", " (.addButton \"Reverse\" \"reverse\")))\n", "form" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "tags": [ "reverse" ] }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(reverse (get form \"Name\"))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## TODO use slider for arg values" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "%import com.twosigma.beakerx.widget.IntSlider" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4285fbd9-64e5-4836-9b78-888702f23650", "version_major": 2, "version_minor": 0 }, "method": "display_data" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(new IntSlider)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## TODO benchmark" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "596 µs ± 2 ms per loop (mean ± std. dev. of 30 run, 10 loop each)\n" ] } ], "source": [ "%%timeit -r30 -n10\n", "(lang1-interpret-test 2 5)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "264 µs ± 1 ms per loop (mean ± std. dev. of 30 run, 10 loop each)\n" ] } ], "source": [ "%%timeit -r30 -n10\n", "(lang1-compiler-test 2 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# TODO more powerful JVM bytecode manipulatio\n", "use [a real clojure JVM bytecode library](https://github.com/jgpc42/insn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "beakerx_kernel_parameters": {}, "kernelspec": { "display_name": "Clojure", "language": "clojure", "name": "clojure" }, "language_info": { "codemirror_mode": "Clojure", "file_extension": ".clj", "mimetype": "text/x-clojure", "name": "Clojure", "nbconverter_exporter": "", "version": "1.9.0" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": false, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }