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

147

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

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

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

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

Ответы:

200

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

Джоэл Коухорн
источник
3
@Joel: twitter.com/shanselman/status/5024768993
Даниэль Шаффер
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
сорокопут
20

Я бы использовал один из них:

  • Нанизывать()
  • ToSQL ()
  • Render ()
Sklivvz
источник
17

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

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

Антоним «анализировать» - «синтезировать».

Майк Ф
источник
4
синтезировать. хороший выбор.
MikeJ
12

Определенно Рендер.

Дэвид Митчелл
источник
10

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

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

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

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

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

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

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

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

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

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

Генри Б
источник
8

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

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

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

Майк Грэм
источник
7

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

MikeJ
источник
6

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

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

Уолтер Митти
источник
5

Возможно Формат (). или ToSQL () в вашем случае?

Омар Кохеджи
источник
5

unParse ()? Шучу, я бы пошел с toQueryString ()

оборота Бен Хоффштайн
источник
4

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

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

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

мистифицировать
источник
4

Я бы сказал сериализовать и десериализовать, вместо разбора и ...

Кристоф Эрреман
источник
4

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

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

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

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

Filini
источник
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

+1 для Generate, но придерживайтесь того, что вы генерируете, т.е. GenerateSQL ()

Том Лахти
источник
3

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

парень
источник
3

Как насчет asSQL () или даже более asQuery ()?

Муге
источник
3

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

mbmihura
источник
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. - Для меня противоположность разбора порождает. При разборе мы имеем предложение и грамматику в качестве входных данных и хотим знать, какова синтаксическая структура и / или семантическое представление предложения. В процессе генерации мы имеем семантическое представление и грамматику в качестве входных данных и хотим найти предложения, которые соответствуют семантическому представлению.
Йенс А. Кох