fCompiler
Designed by | User:I am islptng |
---|---|
Appeared in | 2023 |
Computational class | Metalanguage |
Reference implementation | Python |
Influenced by | Subleq |
File extension(s) | .fcma |
fCompiler is a meta-language by islptng, where the idea is from 2023 and finally gets implemented in 2025 with a slightly different syntax.
Intro
When you play some games that require you to write large assembly programs, won't you feel bad?
This is what that come to my mind when I was playing the game "Turing Complete" and writting Subleq programs.
However, users must build up an environment by themselves -- There's NOT any predefined functions!
This allows for flexibility -- It, unlike those which can only compile to certain machine code, can compile to anything if you want!
Syntax
Comments
We have only one form of comments: ;
.
From the semicolon, to the next line break, is comment.
Keywords
Initially, there's only 5 keywords: "funct","struct","const","key" and "end".
"const"'s usage:
const a 1
Defines a constant named "a" with value "1".
"funct"'s usage:
funct name ; some code here end
Defines a function. You can use %1%
to represent the 1st argument, %2%
to represent the 2nd argument, and so on.
%u%
will be replaced by a unique ID that, on each function call, returns different value.
"struct"'s usage:
struct name ; some code for "name" here key midname ; some code for "midname" here key ; some code for "end" here end
Defines a structure. Like funct
, use %n%
and %u%
for arguments.
Compile to...
It depends on what you write after an exclamation mark. for example, !Hello, world! causes the interpreter to print "Hello, world!".
To call a structure/function
Just write the name and pass in arguments by writing after the name with a space. Nothing will happen when you have passed wrong number of arguments.
Examples
Hello, world!
!Hello, world!
Infinite loop
funct a b end funct b a end a