Що протилежне "розбору"? [зачинено]


147

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

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

Що я повинен називати другою функцією?


Stringify? Клас JSON використовує цю термінологію. JSON.parse, а для протилежного JSON.stringify ?
Заповіт

Відповіді:


200

Я думаю, що потрібне дієслово - «скласти».



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

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

Помилка .. чому б не ToString ()? Здається, це стандарт, встановлений подібними до Int32, тощо
Джозеф Кінгрі

1
я зробив свій попередній коментар, перш ніж побачив, що питання є мовним. ToString (), здається, є прийнятим стандартом .NET
Джозеф Кінгрі


32

У термінології компілятора все навпаки - "непарне". Зокрема, розбір перетворює потік лексем у абстрактні синтаксичні дерева, тоді як розпарювання перетворює абстрактні дерева синтаксису в потік лексем.


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

31

Складати? Під час розбору запиту ви розбиваєте його на його складові частини (лексеми тощо), зворотний спосіб складатиме їх у рядковий запит.


21

Щоб доповнити існуючу назву, найкраще виглядає composeQuery .

Але в загальному випадку протилежний синтаксичний розбір є ǝsɹɐd


8
Я думаю, що це зворотне, навпаки було б есрап
agusgambina

@agusgambina: насправді, це має сенс ... Подумайте про оболонку Борна: якщо ... fi case ... esac
shrike


17

Я думаю, що "серіалізувати" - це, мабуть, слово, яке ти хочеш. Це означає створити текстове подання даних, які можна експортувати (та імпортувати) з програми.


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

1
Правда. Parsimg - це все про згасання зовнішніх даних, а серіалізація - це створення даних для зовнішнього використання. Вироблений формат не обов'язково повинен бути текстовим, але часто є.
Кайл Кронін

Мабуть, моя клавіатура iPod стає мені кращою. Це повинно бути "розбір" і "читання".
Кайл Кронін




10

Я б назвав це constructQuery.


Це звучить майже ідеально. Ось що було б. Він збирав дані, які можна було б "передати словами". Він "сконструював" запит.
Tgwizman

10

генерувати або випромінювати, можливо.


1
Я згоден. rfc7159 (JSON) у розділах 9 та 10 визначають "Парсер" та "Генератор" як протилежності.
mydoghasworms

10

Просто додати деякі речі.

Безумовно, розбір - це двостороннє слово.

Ви можете розібрати конспект до запиту.

Ви можете розібрати запит на конспект.

Питання повинно бути, як ви називаєте останню частину методу, і тому, що в цьому випадку ви аналізуєте конспект, щоб зробити запит, ви б його назвали parseAbstract .

Щоб відповісти на запитання, розбір не має протилежного.



8

Візьміть свій вибір

  • Створювати
  • Звалити
  • Серіалізувати
  • Випромінювати

Всі вони мають дещо різні конотації.



7

складати, конструювати, генерувати, візуалізувати, конденсувати, зменшувати, toSQL, toString залежно від характеру класу та пов'язаних з ним операторів


6

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

Так ви могли б назвати це "Створити". Звичайно, тут трохи інакше, оскільки компілятор не пише вихідний код. (якщо тільки це не докомпілятор).




4

сплющити?

Проаналізований об'єкт запиту, можливо, являє собою ієрархію умов, яку ви "згладжуєте" назад в 1 розмірний рядок.

Але враховуючи, що ви переходите від об'єкта до рядка, дійсно просто використовуйте 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>

Що таке IMHO, протилежне до розбору ()

> c = parse(b)

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


3

Я проголосував за "скласти", але якщо вам це не подобається, я б також запропонував "побудувати"



3

INHO Серіалізувати, синтезувати - хороші варіанти. Крім того, як ви назвали parseQuery, я піду з кодомQuery


3

Зазвичай я використовую "розбір" як метод перетворення, і, отже, я не можу знайти протилежне слово для "конвертувати". (ви не можете "деконвертувати" щось, оскільки "unconvert" - це тип самого перетворення).

Думаючи таким чином, найкращим рішенням (для мене) є два методи "розбору", які отримують різні аргументи. Приклад (Java):

public class FooBarParser{

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

2

відходити

Deparse - це розбір, як:

  • декомпілювати - це компілювати
  • розкласти - складати
  • десеріалізувати - це серіалізувати
  • degroovy - це groovy :);)

Розбір / відхід - це не зміна структури, а перетворення. Точне перетворення між еквівалентними текстовими та абстрактними-синтаксичними форматами дерева, підтримуючи всі зв’язки та структуру.

"Скласти" означає зміну структури, тому це не зовсім правильно. Він пропонує поєднувати з окремих незалежних частин (як правило, вперше). Так само, як "розкласти", пропонується розділити на самостійні частини. Вони змінюють форму, а не лише формат.

Швидкий пошук показує, що термін використовується в межах:


Швидкий пошук коду Github виявляє, що термін "deparse" не має широкого вживання, див. Github.com/search?q=deparse - я думаю про "deparse" як термін із екосистеми R. - Для мене породжує протилежне розбору. Під час розбору ми маємо речення та граматику як вхідні дані і хочемо знати, що таке синтаксична структура та / або семантичне подання речення. У поколінні ми маємо семантичне подання та граматику як вхідні дані і хочемо знайти речення, що відповідають семантичному поданню.
Єнс А. Кох
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.