Inno Pascal 0.1.4
Copyright (C) 2000 Jordan Russell
For conditions of distribution and use, see LICENSE.TXT.
Home page: http://www.jrsoftware.org/
Current Inno Pascal home page: http://other.jrsoftware.org/ip/
E-mail: jr @ jrsoftware.org
Miscellaneous notes
Some limitations of existing features:
- The linker currently has a limit of 512 bytes on the code and import data sections. This would not be difficult to fix; I just haven't gotten around to it yet.
- Only supported types are Integer, Cardinal, Longint, LongWord, and PChar. (Actually there are smaller types like Bytes, Words, etc. but they don't work yet; don't use them.)
- Expressions are supported in variable assignments, but they must be surrounded by "expr()". For example: "A := expr(1 + 2 * 3);". Four operators are currently supported: + - * div; parentheses may also be used. Functions may be called inside expressions. The code generated by expressions is far from optimal; every term is pushed and popped from the stack.
- Functions cannot be called inside a function's parameter list, e.g. "MessageBox(0, GetCommandLine, 'Title', MB_ICONQUESTION);". Also, expressions can't currently be used in a function's parameters list either.
- While it supports declaration of local variables, they are actually internally stored as global variables (like "static" variables in C). So don't try recursively calling a procedure yet.
- Non-external procedures can't take parameters yet (since it doesn't have any stack handling support yet).
- stdcall is the only supported calling convention
Important features it's lacking:
- "if"s
- boolean expressions (i.e. A <> B)
- ... and more
Interesting things it already supports:
- Compiler warns about uninitialized and unused variables. (Still needs some work, however. "A := MessageBeep(A)" doesn't warn about A being uninitialized.)
- Compiler automatically removes unused variables, imports, and procedures.
- It supports procedures and nested procedures. Constants, variables, and procedures declared inside a procedure are local only to that procedure.
Credits
Others who have contributed to the project:
- Developers of mwEdit/SynEdit - the excellent syntax highlighting code editor used in the IDE.
- Michael Hieke - improvements to IDE's editor, debugger, and compiler.