rfc:improved-parser-error-message

Request for Comments: Improved parser error message

Introduction

The purpose of this RFC is to propose a naming of our tokens to have an crypto-less parser error messages. This is simply achieved by using an old Bison feature.

BC

There is no BC break. The token_*() functions aren't affected by the patch.

$ sapi/cli/php -r 'var_dump(token_name(318));'
string(6) "T_ECHO"

Examples

$ sapi/cli/php -r 'class abc foo'
Patched:
Parse error: syntax error, unexpected 'foo' (T_STRING), expecting '{' in Command line code on line 1

Current:
Parse error: syntax error, unexpected T_STRING, expecting '{' in Command line code on line 1
$ sapi/cli/php -r 'function ""'
Patched:
Parse error: syntax error, unexpected '""' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) or '(' in Command line code on line 1

Current:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or '(' in Command line code on line 1
$ sapi/cli/php -r 'echo ::a;'
Patched:
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in Command line code on line 1
nexpected '::' in Command line code on line 1

Current:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 1
$ sapi/cli/php -r 'echo <<='
Patched:
Parse error: syntax error, unexpected '<<=' (T_SL_EQUAL) in Command line code on line 1

Current:
Parse error: syntax error, unexpected T_SL_EQUAL in Command line code on line 1
$ sapi/cli/php -r 'class '
Patched:
Parse error: syntax error, unexpected end of file, expecting identifier (T_STRING) in Command line code on line 1

Current:
Parse error: syntax error, unexpected $end, expecting T_STRING in Command line code on line 1

Patch

rfc/improved-parser-error-message.txt · Last modified: 2011/08/06 21:28 by stas