词法分析--行结构

Posted wdzn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词法分析--行结构相关的知识,希望对你有一定的参考价值。

1、逻辑行

逻辑行以换行符结束。

语句不能跨越多个逻辑行,除非其语句的语法中允许包含换行符。

一个逻辑行可由一个物理行或多个包含明确或隐含的行拼接规则的物理行构成。

例1

name =     '小明'

2、物理行

物理行是以一个行终止序列结束的字符序列。

3、注释的作用:

注释帮助理解记忆代码的作用

3.1 单行注释

“#”后面是一行注释

在每一行需要注释的地方进行注释

例2

name = '小明'  # 将 name 赋值为'小明'

3.2 多行注释

三个单引号或者三个双引号

例3

name = '小明'
"""
多行注释
将 name 赋值为'小明'
"""

4、编码声明

编码声明必须在文件的第一个有效行

python3默认编码为utf-8格式

4.1 编码声明格式

# -*- coding: <encoding-name> -*-

5、代码中的多行拼接

5.1 显式的行拼接

两个或多个物理行可使用反斜杠字符()拼接为一个逻辑行。这种拼接方法称为显示的行拼接。

显示行拼接的物理行不能带有注释

if 1900 < year < 2100 and 1 <= month <= 12    and 1 <= day <= 31 and 0 <= hour < 24    and 0 <= minute < 60 and 0 <= second < 60:   # Looks like a valid date
        return 1

5.2 隐式的行拼接

圆括号、方括号或花括号以内的表达式允许分成多个物理行,无需使用反斜杠。
隐式的行拼接可以带有注释。后续行的缩进不影响程序结构。后续行也允许为空白行。
隐式拼接的行之间不会有 NEWLINE 形符。
隐式拼接的行也可以出现于三引号字符串中 ,三引号字符串中的物理行不允许带有注释。

month_names = ['Januari', 'Februari', 'Maart',      # These are the
               'April',   'Mei',      'Juni',       # Dutch names
               'Juli',    'Augustus', 'September',  # for the months
               'Oktober', 'November', 'December']   # of the year

6、语句缩进

一个逻辑行开头处的空白 (空格符和制表符) 被用来计算该行的缩进等级,以决定语句段落的组织结构。

6.1 缩进示例

def perm(l):
        # Compute the list of all permutations of l
    if len(l) <= 1:
                  return [l]
    r = []
    for i in range(len(l)):
             s = l[:i] + l[i+1:]
             p = perm(s)
             for x in p:
              r.append(l[i:i+1] + x)
    return r

以上是关于词法分析--行结构的主要内容,如果未能解决你的问题,请参考以下文章

编译原理 实验一 java语言实现对C语言词法分析

编译原理 实验一 java语言实现对C语言词法分析

基于正则表达式的词行词法分析|自然语言处理

词法分析的数据结构看起来如何?

词法分析程序的设计与实现

词法分析程序