LEX/YACC compiler, compiles a subset of Pascal into a subset of C.
Source code and examples
All the source code and examples are online here: https://github.com/pmav/kpascal-compiler.
Example
The following file is an example of a program in kpascal.
program Fibonacci;
var n, f, max: integer;
function fibonacci(n : integer) : integer;
begin
if n = 0 or n = 1 then
begin
fibonacci := n;
end;
else
begin
fibonacci := fibonacci(n - 1);
fibonacci := fibonacci + fibonacci(n - 2);
end;
end;
begin
max := 20;
n := 1;
while n <= max do
begin
f := fibonacci(n);
writeln('fibonacci(', n,') = ', f);
n := n + 1;
end;
end.