C++之C++的词法单位
C++的字符集
- ASCII码字符集是计算机中的常用字符集。它包括英文字母及阿拉伯数字等128个字符,存储一个ASCII码占用一个字节单元。
- 由于汉字处理的需要,又出现了汉字国标码等对应于不同语言的字符集。国标码的存储占用两个字节单元。
- 为了对各类字符进行统一编码,Unicode字符集应运而生。它包括了世界上多种语言的基本字符,共有65536个字符。 ASCII码字符集国标码字符集都是它的子集。Unicode字符集对所有字符进行统一的双字节编码。
C++语言使用下列基本字符来构成词法单位:
26个小写字母 | abcdefghijklmnopqrstuvwxyz |
26个大写字母 | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
10个阿拉伯数字 | 0 1 2 3 4 5 6 7 8 9 |
其他符号 | + - * / = , . _ : ; ? \ " ' ~ | ! # % & () [] {} ^ < > 空格 |
C++关 键 字
关键字(keyword)又称保留字,是系统定义的具有特定含义的英文单词,不能另作它用。C++区分大小写,关键字全部由小写字母组成。标准C++(ISO14882)定义了74个关键字,具体的C++编译器还会做一些增删。
常用关键字及分类见下表:
数据类型说明符与修饰符 | bool、char、wchar_t、class、const、double、enum、float、int、long、short、signed、struct、union、unsigned、void、volatile |
存储类型说明符 | auto、extern、inline、register、static |
访问说明符 | friend、private、protected、public |
其它说明符 | asm、operator、template、this、typedef、virtual |
语句与标号 | break、case、catch、continue、default、do、else、for、goto、if、return、switch、throw、try、while |
运算符及逻辑值 | delete、false、new、sizeof、true |
VC++中还有一些专用的关键字,它们都以双下划线开头:
_ _asm、_ _based、_ _cdecl、_ _emit、_ _export、_ _far、_ _fastcall、
_ _fortran、_ _huge、_ _interrupt、_ _loadds、_multipile_inheritance、
_ _near、_ _pascal、_ _saveregs、_ _segment、_ _signal_inheritance、
_ _self、_ _stdcall、_ _virtual、_ _inheritance
除以上之外的一些关键字本书不作介绍,可查阅相关手册。
C++标识符
标识符(Identifier,ID)是程序员定义的英文单词,用来给变量、常量、数据类型、函数等命名。合法标识符由字母或下划线开始,由字母、数字、下划线组成,其有效长度为1-31个字符,长度超过31个字符者只识别前31个字符,VC++标识符长度为1-247个字符。
建议使用有一定含义的英文单词或拼音序列作标识符,以提高可读性;另外,尽量不用下划线或双下划线打头,以免与系统定义的关键字冲突。
例如:判断下面哪些是合法的标识符(非 标红 部分之外均为合法的标示符)
94Salary | $amount | f3.5 | Num_of_Student |
Salary 94 | amount | MyFile | void |
Salary94 |
标点符号
c++中的标点符号包括 #、 (、 )、 {、 }、 ,、 :、 ;、 " 、 '等。
标点符号的作用:
- 有一定的语法意义。例如字符和字符串常量分别用 ' ' 和 " "引起来。
- 对语法符号起分隔作用。例如 ;等。
C++之C++的词法单位的更多相关文章
- Compiler Theory(编译原理)、词法/语法/AST/中间代码优化在Webshell检测上的应用
catalog . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ...
- 快学Scala-第九章 文件和正则表达式
知识点: 1.读取文件中的所有行,可以调用scala.io.Source对象的getLines方法: import scala.io.Source val source = Source.from(& ...
- Scala学习(九)练习
文件正则表达式&练习 1. 编写一小段Scala代码,将某个文件中的行倒转顺序,将最后一行作为第一行,依此类推 程序代码: import scala.io.Source import java ...
- Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012
\t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...
- Oracle_PL/SQL(1) 匿名块
1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库.为什么使用PL/SQL?Orade是一种关系型数据库, 用来访问关系型数据库的语言是 “结构 ...
- 编译原理--05 用C++手撕PL/0
前言 目录 01 文法和语言.词法分析复习 02 自顶向下.自底向上的LR分析复习 03 语法制导翻译和中间代码生成复习 04 符号表.运行时存储组织和代码优化复习 05 用C++手撕PL/0 在之前 ...
- ECMAScript6词法
ES6简介 ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准,它于2015 年 6 月正式发布.ECMAScript 和 JavaScript 的关系是,前者是后 ...
- 【笔记】javascript权威指南-第二章-词法结构
词法结构 //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.28 字符集 UTF-8和UTF-16的区别?Unicode和UTF是什么关系?Unicode转义 ...
- 用Java写编译器(1)- 词法和语法分析
词法和语法分析器构建 ANTLR简介 ANTLR全称ANother Tool for Languate Recognition,是基于LL(*)算法实现的语法分析器生成器和词法分析器生成器,由旧金山大 ...
随机推荐
- 对象属性键值[key]属性问题
1,obj[key]此时key代表是循环中的一个变量. var obj = {key:3,key1:1,key2:2,key3:3,toSting:4}; for (key in obj) { con ...
- PDO添加数据的预处理语句
1.添加页面<h1>添加数据</h1><form action="chuli.php" method="post"> < ...
- Android比较实用的性能优化
Android设备作为一种移动设备,无论是内存还是CPU的性能都受到了很大的限制,这导致Android程序的性能问题异常突出,随着产品的不断更新迭代,对于性能优化提出了更高的要求.本篇文章从稳定性.流 ...
- Android Vsync 原理浅析
Preface Android中,Client测量和计算布局,SurfaceFlienger(server)用来渲染绘制界面,client和server的是通过匿名共享内存(SharedClient) ...
- 【Python】opencv显示图像
import cv2 img = cv2.imread("lena.jpg") cv2.namedWindow("Image") cv2.imshow(&quo ...
- Python 面向对象补充
什么是面向对象编程 类 + 对象 class 类: def 函数1(): pass def 函数2(): pass obj是对象, 实例化的过程 obj = 类() obj.函数1() 例1 , 某些 ...
- 树莓派Pi2 使用入门
1. 材料和环境 树莓派Pi2, microSD卡(大于等于4G), 网线 官网下载: 系统镜像 Raspbian Jessie (https://downloads.raspberrypi.org/ ...
- [SQLSERVER] [RESTORE] 逐步恢复日志备份并使用只读模式查看
执行: USE master GO RESTORE DATABASE MYDB FROM DISK = N'FULL_BACKUP.bak' WITH REPLACE, STANDBY = N'STA ...
- unknown host www.baidu.com 解决方法
今晚一开机发现无法更新yum了,本机是连着wife的,咋无法更新呢,作为小白,一脸懵逼.于是ping了一下百度,网络不可达.... 于是我查看了一下DNS,发现设置了,于是看了一下物理机的DNS,发现 ...
- [Spark Core] Spark Shell 实现 Word Count
0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 示意图 1. 实现 1.1 分步实现 ...