Skip to content

Esolang-NET/Funge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

145 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Esolang.Funge

.NET

Quick Start (Generator)

Write Funge-98 once, call it as a C# method.

using Esolang.Funge;

Console.WriteLine(FungeSample.HelloWorld());

partial class FungeSample
{
    // File-based
    [GenerateFungeMethod("Programs/hello.b98")]
    public static partial string HelloWorld();

    // Or inline — no .b98 file needed
    [GenerateFungeMethod(InlineSource = "64+\"!dlroW ,olleH\">:#,_@")]
    public static partial string HelloWorldInline();
}

// output:
// Hello, World!
// Hello, World!

Generator Guide

For detailed Generator signatures and patterns, see:

Generator Signatures

Attribute Argument partial Method Parameters (Input) partial Method Return Types (Output)
string (Path/Inline) TextReader?, PipeReader?, byte[]? void, string, string?, int, Task, ValueTask, IEnumerable<byte>, IAsyncEnumerable<byte>

For runnable examples, see:

Funge-98 Support Status

Area Status
Core Funge-98 instructions
3D navigation (h l m)
Coordinates and storage space ✅ 3D (X,Y,Z)
Fingerprint load/unload (( )) ✅ Full dispatch (requires fingerprint registration)
Fingerprint instructions (AZ) ✅ Dispatched when fingerprint loaded; reflects otherwise
File I/O (i o)
System exec (=)
System info (y)

Details:

Fingerprint Support

Built-in fingerprints shipped with this repository:

Fingerprint Handprint Package Status
NULL 0x4E554C4C Esolang.Funge.Abstractions ✅ All 26 instructions reflect
FILE 0x46494C45 Esolang.Funge.Fingerprints.File ✅ C D G M O P R S W

To register fingerprints with the Generator, use [FingerprintsProvider] — see Generator README.

Install

dotnet add package Esolang.Funge.Generator
dotnet add package Esolang.Funge.Parser
dotnet add package Esolang.Funge.Processor
dotnet tool install -g dotnet-funge

Choose Package

Want to do Package
Generate C# methods from Funge-98 at compile time Esolang.Funge.Generator
Parse source into a FungeSpace Esolang.Funge.Parser
Execute Funge-98 in-process Esolang.Funge.Processor
Implement or use built-in fingerprints Esolang.Funge.Abstractions
Use FILE fingerprint (file I/O) Esolang.Funge.Fingerprints.File
Run Funge-98 from CLI dotnet-funge

NuGet

Project NuGet Summary
dotnet-funge NuGet: dotnet-funge Funge-98 command-line interpreter.
Esolang.Funge.Generator NuGet: Esolang.Funge.Generator Funge-98 source generator.
Esolang.Funge.Parser NuGet: Esolang.Funge.Parser Funge-98 source parser.
Esolang.Funge.Processor NuGet: Esolang.Funge.Processor Funge-98 execution engine.
Esolang.Funge.Abstractions NuGet: Esolang.Funge.Abstractions Fingerprint abstractions and built-in fingerprints.
Esolang.Funge.Fingerprints.File NuGet: Esolang.Funge.Fingerprints.File FILE fingerprint (file I/O).

Framework Support

Project Target frameworks
Esolang.Funge.Generator netstandard2.0
Esolang.Funge.Parser net8.0, net9.0, net10.0, netstandard2.0
Esolang.Funge.Processor net8.0, net9.0, net10.0
Esolang.Funge.Abstractions netstandard2.0, netstandard2.1, net10.0
Esolang.Funge.Fingerprints.File netstandard2.0, netstandard2.1, net10.0
dotnet-funge net8.0, net9.0, net10.0

Changelog

License

This project is licensed under the MIT License - see the LICENSE file for details.

See also

About

A modular and extensible .NET implementation of the Funge‑98 family, designed with a unified execution model and generator architecture.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages