## 1 Parsetools Release Notes

This document describes the changes made to the Parsetools application.

### 1.1 Parsetools 1.4

#### 1.1.1 Improvements and Fixed Bugs

Several modifications of Yecc have been made:

- The new functions `file/1,2` take the role of the old functions `yecc/2,3,4`. The latter functions are no longer documented but are kept for backward compatibility.
- More checks of the grammar file have been implemented. Examples are warnings for unused non-terminals and duplicated declarations.
- Invalid pseudo variables are no longer replaced by `'$undefined'` but cause a failure.
- Reserved words no longer need to be quoted when used as terminals or non-terminals.
- When compiling the generated parser file errors and warnings concerning user code refer to the grammar file, not the parser file.
- Yecc emits a warning if there are conflicts in the grammar. The new declaration `Expect` can be used to suppress this warning.
- The new operator precedence declaration `Nonassoc` can be used to declare operators with no associativity.
- Precedence can be given to more than one operator with one single operator precedence declaration.
- The function `parse_and_scan/1` in the default includefile accepts `{Function, A}` as well as {{M,F}, A} as tokenizer function. Exceptions in the tokenizer are never caught.
- The functions `yecc:file/1,2` can be accessed from the Erlang shell via the new functions `c:y/1,2` in STDLIB.

See yecc(3) for further details.

Own Id: OTP-5366

### 1.2 Parsetools 1.3.2

#### 1.2.1 Fixed Bugs and Malfunctions

- A bug in `Yecc` that was introduced in R9B has been removed. Another bug concerning precedence declaration "one level up" has been fixed.
  Own Id: OTP-5461

### 1.3 Parsetools 1.3.1

#### 1.3.1 Fixed Bugs and Malfunctions

- A bug in the file `parsetools/include/yeccpre.hrl` caused `yecc:parse_and_scan/1` to always report a parse failure when the lexer reported end-of-file. This problem has been fixed.
  Own Id: OTP-5369

Copyright © 1991-2006 Ericsson AB