GF徽标

GF Web服务API

2016年6月



介绍

PGF API通过主GF可执行文件中的内置HTTP服务器作为Web服务提供。用启动GF激活-服务器标志:

$gf-服务器这是GF版本3.8。文档根=/usr/share/gf-3.8/www启动HTTP服务器,打开本地主机:41296/在您的web浏览器中。

编译的GF语法(A.pgf(磅/平方英尺)文件)可以在web应用程序中使用,方法是将其放在文档根目录下的某个位置。当请求访问.pgf(磅/平方英尺)文件中,GF web服务器将加载和缓存语法,并解释URL(在url编码查询格式)。您得到的响应通常是JSON格式格式,但也可以是图像或纯文本。

例如,如果我的语法.pgf是直接放在文档根下的语法,则可以使用以下URL访问语法:

http://localhost:41296/my_grammar.pgf

URL中不包含任何参数时的默认值是一个响应,其中包含一些有关语法的一般信息,这些信息以JSON格式编码。要执行特定命令,必须告诉您要执行的命令。该命令编码在参数中命令即:

http://localhost/my_grammar.pgf?命令=cmd公司

哪里cmd公司是命令的名称。大多数命令都需要额外的参数,这些参数也被编码为参数。下面介绍了支持的命令及其参数。

命令


语法

此命令提供有关语法的一些一般信息。如果没有给定“command”参数,也会执行此命令。

输入
参数 描述 违约
命令 应该是语法 -
输出

包含以下字段的JSON对象:

字段 描述
名称 语法中抽象语法的名称
用户语言 语法中与用户浏览器中设置的默认语言最匹配的具体语言
类别 语法中定义的所有抽象语法类别的列表
功能 语法中定义的所有抽象语法函数的列表
语言 语法中可用的具体语言列表

每种语言都用具有这两个字段的对象进行描述:

字段 描述
名称 语言的具体语法名称
语言代码 根据ISO标准英语对于英语,背景保加利亚语等。

语言代码需要在语法中指定flags language=。。。。web服务接收浏览器中设置的语言的代码,并将其与语法中定义的代码进行比较。如果匹配,则服务返回相应的具体语法名称。如果未找到匹配项,则按字母顺序返回第一种语言。


正在分析

此命令解析字符串并返回抽象语法树列表。

输入

参数 描述 违约
命令 应该是解析 -
解析器的开始类别 语法的默认开始类别
输入 要分析的字符串 空字符串
用于分析的具体语法的名称 将尝试语法中的所有语言
限制 限制返回的树数(gf>3.3.3) 没有应用限制

输出

对象列表,其中每个对象表示每个输入语言的分析。对象有三个字段:

字段 描述
解析中使用的具体语言
括号 解析器中带括号的字符串
抽象语法树列表
typeErrors(类型错误) 类型检查器中的错误列表

抽象语法树以纯字符串的形式发送。类型错误是具有两个字段的对象:

字段 描述
外国直接投资 指向发生错误的括号字符串中的括号的林id
消息 错误的文本消息

当前实现要么返回抽象语法树列表,要么返回类型错误列表。通过检查字段树是否为空,我们可以检查类型检查是否成功。


线性化

该命令采用抽象语法树并生成指定语言的字符串。

输入

参数 描述 违约
命令 应该是使线性化 -
线性化的抽象语法树 -
线性化中使用的具体语法的名称 将生成语法中所有语言的线性化

输出

字段 描述
用于线性化的具体语言
输出文本

翻译

翻译是一个两步的过程。首先用源语言解析输入句子,然后通过与目标语言的线性化产生输出句子。因此,此命令的输入和输出是解析命令和线性化命令的输入/输出的并集。

输入

参数 描述 违约
命令 应该是翻译 -
解析器的开始类别 语法的默认开始类别
输入 要翻译的输入字符串 空字符串
源语言 将尝试语法中的所有语言
目标语言 将生成语法中所有语言的线性化
限制 限制使用多少解析树(gf>3.3.3) 没有应用限制

输出

输出是具有以下字段的对象列表:

字段 描述
解析中使用的具体语言
括号 解析器中带括号的字符串
翻译 翻译列表
typeErrors(类型错误) 类型检查器中的错误列表

每个翻译都是一个具有两个字段的对象:

抽象语法树
线性化 线性化列表

每个线性化都是一个具有两个字段的对象:

字段 描述
线性化中使用的具体语言
文本 产生的句子

类型错误是具有两个字段的对象:

字段 描述
外国直接投资 指向发生错误的括号字符串中的括号的林id
消息 错误的文本消息

当前实现要么返回翻译列表,要么返回类型错误列表。通过检查字段翻译是否为空,我们可以检查类型检查是否成功。


随机生成

此命令生成随机抽象语法树,其中顶级函数将属于指定的类别。子树的类别将由父函数的类型签名确定。

输入

参数 描述 违约
命令 应该是随机的,随机的 -
发电机的启动类别 语法的默认开始类别
限制 生成的最大树数 1

输出

输出是只有一个字段的对象列表:

字段 描述
生成的抽象语法树

列表的长度受限制参数的限制。


单词完成

单词补全是解析的一种特殊情况。如果有一个不完整的句子,则首先对其进行解析,然后使用解析图的状态来预测语法正确的句子中可能出现的单词集。

输入

参数 描述 违约
命令 应该是完成 -
解析器的开始类别 语法的默认开始类别
输入 光标左侧已键入的字符串 空字符串
用于分析的具体语法的名称 将尝试语法中的所有语言
限制 生成的最大树数 将返回所有单词

输出

输出是一个对象列表,其中有两个字段描述完成。

字段 描述
这个词的具体句法
文本 单词本身

抽象语法树可视化

此命令将抽象语法树呈现为图像。支持多种图像格式。

输入

参数 描述 违约
命令 应该是抽象树 -
要呈现的抽象语法树 -
格式 输出格式(gf>3.3.3) png公司

输出

默认情况下,输出为PNG格式的图像。Content-Type设置为图像/png,因此可视化生成的图像的最简单方法是添加HTML元素<img/>指向可视化命令的URL,即:

<img src=“http://localhost/my_grammar.pgf?command=abtrtree&tree=。。。"/>

这个格式参数也可以是gif格式,svg公司全球价值观,用于GIF(图像/gif)、SVG(image/svg+xml)或graphviz(文本/纯文本)格式。


分析树可视化

此命令呈现与特定抽象语法树相对应的解析树。生成的图像为PNG格式。

输入

参数 描述 违约
命令 应该是解析树 -
要呈现的抽象语法树 -
渲染中使用的具体语法的名称 -
格式 输出格式(gf>3.3.3) png公司
选项 其他渲染选项(gf>3.4) -

其他渲染选项包括:诺列夫,没有乐趣诺卡特(布尔值,默认为false);节点(nodefont),叶子字体,节点颜色,叶色,节点格式叶状花纹(字符串具有内置默认值)。

输出

默认情况下,输出是PNG格式的图像。Content-Type设置为图像/png,因此可视化生成的图像的最简单方法是添加HTML元素<img/>指向可视化命令的URL,即:

<img src=“http://localhost/my_grammar.pgf?command=解析树&树=。。。"/>

这个格式参数也可以是gif格式,svg公司全球价值观,用于GIF(图像/gif)、SVG(image/svg+xml)或graphviz(文本/纯文本)格式。


单词对齐图

此命令显示语法中某些句子和所有语言的单词对齐图。句子是从给定的抽象语法树生成的。

输入

参数 描述 违约
命令 应该是对齐 -
要呈现的抽象语法树 -
格式 输出格式(gf>3.3.3) png公司
图表中包含的语言列表(gf>3.4) 语法支持的所有语言

输出

默认情况下,输出是PNG格式的图像。Content-Type设置为图像/png,因此可视化生成的图像的最简单方法是添加HTML元素<img/>指向可视化命令的URL,即:

<img src=“http://localhost/my_grammar.pgf?command=alignment&tree=。。。“/>

这个格式参数也可以是gif格式,svg公司全球价值观,用于GIF(图像/gif)、SVG(image/svg+xml)或graphviz(文本/纯文本)格式。


单词依赖关系图

此命令(在GF>=3.8中可用)以各种格式输出单词依赖关系图。

输入

参数 描述 违约
命令 应该是去树 -
要呈现的抽象语法树 -
格式 输出格式,见下文
要在图表中使用的具体语法的名称 -

这个格式是以下之一:


未记录的命令

还有一些其他命令缺少适当的文档:

有关详细信息,请参阅源代码。


使用C运行时系统的命令

GF包括PGFAPI的两个实现:传统的Haskell实现和较新的C实现。上面记录的命令都使用Haskell实现。以下命令使用C实现:

它们实现了与相应命令相同的功能,但没有c(c)-前缀,尽管它们支持哪些参数有一些限制,并且输出的JSON数据结构也有一些差异。

使用这些命令时,语法将由C运行时系统加载和缓存。如果您使用来自Haskell和C实现的命令,并且语法相同,则语法将加载两次。


www.grammaticalframework.org