#architecture #parser #design #feakin #language #ai #dsl

fkl_ext_loader

Feakin is a architecture design and visual collaboration tool. This is the parser for Feakin.

1 unstable release

0.4.0 Nov 10, 2022

#8 in #feakin

MPL-2.0 license

41KB
1K SLoC

Fklang

Build Crates.io codecov

origin idea from Forming, but it's too complex. So I decide to rewrite it with TypeFlow

Fklang,一个基于软件开发工业化思想设计的架构 DSL。 通过显式化的软件架构设计,以确保软件系统描述与实现的一致性,并探索结合 AI 代码生成。

Try it: Feakin Quick Start

Spec: Feakin Specification

Install

cargo install fkl_cli

Modules

  • Parser
    • fkl_mir. the intermediate representation of fklang
    • fkl_parser. parser for fkl.
    • fkl_parser_wasm. wasm wrapper version of fkl_parser.
  • CLI. CLI for generator code and IDE support.
    • fkl_cli. the cli for fkl, like code_gen, dot_gen or others.
  • LSP. language server protocol, for IDE/Editor Support
    • fkl_lsp. language server for fkl.
  • CodeGen. code generator for fkl.
    • fkl_codegen_dot. generate Graphviz dot language from fkl source.
    • fkl_codegen_java. generate Java code from fkl source.
  • Plugin System
    • fkl_ext_loader. load external plugins for fkl.
    • fkl_ext_api. the api for external plugins.
    • plugins
      • ext_kafka. the plugin for kafka.
      • ext_computing. the plugin for computing.
      • ext_codegen_aws. the plugin for aws codegen.
      • ext_sourceset_swagger. the plugin for swagger.

Roadmap

  • DSL Design
  • IDEA Plugin
  • Code gen
    • with Spring
      • Controller
      • DDD
  • contract base testing
    • mock server
    • with HTTP API
  • database integration: JPA, JDBC, etc.
    • database integration
      • MySQL
      • PostgresSQL
    • database schema generation
    • database migration
  • plugin system
    • plugin api
    • plugin registry
  • simple expr
    • Expr
      • logic expr
      • math expr
      • etc.
    • Filter
    • REPL
    • ExprTk with Rust?
  • module support
    • module dependency
    • module versioning
  • bootstrapping DDD DSL
    • use type system to describe domain model
  • build system inside: cache, incremental build, etc.
    • better code generation
  • general programming language (if possible)
    • function support
    • expression support

License

@2022 This code is distributed under the MPL license. See LICENSE in this directory.

Dependencies

~1.5–2.6MB
~73K SLoC