词法结构

Agda代码是用UTF-8编码的纯文本文件编写的,扩展名为.agda(阿格达)。大多数unicode字符可用于标识符,空白为重要,请参阅姓名布局如下所示。

代币

关键词和特殊符号

大多数非空白unicode可以用作Agda名称的一部分,但有两种例外情况:

特殊符号
具有特殊含义的字符,不能出现在名称中。这些是.;{}()@“.
关键字

不能显示为名称部分,但可以出现名称中包含其他字符。

= | -> : \ λ .. ... 摘要 鳕鱼 共性的 建造师 数据 eta-e质量 领域 对于所有人 躲藏 进口 在里面 感应的 中缀 中缀 中缀 实例 模块 相互的 无环境质量 打开 重叠 图案 假设 原始的 私有的 公众的 引用 引用上下文 引用目标 报价条款 记录 重命名 重写 设置 语法 战术 无报价 unquoteDecl(取消报价) 非引用定义 使用 哪里 具有

这个设置关键字可以带有数字后缀(可选下标)(请参见人群级别). 例如设置42设置₄₂两者都是关键字。

姓名

A类限定名是的非空序列姓名由点分隔(.). A类名称是一个交替的序列命名零件和下划线(_),包含至少一个名称部分。A类名称部分是非空的unicode字符序列,不包括空格,_,以及特殊符号。名称部分不能是关键字不能以单引号开头,'(用于字符文字,请参阅直接常量(见下文)。

示例
  • 有效期:数据?,::,如果_则_ else_,0亿,_⊢_∈_,x=y
  • 无效:数据_?,食品__bar,_,a;b条,[_.._]

名称中的下划线指示使用名称时参数的位置作为操作员。例如,应用程序_+_ 1 2可以写为1 + 2。请参阅Mixfix运算符了解更多信息。因为大多数序列个字符是有效的名称,空格比其他字符更重要语言。在上面的示例中+是必需的,因为1+2是有效的名称。

限定名用于引用其他模块中定义的实体。对于实例前奏曲。布尔特鲁指的是名称真实的定义在模块前奏曲。布尔。请参阅模块系统了解更多信息。

直接常量

有四种类型的文字值:整数、浮点、字符和串。请参见内嵌函数对应类型,以及文字过载了解如何支持用户定义类型的文字。

整数

十进制或十六进制的整数值(前缀为0x个)符号。非负数默认映射到内置自然数,但可能会过载。负数没有默认值解释,只能通过过载.

示例:123,0xF0F080个,-42个,-0xF(0xF)

浮子

标准表示法中的浮点数(带方括号表示可选部件):

浮点::=[-]十进制。十进制[指数]|[-]十进制指数指数::=(e|e)[+|-]十进制

这些映射到内置浮点不能超载。

示例:1,-5.0秒+12秒,1.01e-16,4.2第9版,50e3型.

字符

字符文字用单引号括起来('). 他们可以是单个(unicode)字符,而不是'\或逃跑字符。转义字符以反斜杠开头\后跟一个转义码。转义码是十进制或十六进制的自然数(前缀为x个)协议双方:00x10英尺/小时(1114111),或其中之一以下特殊转义码:

代码 腹水 代码 腹水 代码 腹水 代码 腹水
7 b条 8 t吨 9 n个 10
v(v) 11 (f) 12 \ \ ' '
NUL(无) 0 SOH公司 1 STX公司 2
交易所交易系统 3 EOT公司 4 ENQ公司 5 确认 6
BEL公司 7 英国标准 8 HT(高温) 9 如果 10
及物动词 11 FF公司 12 CR公司 13 SO公司 14
15 DLE公司 16 数据中心1 17 数据中心2 18
数据中心3 19 DC4公司 20 NAK公司 21 同步 22
欧洲交易委员会 23 CAN总线 24 相对长度单位 25 附属的 26
电子稳定控制系统 27 可行性研究 28 GS公司 29 RS系列 30
美国 31 服务提供商 32 DEL公司 127    

字符文字映射到内置字符类型不能过载。

示例:“A”,'∀','\x2200',“\ESC”,“\ 32”,“\n”,'\'','"'.

字符串

字符串文字是包含在双引号。它们遵循的规则与字符字面常数除了双引号更需要逃避比单引号'。字符串文本映射到内置字符串类型默认情况下,但可以是过载.

例子:"Привет \“мир\”\n“.

孔洞

孔洞是由Emacs模式。中包含的任何文本{!!}是一个孔,可能包含嵌套孔。没有内容的洞可以写。有许多Emacs命令对孔。类型检查器忽略孔的内容并将其视为未知(请参阅隐式参数).

例子:{! (f) {!x!} 5 !}

评论

单行注释用双短划线书写--然后是任意文本。多行注释包含在{--}并且可以嵌套。注释不能出现在字符串.

例子:

{-这是一个{-嵌套-}
注释-}
 :字符串--行注释{-= “{-不是注释-}”

编译指示

Pragmas是附在{-##-}有特别的对系统的意义。请参见编译指示查看杂注的完整列表。

布局

Agda使用与Haskell类似的规则对布局敏感,但有例外该布局是必需的:不能使用显式{,};避开它。

布局块包含以下序列声明并由其中一个布局关键字:

抽象字段实例让宏相互假设原语private where

布局关键字后的第一个标记决定块的缩进。任何缩进超过此值的标记都是前一语句的一部分,位于同一级别开始一条新语句,外部有缩进较少的标记街区。

数据国家: 设置 哪里 --开始布局块
    --注释不是标记
   :国家--报表1
  苏克  :国家    --报表2国家--也是报表2

 :国家--布局块外部=真空零点

请注意,布局关键字的缩进并不重要。

Agda文件包含一个顶级布局块,具有特殊规则顶级模块的内容不需要缩进。

模块 例子 哪里
未缩进 :设置未缩进= 设置

识字阿格达

Agda支架识字编程文件中的所有内容都位于注释,除非包含在\开始{code},\结束{code}.识字阿格达文件具有扩展名.拉格达而不是.agda(阿格达)。的主要用例识字的Agda是从Agda代码生成LaTeX文档。请参见生成LaTeX了解更多信息。

\文档类{文章}
%一些可能的东西
\开始{文件}这里通常是介绍\开始{代码}模块MyPaper,其中打开导入序曲五:Nat五=2+3\结束{代码}现在,结论!\结束{文件}