用prolog编写语法

用prolog编写语法,prolog,grammar,context-free-grammar,dcg,Prolog,Grammar,Context Free Grammar,Dcg,是否可以使用Prolog为非自然语言(例如SQL)定义语法? 如果是这样的话,请给我介绍一些起点。Prolog支持。使用此功能,您可以编写如下上下文无关语法: sql --> select_statement. select_statement --> select, from_statement. from --> [from]. select --> [select]. 这可以由Prolog解释器直接解释。 我不确定SQL需要什么样的语法。也可以编写某种上下文相关的

是否可以使用Prolog为非自然语言(例如SQL)定义语法?
如果是这样的话,请给我介绍一些起点。

Prolog支持。使用此功能,您可以编写如下上下文无关语法:

sql --> select_statement.
select_statement --> select, from_statement.
from --> [from].
select --> [select].
这可以由Prolog解释器直接解释。 我不确定SQL需要什么样的语法。也可以编写某种上下文相关的语法。

Prolog支持。使用此功能,您可以编写如下上下文无关语法:

sql --> select_statement.
select_statement --> select, from_statement.
from --> [from].
select --> [select].
这可以由Prolog解释器直接解释。
我不确定SQL需要什么样的语法。也可以编写一些上下文相关的语法。

谢谢@marli。这[来自]中的括号是什么意思?它们是语法的基础。这是Prolog中的简单常量,所以在这里将它们大写是错误的。好的,谢谢@marli。逗号的意思是“和”我想?“或”可以用“|”表示。是 啊那么,怎样才能表示某件事可以重复0次或多次呢?是的,逗号的意思是“和”。但“或”用分号表示“;”。这是在Prolog中处理的。实际上,语法样式只是语法糖。这是语法,而不是正则表达式。所以只能使用递归。例如,多个-->多个;一个。谢谢@marli。这[来自]中的括号是什么意思?它们是语法的基础。这是Prolog中的简单常量,所以在这里将它们大写是错误的。好的,谢谢@marli。逗号的意思是“和”我想?“或”可以用“|”表示。是 啊那么,怎样才能表示某件事可以重复0次或多次呢?是的,逗号的意思是“和”。但“或”用分号表示“;”。这是在Prolog中处理的。实际上,语法样式只是语法糖。这是语法,而不是正则表达式。所以只能使用递归。例如,多个-->多个;我怎么能这么说呢,例如:select-from-where是一个关键字,它们可以是大写或小写。这里没有任何链接或文档以简单的方式解释DCG的语法和使用。请我现在在谷歌上搜索,但我有点迷路了。提前谢谢。我怎么说呢,例如:select-from-where是关键字,它们可以是大写或小写。这里没有任何链接或文档以简单的方式解释DCG的语法和使用。请我现在在谷歌上搜索,但我有点迷路了。提前谢谢。