当前位置: 首页 > 工具软件 > Free Pascal > 使用案例 >

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

西门靖琪
2023-12-01

第一章 语言符号 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’


 

 类似资料: