サーバーがコンパイルして実行し、結果を返す C コードをユーザーが入力できるようにする Web ベースのサービスを構築したいと考えています。私は知っています、私は知っています、セキュリティの悪夢。なので、chroot や lxc などを使うことができるかもしれません。それらについては、stackoverflow に良い投稿があります。別のオプションは、プログラミング コンテスト ソフトウェアを使用することです。
私がやっていることは、一般的なプログラミングの目的ではありません。ユーザーは、いくつかのスタブ関数にコードを追加できます。それだけです。ポインター、配列、または文字列を使用できる必要はありません。ファイル、ソケット、または共有メモリを開いたり、閉じたり、読み書きしたりできないようにする必要があります。独自の関数を作成することさえできません。次のことのみを実行できる必要があります。
// style comments
/* */ style comments
declare variables of type int, double, float, int64_t, int32_t, uint64_t, uint32_t
for, while, do
+, -, *, /, % arithmetic operators ( * as dereference is NOT allowed )
( )
+, - unary operators
++, -- operators
math functions like sin, cos, abs, fabs, etc
a bunch of API functions that will exist
switch, case, break
{ }
if, else, ==, !=
=, +=, -=, *=, /=, etc
Cコードの特定のチャンクをチェックして、それらの要素のみが含まれていることを確認するために使用できるツールはありますか?
既存のソリューションが見つからない場合は、Antlr などを使用して自分で考え出すことができます。