GNU Pascal is a free Pascal compiler for 32/64-bit platforms, part of the GNU family of compilers. Implemented as a frontend to GCC (Gnu Compiler Collection), but is not part of it.
| GNU Pascal | |
|---|---|
| Type of | compiler |
| Developer | GNU Project |
| operating system | cross-platform |
| Hardware platform | cross-platform |
| License | GPL |
| Site | gnu-pascal.de |
Benefits:
- Combining Pascal Cleanliness with Real-Time Programming Techniques
- Support for the standard and extended Pascal suite in accordance with ISO, ANSI and IEEE (ISO 7185: 1990, ISO / IEC 10206: 1991, ANSI / IEEE 770X3.160-1989).
- Support for other Pascal standards (UCSD Pascal, Borland Pascal, parts of Borland Delphi, Mac Pascal and Pascal-SC) taking into account the principle of reasonableness and elegance.
- May be licensed under GNU .
- Generates code and works on any computer that has GNU C. (And this is almost any 32-bit or more bit platform for almost any OS: from DOS to HURD ).
Content
Supported Platforms
- ix86-gnu (GNU Hurd)
- ix86-linux (Linux 2.x, ELF)
- i486-linuxaout
- i486-linuxoldld
- i386-freebsd1.2.0
- AIX 4.2.1
- AIX 4.3
- DJGPP V2 (Dos)
- EMX 0.9B (OS / 2, Dos)
- Cygwin32 beta20 and higher (MS-Windows95 / 98, MS-Windows NT)
- mingw32 (MS-Windows95 / 98, MS-Windows NT)
- MSYS (MS-Windows)
- mips-sgi-irix5.3
- mips-sgi-irix6.5
- sun-sparc-sunos4.1.4
- sparc-sun-solaris2.x
- sun-sparc-solaris 2.5.1
- sun-sparc-solaris 2.6
- sun-sparc-solaris 7
- sun-sparc-solaris 8
- alpha-unknown-linux
- alpha-dec-osf4.0b
- s390-ibm-linux-gnu
Operating System Support
- GNU Hurd,
- Linux on Intel, Alpha, S390, and all other supported hardware types,
- BSD Family: FreeBSD, NetBSD, OpenBSD,
- DOS in 32 bit mode using DJGPP or EMX ,
- MS-Windows 9x / NT using Cygwin or MinGW or MSYS ,
- OS / 2 using EMX ,
- Mac OS X
- MIPS-SGI-IRIX,
- Alpha-DEC-OSF,
- Sparc - Sun - Solaris ,
- HP / UX
It can serve as a cross-compiler , transferring code between these systems. Generates very high quality code for all of these systems. It is free software in accordance with GNU . Compatible with other debugging and development tools such as GNU C, gdb , etc.
Language Construct Support
- From standard Pascal: Many compilers extend the syntax of standard Pascal, realizing, however, the source is not completely, missing very important points:
- Support for arrays as parameters of a procedure / function in the form
Arr: array [a..b] of Integer;
where a and b indicate the beginning and end of the Arr array. - The ability to pass local procedures as parameters with full access to all variables of the parent procedure.
- Automatic file extending the capabilities of Put and Get procedures.
- Eight boolean elements packed in an array or structure occupy exactly 1 byte.
- Support for temporary files: you do not need to think about the file name and delete it later.
- Global goto: You can go anytime, anywhere, not limited to the current procedure.
- Automatically configure options and record options in New.
- Set without size restrictions.
- Support for arrays as parameters of a procedure / function in the form
- From Extended Pascal:
- Lines of unlimited length.
- ReadStr, WriteStr - writing and reading to a string, like WriteLn, ReadLn.
- System independent time / date routines.
- Iterations over the set:
for Ch in ['A' .. 'Z', 'a' .. 'z'] do ... - Extended set support.
- Creation of Succ and Pred-functions: Foo: = Succ (Bar, 5);
- Complex numbers
- Power operators with complex numbers support
- Initialization of Variables
- Functions can return arrays and structures
- Module support
- Non-decimal style support: base # number
- MinReal, MaxReal, EpsReal, MaxChar - constants
- Support for dynamic arrays without dirty tricks
- Local parameters can be set only at the entrance to the procedure size (dynamic size)
- Access only to the part of the array on the left side of the assignment
Arr1(3..5) := Arr(4..6);
- From Borland Pascal:
- Support for units, objects , etc. Even absolute style tricks are made portable.
- Support for a full set of standard units
- Support for network CRT: the program can run on one computer, and the result of its work can be seen on another, there is also support for overlapping windows
- The Random procedure even produces the same sequence of random numbers as BP Random ()
- BP style procedural variables support
- Support for arrays and procedures that allow access to I / O ports of the processor
- Distributed with binobj program running like BP
- From Delphi
- Abstract types and methods
- Comments in the style of //
- Empty parameter list: ()
- Assertions Support
- Initialize and Finalize to manage low level variables
- Initialize and Finalize sections for modules
- From Pascal-SC
- User Defined Operators For example, adding vectors with the simple + operator.
- GNU extensions:
- 64-bit signed and unsigned integer types
- Code execution support for other programming languages
- Pascal code insertion into other programming languages
- Support for BitSizeOf (), ConvertFromBigEndian () , etc. procedures to increase portability of programs to other platforms
- Support for DirSeparator, PathSeparator, GetTempDirectory will make the program more portable
- PExecute - portable program launch for multi-tasking systems
- Functions FSplit, FSearch, FExpand - know about the features of the OS
- FormatTime - gives out time according to certain rules
See also
- Free pascal
- Gcc
Links
- GNU Pascal Website
- Standard Pascal - Related materials and history of the original, standard Pascal language
- Pascal User's Group Newsletters - A resource on the early history of the language, containing many letters from Wirth and other developers regarding the Pascal language
- Pascal and its Successors - Nicklaus Wirth's article on developing the Pascal, Modula-2, and Oberon languages