Skip to content

Commit

Permalink
translate
Browse files Browse the repository at this point in the history
  • Loading branch information
organic-nailer committed Apr 2, 2023
1 parent 272d10a commit adeac64
Showing 1 changed file with 23 additions and 21 deletions.
44 changes: 23 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

![](assets/logo_wide.png)

Elaphe is a compiler that translates Dart programs into bytecode that runs on the Python virtual machine. With Elaphe, you can utilize the rich libraries of Python while using the syntax and static type checking of Dart.

ElapheはDartのプログラムをPython VM上で動くバイトコードに変換するコンパイラです。Dartの文法や静的な型チェックを使いながらPythonの豊富なライブラリを利用することができます。

![](assets/overview.png)

# Install

現状Linuxのみサポートしています。GitHubからソースコードをダウンロードし、手元でビルドしてください。
Elaphe currently only supports Linux. Please download the source code from GitHub and build it locally.

- `git clone https://github.com/organic-nailer/elaphe.git`
- `cd ./elaphe`
Expand All @@ -19,7 +21,7 @@ ElapheはDartのプログラムをPython VM上で動くバイトコードに変

# Getting Started

Python3.9のみに対応しています。
**Elaphe currently only supports Python3.9.**

```
$ elaphe init foo
Expand All @@ -31,7 +33,7 @@ foo$ elaphe run main.dart

# Example

[Anaconda](https://www.anaconda.com/products/distribution)/[Miniconda](https://docs.conda.io/en/latest/miniconda.html)でPython3.9の環境を作ります。`conda`コマンドは事前に使えるようにしてください。
First, create a Python 3.9 environment using [Anaconda](https://www.anaconda.com/products/distribution) or [Miniconda](https://docs.conda.io/en/latest/miniconda.html). Make sure that the `conda` command is available beforehand.

```
$ conda create -n elaphe_env python=3.9
Expand All @@ -41,7 +43,7 @@ Python 3.9.15
$ conda install numpy matplotlib
```

`elaphe init`でプロジェクトを作成し、利用するライブラリを`elaphe add`で追加します。
Create a new project with `elaphe init`, and adds libraries to use with `elaphe add`.

```
$ elaphe init elaphe_example
Expand All @@ -50,7 +52,7 @@ elaphe_example$ elaphe add numpy
elaphe_example$ elaphe add matplotlib
```

`main.dart`を以下のように書き換えます。
Next, rewrite `main.dart` as following:

```dart
import 'elaphe/numpy.d.dart' as np;
Expand All @@ -64,7 +66,7 @@ void main() {
}
```

`elaphe run`でコンパイル、実行します。
Finally, compile and execute the program with `elaphe run`.

```
elaphe_example$ elaphe run main.dart
Expand All @@ -80,23 +82,23 @@ elaphe_example$ elaphe run main.dart
elaphe init <directory>
```

指定されたディレクトリにプロジェクトを作成します。
Creates a new project in the specified directory.

## elaphe add

```
elaphe add <python module>
elaphe add <python package>
```

指定したPythonモジュールの型定義ファイルをプロジェクトに生成します。Pythonモジュールは現在のPython環境に存在する必要があります。
Generates a type declaration file(*.d.dart) of the specified Python package in the project. The Python package must be present in the current Python environment.

## elaphe build

```
elaphe build <target dart file>
```

指定したDartファイルをコンパイルし、`main.pyc`ファイルを生成します。このファイルは`python main.pyc`で実行できます。
Compiles the specified Dart file and generates the `main.pyc` file, which can be executed with `python main.pyc`.

## elaphe run

Expand All @@ -106,7 +108,7 @@ elaphe run <target dart file>
elaphe run -c <dart code>
```

指定したDartファイルをコンパイルし、実行します。オプション`-c`が指定された場合、後の文字列をDartプログラムと解釈し実行します。
Compiles and runs the specified Dart file. If the `-c` option is passed, Elaphe interprets and executes the following text as a Dart program.

# elaphe/core

Expand All @@ -116,27 +118,27 @@ elaphe run -c <dart code>
external dynamic sl([int? start, int? end, int? step]);
```

sliceをDart上で実現するため、sl()関数を用意しています。
There is a sl() function available in Dart syntax that allows the use of slices.

# Limitation

## 対応するPython VM
## Supported Python VM

生成するバイトコードの関係でPython3.9のみ対応しています。他のバージョンについては今後対応予定です。
Due to the constraints of the generated bytecode, Elaphe currently supports Python 3.9 only. However, future plans include adding support for other versions.

## コンパイル対象
## Compilation Target

単一ファイルのみ(main.dart)のコンパイルに対応しています。複数ファイルのコンパイル、他のdartファイルのimportは非対応です。
Elaphe only supports compilation of a single file (main.dart). Compilation of multiple files and importing other dart files is not supported.

## Dartライブラリ
## Dart Libraries

Dartライブラリには対応していません。Flutterなどだけではなく、dart:coreやdart:mathなどの標準ライブラリも使うことができません。代わりにPythonのライブラリが利用できます。
Elaphe does not support Dart libraries, including not only Flutter but also standard libraries such as dart:core and dart:math. Instead, Python libraries can be used.

## Dart文法
## Dart Syntax

ElapheではDartの限られたサブセットのみをサポートしており、一部の文法が利用できません。順次対応文法の予定をしています。
Elaphe only supports a limited subset of Dart syntax. Therefore, some syntax cannot be used. Plans are underway to gradually support more syntax.

形式的な文法の対応状況は以下のドキュメントを参照してください。赤字部分が対応済です。
For the corresponding formal syntax, please refer to the following document. The red text indicates what is currently supported.

https://docs.google.com/document/d/1c956nDwu3t9qNN0C4HBvl9U6WSvCUY3umqpzohqlrKs/edit?usp=sharing

Expand Down

0 comments on commit adeac64

Please sign in to comment.