Trái ngược với 'phân tích' là gì? [đóng cửa]


147

Tôi có một hàm, parseQuery, phân tích một truy vấn SQL thành một biểu diễn trừu tượng của truy vấn đó.

Tôi sắp viết một hàm có biểu diễn trừu tượng của truy vấn và trả về chuỗi truy vấn SQL.

Tôi nên gọi hàm thứ hai là gì?


Xâu chuỗi? Lớp JSON sử dụng thuật ngữ này. JSON.parse và đối với JSON.opesify ngược lại ?
Héo

Câu trả lời:


200

Tôi nghĩ động từ bạn muốn là 'sáng tác'.



16
Ý tôi là, trở lại một năm sau tôi thậm chí trả lời 'lắp ráp' như một đối diện tốt hơn, hoặc 'xây dựng' như một tên chức năng tốt hơn.
Joel Coehoorn

3
Ôi chà, tôi đã không kiểm tra ngày tháng này ...
Daniel Schaffer

err .. tại sao không ToString ()? Có vẻ là tiêu chuẩn được đặt ra bởi những người như Int32, v.v.
Joseph Kingry

1
đã đưa ra nhận xét trước đây của tôi trước khi thấy rằng câu hỏi là bất khả tri về ngôn ngữ. ToString () dường như là tiêu chuẩn được chấp nhận bởi .NET
Joseph Kingry

79

Đối diện của phân tích cú phápnối tiếp


1
Đây có thể là câu trả lời hữu ích nhất từ ​​quan điểm của tôi.
JosephDoggie

8
Thế còn 'giải trừ'?
Den

32

Trong thuật ngữ trình biên dịch, ngược lại là "unparse". Cụ thể, phân tích cú pháp biến một luồng mã thông báo thành các cây cú pháp trừu tượng, trong khi việc bỏ mã biến các cây cú pháp trừu tượng thành một luồng mã thông báo.


4
Thích khám phá xe hơi ...
Walter Tross

31

Soạn, biên soạn? Khi phân tích cú pháp một truy vấn, bạn chia nó thành các phần cấu thành của nó (mã thông báo, v.v.), điều ngược lại sẽ là kết hợp các phần thành một truy vấn chuỗi.


21

Để bổ sung cho việc đặt tên hiện tại của bạn, composeQuery trông tốt nhất.

Nhưng trong trường hợp chung, ngược lại với phân tích cú pháp là ǝsɹɐd


8
Tôi nghĩ đó là điều ngược lại, ngược lại sẽ là esrap
agusgambina 17/12/14

@agusgambina: thực ra, điều này có ý nghĩa ... Hãy nghĩ về vỏ Bourne: nếu ... trường hợp ... esac
shrike

20

Tôi sẽ sử dụng một trong những điều sau đây:

  • ToString ()
  • ToQuery ()
  • Kết xuất ()

17

Tôi nghĩ "serialization" có lẽ là từ bạn muốn. Nó có nghĩa là để tạo ra một biểu diễn văn bản của dữ liệu có thể được xuất (và nhập) từ chương trình.


1
Nối tiếp có thể dễ dàng có nghĩa là một đại diện nhị phân.
Ben Hoffstein

1
Thật. Parsimg là tất cả về mờ dần trong dữ liệu bên ngoài, và tuần tự hóa là tất cả về sản xuất dữ liệu cho sử dụng bên ngoài. Các định dạng được tạo ra không bắt buộc phải là văn bản, nhưng thường là.
Kyle Cronin

Rõ ràng bàn phím iPod của tôi đang trở nên tốt hơn đối với tôi. Đó được cho là "phân tích cú pháp" và "đọc".
Kyle Cronin

15

Từ trái nghĩa của 'phân tích' là 'tổng hợp'.


4
tổng hợp. sự lựa chọn tốt.
MikeJ



10

Tôi sẽ gọi nó là construcQuery.


Nghe có vẻ gần như hoàn hảo. Đó là những gì sẽ xảy ra. Anh ta sẽ thu thập dữ liệu có thể "nói thành lời". Anh ta sẽ "xây dựng" một truy vấn.
Tgwizman

10

tạo hoặc phát ra, có thể.


1
Tôi đồng ý. rfc7159 (JSON), trong phần 9 và 10 định nghĩa "Trình phân tích cú pháp" và "Trình tạo" là đối lập.
mydoghasworms

10

Chỉ cần thêm một số thứ.

Chắc chắn phân tích là một từ hai chiều.

Bạn có thể phân tích một bản tóm tắt thành một truy vấn.

Bạn có thể phân tích một truy vấn thành một bản tóm tắt.

Câu hỏi nên là, bạn đặt tên cho phần sau của phương thức là gì và bởi vì trong trường hợp này, bạn đang phân tích một bản tóm tắt để thực hiện một truy vấn mà bạn gọi nó parseAbstract.

Để trả lời câu hỏi, phân tích cú pháp không có ngược lại.



8

Bạn chọn đi

  • Tạo
  • Đổ
  • Nối tiếp
  • Phát ra

Họ từng có ý nghĩa hơi khác nhau.



7

soạn thảo, xây dựng, tạo, kết xuất, ngưng tụ, thu nhỏ, toQuery, toString tùy thuộc vào bản chất của lớp và các toán tử liên quan của nó


6

Một trình biên dịch truyền thống có hai phần: trình phân tích cú pháp và trình tạo mã.

Vì vậy, bạn có thể gọi nó là "Tạo". Tất nhiên, ở đây có một chút khác biệt vì trình biên dịch không viết mã nguồn. (trừ khi nó là một trình biên dịch trước).




4

làm phẳng?

Đối tượng truy vấn được phân tích cú pháp có lẽ đại diện cho một hệ thống phân cấp điều kiện, mà bạn đang "làm phẳng" trở lại thành chuỗi 1 chiều.

Nhưng được cho rằng bạn đang đi từ đối tượng đến chuỗi, thực sự chỉ cần sử dụng toString hoặc toQuery () hoặc một cái gì đó tương tự. Bên cạnh đó, nếu bạn thiết kế tốt và đang sử dụng đúng ứng dụng, bạn có thể đổi tên nó sau và chỉ cần dán nội dung vào các nhận xét về những gì nó làm.


4

Tôi muốn nói tuần tự hóa và giải tuần tự hóa, thay vì phân tích cú pháp và ...


4

Tôi sẽ dùng ToString (), vì bạn thường có thể lồng chúng (các hàm đối diện, cho phép bạn chuyển từ Class1 sang Class2 và ngược lại)

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

Serialize () có vẻ như là một lựa chọn tốt, nhưng nó đã có một điều ngược lại trong Deserialize ().

Trong kịch bản cụ thể của bạn, như đã chỉ ra, ToSql () là một lựa chọn tốt khác.


4

Tôi sẽ sử dụng kết xuất

> 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>

Đó là IMHO, ngược lại với parse ()

> c = parse(b)

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

3

+1 cho Tạo, nhưng giải quyết những gì bạn đang tạo, tức là GenerateQuery ()


3

Tôi đã bình chọn cho 'sáng tác' nhưng nếu bạn không thích điều đó tôi cũng sẽ đề xuất 'xây dựng'


3

Điều gì về asQuery () hoặc thậm chí nhiều hơn asQuery ()?


3

INHO Nối tiếp, tổng hợp là những lựa chọn tốt. Ngoài ra, như bạn đã đặt tên parseQuery, tôi sẽ đi với codeQuery


3

Tôi thường sử dụng "phân tích cú pháp" làm phương thức chuyển đổi và do đó, tôi không thể tìm thấy một từ trái nghĩa với "chuyển đổi". (bạn không thể "giải mã" thứ gì đó, vì "không chuyển đổi" là một loại chuyển đổi).

nghĩ theo cách này, giải pháp tốt nhất (đối với tôi) là có hai phương pháp "phân tích cú pháp" nhận các đối số khác nhau. Ví dụ (Java):

public class FooBarParser{

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

2

thô

Depough là để phân tích, như:

  • dịch ngược là biên dịch
  • phân hủy là để sáng tác
  • deserialize là để tuần tự hóa
  • degroovy là để Groovy :);)

Phân tích cú pháp / deparsing không phải là thay đổi cấu trúc, mà là chuyển đổi. Chuyển đổi chính xác giữa văn bản tương đương và định dạng cây cú pháp trừu tượng, duy trì tất cả các mối quan hệ & cấu trúc.

"Soạn" có nghĩa là thay đổi cấu trúc, vì vậy không hoàn toàn đúng. Nó gợi ý kết hợp từ các phần độc lập riêng biệt (thường là lần đầu tiên). Giống như "phân hủy" đề nghị tách thành các phần độc lập. Họ thay đổi hình thức, không chỉ định dạng.

Một tìm kiếm nhanh cho thấy thuật ngữ được sử dụng trong:


Một tìm kiếm nhanh về Mã Github cho thấy thuật ngữ "depough" không được sử dụng rộng rãi, xem github.com/search?q=deparse - Tôi nghĩ "depely" là một thuật ngữ từ hệ sinh thái R. - Đối với tôi ngược lại với phân tích cú pháp đang tạo ra. Trong phân tích cú pháp , chúng ta có một câu và một ngữ pháp làm đầu vào và muốn biết cấu trúc cú pháp và / hoặc biểu diễn ngữ nghĩa của câu là gì. Trong thế hệ , chúng ta có một biểu diễn ngữ nghĩa và ngữ pháp làm đầu vào và muốn tìm các câu tương ứng với biểu diễn ngữ nghĩa.
Jens A. Koch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.