Skip to content

The web demo of the implementation of Ultimate Conditional Syntax in MLscript. This is a part of the artifact for paper "The Ultimate Conditional Syntax".

Notifications You must be signed in to change notification settings

hkust-taco/ucs-web-demo

Repository files navigation

Web Demo for Ultimate Conditional Syntax

This project is a part of the paper The Ultimate Conditional Syntax for OOPSLA 2024 Artifact Evaluation.

Project Structure

This project follows the structure of a modern web frontend project. According to their functions, they can be classified as follows.

  • UI components: components/**/*.
  • Configurations for the build tool: vite.config.js.
  • Type annotations: @types/*.d.ts, vite-env.d.ts.
  • Container: Dockerfile, .dockerignore.
  • Editor-related configurations: .vscode/*.
  • HTML template: index.html.
  • Tailwind CSS configurations: tailwind.config.ts, postcss.config.js.

The main code that makes up the web demo is in the lib folder. The purpose of the file inside is as follows.

  • lib/codemirror: Themes for CodeMirror.
  • lib/examples: The source of code examples.
  • lib/mlscript: MLscript language support for CodeMirror.
  • lib/store: Each file represents a store of states used throughout React components.
  • lib/tutorials: The source of tutorials for MLscript.
  • lib/utils: Some utility functions.

External Dependencies

This project uses the following external dependencies, which are used only for creating the web demo. The core algorithms of the artifact and the paper are not implemented by these external dependencies.

  • React: Build web interfaces in a functional way and provide the management of state and effects.
  • Vite: The build tool and development server.
  • CodeMirror: An extensible code editor component.
  • Lezer: A incremental parser framework used by CodeMirror.
  • jotai: Advanced state management for React.
  • Tailwind CSS: The CSS framework.
  • Zod: Type validation for JavaScript values.
  • Radix UI: A collection of UI components.

The remaining dependencies are purely utility, such as nanoid, pluralize, etc. These will not be elaborated here. People can check the package.json file to see all dependencies.

Apart from the libraries mentioned above, there are also some resource dependencies.

About

The web demo of the implementation of Ultimate Conditional Syntax in MLscript. This is a part of the artifact for paper "The Ultimate Conditional Syntax".

Resources

Stars

Watchers

Forks