Transpiler from PascalABC.NET to C#. Includes transpiler module which performs all logic and a simple web interface to interact with.
To run a docker container with web interface you can use following commands:
docker build . -t transpiler
docker run -p 8000:8000 --rm transpilerAfter that you can check localhost:8000.
- Operational assignments are not supported.
// ok
var a: integer := 10;
a := a + 1;
// not supported
var a: integer := 10;
a += 1;- Type hints in variable definitions are always required:
// ok
var a: char := 'a';
// not supported
var a := 'a';- Inline nested for,whileandifstatements are not supported
// ok
if true then
begin
    if true then
        print('str');
end;
// not supported
if true then
    if true then
        print('str');- Boolean operands must be wrapped into brackets
//ok
var b: boolean := (10 < 15) and (5 > 0);
//not supported
var b: boolean := 10 < 15 and 5 > 0;- Comparison of chars and strings are not valid in generated code
var c: char := 'c';
var s: string := 'str';
//not valid in generated code
var b: boolean := s = c;- Comparison of strings and chars by <,>,<=,>=are not valid in generated code
//not valid in generated code
var b: boolean := 'str1' > 'str2';- 
Number and type of arguments are not checked in function's call 
- 
Base functions are converted by map 
//example
write() -> Console.Write()
read() -> Console.Read()
- Functions that are not contained in map converted with the same name
//example
some_function() -> some_function()
Requirements: Python 3.10 or above.
Create, activate virtual env and install dependencies:
python -m venv env
source env/bin/activate
pip install -r requirements.txtIt's recommended to set log level to DEBUG when testing. Use
export LOG_LEVEL=DEBUGbefore running any of the command below.
Run transpiler module with
python -m transpiler path/to/source/codee.g.
python -m transpiler examples/supported_syntax.pasTo run web module, install web dependencies first:
pip install -r requirements-web.txtThen run it with
python -m web --devwhere --dev sets uvicorn config suitable for development, e.g. it configures hot reload.
Before submitting a pull request make sure that your code passes
all tests and there are no flake8 linter errors. Check it with
python -m unittest
flake8Any new feature must be accompanied by new test for this feature.