Rust 1.7.0 语法基础 标识符(ident)和分隔符的约束

一、标识符

identifier 是标识符,在Rust语法中简写为 ident

ident 是由任意个非空的unicode字符组成。

举例:

在 attribute 语法中,有

meta_item : ident [ ‘=‘ literal  | ‘(‘ meta_seq ‘)‘ ] ? ;

实际使用如下:

#![crate_type = "lib"]
#![allow(dead_code)]
#![feature(intrinsics, lang_items)]
#[test]

上面的 crate_type、allow、feature和test 都是 ident 。

更多参看 Rust 1.7.0 语法基础 attribute

二、分隔符约束

Rust语法中规定了哪些字符不能作为分隔符,而不是规定了哪些字符可以作为分隔符。

约束规则如下:

non_null 表示任意单个unicode字符,但排除 U+0000 (即排除null)

non_eol 表示的是受限的 non_null,排除回车符 U+000A (‘\n’)

non_single_quote 表示的是受限的 non_null 排除单引号 U+0027 (‘)

non_double_quote 表示受限的 non_null 排除了双引号 U+0022 (“)

时间: 2024-10-09 22:06:50

Rust 1.7.0 语法基础 标识符(ident)和分隔符的约束的相关文章

Rust 1.7.0 语法基础 attribute

一.语法 attribute : '#' '!' ? '[' meta_item ']' ; meta_item : ident [ '=' literal | '(' meta_seq ')' ] ? ; meta_seq : meta_item [ ',' meta_seq ] ? ; 二.说明 使用Java的人都知道,Java有个 annotation 注解. Rust 也有注释,名称和C#的注释一样,叫做 attribute. Rust attribute 用于在源代码中标识编译过程中的

Rust 1.7.0 语法基础 sep_token 和 non_special_token

一.分隔符 sep_token 指的是分隔符, 是除了 * 和 + 之外的不论什么符号,通常情况下是使用 , 逗号. 比如: 宏的多个參数分隔,以下代码中的逗号就是 sep_token (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({ ... }; 二.非指定符号 non_special_token 是除了分界符之外的不论什么符号,分界符包含$ 和 ;

Python-08:Python语法基础-标识符和对象

1.什么是标识(zhi)符? Python中我们在编程的时候,起的名字就叫做标识符.其中变量和常量就是标识符的一种 2.标识符的命名规则 ①标识符的第一个字符必须是字母或者下划线,不能是数字或者特殊符号等 ②除了第一个字符外,其他的可以使字母下划线和数字 ③大小写敏感 stuName和stuname不是相同的标识符 3.常用Python关键字 Python中的关键字指的是系统中自带的具备特殊含义的标识符 常用的Python关键字有:and elif global or else pass bre

Javascript语法基础

Javascript语法基础   一.基本数据类型   JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript中的数字不区分整型和浮点型,所有的数字都是以浮点型来表示的. 2.字符串 字符串型是JavaScript中用来表示文本的数据类型,是由Unicode字符.数字和标点符号组成的一个字符串序列.字符串通常都是用单引号或双引号括起来的.如果在字符串中包括着特殊字符,可以使用转义字符来代替.例如: “”  

每天一点Go语言——Go语言语法基础及基本数据类型

每天一点Go语言--Go语言语法基础及基本数据类型 一.Go语言基础语法 ? 上篇Go语言讲解中谈到了有关Go语言的基本组成结构,该小节就来讲述有关go语言的基础语法.Go语言程序由多个标记组成,如:关键字.标识符.常量.符号.字符串. ? 行分割符--一行表示一个语句结束,无需写":".当然,你可以将多条语句写在一行,并且使用":"号区分,但是不推荐这样写开发代码. ? 注释在本文就不多说了. 标识符 ? 如果说变量是shell入门的第一道关卡,那么可以说,标识符

C# 6.0语法新特性体验(二)

之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性,现在随着Visual Studio 14 CTP3的发布,又陆续可以体验一些新的特性了,这里简单的介绍一下之前没有介绍的新语法. 属性表达式(Property Expressions) 我们常常会在类中写一些通过函数生成的只读属性: ????class Point????{????????public int X { get; set; }????????public int Y { get; set; }

java语法基础一

Java语法基础一 Java代码基本格式 Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符.格式如下: 修饰符 class 类名 { 程序代码 } 注:1.Java是严格区分大小写的. 2.Java程序中一句连续的字符串不能分开在两行中写. Java程序的注释 Java里的注释有三种类型: 1.单行注释 在注释内容前面加“//”,格式为: 代码; //注释内容 2.多行注释 以斜杠加星号开头,以星号加斜杠结尾. 3.文档注释 以斜杠加两个星号

Swift语法基础入门三(函数, 闭包)

Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V

javascript语法基础-变量与函数

三 javascript语法基础-变量与函数 (一)变量的声明与运用 JavaScript中的变量与Java.C等强类型语言有很大区别,虽然在JavaScript中具有字符串.数字等数据类型. 变量申明语句的结构是var保留字加标识符,var和标识符之间用空格隔开. 赋值语句的结构是在变量和需要赋的值之间加上一个等号,例如a=1的含义是将变量a的值指定为1. 变量在定义的时候也可以同时赋值,如var a=1. PS:在变量使用前事先进行声明是个良好的编程习惯,这对将来学习Java等其他语言有帮助