Coder Social home page Coder Social logo

cs560project's Introduction

A Simple Python-to-Scala Transpiler

You should have Python 3.5+ as your default python in your command line environment.

You can use sbt test to run all the tests inside our project.

You can also use the project as a command-line tool. Usage (either way is fine):

  • sbt "run <inputFile>.py", the output filename will be <inputFile>.scala
  • sbt "run (--input-file | -i) <inputFile>.py (--output-file | -o) <outputFile>"

Example by running sbt "run test/quicksort.py":

Python

def quicksort(a: List[int]) -> List[int]:
    if len(a) < 2:
        return a
    else:
        pivot = a[len(a) // 2]
        return quicksort([_ for _ in a if pivot > _]) + \
            [_ for _ in a if pivot == _] + \
            quicksort([_ for _ in a if pivot < _])


quicksort([10, 6, 8, 1, 0, 9]) == [0, 1, 6, 8, 9, 10]

Scala

def quicksort(a: List[Int]): List[Int] = {
  if (a.length < 2) {
    a
  } else {
    var pivot = a(a.length / 2)
    quicksort(a.filter(pivot > (_))) ++ a.filter(pivot == (_)) ++ quicksort(a.filter(pivot < (_)))
  }
}
quicksort(List(10, 6, 8, 1, 0, 9)) == List(0, 1, 6, 8, 9, 10)

Currently, our project supports the following features of Python:

  • Arithmetic/Boolean expressions
  • Variable assignments
  • if/for statements
  • Function definitions/calls
  • List operations
  • List comprehension

Notice:

  • Parameters of a function declaration have to be explicitly typed
  • A single variable cannot be assigned to values with different types

cs560project's People

Contributors

acalejos avatar strongoier avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.