“parse”的相反意思是什么?

147

我有一个函数 parseQuery,用于将 SQL 查询解析为该查询的抽象表示。

我即将编写一个函数,接受一个查询的抽象表示并返回相应的 SQL 查询字符串。

第二个函数应该叫什么?

答:第二个函数可以命名为 buildQuery 或 generateQuery。

Stringify?JSON类使用这个术语。JSON.parse用于解析JSON字符串,而JSON.stringify则用于将JavaScript对象转换为JSON字符串。 - Wilt
33个回答

4
我会建议使用渲染技术。
> 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>

在我看来,这与parse()相反。

> c = parse(b)

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

4

展平?

解析的查询对象可能代表一个条件层次结构,您需要将其"展平"为一维字符串。

但考虑到你是从对象转化为字符串,真的只需要使用toString或toSQL()等方法。此外,如果您设计得好并且正在使用正确的应用程序,则可以稍后重命名它,并在注释中添加对其功能的说明。


4
我建议使用序列化和反序列化代替解析和...。

4
我会选择使用ToString(),因为通常可以将它们链接嵌套在一起(相反的函数,让您从Class1转到Class2,反之亦然)。
DateTime.Parse( DateTime.Parse( myDate.ToString() ).ToString() );

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

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


3

那么asSQL()或者更进一步的asQuery()呢?


3

INHO Serialize和synthesize是不错的选择。另外,由于你已经将其命名为parseQuery,我会选择codeQuery。


3
+1表示支持Generate,但需要加上你要生成的内容,比如GenerateSQL()。

3

我投票支持“compose”这个词,但如果你不喜欢的话,我也建议使用“build”


3

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

从这个角度来看,对于我来说最好的解决方案是拥有两种接收不同参数的“解析”方法。例如(Java):

public class FooBarParser{

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

2

Deparse

Deparse是解析的反义词,就像:

  • 反编译是编译的反义词
  • 分解是组成的反义词
  • 反序列化是序列化的反义词
  • degroovy是groovy的反义词 :) ;)

解析/反解析不是结构的改变,而是转换。精确地在等效文本和抽象语法树格式之间进行转换,保持所有关系和结构。

"组合"意味着结构的改变,因此并不完全正确。它暗示了从独立的部分(通常是第一次)组合在一起。就像"分解"暗示将其分成独立的部分一样。它们改变形式,而不仅仅是格式。

快速搜索显示该术语在以下领域中使用:


一个快速的Github代码搜索显示,“deparse”这个术语没有广泛的使用,参见https://github.com/search?q=deparse - 我认为“deparse”是R生态系统中的一个术语。- 对我来说,解析的相反过程是生成。在解析中,我们有一个句子和一个语法作为输入,并想知道句子的句法结构和/或语义表示是什么。在生成中,我们有一个语义表示和一个语法作为输入,并希望找到与语义表示相对应的句子。 - Jens A. Koch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接