home *** CD-ROM | disk | FTP | other *** search
-
-
- Summary of changes to "p2c"
- ------- -- ------- -- ---
-
-
- Version 1.20:
-
- * Changed VAX "type t = [byte] 0..255" not to say it can't interpret size.
-
- * Changed to use a temp var when passing a constant to a VAR parameter.
-
- * Changed to avoid initializing char arrays with string literals in pre-ANSI.
-
- * Changed to make arithmetic involving character literals more readable.
-
- * Changed to accept empty parentheses in function declarations (for Modula 2).
-
- * Made more changes for VAX and MSDOS compatibility (thanks to William Bader).
-
- * Added support for PACK and UNPACK procedures (finally!).
-
- * EMBED lines beginning with `#' are no longer indented.
-
- * EatComments no longer eats EMBED comments.
-
- * Reworded "File paramter needs associated buffers" to suggest StructFiles.
-
- * Added ability to eliminate "if false" and "if true" if ElimDeadCode = 2.
-
- * Bug fix in funcs.c:handleread/write_text: Treated case where fex is a PAC.
- Symptom: VAX Pascal readv/writev failed when "string" was an array of chars.
-
- * Bug fix in expr.c:makeexpr_charcast: Watch for mp->val.type == NULL case.
- Symptom: Reference to NULL error when referring to some CONST names.
- (Also fixed this bug in various other places.)
-
- * Bug fix in expr.c:eval_expr_either: Check for TK_INTEGER, not tp_integer.
- Symptom: Constant exprs involving +, *, etc. could not always be evaluated.
-
- * Bug fix in pexpr.c:p_factor:MK_SPECIAL case: Added "target &&" check.
- Symptom: Reference to NULL in VAX Pascal "open(..., ..., new)".
-
- * Bug fix in p2clib.c:my_memcpy etc.: Use n-- > 0 instead of --n >= 0.
- Symptom: Didn't work when size_t is an unsigned integer type.
-
- * Bug fix in p2clib.c:ipow: Changed 1<< to 1L<< (also in set functions).
- Symptom: Didn't work on 16-bit target machines.
-
- * Bug fix in funcs.c:handleread_text: Write %g for float, %lg for double.
- Symptom: Bad code for reading a "single" or "shortreal" variable.
-
- * Added to sys.p2crc/trans.h the following configuration parameter:
-
- InitPACStrings String literal in initializer can be size of array.
-
- Version 1.19:
-
- * P2c's copyright has been assigned to the Free Software Foundation.
-
- * Improved p2c to preserve Pascal type names in most cases.
-
- * Introduced "PreserveTypes" (PreserveTypes=0 makes p2c work like v1.18).
-
- * Also added "PreservePointers" (default off) and "PreserveStrings" (on).
-
- * Changed p2c.h to recognize funny ANSI-like header files in HP-UX 7.0.
-
- * Changed to handle taking the address of an argument of a promotable type.
-
- * Changed parser to accept "a * -b" without syntax errors.
-
- * Fixed a few unreachable statement warnings in the p2c sources.
-
- * Changed exit(0) to exit(EXIT_SUCCESS) in main program.
-
- * Added support for VAX C and MSDOS to p2c.h.
-
- * Bug fix in parse.c:fixblock: Call filebasetype in similartypes arg.
- Symptom: Pascal GET procedure sometimes crashed p2c when StructFiles=1.
-
- * Bug fix in pexpr.c:p_funcarglist: Handle stdin/stdout when StructFiles=1.
- Symptom: myproc(output) generated "type mismatch" warning and bad code.
-
- * Bug fix in expr.c:makeexpr_rel: Use ISCONST to guard checkconst call.
- Symptom: "J <= A-I-1+C" where "const C=1" put p2c into an infinite loop.
-
- * Bug fix in decl.c:setupmeaning: Consider enum consts to be global names.
- Symptom: Local enum consts can conflict with similar global names.
-
- * Bug fix in lex.c:push_input/pop_input: Save/restore curtokbuf/curtokcase.
- Symptom: Value lost when main calls defmacro after setup_lex, before parser.
-
- * Bug fix in parse.c:out_function: Don't recursively output "exported" funcs.
- Symptom: This occurs when an "external" decl occurs local to a function.
-
- * Bug fix in p2c.h:AGETFBUF: Removed extra "&".
- Symptom: Taking address of an array generated a warning on some compilers.
-
- * Bug fix in p2c.h:LONG_MAX, etc.: Fixed to cast back to signed types.
- Symptom: LONG_MAX had type unsigned long; "(double)(-LONG_MAX)" failed.
-
- * Bug fix in p2clib.c:P_trimname: Added trailing null to output string.
- Symptom: Function wouldn't always work after first call.
-
- * Added to sys.p2crc/trans.h the following configuration parameter:
-
- FixPromotedArgs Fix "&" of arguments which may be promoted.
- PreserveTypes Use typedef to preserve most Pascal type names.
- PreservePointers Use typedef specifically for pointer types.
- PreserveStrings Use typedef specifically for string types.
- SpaceCommas Use spaces after commas (default on).
- SpaceFuncs Use spaces after function names (default off).
- NoBanner Suppress "From input file..." comment at top of file.
-
- Version 1.18:
-
- * Improved indentation strategy for EMBED comments.
-
- * Allowed one-line EMBED comments: {EMBED foo();}
-
- * Made {SKIP} ... {NOSKIP} comments nestable. ({NOSKIP ... } isn't nestable.)
-
- * Changed to emit comments in export sections of modules in correct order.
-
- * Rewrote decl.c:p_arraydecl slightly to avoid a gcc bug.
-
- * Bug fix in expr.c:makeexpr_sizeof: Compute size by hand if SkipIndices used.
- Symptom: Size was "sizeof(arr)" even if it should have omitted skipped part.
-
- * Bug fix in trans.h: Added #undef _toupper/_tolower at end.
- Symptom: Failed to compile on Apollos.
-
- * Bug fix in parse.c:fixblock: Added "sp->stm1 &&" check for WHILE statements.
- Symptom: "while cond do ;" caused a reference-to-NULL error.
-
- * Bug fix in decl.c:makefakestruct: Suppressed fakestruct when importing.
- Symptom: Importing a module generates two declarations for _REC_A.
-
- * Bug fix in Makefile: Added rules to make home dirs if not found.
-
- Version 1.17:
-
- * Introduced "StructFile" stuff to help with more intensive file operations.
-
- * Simplified "N + 0.0" to "(double)N" instead of "N" when appropriate.
-
- * Fixed typo in sys.p2crc: "LogBreakPenalty" => "RelBreakPenalty".
-
- * Changed to avoid generating bit fields as members of a union.
-
- * Now "stringarray[i] := expr" will sprintf expr into lhs with no temp var.
-
- * Handled assignment of small packed arrays of chars into big ones.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- CharConsts Assume "const c='x'" is a char, not string constant.
- SelfIncludeName Format to use when a module includes its own .h file.
- StructFiles Translate files as special structs rather than FILE *'s.
- StructFile A file variable to be treated as if StructFiles=1.
-
- Version 1.16:
-
- * Reduced wasteful proliferation of identical-looking temporary variables.
-
- * Improved heuristic for determining allocation size for set constructors.
-
- * Corrected handling for EOF applied to buffered binary files.
-
- * Bug fix in decl.c: Handled a rare case involving forward-declared pointers.
-
- * Bug fix in p2clib.c:P_remset: Forgot to fix s[0] if highest bit was cleared.
-
- * Bug fix in p2clib.c:P_setxor: Forgot to fix s[0] if highest bits cancelled.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- EofBufName Macro to use for EOF of a bufffered file.
- FilePosBufName Macro to use for FILEPOS or POSITION of a buffered file.
-
- Version 1.15:
-
- * Taught the line breaker to handle logical/relational operators specially.
-
- * Improved code generation for large set constructors.
-
- * Changed makeexpr_assign to handle EK_LITCAST's on the lefthand side.
-
- * Changed makeexpr_addr to handle casts.
-
- * Changed FieldMacros so that the substituted base expr retains its type.
-
- * Bug fix in p2c.h: Rewrote P_getbits_US and other small-packed-array macros.
- Symptom: On many architectures, these macros didn't work at all!
- NOTE: These now pack small arrays in the opposite direction (LSB first).
-
- * Bug fix in funcs.c:handleread_text: changed strread of string to use %255s.
- Symptom: Previous translation of %255c did not append a null character.
-
- * Bug fix in p2clib.c:strrtrim: Added test for empty string input.
- Symptom: Incorrect behavior on strrtrim("").
-
- * Bug fix in p2clib.c:P_addsetr: Changed to signed comparison of v1 and v2.
- Symptom: Adding [0..-1] to a set failed.
-
- * Bug fix in p2clib.c:P_expset: Don't write to d[1] if set is empty.
- Symptom: Sets allocated to store 0 elements didn't work properly.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- LogBreakPenalty Like OpBreakPenalty, but for && and ||.
- LogBreakExtraPenalty Like OpBreakExtraPenalty, but for && and ||.
- RelBreakPenalty Like OpBreakPenalty, but for <, ==, etc.
- RelBreakExtraPenalty Like OpBreakExtraPenalty, but for <, ==, etc.
-
- Version 1.14:
-
- * Added partial support for Oregon Software Pascal's delete(f) procedure.
-
- * Changed file_iofunc to be a little more robust in case of errors.
-
- * Bug fix in p2clib.c:strrtrim: Changed to "while (*++s2) ;"
- Symptom: This function didn't do anything!
-
- * Bug fix in decl.c:p_type: Declared enums which were base types of sets.
- Symptom: In "type s = set of (a,b)", the enum was never declared.
-
- * Bug fix in decl.c:issafename: Avoided #defining existing field names.
- Symptom: "type r=record a:integer; end; const a=10;" produced bad code.
-
- * Bug fix in expr.c:makeexpr_charcast: Changed to recognize CONST names.
- Symptom: "const x='x'; var s : set of char; s := [x];" generated bad code.
-
- Version 1.13:
-
- * Changed to interpret cpp-style "#include" as another include-file syntax.
-
- * Improved handling of WRITE field widths for packed arrays of char.
-
- * Improved handling of built-in identifiers in PascalCaseSens mode.
-
- * Bug fix in parse.c:p_function: used strcicmp to check for "FORWARD" keyword.
- Symptom: In PascalCaseSens mode, forward declarations had to be capitalized.
-
- Version 1.12:
-
- * Added support for Sun/Berkeley Pascal.
-
- * Beefed up PascalCaseSens handling.
-
- * Added some extra parentheses to the P_clrbits macros. (!)
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- CharFileText Treat "file of char" as identical to "text".
- UseStrncmp Use strncmp, not memcmp, to compare packed arrays of char.
- MessageStderr Built-in "message(...)" should use stderr, not stdout.
- LiteralFiles Files opened without names should use file var's name.
- LiteralFile Specific files which should use LiteralFiles=1 mode.
-
- Version 1.11:
-
- * Improved the "usage" message slightly.
-
- * Introduced "CollectNest=0" to help with include files of sub-procedures.
-
- * Changed to ignore "OVERLAY" keyword (a Turbo Pascal anachronism).
-
- * Introduced "BROKEN_OR" option in trans.h in case of compiler bugs.
-
- * Changed src/Makefile to check for presence of nroff before changing p2c.cat.
-
- * Taught strmax_func to understand string consts as well as string literals.
-
- * Changed system.imp to use __module to avoid ModuleNotation dependencies.
-
- * Prevented variables in varstructs from being declared "const".
-
- * Changed "checkvarchanged" in decl.c to observe constqual, volatilequal.
-
- * Introduced "expr_has_address" (in expr.c) as a variant on "expr_is_lvalue".
-
- * Bug fix in pexpr.c:p_funcarglist: for strings as conformant arrays, low=1.
- Symptom: Strings were passed as array [0..N] instead of [1..N].
-
- * Bug fix in decl.c:setupmeaning: added missing "break;" for MK_VARIANT case.
- Symptom: Special formatting for enumerated type names was broken.
-
- * Bug fix in p2c.h:P_getcmdline: removed "Const" keywords.
- Symptom: Prototype was inconsistent with definition in p2clib.c.
-
- * Bug fix in decl.c:addfield: changed to "tname && tname->name ? ...".
- Symptom: Reference to NULL formatting field names for unnamed records.
-
- * Bug fix in expr.c:fixblock: fixed getfbuf + get => fread to check var type.
- Symptom: "f:file of byte; i:integer; i:=f^; get(f);" used fread incorrectly.
-
- * Bug fix in lex.c:turbo_directive: checked return value of handle_include.
- Symptom: Turbo-style include directives messed up if file was not found.
-
- * Added to sys.p2crc/trans.h the following configuration parameter:
-
- CollectNest Kludge to make sub-procs be emitted as they are parsed.
-
- Version 1.10:
-
- * Bug fix in comment.c:addnote: reference to "quiet" changed to "quietmode".
- Symptom: Failed to compile! (Sorry, about that!)
-
- Version 1.09:
-
- * Made a few improvements to "-R" (regression-testing) mode.
-
- * Bug fix in decl.c:addfield: rewrote part of the issafename loop.
- Symptom: Various problems choosing names for fields of structs.
-
- * Bug fix in out.c:getcurtime: modified non-HASTIME case to use starttime.
- Symptom: Not safe to multiply raw time() result by 1000.
-
- Version 1.08:
-
- * Changed "makeproto" commands in src/Makefile to "./makeproto".
-
- * Extended "ConstFormat" mechanism for all other kinds of identifiers.
-
- * Added a special format for Pascal include-file names.
-
- * Added "UseConsts=2" to force the use of "Const" instead of "const".
-
- * Added FileNameFilter option.
-
- * Added "-E" switch to halt after some number of errors.
-
- * Added DeclBufNCName for compilers which can't handle null macro arguments.
-
- * Handled the case of multiple parameters using a common conformant schema.
-
- * Incorporated several Oregon Pascal standard procedures from William Bader.
-
- * Fixed typo in documentation of "BraceLine" in sys.p2crc.
-
- * Bug fix: in funcs.c:handleread_text: add copyexpr to P_read[ln]paoc calls.
- Symptom: Dangling pointer problems generating calls to P_read[ln]paoc.
-
- * Bug fix: in pexpr.c:dots_n_hats:TOK_LBR case: changed to use p_ord_expr().
- Symptom: Arrays indexed by literal characters used "A", not 'A'.
-
- * Bug fix: in pexpr.c:p_setfactor: added two makeexpr_longcast calls.
- Symptom: Generated code used "1 << x" instead of "1L << x" in a few places.
-
- * Bug fix: in decl.c:setup_decl: defined SWORD equivalent to tp_sshort.
- Symptom: Signed words were translated as longs under some circumstances.
-
- * Bug fix: in parse.c:fixblock: "if" rearrangements now clear if-else flags.
- Symptom: Else-ifs were formed in inappropriate places.
-
- * Bug fix: in parse.c:fixblock: "continue" added after final eatstmt call.
- Symptom: Reference to an already-freed pointer.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- ModuleFormat Analogous to ConstFormat but for module names.
- FunctionFormat Analogous to ConstFormat but for function names.
- VarFormat Analogous to ConstFormat but for variable names.
- FieldFormat Analogous to ConstFormat but for record field names.
- TypeFormat Analogous to ConstFormat but for type names.
- EnumFormat Analogous to ConstFormat, for enumeration constant names.
- IncludeFileName Format for include file names.
- FileNameFilter Function to call to "clean" file names for use by fopen.
- MaxErrors Number of errors/warnings/notes printed before aborting.
- DeclBufNCName Version of DeclBufName with no "storage class" arg.
-
- Version 1.07:
-
- * Added "Integer16=2" mode to translate Pascal "integer" as C "int".
-
- * Added a warning when "%" is used for MOD of arguments that may be negative.
-
- * Made formatted output of booleans and reals closer to Pascal standards.
-
- * Now print warning when trying to use associated buffers of file params.
-
- * Added support for buffered "file of array" types.
-
- * Prevented warning message when main program ends with ";" instead of ".".
-
- * Changed to ignore RESET and REWRITE on standard file OUTPUT.
-
- * Bug fix: in decl.c:p_constdecl: Added mp->isactive=0 / ... / mp->isactive=1.
- Symptom: "const ten=10; procedure p; const ten=ten;" failed.
-
- * Bug fix: in pexpr.c:p_factor:MK_SPECIAL case: Checked mp->isfunction.
- Symptom: Passing a built-in like PAGE as a procedure parameter failed.
-
- * Bug fix: in pexpr.c:p_setfactor: Moved "val.i|=1<<first[i]->val.i" to ELSE.
- Symptom: The set constant [3..0] generated 0x8, not 0.
-
- * Bug fix: in p2clib.c:P_addsetr: Added "v1 > v2" test.
- Symptom: The set constructor [i..j] did not generate [] when i > j.
-
- * Bug fix: in p2clib.c:P_peek: Return ' ' if character was \n.
- Symptom: Line breaks were sometimes not converted to space on input.
-
- * Bug fix: in p2c.h: Added "#define CPUTFBUF(f,v) (PUTFBUF(f,char,v))".
- Symptom: Calls to this undefined routine were produced.
-
- * Bug fix: in parse.c:p_stmt:TOK_FOR clause: Added checks for limit=MAXINT.
- Symptom: "for i := j to maxint" generated an infinite loop.
-
- * Bug fix: in decl.c:outfieldlist: Added checking for empty unions.
- Symptom: "record case integer of 1: () end" produced an empty C union.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- ArrayGetName Analogous to GetName for "file of array" types.
- ArrayGetFBufName Analogous to GetFBufName for "file of array" types.
- ArrayPutName Analogous to PutName for "file of array" types.
- ArrayPutFBufName Analogous to PutFBufName for "file of array" types.
-
- Version 1.06:
-
- * Changed Makefile to look for ranlib in /bin, too.
-
- * Added ability to call dispose on a non-lvalue: clearing to NIL is omitted.
-
- * Added ForEvalOrder option: "in for x := y to z, y is evaluated before z".
-
- * Added more entries in the AvoidName and AvoidGlobalName lists.
-
- * Added checks for "__unix" cpp symbol synonymous with "unix".
-
- * Improved heuristic in arraysize() which returns NULL for "huge" arrays.
-
- * Added support for "rewrite(f)" creating an unnamed temporary file.
-
- * Added definition of "tmpfile" in p2c.h for systems that don't have it.
-
- * Bug fix in parse.c:usebraces: Added "sp != NULL &&" before findcomment.
- Symptom: Segmentation fault.
-
- * Bug fix in pexpr.c:dots_n_hats: Added "tp->basetype->fbase &&".
- Symptom: Segmentation fault.
-
- * Bug fix in parse.c:p_stmt:TOK_CASE clause: Changed to use p_ord_expr().
- Symptom: case 'A' of ... translated to switch("A"), not switch('A').
-
- * Bug fix in parse.c:p_stmt:TOK_FOR clause: Added tp_boolean to "small" types
- Symptom: for b := true downto false had unsigned-wraparound problems.
-
- * Bug fix in decl.c:outbasetype:TK_ENUM clause: Added test for mp == NULL.
- Symptom: Segmentation fault if null enum list.
-
- * Bug fix in expr.c:makeexpr_plus: a->nargs < 1: used gentle_cast on zero.
- Symptom: f(a-a) => "f()"; argument was converted to real const w/null value.
-
- * Bug fix in expr.c:makeexpr_plus: checked a->args[j] for TK_REAL/STRING, too.
- Symptom: 1+2.0 was incorrectly constant-folded, though 1.0+2 was correct.
-
- * Bug fix in p2c.h: removed trailing semicolon from FILEBUF definition.
-
- * Bug fix in decl.c:p_type: added a call to makefakestruct for TOK_FILEs.
- Symptom: "var f:file of record ... end" (for buffered f) produced bad code.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- ForEvalOrder Initial value in for loop must be evaluated before limit.
- FreeRvalueName Name of a function or macro to free a pointer in an rvalue.
-
- Version 1.05:
-
- * Added support for reading packed arrays of characters.
-
- * Made some changes for compatibility with Xenix.
-
- * Put in slightly better handling of the "#define BSD" stuff.
-
- * Changed trans.c to avoid declaring sbrk() itself.
-
- * Changed p2c.h to define _toupper(), _tolower() in a non-ASCII-dependent way.
-
- Version 1.04:
-
- * Added "-V" switch to generate a log file with some details of translation.
-
- * Added "-M" switch to control memory usage during translation.
-
- * Added "TEST_MALLOC" stuff to measure memory allocated but never freed.
-
- * Added {SIGNED} and {UNSIGNED} comments preceding type "char" and "integer".
-
- * Added HighCharBits-related optimizations for characters 128 and above.
-
- * Eliminated unnecessary casting of CHR's argument by making it MK_SPECIAL.
-
- * Recognized "ch+'A'-'a'" idiom and translated as "_toupper(ch)".
-
- * Added P2CRC environment variable.
-
- * Bug fix in parse.c:p_search: emptied curcomments at top of do loop.
- Symptom: leading comment in module header was copied over by import.
-
- * Bug fix in funcs.c:func_addr and elsewhere: fixed handling of procedure ptrs
- Symptom: "var pr:procedure; p := addr(pr);" wrote "_PROCEDURE pr; p = pr".
-
- * Bug fix in expr.c:makeexpr_assign: no longer copy _PROCEDUREs with memcpy.
- Symptom: memcpy was used to copy _PROCEDUREs even though assignable.
-
- * Bug fix in pexpr.c:p_factor: always allow makeexpr_hat after p_funccall
- Symptom: FuncMacros for string functions produced expression of wrong type
-
- * Bug fix in decl.c:p_conststring: added gettok() just before p_expr.
- Symptom: String constants with constructor notation didn't work.
-
- * Bug fix in decl.c:isfilevar and elsewhere: don't assume EK_DOT's val.i != 0.
- Symptom: Reference to NULL arises from "literal" dot expressions.
-
- * Bug fix in expr.c:value_name: check for value in range for "'%ld'" format.
- Symptom: Char literals containing negative or nonprinting chars were made.
-
- * Bug fix in expr.c:type_sizeof: prevent multiple recursion for TK_ENUM types.
- Symptom: Infinite recursion occurred when convert_size used on enum types.
-
- * Bug fix in expr.c:makeexpr_assign: avoid using memcpy for _PROCEDURE types.
- Symptom: Procedure vars with static links used memcpy even if CopyStructs>0.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- HighCharBits Do high-char optimizations (safest if chars are 8 bits).
- PascalEnumSize Size in bits of an enumerated type in Pascal.
-
- Version 1.03:
-
- * Modified headers to compile under pure System V.
-
- * Added '::' operator in C expressions (e.g., FuncMacro definitions).
-
- * Added '##' comment delimiter to embedded configuration parameter comments.
-
- * In Turbo, RESET/REWRITE now open in read/write mode for binary files.
-
- * Added note/warning IDs and a mechanism for suppressing undesired notes.
-
- * Extended FuncMacros to apply to predefined and undeclared functions.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- ReadWriteOpen Binary files always opened in read/write mode.
- EatNotes List of notes/warnings to be suppressed.
-
- Version 1.02:
-
- * Added support for HP Pascal with HP-UX 6.2 and 6.5:
- BADDRESS, WADDRESS, ADDTOPOINTER, BITSIZE, FCALL.
-
- * Now initializes file variables embedded in records or allocated by NEW.
-
- * Better error messages in skipcomma, skipcloseparen.
-
- * Extended convert_offset in funcs.c to handle more cases.
-
- * Extended distribute_plus in expr.c to handle negated arguments.
-
- * Line breaker's behavior in difficult/large cases is improved.
-
- * Bug fix in decl.c:setup_decl: changed '... modula2 ? "WORD" : "UWORD"'
- to '... modula2 ? "UWORD" : "WORD"'
- Symptom: Turbo did not recognize "WORD" built-in type any more.
-
- * Bug fix in funcs.c:func_random: removed incorrect "->args[0]" after "ex".
- Symptom: Bus error parsing "random(4)".
-
- * Bug fix in funcs.c: decl_builtins: "randomize" function declared.
- Symptom: Turbo Pascal "randomize" not recognized.
-
- * Bug fix in funcs.c: blockread & blockwrite: size and nitems args swapped.
- Symptom: Return value for blockread & blockwrite was wrong.
-
- * Bug fix in p2clib.c:P_inset: condition changed to "val < *s++ ..."
- Symptom: Certain elements appeared to be in the set even though too large.
-
- * Bug fix in funcs.c:handleopen: called makeexpr_stringify for file name.
- Symptom: Reset lost file name in dialects with only packed arrays of char.
-
- * Bug fix in decl.c:declaretype: added declaresubtypes function.
- Symptom: _REC_xxx records sometimes emitted before the things they used.
-
- * Bug fix in expr.c:makeexpr_lstring, etc: added null terminator for strings.
- Symptom: Occasional spurious treatment of string constants.
-
- * Bug fix in parse.c:replaceexprexpr: now even less strict about types.
- Symptom: If had to replace char variable ch, missed ord(ch) usage.
-
- * Bug fix in out.c:adddeltas/applydelta: changed "> 1000" to ">= 1000".
- Symptom: Absolute indention of 0 did not work properly.
-
- Version 1.01:
-
- * VAX Pascal support added.
-
- * UCSD Pascal support added.
-
- * MPW Pascal support added.
-
- * Partial Modula-2 support added.
-
- * Added -L command-line flag.
-
- * Support for non-local GOTO's added.
-
- * Improved code generation for certain set operations.
-
- * Special comment forms now recognized for (* *) as well as { }.
-
- * Added the "Synonym" feature.
-
- * Removed unnecessary type casts for ANYVAR parameters and FuncMacros.
-
- * Added comments in trans.h describing major p2c data structures.
-
- * Bug fix in parse.c:checkcommas: "if (sp->exp1)" added in SK_FOR case.
- Symptom: Bus error when initializer portion of FOR was null.
-
- * Bug fix in trans.c:main: setup_comment now called before setup_lex.
- Symptom: Initial comment in program disappeared.
-
- * Bug fix in pexpr.c:p_funccall: added func_reference function.
- Symptom: Static links were occasionally left out when they were needed.
-
- * Bug fix in funcs.c:decl_builtins: "pi" function declared.
- Symptom: Turbo Pascal "pi" not recognized since func_pi never called.
-
- * Bug fix in decl.c:outdeclarator and elsewhere: improved pointers to arrays.
- Symptom: An array-of-strings parameter was declared as "char **".
-
- * Bug fix in system.imp: Turbo Pascal's "getmem" was incorrectly declared.
-
- * Added to sys.p2crc/trans.h the following configuration parameters:
-
- Modula2 Use Modula-2 instead of Pascal syntax.
- ImplModules Modules use VAX notation rather than HP/UCSD notation.
- IgnoreNonAlpha Ignore non-alphanumeric characters in Pascal identifiers.
- StarArrays Control notation for array-valued parameters.
- InitialCalls List of functions to call at start of main program.
- SymbolFormat Format string for C identifiers derived from Pascal ones.
- ArrayMinName Name for lower-bound variables (Modula-2/VAX Pascal).
- ArrayMaxName Name for upper-bound variables (Modula-2/VAX Pascal).
- LabelVarName Name for jmp_buf variable associated with a stmt label.
- Synonym Declare a synonym for a Pascal keyword or identifier.
- AvoidName Added "Inline" to the list.
- StructFunction Added "P_remset" to the list.
- StrlapFunction Added "P_setxor" and "strpad" to the list.
- RemName Name of function or macro for VAX Pascal REM operator.
- StrPadName Name of function for VAX Pascal "pad" function.
- SetXorName Name of function for symmetrical set difference.
- SetRemName Name of function to remove an element from a set.
-
- Version 1.00:
-
- (Initial public release)
-