Giter Site home page Giter Site logo

moe's People

Contributors

awwaiid avatar bobtfish avatar genehack avatar gphat avatar holophrastic avatar jasonmay avatar prakashk avatar rafl avatar ribasushi avatar rstrong avatar s-h-r-i avatar sergeyromanov avatar tsibley avatar wolfsage avatar xsawyerx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moe's Issues

Don't include jars in project

It would be better to include the scalatest jar via a dependency in build.sbt.

For example, something like:

name := "moe"

version := "0.0.1"

scalaVersion := "2.9.2"

libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test"

Hope this helps!

request: a PLAN doc containing more specifics about project goals

I think it would be useful if the project had a PLAN.md file containing sections something like:

  • primary general project goals with some details (AST, MOP, etc.)
  • Perl 5 features/functions/isms most likely to be dropped/not-implemented
  • planned incompatible syntax/semantics changes from Perl 5
  • new language features/additions planned for Moe

convert the tests to use ShouldMatchers

The org.scalatest.matchers.ShouldMatchers trait adds some really useful methods to make testing easier and nicer to look at. There are a number of vanilla assert tests which could be improved by this.

Improve "unless" support

We had a nice refactor done of the If statement, but the Unless statement still could use some work.

More Interpreter tests

When adding interpreter features I am testing the bare minimum to make sure it works so I can move on to the next interpreter feature. We could use way more tests for edge cases and things like that to ensure robustness.

Add editline support to the REPL

Currently there is no line editing or history support in the REPL. There are a number of libraries out there, JLine looked to be the simplest and most featureful, however it wasn't so simple to just use it because sbt also uses JLine and so the two collide when used together.

Add support for "return" keyword

Exactly what it says on the tin, currently we only support the last evaluated statement, but would be nice if we had a proper return keyword as well.

Get rid of the class "sigil"

I added the class sigil (^) because I could not get the parser to parse bare words successfully, it is fine for now, but it should ultimately be removed

Convert examples in spec/ to test in t/

There are a bunch of examples in the spec/ directory, many of which are outdated and wrong. Ideally we can go through them and convert them into tests in t/ (correcting them along the way of course).

create nativeObject for IO

Need look to see what Scala has that we can use for this, I suspect this will be a little more complex then the other native objects though

Introducing context

I have made a small attempt at introducing context while evaluating expressions. This makes it possible to evaluate expressions like "2" + 4 which are not possible currently (since StrClass does not have an infix:<+> method).

As an experiment, I have only made changes to implement this in a binary addition/subtraction case for StringLiterals. I am not sure if this is the right approach/right implementation.

Can someone please review the change in the prakashk/context-attempt branch?

Improve separation of compile and evaluate phases

It would be nice to be able to completely evaluate the AST, perform all compile time actions (class declaration, sub declaration, etc) and then return a smaller tree with just the items needed to be evaluated.

Review and tighten up Error handling in the Interpreter

In the runtime-improvements branch we have removed all error throwing out of the org.moe.runtime namespace in favor of using the Option. This means that the interpreter needs to watch out for missing data (in the form of None) and throw the appropriate error.

Namespace squatting

moe.org is already a registered domain name (which does not belong to stevan).

I wish I could recommend registering moe.pl in Poland, but that's taken too.

Remove the need for semicolons on assignment statements

Assignment statements require semicolons, even if they aren't actually needed (last statement in a block, etc.). This is mostly just cause the parser needs a lot of help, but if we could at least fix this it would be helpful.

Make Str, Int and Num all immutable

This falls under the "what would Perl 6 do" umbrella. This means removing the increment operators (people can use regular old addition instead), and making Str.chop and Str.chomp return new strings rather then alter in place. This will remove all usage of MoeNativeObject.setNativeValue except for Array.bind_pos, which uses it to autogrow the array size (should look in the docs and see if this can be done another way).

Is this project really Ultra Modern Perl 5?

Is this project really Ultra Modern Perl 5?

It looks like sister language like perl 6.
I don't deny your project, but some people think moe is perl5 reimplementation + α.

If you don't use perl5 syntax, i think this project isn't Ultra Modern Perl 5 because this don't has backkword compatible to perl5 at all.

For example, $obj.length is not perl5, sub foo is bar { ... } is not perl5.

I don't deny your project,
but if this project is called Ultra Modern Perl 5, this caption maybe give a false impression to many people.

Add support for __FILE__

We should refactor the way we handle parsing of files so that we can keep track of the filename in the CompilationUnit AST node, this can then set FILE when it is evaluated.

Allow for optional parameters

A parameter postfixed with a ? should be treated as optional. Optional parameters can only be specified after all the required parameters have been specified.

This relates to Issue #45 and #46.

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.