b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

python 科学计算 Python怎样使用解释器

电脑杂谈  发布时间:2017-12-31 06:02:03  来源:网络整理

python科学计算 作用_pycharm 科学计算_python 科学计算

大学里计算机科学最吸引我的地方就是编译器。最神奇的是,编译器是如何读出我写的那些烂代码,并且还能生成那么复杂的程序。当我终于选了一门编译方面的课程时,我发现这个过程比我想的要简单得多。

IMP 语言

在开始写之前,我们先来讨论一下将要解释的语言。IMP是拥有下面结构的最小命令语言:

赋值语句(所有变量都是全局的,而且只能存储整数):

Python

1

x := 1

条件语句:

Python

1

2

3

4

5

if x = 1 then

y := 2

else

y := 3

end

while循环:

Python

1

2

3

while x < 10 do

x := x + 1

end

复合语句(分号分隔):

Python

1

2

x := 1;

y := 2

OK,所以它只是一门工具语言,但你可以很容易就把它扩展成比Lua或python更有用的语言。我希望能把这份教程能保持尽量简单。

下面这个例子是计算阶乘的程序:

Python

1

2

3

4

5

6

n := 5;

p := 1;

while n > 0 do

p := p * n;

n := n - 1

end

IMP没有读取输入的方式,所以初始状态必须是在程序最开始写一系列的赋值语句。也没有打印结果的方式,所以解释器必须在程序的结尾打印所有变量的值。

解释器的结构

解释器的核心是「中间表示」(Intermediate representation,IR)。这就是如何在内存中表示IMP程序。因为IMP是一个很简单的语言,中间表示将直接对应于语言的语法;每一种表达和语句都有对应的类。在一种更复杂的语言中,你不仅需要一个「语法表示」,还需要一个更容易分析或运行的「语义表示」。

解释器将会执行三个阶段:

将源码中的字符分割成标记符(token)

将标记符组织成一棵抽象语法树(AST)。抽象语法树就是中间表示。

评估这棵抽象语法树,并在最后打印这棵树的状态

将字符串分割成标记符的过程叫做「词法分析」,通过一个词法分析器完成。关键字是很短,易于理解的字符串,包含程序中最基本的部分,如数字、标识符、关键字和操作符。词法分析器会除去空格和注释,因为它们都会被解释器忽略。

将标记符组织成抽象语法树(AST)的过程称为「解析过程」。解析器将程序的结构提取成一张我们可以评估的表格。

实际执行这个解析过的抽象语法树的过程称为评估。这实际上是这个解析器中最简单的部分了。

词汇库

词法分析器的操作相当简单。它是基于正则表达式的,所以如果你不熟悉它们,你可能需要读一些资料。简单来说,正则表达式就是一种能描述其他字符串的特殊的格式化的字符串。你可以使用它们去匹配电话号码或是邮箱地址,或者是像我们遇到在这种情况,不同类型的标记符。

词法分析器的输入可能只是一个字符串。简单起见,我们将整个输入文件都读到内存中。输出是一个标记符列表。每个标记符包括一个值(它代表的字符串)和一个标记(表示它是一个什么类型的标记符)。语法分析器会使用这两个数据来决定如何构建一棵抽象语法树。

下面是一段来自词汇库的代码:

Python

1

2

3

4

5

6

7

8

9

10

python 科学计算_python科学计算 作用_pycharm 科学计算

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import sys

import re

def lex(characters, token_exprs):

pos = 0

tokens = []

while pos < len(characters):

match = None

for token_expr in token_exprs:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-57061-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...