Swift library for parsing and analyzing the FE pseudo-language.
- Swift 6.0+
- macOS 13.0+ / iOS 17.0+ / Linux
Package.swift:
dependencies: [
.package(url: "https://github.com/fumiya-kume/FeLangKit.git", from: "1.0.0")
]Xcode:
- File > Add Packages...
https://github.com/fumiya-kume/FeLangKit.git- Add the product you need:
FeLangCore,FeLangKit,FeLangRuntime, orFeLangServer
import FeLangCore
let tokenizer = Tokenizer(input: "x ← 1 + 2")
let tokens = try tokenizer.tokenize()
let expressionParser = ExpressionParser()
let expression = try expressionParser.parseExpression(from: tokens)
let statementParser = StatementParser()
let statements = try statementParser.parseStatements(from: tokens)import FeLangRuntime
let interpreter = Interpreter.withCustomIO(
printHandler: { text in /* Display output in UI */ },
inputHandler: { /* Get input from UI */ return nil }
)
try interpreter.execute("x: integer ← 42\nprint(x)")import FeLangServer
let (server, transport) = LanguageServer.createInMemory()
Task { await server.run() }
await transport.sendInitialize()
await transport.sendDidOpen(uri: "file:///main.fe", content: sourceCode)
for await message in transport.output {
switch message {
case .response(let response):
// Handle response
case .notification(let method, let params):
// Handle diagnostics etc.
}
}FeLangCore: tokenizer, expression parser, statement parser, utilitiesFeLangRuntime: interpreter/runtimeFeLangKit: convenience umbrella for core + runtimeFeLangServer: diagnostics support (server-side usage)
- Architecture:
docs/ARCHITECTURE.md - Testing:
docs/TESTING.md - Development:
docs/DEVELOPMENT.md - Migration:
docs/MIGRATION.md - Design docs:
docs/design/ - Performance notes:
docs/KEYWORD_PERFORMANCE_BENCHMARKS.md
MIT. See LICENSE.