diff --git a/Dockerfile b/Dockerfile index b981a11..299d70b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,4 +13,4 @@ RUN git clone https://github.com/microsoft/vcpkg.git /vcpkg && \ RUN make CFLAGS="-I/vcpkg/installed/x64-linux/include" LDFLAGS="-L/vcpkg/installed/x64-linux/lib" -CMD [ "/bin/bash", "-c", "build/interpreter", "/var/rinha/source.rinha.json" ] +CMD [ "/app/build/interpreter", "/var/rinha/source.rinha.json" ] diff --git a/docker_run.sh b/docker_run.sh new file mode 100755 index 0000000..4d89721 --- /dev/null +++ b/docker_run.sh @@ -0,0 +1,6 @@ +docker build . -f Dockerfile -t rinha-c-interpreter + +docker run \ + --rm \ + -v $(pwd)/sample.json:/var/rinha/source.rinha.json \ + rinha-c-interpreter diff --git a/sample.json b/sample.json new file mode 100644 index 0000000..b4e146a --- /dev/null +++ b/sample.json @@ -0,0 +1,362 @@ +{ + "name": "files/combination.rinha", + "expression": { + "kind": "Let", + "name": { + "text": "combination", + "location": { + "start": 4, + "end": 15, + "filename": "files/combination.rinha" + } + }, + "value": { + "kind": "Function", + "parameters": [ + { + "text": "n", + "location": { + "start": 22, + "end": 23, + "filename": "files/combination.rinha" + } + }, + { + "text": "k", + "location": { + "start": 25, + "end": 26, + "filename": "files/combination.rinha" + } + } + ], + "value": { + "kind": "Let", + "name": { + "text": "a", + "location": { + "start": 41, + "end": 42, + "filename": "files/combination.rinha" + } + }, + "value": { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "k", + "location": { + "start": 45, + "end": 46, + "filename": "files/combination.rinha" + } + }, + "op": "Eq", + "rhs": { + "kind": "Int", + "value": 0, + "location": { + "start": 50, + "end": 51, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 45, + "end": 51, + "filename": "files/combination.rinha" + } + }, + "next": { + "kind": "Let", + "name": { + "text": "b", + "location": { + "start": 61, + "end": 62, + "filename": "files/combination.rinha" + } + }, + "value": { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "k", + "location": { + "start": 65, + "end": 66, + "filename": "files/combination.rinha" + } + }, + "op": "Eq", + "rhs": { + "kind": "Var", + "text": "n", + "location": { + "start": 70, + "end": 71, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 65, + "end": 71, + "filename": "files/combination.rinha" + } + }, + "next": { + "kind": "If", + "condition": { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "a", + "location": { + "start": 81, + "end": 82, + "filename": "files/combination.rinha" + } + }, + "op": "Or", + "rhs": { + "kind": "Var", + "text": "b", + "location": { + "start": 86, + "end": 87, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 81, + "end": 87, + "filename": "files/combination.rinha" + } + }, + "then": { + "kind": "Int", + "value": 1, + "location": { + "start": 103, + "end": 104, + "filename": "files/combination.rinha" + } + }, + "otherwise": { + "kind": "Binary", + "lhs": { + "kind": "Call", + "callee": { + "kind": "Var", + "text": "combination", + "location": { + "start": 130, + "end": 141, + "filename": "files/combination.rinha" + } + }, + "arguments": [ + { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "n", + "location": { + "start": 142, + "end": 143, + "filename": "files/combination.rinha" + } + }, + "op": "Sub", + "rhs": { + "kind": "Int", + "value": 1, + "location": { + "start": 146, + "end": 147, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 142, + "end": 147, + "filename": "files/combination.rinha" + } + }, + { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "k", + "location": { + "start": 149, + "end": 150, + "filename": "files/combination.rinha" + } + }, + "op": "Sub", + "rhs": { + "kind": "Int", + "value": 1, + "location": { + "start": 153, + "end": 154, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 149, + "end": 154, + "filename": "files/combination.rinha" + } + } + ], + "location": { + "start": 130, + "end": 155, + "filename": "files/combination.rinha" + } + }, + "op": "Add", + "rhs": { + "kind": "Call", + "callee": { + "kind": "Var", + "text": "combination", + "location": { + "start": 158, + "end": 169, + "filename": "files/combination.rinha" + } + }, + "arguments": [ + { + "kind": "Binary", + "lhs": { + "kind": "Var", + "text": "n", + "location": { + "start": 170, + "end": 171, + "filename": "files/combination.rinha" + } + }, + "op": "Sub", + "rhs": { + "kind": "Int", + "value": 1, + "location": { + "start": 174, + "end": 175, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 170, + "end": 175, + "filename": "files/combination.rinha" + } + }, + { + "kind": "Var", + "text": "k", + "location": { + "start": 177, + "end": 178, + "filename": "files/combination.rinha" + } + } + ], + "location": { + "start": 158, + "end": 179, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 130, + "end": 179, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 77, + "end": 185, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 57, + "end": 185, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 37, + "end": 185, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 18, + "end": 187, + "filename": "files/combination.rinha" + } + }, + "next": { + "kind": "Print", + "value": { + "kind": "Call", + "callee": { + "kind": "Var", + "text": "combination", + "location": { + "start": 196, + "end": 207, + "filename": "files/combination.rinha" + } + }, + "arguments": [ + { + "kind": "Int", + "value": 10, + "location": { + "start": 208, + "end": 210, + "filename": "files/combination.rinha" + } + }, + { + "kind": "Int", + "value": 2, + "location": { + "start": 212, + "end": 213, + "filename": "files/combination.rinha" + } + } + ], + "location": { + "start": 196, + "end": 214, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 190, + "end": 215, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 0, + "end": 215, + "filename": "files/combination.rinha" + } + }, + "location": { + "start": 0, + "end": 215, + "filename": "files/combination.rinha" + } +} \ No newline at end of file