Что противоположно "разбору"? [закрытый]
У меня есть функция parseQuery, которая анализирует SQL-запрос в абстрактное представление этого запроса.
Я собираюсь написать функцию, которая принимает абстрактное представление запроса и возвращает строку SQL-запроса.
Что я должен вызвать вторую функцию?
30 ответов:
в терминологии компилятора противоположное- "unparse". В частности, синтаксический анализ превращает поток токенов в абстрактные синтаксические деревья, в то время как unparsing превращает абстрактные синтаксические деревья в поток токенов.
написать? При анализе запроса вы разбить его на составные части (маркеры и т. д.), обратное будет составлять части в строковый запрос.
в дополнение к существующему именованию, composeQuery выглядит лучше.
но в общем случае, противоположность разбор ǝsɹɐd
Я думаю, что "сериализация", вероятно, слово, которое вы хотите. Это означает создание текстового представления данных, которые могут быть экспортированы (и импортированы) из программы.
просто добавить некоторые вещи.
конечно, разобрать это слово.
вы можете разобрать текст на запрос.
вы можете проанализировать запрос в абстрактный.
вопрос должен быть, как вы называете последнюю часть метода, и потому что в этом случае вы анализируете абстрактный запрос, который вы бы назвали
parseAbstract.чтобы ответить на вопрос, разбор не имеет противоположности.
может быть prettyPrintQuery?
создать, построить, создать, изобразить,уплотнить, сократить, toSQL, метод toString в зависимости от характера класса и связанных с операторами
традиционный компилятор состоит из двух частей: анализатор и генератор кода.
Так что вы можете назвать его"генерировать". Конечно, здесь все немного по-другому, потому что компилятор не пишет исходный код. (если это не прекомпилятор).
плющить?
анализируемый объект запроса, возможно, представляет иерархию условий, которую вы "сглаживаете" обратно в 1-мерную строку.
но учитывая, что вы переходите от объекта к строке, на самом деле просто используйте toString или toSQL() или что-то в этом роде. Кроме того, если вы хорошо спроектировали его и используете правильное приложение, вы можете переименовать его позже и просто вставить материал в комментарии о том, что он делает.
Я бы пошел на ToString (), так как вы обычно можете цепно вложить их (противоположные функции, которые позволяют вам переходить от Class1 к Class2 и наоборот)
DateTime.Parse( DateTime.Parse( myDate.ToString() ).ToString() );Serialize () выглядит как хороший выбор, но у него уже есть противоположность в Deserialize ().
в вашем конкретном сценарии, как указывали другие, ToSql () - еще один хороший выбор.
Я бы использовал render
> 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' } }
Инхо сериализует, синтезирует хорошие варианты. Кроме того, как вы назвали parseQuery, я пойду с codeQuery
Я обычно использую " parse "в качестве метода преобразования, и поэтому я не могу найти противоположное слово для"convert". (вы не можете "деконвертировать" что-то, так как "неконвертировать" - это сам тип преобразования).
думая таким образом, лучшим решением (для меня) является наличие двух методов "разбора", которые получают разные аргументы. Пример (Ява):
public class FooBarParser{ public Foo parse(Bar bar); public Bar parse(Foo foo); }
deparse
Deparse-это разбор, как:
- декомпиляция-компиляция
- разложить-это составить
- десериализация-это сериализация
- degroovy-это заводной :);)
разбор / удаление - это не изменение структуры, а преобразование. Точное преобразование между эквивалентными текстовыми и абстрактно-синтаксическими форматами дерева, сохраняя все отношения и структуру.
"Compose" означает изменение структуры, так что не совсем правильно. Он предполагает объединение из отдельных независимых частей (обычно в первый раз). Как "разложить" предполагает разделение на независимые части. Они меняют форму, а не только формат.
быстрый поиск шоу термин используется в пределах:
- Perl:http://perldoc.perl.org/B/Deparse.html
- R: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 Korn Shell:http://www.sourcecodebrowser.com/ksh/93tplus-p/deparse_8c.html
Comments