A diagnostic library for parser / interpreter usages.

Overview

Nenggao

Makes diagnostic easier! A diagnostic library for parser / interpreter usages.

image image

About

Nenggao is a diagnostic library mainly designed for Yakou Lang's compiler, though it's target for Yakou's development, you can still use it in your own project with its api, which has very good extendibility for customization.

Limitations

Yes, I'm about to say this, this library is still not powerful enough to handle several scenarios, such as multi reference to same position. To avoid this, you should:

  • Break up your error message, this can keep up readability

Here's a list of unworkable examples:

  • Multiple Multiline labels refer to same line
  • Multiple Single line label's span conflicted

License

This work is licensed under the MIT license.

Copyright (c) 2022 ChAoS-UnItY, all rights reserved.

You might also like...

Nrich is a Java library developed at CROZ whose purpose is to make development of applications on JVM a little easier.

nrich Nrich is a Java library developed at CROZ whose purpose is to make development of applications on JVM a little easier. It contains modules that

Nov 12, 2022

Image Cropping Library for Android

Image Cropping Library for Android

uCrop - Image Cropping Library for Android This project aims to provide an ultimate and flexible image cropping experience. Made in Yalantis How We Cr

Jan 2, 2023

An Android library for managing images and the memory they use.

An Android library for managing images and the memory they use.

Fresco Fresco is a powerful system for displaying images in Android applications. Fresco takes care of image loading and display, so you don't have to

Jan 3, 2023

Powerful and flexible library for loading, caching and displaying images on Android.

Powerful and flexible library for loading, caching and displaying images on Android.

Universal Image Loader The great ancestor of modern image-loading libraries :) UIL aims to provide a powerful, flexible and highly customizable instru

Jan 2, 2023

An image loading and caching library for Android focused on smooth scrolling

An image loading and caching library for Android focused on smooth scrolling

Glide | View Glide's documentation | 简体中文文档 | Report an issue with Glide Glide is a fast and efficient open source media management and image loading

Dec 31, 2022

MFP (Mathematic language For Parallel computing) Android library

MFPAndroLib This is MFP (Mathematic language For Parallel computing) Android library project. MFP is a novel scripting programming language designed a

Sep 5, 2022

Portaudio4j - An exploratory project to interact with the PortAudio C library using Java's FFI (Panama) APIs

Examples of PortAudio called by Java's Panama APIs JEP 412. At the moment this is purely exploratory (still kicking the tires) as it progresses in the

Dec 29, 2021

Tzatziki - Decathlon library to ease and promote Test Driven Development of Java microservices!

Tzatziki Steps Library This project is a collection of ready-to-use Cucumber steps making it easy to TDD Java microservices by focusing on an outside-

Dec 15, 2022

Trust-java - Test Results Verification library for Java

TRUST - Test Results Verification library for Java The TRUST's primary goal is to provide the simple way of different test results verification. Gener

Nov 19, 2017
Comments
  • Make data-holder classes abstract + code cleanup

    Make data-holder classes abstract + code cleanup

    • Resolve #4, makes data-holder classes abstract, including:
      • Span -> AbstractSpan
      • Position -> AbstractPosition
      • Label -> AbstractLabel
      • Error & Warning (partial members) -> Report (field migration only)
    enhancement 
    opened by ChAoSUnItY 0
  • Make data-holder classes abstract

    Make data-holder classes abstract

    Proposal

    Motivation

    This proposal can benefit different JVM langauges for using their own data-holder class, like data class from Kotlin or case class from Scala, with additional pros, such as structural equality and auto-generated toString and hashCode.

    Classes need to be abstract

    • [x] Position
    • [x] Span
    • [x] Label
    enhancement 
    opened by ChAoSUnItY 0
Releases(1.4.2)
  • 1.4.2(Dec 18, 2022)

  • 1.4.1(Dec 16, 2022)

    • Add official implementations of Nenggao data-holder classes for Kotlin's data class and Scala's case class

    Note: Do not use!

    This build would lead to failure, use 1.4.2 or later versions instead.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Dec 16, 2022)

    • Make data-holder classes abstract. This gives more flexibility to override original class, see proposal #4 for more information. This change includes class:
      • Span -> AbstractSpan
      • Position -> AbstractPosition
      • Label -> AbstractLabel
      • Warning & Error (Partially) -> Report (only fields are effected)
    • Make FileReportBuilder accepts abstract classes metioned in previous statement.
    • FileReportBuilder internal code cleanup.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Nov 4, 2022)

    • Refactor Source & SourceCache.
      • Source now extends ArrayList<@NotNull Line>
      • SourceCache now extends HashMap<@NotNull File, @NotNull Source>
    • Minor refactors in report functions
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Jul 15, 2022)

  • 1.2.0(Jul 15, 2022)

    1.2.0

    • Skip lines rendering when report's span is too wide & several conditions met.
    • Support hint rendering.
      • Rendered under bright blue text color by default.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.3(Jun 15, 2022)

    1.1.3

    • Add utility methods to check stored reports' overall status in FileReportBuilder
      • containsError()#boolean
      • containsWarning()#boolean
      • containsReport()#boolean
    • Add utility methods to directly add report instances
    • Add dump method for reusing builder purpose
    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(Jun 15, 2022)

    1.1.2

    • Make source name customizable
    • Automatically add linebreak to custom source if no linebreak in the end of string
    • Allow label's message formatting
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jun 14, 2022)

  • 1.1.0(Jun 14, 2022)

  • 1.0.6(Jun 14, 2022)

  • 1.0.5(Jun 14, 2022)

  • 1.0.4(Jun 13, 2022)

  • 1.0.3(Jun 13, 2022)

  • 1.0.2(Jun 13, 2022)

  • 1.0.1(Jun 13, 2022)

  • 1.0.0(Jun 13, 2022)

Owner
ChAoS_UnItY
Tawainese programmer, now stuying in CSIE.
ChAoS_UnItY
Idk. Simple argument parser for u. Probably needs some changes xd

SimpleArgumentParser Maven <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <de

なるみ 6 Sep 30, 2022
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.

Tinker Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk. Getting started Add t

Tencent 16.6k Dec 30, 2022
Z is a Java library providing accessible, consistent function combinators.

Fearless function combination in Java Techniques Unlock your functional programming potential with these combination techniques: Fusion Z.fuse(fn1, fn

J.R. 27 Jun 13, 2022
This is a small library written in Java for minecraft login.

minecraft-auth-library This is a small library written in Java for minecraft login. Usage: Login with microsoft MinecraftAuthenticator minecraftAuthen

Sandro 7 Feb 5, 2022
SpringBoot show case application for reactive-pulsar library (Reactive Streams adapter for Apache Pulsar Java Client)

Reactive Pulsar Client show case application Prerequisites Cloning reactive-pulsar Running this application requires cloning https://github.com/lhotar

Lari Hotari 9 Nov 10, 2022
A bitcoin explorer Java library that utilizes multiple data sources at once.

Bitcoin Explorer A bitcoin explorer library that utilizes multiple data sources at once. Branch Build Unit Tests master development Table of Contents

Scorpius 3 Jan 31, 2022
A lightweight messaging library that simplifies the development and usage of RabbitMQ with the AMQP protocol.

kryo-messaging This library contains a simple MessagingService which simplifies the setup and work with RabbitMQ and the AMQP protocol. Usage Gradle r

Kryonite Labs 3 Jan 10, 2022
A networking library for LibGDX utilizing Netty allowing easy creation of multiplayer games.

Lunar What is Lunar? Lunar is a networking library for LibGDX. With lunar you can easily create multiplayer games quickly and efficiently. Lunar provi

Vrekt 28 Nov 25, 2022
A complete and performing library to highlight text snippets (EditText, SpannableString and TextView) using Spannable with Regular Expressions (Regex) for Android.

Highlight A complete and performing library to highlight text snippets (EditText/Editable and TextView) using Spannable with Regular Expressions (Rege

Irineu A. Silva 16 Dec 22, 2022
A lightweight and extensible library to resolve application properties from various external sources.

Externalized Properties A lightweight and extensible library to resolve application properties from various external sources. Twelve Factor Methodolog

Joel Jeremy Marquez 20 Nov 29, 2022