Go to the first, previous, next, last section, table of contents.

# GPC--Gnu Pascal Random Notes

- a bison parser for GPC (the parser is a ISO 7185 standard pascal parser with extensions (like casts, type of, address of vars, inline, return, break, continue, otherwise and so on...)
- code (glue) that can be used to convert the Pascal way of defining things to use routines in a modified `c-decl.c`. This mainly does re-ordering of the data structures. The glue lives in `gpc-parser.y` or in `gpc-util.c`.
- VAR parameters for Pascal routines Now done with REFERENCE_TYPE. Until the REFERENCE_TYPE is implemented as in C++, I just get rid of this type as soon as possible by converting it to POINTER_TYPE in as few places as possible. Currently affects `gpc-parse.y`, `actualparameterlist()` and `default_conversion()`.
- redeclaration of standard identifiers (NOT reserved words) This requires a change in `tree.def` sometime in the future; currently I am mis-using Tiemann's FRIEND_DECL TREECODE which looks exactly like my KNOWNID_DECL would look like. So maybe there is no need to add it at all for Pascal.
- run time system & routines that generate calls to the rts. The old one Antti Louko & I originally wrote back in -85 when I ported another Pascal compiler (Pax) to BSD Vax. Pax compiler is written in Pascal, and it runs on Twenex and Unix. (Very good error reporting capabilities.) More info on request.
- WITH statement should work properly. No information of WITH is currently given to the debugger.
- variant records These should work. Added routine find_field() that returns a chain of TREE_LIST nodes and modified build_component_ref() to work as follows: When `gpc-parse.y` builds a variant record, it constructs an unnamed RECORD_TYPE containing the possible variant selector field and an unnamed UNION_TYPE node. `When find_field()` sees unnamed RECORD_TYPE or UNION_TYPE nodes implicitely propagates to the inner layer of the definition. It then returns the TREE_LIST chain of this propagation and this is modified to a series of build(COMPONENT_REF,...) for all propagated RECORD_TYPE nodes, which the rest of gcc will handle. This does NOT YET check variant access errors... When thinking about it, it does not check very many other things either, so maybe no one will notice this :-)
- Arrays with non-zero lower bound Required some changes to `expr.c.`

Go to the first, previous, next, last section, table of contents.