# `non_ascii_idents`

The tracking issue for this feature is: #28979

The `non_ascii_idents` feature adds support for non-ASCII identifiers.

## Examples

    # #![allow(unused_variables)]
    #![feature(non_ascii_idents)]

    #fn main() {
    const ε: f64 = 0.00001f64;
    const Π: f64 = 3.14f64;
    #}

## Changes to the language reference

> Lexer:
> IDENTIFIER :
> XID_start XID_continue*
> | `_` XID_continue+

An identifier is any nonempty Unicode string of the following form:

Either

- The first character has property `XID_start`
- The remaining characters have property `XID_continue`

Or

- The first character is `_`
- The identifier is more than one character, `_` alone is not an identifier
- The remaining characters have property `XID_continue`

that does not occur in the set of strict keywords.

> Note: `XID_start` and `XID_continue` as character properties cover the character ranges used to form the more familiar C and Java language-family identifiers.