Giter VIP home page Giter VIP logo

lazurite's Introduction

More About Languge

To work you need to install jdk 19

This language takes advantage of Java and simplifies it. This makes Lazurite quite simple. Basically, the language is used to create games and applications, because it has powerful libraries for this. But on it you can make bots for social networks, work with files, and much more.

Hello World in Lazurite!:

print("Hello World!")

lsoup:

using "lsoup"

lsoup.parse("https://www.lipsum.com")

title = lsoup.select("title")
text = lsoup.select("h3")

println(title)
print(text)

async example:

using "async"
func hel(arg){
    print(arg)
}
async.supply(hel("Hello"))

graph example:

using "graph"
Frame()

fill(100,100,200)
rect(10,10,200,100)

fill(100,200,100)
lrect(100,100,100,100)

thread example:

using "std"
func th(arg){
   println("My " + str(arg) + " Thread")
}
for(i=0, i<10, i++){
    std.thread(::th, i)
}

Download

Download jar and exe files of the language interpreter can be downloaded in the Releases tab)

Why Lazurite?

Why should you choose Lazurite?:

  • Simple syntax.
  • Using java features and simplifying them
  • Flexible syntax
  • Dynamic typing
  • Object-Oriented Language.

License

Lazurite is relseased under MIT License 2.0

See more about it!

lazurite's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

lazurite's Issues

C

C

Use conventional commits

Current situation

I think commits messages in the repository at the moment aren't great - they are not descriptive and in most cases it's easy to get confused.

image

Conventional Commits

I suggest using conventional commits which are a way to standardize commit messages. Here is an example of how they are used in my repository:

image

As you can see commit messages are more descriptive and now make some kind of sense.

Conventional Commits Standart also applies to the commit's footers and description.

I think using them will make it easy to work asynchronously and resolve merge conflicts, track progress, or just see the project's history.

Here are some resources on the topic:

Conventional Commits Specification.
Conventional Commits: A Better Way.
Another Conventional Commits Article.

Возможность создавать собственные модули

Возможность разделить программу на несколько файлов, чтобы весь код не был в одном файле. Это улучшит организацию и структуру проекта.

Как это будет выглядеть:

main.lzr

using "./myModule"

greet("Hamlet")

myModule.lzr

func greet(name) {
    print("Hello " + name + "!")
}

A question to architecture

I don't think it is a great decision to put evaluation logic into AST classes. Maybe create a separate from ast package classes for that, for easier process of adding new builtin types into the language?

Also it will be easier, if the language is going to have a VM later. Because the logic for VM bytecode emitting is going to be in different classes.

Naming Issues

1. Spelling mistakes

In com.kingmang.lazurite.lib i see ..Exeption class names all around, which isn't actually correct spelling of word Exception.

- public final class _AExeption extends RuntimeException
+ public final class _AException extends RuntimeException
- public final class _LExeption extends RuntimeException
+ public final class _LException extends RuntimeException
...

2. Confusing exception names

Also exception names seem really confusing for me. What is _AExeption, _LExeption, _PExeption, etc.? They should really be renamed.

3. Names of storage classes

Functions, ClassDeclarations, Classes are also a bit confusing. In my opinion, it is better to use Storage, Resolver or Manager postfix:

- Functions
+ FunctionManager
- Classes
+ ClassManager
- Functions
+ FunctionStorage
- Classes
+ ClassStorage
- Functions
+ FunctionResolver
- Classes
+ ClassResolver

4. Utility classes

Take for instance a utility class, related to function arguments:

public final class Arguments {

    private Arguments() { }

    public static void check(int expected, int got) {
        if (got != expected) throw new _AExeption(String.format(
                "%d %s expected, got %d", expected, pluralize(expected), got));
    }

    public static void checkAtLeast(int expected, int got) {
        if (got < expected) throw new _AExeption(String.format(
                "At least %d %s expected, got %d", expected, pluralize(expected), got));
    }

    public static void checkOrOr(int expectedOne, int expectedTwo, int got) {
        if (expectedOne != got && expectedTwo != got)
            throw new _AExeption(String.format(
                    "%d or %d arguments expected, got %d", expectedOne, expectedTwo, got));
    }

    public static void checkRange(int from, int to, int got) {
        if (from > got || got > to)
            throw new _AExeption(String.format(
                    "From %d to %d arguments expected, got %d", from, to, got));
    }

    private static String pluralize(int count) {
        return (count == 1) ? "argument" : "arguments";
    }
}

Maybe use Utilities, Utils or Helper postfix?

- public final class Arguments {
+ public final class ArgumentUtilities {
- public final class Arguments {
+ public final class ArgumentUtils {
- public final class Arguments {
+ public final class ArgumentHelper {

Case inconstancy

In COUT_Setting, underscore creates case inconstancy with other names like AbstractVisitor or Console:

- public class COUT_Setting implements OutputSettings {
- public class SOUT_Setting implements OutputSettings {

It can also be seen in module names:

- Arrays
+ arrays
- GForms
+ gforms
- HTTP
+ http
java
- LFS
+ lfs
...

SOUT_Setting can be renamed to something like StringOutSetting, I have no idea at the moment.

Plural and singular nouns

Going back to the previous code spinnet, COUT_Setting implements OutputSettings, which in my opinion creates the plural/singular inconstancy.

It can again be seen in module names:

- Arrays
+ array
- GForms
+ gform
- HTTP
+ http
java
- LFS
+ lfs
...

Use `releases` tab to store executables

Instead of storing executables right in the repository source code, you can just use releases tab in the GitHub. It also allows you to store executables for different versions of your project. WDYT?

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.