Free Pascal 学习笔记 第一章 语言符号 Pascal Tokens

2024-01-27 18:08

本文主要是介绍Free Pascal 学习笔记 第一章 语言符号 Pascal Tokens,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章 语言符号 Pascal Tokens

第一节 语言符号

  1. 保留字 reserved words

这些单词具有固定的含义,不能被改变或重新定义

  1. 标识符 identifiers

程序员定义的符号,可以改变或重用,是语法规则的主体

  1. 操作符 operators

通常是数学符号或其它操作,如+ - * 等

  1. 分隔符 separators

通常是空格

  1. 常量 constants

在源码中通常用数字或字符常量来定义确定值

第二节 符号 symbols

Free Pascal允许字母、数字和特殊字符出现在源文件中

特殊字符

’ + - * / = < > [ ] . , ( ) : ^ @ { } $ # & %

特殊字符组合

<< >> ** <> >< <= >= := += -= *= /= (* *) (. .) //

第三节 注释 comments

  1. (*这是旧样式的注释*)

  2. {这是Turbo Pascal注释}

  3. //这是Delphi注释。直到行结束,所有内容都将被忽略。

  4. 嵌套注释的有效方法:

{评论1(*评论2 *)}
(*评论1 {评论2} *)
{评论1 //评论2}
(*评论1 //评论2 *)
//评论1(*评论2 *)
//评论1 {评论2}

  1. 两个注释必须在一行上。以下两个将给出错误:

//有效的评论{不再是有效的评论!!
}

备注:在TP或Delphi模式下,不允许嵌套注释

第四节 保留字 reserved words

一、Trubo Pascal保留字

 

absolute

and

array

asm

begin

break

case

const

constructor

continue

destructor

div

do

downto

else

end

file

for

function

goto

if

implementation

in

inherited

inline

interface

label

mod

nil

not

object

of

on

operator

or

packed

procedure

program

record

reintroduce

repeat

self

set

shl

shr

string

then

to

type

unit

until

uses

var

while

with

xor

2、Delphi 保留字

Delphi保留字跟Turbo Pascal一样,但是增加了如下内容:

as

class

except

exports

finalization

finally

initialization

is

library

on

property

raise

threadvar

try

3、Free Pascal 保留字

除了拥有Turbo Pascal和Delphi的保留字之外,Free Pascal还增加了下面的保留字:

dispose

exit

false

new

true

另外,Pascal有几个预先定义的标识符。你可以用你自己的定义来覆盖他们,但这样做你就没法使用这些标识符在Pascal中原来所具有的功能了。

abs

arctan

boolean

char

cos

dispose

eof

eoln

exp

false

input

integer

ln

maxint

new

odd

ord

output

pack

page

pred

read

readln

real

reset

rewrite

round

sin

sqr

sqrt

succ

text

true

trunc write

writeln

 

Pascal是不区分大小写的!MyProgramMYPROGRAMmYpRoGrAm这三者是完全相同的。但为了可读性考虑,最好有意义地使用大小写!

标识符长度可以是任意的,但是许多Pascal编译器实际上只看开头的大约32个字符。也就是说,下面两个标识符:

    ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFAlphaBeta
    ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGammaDelta
    ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGammaDelta

可能对于某些编译器来说它们两者是相同的,因为第一个不同之处出现在第33个字符。

为了让你的代码兼容所有的编译器,使用合理长度的标识符——最多15个字符。这样,你打字的时候也省事。

4. 修饰符 modifiers

absolute

abstract

Alias

Assembler

Cdecl

Cppdecl

Default

Export

External

Far

Far16

Forward

Index

Local

Name

Near

Nostackframe

Oldfpccall

Override

Pascal

Private

protected

Public

Published

Read

Register

Reintroduce

Safecall

Softfloat

Stdcall

Virtual

write

备注诸如Byte,Boolean之类的预定义类型和诸如maxint之类的常量不是保留字。它们是在系统单元中声明的标识符。这意味着可以在其他单位中重新定义这些类型。但是,不鼓励程序员这样做,因为这会引起很多混乱。

备注从2.5.1版开始,可以通过用&符号转义保留字来将保留字用作标识符。这意味着以下是可能的

var &var:integer; begin &var:=1; Writeln(&var); end. 

但是,不建议在新代码中使用此功能,因为它会使代码的可读性降低。它主要用于在保留字列表更改并且包含尚未保留的字时修复旧代码

5.提示指令 Hint directives

大多数标识符(常量,变量,函数或方法,属性)可以在其定义后附加提示指令:

  1. deprecated 不推荐使用

不建议使用此标识符,而应使用替代方法。不推荐使用的关键字之后可以是带有消息的字符串常量。每当遇到标识符时,编译器都会显示此消息。

  1. Experimental 实验性的

此标识符的使用是实验性的:可用于标记应谨慎使用的新功能。

  1. Platform 平台

这是一个与平台有关的标识符:可能并非在所有平台上都定义了它。

  1. Unimplemented 未实现

仅应将其用于功能和过程。它应用于表示尚未实现特定功能。

示例:

Const
AConst=12deprecated;

var
p:integerplatform;

FunctionSomething:Integer;experimental;

begin
Something:=P+AConst;
end;

begin
Something;
end.

输出如下:

testhd.pp(11,15)Warning:Symbol"p"is not portable
testhd.pp(11,22)Warning:Symbol"Aconst" is deprecated
testhd.pp(15,3)Warning:Symbol"Something" is experimental

提示指令可以遵循各种标识符:单位,常量,类型,变量,函数,过程和方法。


 

6.数字表示

整数类型常量,Free Pascal支持四种格式:

  1. 正常的十进制格式(以10为基数)。这是标准格式。

  2. 十六进制格式(以16为底),方法与Turbo Pascal相同。要以十六进制格式指定常数值,请在其前面加上美元符号($)。因此,十六进制$ FF等于255十进制。请注意,使用十六进制常量时,大小写无关紧要。

  3. 从1.0.7版开始,还支持八进制格式(以8为基数)。要以八进制格式指定常数,请在其前面加上与号()。例如,八进制表示法中将15指定为&17。

  4. 二进制表示法(以2为底)。可以在二进制数前加上百分号()来指定二进制数。因此,可以二进制表示形式将255指定为%11111111。

备注TP或Delphi兼容模式不支持八进制和二进制表示法。

7.标签

标签是源代码中某个位置的名称,可以使用goto语句将其从另一个位置跳转到该位置。标签是标准标识符或数字序列。

备注该-Sg或-Mtp可以使用标签之前的开关必须被指定。默认情况下,Free Pascal不支持label和goto语句。该{$ GOTO ON}指令也可以用来允许使用标签和goto语句。

以下是有效标签的示例:

Label
123,
abc;

8.字符串

字符串(或简称为字符串)是零个或多个字符(字节大小)的序列,由标准的8位ASCII字符或Unicode(通常为UTF-8编码)字符组成。

  1. 用单引号括起来 ‘’

  2. 只能出现在程序源代码的单行中

  3. 字符串中不能出现回车符或换行符。可用#13 #10代替

  4. 字符集引号之间没有任何东西(‘’)是一个空字符串。

  5. 转义字符请使用 #,而不是C的反斜杠 \ 。

  6. 以通过键入两次将单引号字符嵌入到字符串中。

  7. 在字符串中使用其他字符集,必须使用 {$ CODEPAGE XXX} 伪指令或编译器的-Fc命令行选项指定源文件的代码页。使用{$ CodePage XXX}后,字符串中的字符将被解释为XXX代码页中的字符。


 


 

以下是有效的字符串常量:

’This is a pascal string’
’’
’a’
’A tabulator character: ’#9’ is easy to embed’

以下是无效的字符串:

’the string starts here
and continues here’

上面的字符串改成下面的示例则是正确的字符口中 :

’the string starts here’#13#10’ and continues here’

或者这样也行

’the string starts here’#10’ and continues here’

类unix系统包括Mac OS X则是如下形式

’the string starts here’#13’ and continues here’


 

这篇关于Free Pascal 学习笔记 第一章 语言符号 Pascal Tokens的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651068

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识