FUNC FACT (N);
NAME: R;
1 -> P;
FOR I FROM 1 TO N ::
R * I -> R
ALL
RES: R
KNC;
FOR N FROM 0 TO 6 ::
? "FACT(", N, ") = ", FACT(N)
ALL; FUNC FACT (N);
NAME: R;
1 -> P;
FOR I FROM 1 TO N ::
R * I -> R
ALL
RES: R
KNC;
FOR N FROM 0 TO 6 ::
? "FACT(", N, ") = ", FACT(N)
ALL;1. "ИМЕНА" is plural, so instead of "NAME:" it's a bit more appropriate to use "NAMES:". Probably should be "VARIABLES" or "VARS" in modern context.
2. You've got few typos mixing "R" and "P". Should be "R" everywhere.
3. Instead of "ALL" you should use "DONE".
4. Instead of "KNC" you should use "END".
So it would look like this:
FUNC FACT (N);
NAMES: R;
1 -> R;
FOR I FROM 1 TO N ::
R * I -> R
DONE
RES: R
END;
FOR N FROM 0 TO 6 ::
? "FACT(", N, ") = ", FACT(N)
DONE;replace cyrillic w/ russian and it'd be ok.
КНЦ = end (конец in russian is end). However, in bulgarian in means 'thread' (as in sewing thread) and it has lots its meaning of end, aside from 'from needle to thread' expression where it means from the tip of the needle to the end of the thread.
Also 'ALL' (и все = it's over/that's all), which should be 'end' as in begin/end in pascal.
The main point still stands - it's Pascal.
You can use "конец" for "end" in Bulgarian too, even though it's antiquated.
it's in the original post
indeed, my bad
With that being said, I do think it's harder to make a clear programming language based on is a Slavic language, due to all the case and gender forms.
FUNC FACT (N);
NAMES: P; (* variable names *)
1 -> P;
FOR I FROM 1 TO N ::
P * I -> P
DONE (* endif *)
RET: P (* return value *)
END; (* end of function *)
FOR N FROM 0 TO 6 ::
? "FACT(", N, ") = ", FACT(Н) (* print *)
DONE;Also, «ВСЕ» feels like «ВСЁ» in this context, I’d translate that as “that’s all”.
Everyone's happy, head of development celebrates his 3rd degree Lenin's premium.