Что является противоположностью «разбора»? [закрыто]


147

У меня есть функция, parseQuery, которая анализирует SQL-запрос в абстрактном представлении этого запроса.

Я собираюсь написать функцию, которая принимает абстрактное представление запроса и возвращает строку запроса SQL.

Как мне назвать вторую функцию?


Stringify? Класс JSON использует эту терминологию. JSON.parse и для противоположного JSON.stringify ?
Уилт

Ответы:


200

Я думаю, что глагол, который вы хотите, это «составить».



16
Я имею в виду, что, вернувшись через год, я бы даже ответил «собрать» как лучшую противоположность или «построить» как лучшее имя функции.
Джоэл Коухорн

3
Ого, я не проверял даты на этом ... ТАК вопрос о некромантии!
Даниэль Шаффер

эээ .. почему не ToString ()? Кажется, это стандарт, установленный подобными Int32 и т. Д.
Джозеф Кингри

1
сделал мой предыдущий комментарий, прежде чем увидел, что вопрос не зависит от языка. ToString () кажется принятым стандартом .NET
Джозеф Кингри

79

Противоположностью синтаксического анализа является сериализация


1
Это может быть самый полезный ответ с моей точки зрения.
JosephDoggie

8
Что насчет «десериализации»?
Ден

32

В терминологии компилятора противоположность "unparse". В частности, синтаксический анализ превращает поток токенов в деревья абстрактного синтаксиса, а разбор превращает деревья абстрактного синтаксиса в поток токенов.


4
Как разбить машину ...
Уолтер Тросс

31

Compose? При синтаксическом анализе запроса вы разбиваете его на составные части (токены и т. Д.), В противном случае части составляются в виде строкового запроса.


21

В дополнение к существующим именам , composeQuery выглядит лучше всего.

Но в общем случае противоположность синтаксического разбора ǝsɹɐd


8
Я думаю, что это обратное, противоположность будет esrap
agusgambina

@agusgambina: на самом деле, это имеет смысл ... Подумайте о Bourne оболочки: если ... фи случай ... ESAC
сорокопут


17

Я думаю, что «сериализация», вероятно, слово, которое вы хотите. Это означает создание текстового представления данных, которые можно экспортировать (и импортировать) из программы.


1
Сериализация также может означать двоичное представление.
Бен Хоффштейн

1
Правда. Parsimg - это все о потере внешних данных, а сериализация - о создании данных для внешнего использования. Созданный формат не обязательно должен быть текстовым, но часто это так.
Кайл Кронин

Очевидно клавиатура моего iPod становится лучше меня. Это должно быть "разбор" и "чтение".
Кайл Кронин




10

Я бы назвал это constructQuery.


Это звучит почти идеально. Это то, что будет происходить. Он собирал данные, которые можно было бы «выразить словами». Он "построит" запрос.
Tgwizman

10

генерировать или испускать, возможно.


1
Я согласен. rfc7159 (JSON), в разделах 9 и 10 определяют «Parser» и «Generator» как противоположности.
mydoghasworms

10

Просто чтобы добавить кое-что.

Конечно, разбор это двустороннее слово.

Вы можете разобрать реферат в запрос.

Вы можете разобрать запрос в реферат.

Вопрос должен звучать так: как вы называете последнюю часть метода, и потому что в этом случае вы анализируете реферат, чтобы сделать запрос, вы бы вызвали его parseAbstract.

Чтобы ответить на вопрос, синтаксический анализ не имеет противоположности.



8

Сделайте ваш выбор

  • генерировать
  • свалка
  • Сериализация
  • Испускают

Каждый из них имеет немного разные коннотации.



7

составлять, конструировать, генерировать, визуализировать, сгущать, сокращать, toSQL, toString в зависимости от природы класса и связанных с ним операторов


6

Традиционный компилятор состоит из двух частей: парсера и генератора кода.

Таким образом, вы можете назвать это «Генерировать». Конечно, здесь все немного по-другому, потому что компилятор не пишет исходный код. (если это не прекомпилятор).




4

выравниваться?

Анализируемый объект запроса, возможно, представляет иерархию условий, которую вы «сплющиваете» обратно в одномерную строку.

Но, учитывая, что вы переходите от объекта к строке, на самом деле просто используйте toString или toSQL () или что-то в этом роде. Кроме того, если вы разработали его правильно и используете правильное приложение, вы можете переименовать его позже и просто добавить в комментарии то, что он делает.



4

Я бы пошел на ToString (), так как вы обычно можете их объединить (противоположные функции, которые позволяют вам переходить от Class1 к Class2 и наоборот)

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

Serialize () выглядит хорошим выбором, но в Deserialize () он уже имеет противоположность.

В вашем конкретном сценарии, как уже отмечалось, ToSql () является еще одним хорошим выбором.


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


3

Я голосовал за «сочинение», но если вам не нравится это, я бы также предложил «построить»



3

INHO Serialize, синтезировать являются хорошими вариантами. Кроме того, как вы назвали parseQuery, я пойду с codeQuery


3

Я обычно использую "parse" в качестве метода преобразования и, следовательно, я не могу найти противоположное слово для "convert". (вы не можете «деконвертировать» что-то, так как «не конвертировать» - это сам тип конвертации).

С этой точки зрения лучшее решение (для меня) - это два «разбора» метода, которые получают разные аргументы. Пример (Java):

public class FooBarParser{

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

2

deparse

Депарсировать это разобрать, так как:

  • декомпилировать это компилировать
  • разложить, чтобы составить
  • десериализация - это сериализация
  • дегровый это к заводной :);)

Разбор / разбор - это не изменение структуры, а преобразование. Точное преобразование между эквивалентным текстом и форматами абстрактного синтаксического дерева, поддерживая все отношения и структуру.

«Составлять» означает изменение структуры, поэтому оно не совсем верно. Он предлагает объединение из отдельных независимых частей (обычно в первый раз). Точно так же, как «разложение» предполагает разделение на независимые части. Они меняют форму, а не только формат.

Быстрый поиск шоу это термин, используемый в:


Быстрый поиск по коду Github показывает, что термин «deparse» не имеет широкого применения, см. Github.com/search?q=deparse - я думаю, что «deparse» - это термин из экосистемы R. - Для меня противоположность разбора порождает. При разборе мы имеем предложение и грамматику в качестве входных данных и хотим знать, какова синтаксическая структура и / или семантическое представление предложения. В процессе генерации мы имеем семантическое представление и грамматику в качестве входных данных и хотим найти предложения, которые соответствуют семантическому представлению.
Йенс А. Кох
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.