GithubHelp home page GithubHelp logo

ru.hse.nml's Introduction

nML Lighter

Apache License Build Status

nML Lighter is a plugin for IntelliJ IDEA that provides a code editor for the nML architecture decription language.

The plugin is developed by Dagvanorov Lkhagvajav as his course work at Faculty of Computer Science of Higher School of Economics. The supervisor is Andrei Tatarnikov.

The code editor is designed as a supplement for the MicroTESK verification framework and is based on the same dialect of nML.

nML-related presentations

  • Video of the "Machine-Readable Specifications of RISC-V ISA" presentation by Alexander Kamkin done at RISC-V Summit in 2018.

nML-related publications

nML Lighter

ru.hse.nml's People

Contributors

andrewt0301 avatar tombuuz avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

andrewt0301

ru.hse.nml's Issues

Support for preprocessor and revisions

Need to implement support for preprocessor directives and revisions.

List of language constructs to be supported:

Preprocessor:

 #include
 #define
 #undef
 #ifdef
 #ifndef
 #else
 #endif

Revisions:

 @rev(REV_ID)

Revision file format:

https://github.com/andrewt0301/ispras-microtesk-riscv/blob/master/microtesk-riscv/src/main/arch/riscv/revisions.xml

See example here:

https://github.com/andrewt0301/ispras-microtesk-riscv/tree/master/microtesk-riscv/src/main/arch/riscv/model

Support for the mmuSL language

We are also planning to support an nML extension called mmuSL (language for modelling memory management unit). If we have time.

For now, please create classes MmuLanguage and MmuFileType.
Also, use the same commenter as for nML (see issue #6) - need to add a corresponding record into XML.

Need a proper icon for nML files

The current icon is bad.

  1. Too large (see the picture below). The size must be 16 px. See IntelliJ icon guidelines: https://jetbrains.design/intellij/principles/icons/

  2. Not related to the domain. nML describes microprocessor architecture. So, it must be a microprocessor. Try to find something in the Internet. It must be a free icon. We do not want to violate copyrights. Or, if you can, draw something yourself.

Screen Shot 2020-04-21 at 16 14 32

Have you already tested your plugin? I suspect, no. Here is how to do this:

Screen Shot 2020-04-21 at 16 17 01

Use Intellij/Google code style

Please follow code style recommended by Intellij.

https://www.jetbrains.org/intellij/sdk/docs/basics/intellij_coding_guidelines.html

There guidelines are rather abstract. More specific recommendations are give by Google (they use a similar code style):

https://github.com/google/styleguide

For enforce this code style, please install Google code style configuration into you Intellij IDEA:

https://github.com/google/styleguide/blob/gh-pages/intellij-java-google-style.xml

Select "Intellij IDEA | Preferences | Editor | Code style | Java". See the image below.

Screen Shot 2020-04-20 at 15 37 11

File type name in XML must match the value in Java

Component names in Java classes and XML configuration file must match.

    @NotNull
    @Override
    public String getName() {
        return "Nml file";
    }

Wrong:

 -        <fileType name="Nml language" implementationClass="ru.hse.nml.NmlFileType"

Correct:

+        <fileType name="Nml file" implementationClass="ru.hse.nml.NmlFileType"

Move ANTLR files.

ANTLR files (*.g4) need to be moved to a special folder (conventions require so):

ru.hse.nml/src/main/antlr/ru/hse/nml/

Modern version of Gradle

Need a newer version of Gradle (most recent build of version 5) that can correctly work for IntelliJ IDEA 19.3.

gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-bin.zip 

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.