Command-line tool to interact with Compiler Explorer
Project description
cexpl
Command-line tool to interact with Compiler Explorer.
Overview
cexpl is able to query all available languages, compilers, build and execute your source code. You can also give some extra arguments, like compiler flags, command-line arguments and STDIN.
The Compiler Explorer API host can be specified with the -H
/--host
option.
List available languages
The --list-langs
option lists all languages and their IDs:
$ cexpl --list-langs
ada - Ada
analysis - Analysis
assembly - Assembly
c - C
c++ - C++
carbon - Carbon
circle - C++ (Circle)
circt - CIRCT
clean - Clean
cpp2_cppfront - Cpp2-cppfront
...
The language ID can be used with the -l
/--lang
option.
List available compilers
The --list-compilers
option lists all compilers and their IDs:
$ cexpl --list-compilers
386_gl114 - 386 gc 1.14
386_gl115 - 386 gc 1.15
386_gl116 - 386 gc 1.16
386_gl117 - 386 gc 1.17
386_gl118 - 386 gc 1.18
386_gl119 - 386 gc 1.19
386_gltip - 386 gc (tip)
6g141 - amd64 gc 1.4.1
aarchg54 - ARM64 gcc 5.4
arduinomega189 - Arduino Mega (1.8.9)
...
It is also possible to list the compilers for a specific language. For example, cexpl --list-compilers python
will list all available Python compilers.
The compiler ID can be used with the -c
/--compiler
option.
Compilation and execution
In order to compile, you need to pass the file containing the source code. cexpl will try to figure out the language and its default compiler based on the file extension. You can specify the language and/or the compiler with --lang
and/or --compiler
option, as said above.
$ cexpl love.c
.LC0:
.string "<3"
main:
push rbp
mov rbp, rsp
mov edi, OFFSET FLAT:.LC0
call puts
mov eax, 0
pop rbp
ret
The source code:
#include <stdio.h>
int main() {
printf("<3\n");
return 0;
}
You can pass options to the compiler with the --cflags
option.
Comparing source code and assembly
Use the -C
/--compare
option to compare the source code with the assembly:
$ cexpl --compare --cflags=-Ofast love.c
.LC0:
.string "<3"
main:
3 int main() {
sub rsp, 8
4 printf("<3\n");
mov edi, OFFSET FLAT:.LC0
call puts
6 }
xor eax, eax
add rsp, 8
ret
Execution
The -e
/--exec
option executes the code:
$ cexpl --exec --skip-asm love.c
STDOUT:
<3
If you don't want to see the generated assembly, use the -s
/--skip-asm
option.
Arguments and input
You can pass a list of arguments with the -a
/--args
option. For example, cexpl --args one two three --exec main.c
. The same applies to the --stdin
option:
$ cexpl --skip-asm --exec --stdin "Gustavo Costa" 20 -- hi.py
STDOUT:
Gustavo Costa, 20 years old
The source code:
name = input()
age = input()
print(f'{name}, {age} years old')
Saving your results
You can generate a short link for the compilation with the -L
/--link
option.
License
Copyright (c) 2022 Gustavo Costa. Distributed under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cexpl-0.1.0.tar.gz
.
File metadata
- Download URL: cexpl-0.1.0.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.0rc2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9504a108e3dd7b09b8dbde22001dfd9f50adfcadb3089b2999f7295f6bb02c47 |
|
MD5 | 6b91043ec8913d1ff0e9980060fb09c4 |
|
BLAKE2b-256 | 2ab748a64b152b6bc1e2a258dcccafb29dfe016c06d303a2f5ce40bca0a0eaec |
File details
Details for the file cexpl-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: cexpl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.0rc2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce636ed908ccbcd56344be6489d95879950a26a22a9601cc35c92d79668d668a |
|
MD5 | dc57f1c229ba3e6edb0a68fbbe8ba4c8 |
|
BLAKE2b-256 | a5f581cd9532b5e545926ed013ba60ecda8ca1596945e69604395d129f5bbc58 |