Package: boxlang
Boxis a text-based visual programming language inspired by Unreal Engine blueprint function graphs.$catfactorial.box┌─ƒ(Factorial)───┐                     ┌─[Branch]─────┐                       ┌─[Set]─┐│               ►┼─────────────────────┼►       True ►┼───────────────────────┼►     ►┼─────────┐         ┌─[For Loop]───────────┐                   ┌───────┐│             n ○┼──┐               ┌──┼○      False ►┼──┐  ┌──────────┐  ┌───┼○      │         └─────────┼►          Loop body ►┼───────────────────┼►      │└────────────────┘  │    ┌────────┐ │  │              │  │  │  result ○┼──┘ ┌─┼○      │                   │                      │ ┌──────────┐ ┌────┼○  *=  │┌────┐  └────┼○  >=  ○┼─┘  └──────────────┘  │  └──────────┘    │ └───────┘         ┌────┐    │                      │ │  result ○┼─┘  ┌─┼○      ││ 1 ○┼───────┼○       │                      │       ┌────┐     │                   │ 1 ○┼────┼○ start               │ └──────────┘    │ └───────┘└────┘       └────────┘                      │       │ 1 ○┼─────┘                   └────┘    │                      │                 ││       └────┘                                   │               index ○┼─────────────────┘│                        ┌────┐                  │                      ││                        │ n ○┼─┐  ┌───────┐     │                      ││                        └────┘ └──┼○  +   │     │                      ││                        ┌────┐ ┌──┼○     ○┼─────┼○ end                 ││                        │ 1 ○┼─┘  └───────┘     │                      ││                        └────┘                  │                      ││                                      ┌────┐    │                      ││   ┌─[Return]─┐                       │ 1 ○┼────┼○ step                │┌────┐ └───┼►         │                       └────┘    │           Completed ►┼────┐│ 1 ○┼─────┼○         │                                 └──────────────────────┘    │  ┌─[Return]─┐└────┘     └──────────┘                                               ┌─────────┐   └──┼►         ││ result ○┼──────┼○         │└─────────┘      └──────────┘$boxfactorial.box-e5120$boxfactorial.box-e587178291200$boxfactorial.box-ofactorial.py$catfactorial.pydef Factorial(n):if (n >= 1):result = 1for index_8b6ee4f2 in range(1, (n + 1), 1):result *= index_8b6ee4f2return resultelse:return 1Getting StartedInstall the box interpreter withpippip3 install boxlangNow open your text editor and start drawing your program! Check out existing sampleshere.Anatomy of a BoxA Box has 2 types of ports: control flow ports (─►┼─) and data flow ports (─○┼─). These ports can additionally be classified as input or output ports. All ports to the left side of a box are input ports and all ports on the right side of the box are output ports.Below, you can see a[For Loop]box which is a special type of box that the interpreter can parse - It has 1 input control flow port, 3 input data flow ports (start, end, and step), 2 output control flow ports (the loop body and completed control flows), and 1 output data flow port (the index)Function GraphsBoxprograms are function graphs. Functions have a single entry point designated by a node with the name of the Function containing a single output control flow port.Here's a simple hello world example. This example declares aGreet()function that prints the string "Hello, World!" to the console. It calls the built-in print function.Execute the above program with the box interpreter like so:$boxsamples/hello_world.box-eHello,World!Features✅ Function declarations✅ Defining constants and variables✅ Operators - Unary, binary, and assignment operators✅[Set]- set the value of variables✅ Function calls - Call Python built-in functions✅[Branch]- if-else box✅[For Loop]- Python-style for loop with (start,end,step)✅[While Loop]- Python-style while loop✅[For Each]for iterables✅[Break]and[Continue]boxes✅[Return]box to return values from functionsGotchasThe interpreter will likely fail if you have tabs in your file - replace all tabs with the appropriate number of spacesThere are a number of UNICODE character you'll need for this to work - Just look through the samples and COPY-PASTE (no, seriously)ContributingContributions are welcome, have a look at theCONTRIBUTING.mddocument for more information.LicenseThe project is available under theMITlicense.