/ls4rexx

ls4rexx is a REXX specific implementation of the Language Server Protocol

Primary LanguageJavaEclipse Public License 2.0EPL-2.0

ls4rexx

ls4rexx is a REXX specific implementation of the Language Server Protocol and can be used with any editor that supports the protocol.

I have started this project since I did not find any open source Eclipse IDE plugin for this language. REXX is widely used on the Mainframe platform comparable to Perl on Unix. Since I use this language on a daily basis I thought it worth my while to have a look into how much work it would be to implement an editor support for this language.

This is still a work in progress and as the license states there is no guarantee that this project will be helpful to anyone (or ever be finished). I do not plan a full syntax check for the language and think of this project more in the line of a good-enough-support for the developer to help with navigation and code completion.

The server is based on:

  • Eclipse lsp4j, the Java binding for the Language Server Protocol.
  • JFlex, a lexical analyzer generator (also known as scanner generator) for Java, written in Java.

I want to give kudos to Angelo Zerr whose implementation of the XML Language Server (LemMinX) helped me to understand how to implement a language server using Eclipse lsp4j.

Features

Good-Enough-Support

This language server thinks more in terms of Iron Man than of Ultron. The idea is to support the developer while editing but not to provide take over the responsibility to write correct syntax. Therefore the source files are just scanned but not parsed into an abstract syntax tree. Using the features should help during typing and navigating, but there is no guarantee that e.g. a completion hint will be proper syntax for the current cursor position.

Features in progress

My current TODO list...

Get started

Use use the Eclipse Installer to create a separate Eclipse installation to work on the projects ls4rexx and rexx4e.

Start the Eclipse Installer in Advanced mode. Select Eclipse IDE for RCP and RAP developers as the product. Product Version should be Photon if you want to target IBM Developer for z/OS (starting from version 15.x) or Compuware Topaz Workbench (starting from version 20.x). On the projects page add an Eclipse Project with the URI https://raw.githubusercontent.com/generaliinformatik/rexx4e/master/rexx4e.setup and select the Rexx4e project. After finishing the installation and the start of the project the result is:

  • missing plugins will be added to the product
  • repositories will be cloned and imported
  • repositories will be built using maven

A more manual approach is

  • Clone this repository
  • Open the folder in your terminal / command line
  • Run ./mvnw clean verify (OSX, Linux) or mvnw.cmd clean verify (Windows)
  • After successful compilation you can find the resulting ls4rexx-{version}-jar-with-dependencies.jar in the folder target

Developer

To debug ls4rexx you can use de.generali.dev.ls.test.LServerSocketLauncher:

  1. Run the de.generali.dev.ls.test.LServerSocketLauncher in debug mode (e.g. in eclipse)
  2. Connect your client via socket port. Default port is 5008, but you can change it with start argument --port in step 1

Clients

Currently there is only the following client available:

  • Eclipse IDE support with rexx4e

Licenses

ls4rexx is published under the Eclipse Public License 2.0

Building and Contributing

To build and contribute to ls4rexx consult the Contributing Guilde

Acknowledgements

This projects makes use of third party projects. Refer to the Acknowledgements Information