我有一个功能,parseQuery,分析SQL query入一个抽象的表示,查询。

我要写功能,需要一个抽象表示的查询和返回SQL query string.

我应该怎么称呼的第二种功能?

有帮助吗?

解决方案

我认为你想要的动词是'撰写'。

其他提示

解析的反面是序列化

在编译器术语中,相反的是“unsarse”。具体来说,解析将令牌流转换为抽象语法树,而解析将抽象语法树转换为令牌流。

撰写?在解析查询时,将其分解为组成部分(标记等),反之则是将这些部分组合成字符串查询。

为了补充您现有的命名, composeQuery 看起来效果最佳。

但在一般情况下,与解析相反的是ǝ sɹɐ d

我会用这个:

  • ToString()
  • ToSQL()
  • 渲染()

我认为“序列化”可能是你想要的词。它意味着生成可以从程序中导出(和导入)的数据的文本表示。

'analyze'的反义词是'合成'。

ToQueryString()

绝对渲染。

我称之为constructQuery。

生成或发射,可能。

只是添加一些东西。

当然,解析是双向的。

您可以将摘要解析为查询。

您可以将查询解析为摘要。

问题应该是,你怎么命名方法的后半部分,因为在这个实例中你要解析一个抽象来做一个你称之为 parseAbstract 的查询。

要回答这个问题,解析没有反面意义。

generateQuery,可能吗?的createQuery?

把你的选择

  • 产生
  • Dump
  • Serialize
  • 这些的

他们每个人都有稍微不同的内涵。

根据类及其相关运算符的性质,编写,构造,生成,呈现,压缩,缩减toSQL,toString

传统的编译器有两部分:解析器和代码生成器。

所以你可以称之为“生成”。当然,这里有点不同,因为编译器没有编写源代码。 (除非它是预编译器)。

可能格式化()。你实例中的ToSQL()?

unParse()?开个玩笑,我会选择toQueryString()

弄平?

解析后的查询对象可能代表一个条件层次结构,您可以将其“展平”。回到一维字符串。

但是考虑到你从一个对象到另一个字符串,实际上只是使用toString或toSQL()或类似的东西。此外,如果您设计得很好并使用了正确的应用程序,您可以稍后重命名,只需在评论中添加内容即可。

我会说序列化和反序列化,而不是解析和...

我会选择ToString(),因为你通常可以对它们进行链式嵌套(相反的函数,让你从Class1传递给Class2,反之亦然)

DateTime.Parse( DateTime.Parse( myDate.ToString() ).ToString() );

Serialize()看起来是一个不错的选择,但它在Deserialize()中已经相反。

在您的特定场景中,正如其他人指出的那样,ToSql()是另一个不错的选择。

我会使用渲染

> a = 'html': { 'head': {'title': 'My Page'}, 'body': { 'h1': 'Hello World', 'p': 'This is a Paragraph' } }

> b = render(a)

> console.log(b)

<html>
    <head>
        <title>My Page</title>
    </head>
    <body>
        <h1>Hello World</h1>
        <p>This is a Paragraph</p>
    </body>
</html>

哪个是恕我直言,与解析()相反

> c = parse(b)

{ 'html': {
    'head': {
        'title': 'My Page'
    }
    'body': {
        'h1': 'Hello World',
        'p': 'This is a Paragraph'
    }
}

+1代表生成,但是你要生成什么,即GenerateSQL()

我投票赞成'撰写',但如果你不喜欢,我也建议'建立'

asSQL()甚至更多asQuery()怎么样?

INHO序列化,合成是很好的选择。此外,正如您已命名parseQuery,我将使用codeQuery

我通常使用“解析”作为转换方法,因此,我找不到“转换”的相反字。 (你不能“取消转换”某些东西,因为“非转换”是一种转换本身。)

以这种方式思考,最好的解决方案(对我来说)是两个“解析”的解决方案。接收不同参数的方法。示例(Java):

public class FooBarParser{

    public Foo parse(Bar bar);
    public Bar parse(Foo foo); 
}

deparse

Deparse是解析,因为:

  • 编译是汇编
  • 分解的是撰写
  • deserialize是serialize
  • degroovy是时髦:);)

析/deparsing是不变的结构,但转换。精确之间的转换等效文本的和抽象的语法树格式,维护所有关系结构。

"组成"意味着改变结构,所以是不完全正确的。它建议相结合,从独立独立的部分(通常为第一次)。只是作为"分解"的建议分割成独立的部分。他们改变形式,不仅仅是格式。

快速搜寻显示术语的使用:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top