Что является противоположностью «разбору»?[закрыто]
-
02-07-2019 - |
Вопрос
У меня есть функция parseQuery, которая преобразует запрос SQL в абстрактное представление этого запроса.
Я собираюсь написать функцию, которая принимает абстрактное представление запроса и возвращает строку запроса SQL.
Как мне назвать вторую функцию?
Решение
Я думаю, вам нужен глагол «сочинить».
Другие советы
Противоположно анализировать является сериализовать
В терминологии компилятора противоположностью является «разбор».В частности, синтаксический анализ превращает поток токенов в абстрактные синтаксические деревья, а разбор превращает абстрактные синтаксические деревья в поток токенов.
Сочинить?При анализе запроса вы разбиваете его на составные части (токены и т. д.), обратным способом будет объединение частей в строковый запрос.
Чтобы дополнить существующее название, ComposeQuery выглядит лучше всего.
Но в общем случае противоположностью синтаксического анализа является ٝsɹɐd
Я бы использовал один из них:
- Нанизывать()
- ТоSQL()
- Оказывать()
Я думаю, что «сериализация» — это то слово, которое вам нужно.Это означает создание текстового представления данных, которое можно экспортировать (и импортировать) из программы.
Антоним слова «анализировать» — «синтезировать».
ТоQueryString()
Однозначно Рендер.
Я бы назвал это «constructQuery».
генерировать или излучать, возможно.
Просто чтобы добавить кое-что.
Конечно, анализ — это двустороннее слово.
Вы можете проанализировать аннотацию в запросе.
Вы можете проанализировать запрос в абстрактном виде.
Вопрос должен заключаться в том, как вы назовете последнюю часть метода, и поскольку в этом случае вы анализируете абстракцию, чтобы сделать запрос, вы бы назвали ее parseAbstract
.
Чтобы ответить на вопрос, синтаксический анализ не имеет противоположности.
генерировать запрос, возможно?создать запрос?
Выбирайте
- Генерировать
- Свалка
- Сериализация
- Испускают
Каждый из них имеет немного разный смысл.
Может быть довольноPrintQuery?
составлять, конструировать, генерировать, отображать, сжимать, сокращать, toSQL, toString в зависимости от природы класса и связанных с ним операторов
Традиционный компилятор состоит из двух частей:парсер и генератор кода.
Итак, вы могли бы назвать это «Создать».Конечно, здесь все немного по-другому, потому что компилятор не пишет исходный код.(если это не прекомпилятор).
Возможно Формат().или ToSQL() в вашем случае?
разобрать()?Шучу, я бы выбрал toQueryString()
сгладить?
Разобранный объект запроса, возможно, представляет собой иерархию условий, которую вы «сглаживаете» обратно в одномерную строку.
Но учитывая, что вы переходите от объекта к строке, просто используйте toString или toSQL() или что-то в этом роде.Кроме того, если вы его хорошо спроектировали и используете подходящее приложение, вы можете переименовать его позже и просто оставлять в комментариях информацию о том, что оно делает.
Я бы сказал сериализовать и десериализовать вместо синтаксического анализа и...
Я бы выбрал ToString(), поскольку обычно вы можете вкладывать их в цепочку (противоположные функции, которые позволяют переходить от класса 1 к классу 2 и наоборот)
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>
ИМХО, это противоположность parse()
> c = parse(b)
{ 'html': {
'head': {
'title': 'My Page'
}
'body': {
'h1': 'Hello World',
'p': 'This is a Paragraph'
}
}
+1 за «Сгенерировать», но обратите внимание на то, что вы генерируете, т. е.ГенерироватьSQL()
Я проголосовал за «составить», но если вам это не нравится, я бы также предложил «создать».
А как насчет asSQL() или, тем более, asQuery()?
INHO Сериализация, синтез — хорошие варианты.Кроме того, поскольку вы назвали parseQuery, я буду использовать codeQuery.
Обычно я использую «анализ» в качестве метода преобразования и поэтому не могу найти слово, противоположное слову «конвертировать».(вы не можете что-то «деконвертировать», поскольку «деконвертировать» — это сам тип преобразования).
Если рассуждать таким образом, лучшее решение (для меня) — это иметь два метода «анализа», которые получают разные аргументы.Пример (Java):
public class FooBarParser{
public Foo parse(Bar bar);
public Bar parse(Foo foo);
}
исчезать
Deparse - это анализ, как:
- декомпилировать - это скомпилировать
- разложить - это составить
- десериализовать - это сериализовать
- degroovy - это здорово :) ;)
Парсинг/депарсинг — это не изменение структуры, а преобразование.Точное преобразование между эквивалентным текстом и форматами абстрактного синтаксического дерева с сохранением всех связей и структуры.
«Составить» означает изменение структуры, поэтому это не совсем правильно.Предлагает объединить из отдельных самостоятельных частей (обычно впервые).Точно так же, как «разложить» предполагает расщепление на самостоятельные части.Они меняют форму, а не только формат.
Быстрый поиск показывает, где этот термин используется:
- Перл: http://perldoc.perl.org/B/Deparse.html
- Р: http://www.hep.by/gnu/r-patched/r-lang/R-lang_98.html
- Общий Лисп: http://www.clisp.org/impnotes/dffi.html#c-type-parse
- PostgreSQL: http://doxygen.postgresql.org/deparse_8c.html
- Затмение: http://www.eclipse.org/forums/index.php/t/201883/
- Unix Корн Оболочка: http://www.sourcecodebrowser.com/ksh/93tplus-p/deparse_8c.html