Что противоположно синтаксическому анализу?

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

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

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

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

Wilt 31.05.2016 13:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
147
1
37 219
33
Перейти к ответу Данный вопрос помечен как решенный

Ответы 33

generateQuery, возможно? createQuery?

Возможно форматирование (). или ToSQL () в вашем экземпляре?

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

Звучит почти идеально. Вот что могло бы произойти. Он будет собирать данные, которые можно «выразить словами». Он будет «строить» запрос.

Tgwizman 28.04.2016 17:42

ToQueryString ()

Ответ принят как подходящий

Я думаю, вам нужен глагол «сочинять».

@ Джоэл: twitter.com/shanselman/status/5024768993

Daniel Schaffer 20.10.2009 23:34

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

Joel Coehoorn 20.10.2009 23:35

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

Daniel Schaffer 20.10.2009 23:37

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

Joseph Kingry 21.10.2009 00:06

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

Joseph Kingry 21.10.2009 00:08

Сейчас стоит 140 (17.12.2014); Я думаю, что это полезный ответ, поэтому я проголосовал за него, но, конечно, это не эквивалент сложной программы; конечно, подобное слово более "нестареющее", чем определенные технологии программирования.

JosephDoggie 17.12.2014 20:24

Может prettyPrintQuery?

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

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

mydoghasworms 26.02.2015 09:14

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

синтезировать. хороший выбор.

MikeJ 29.09.2008 20:21

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

Сочинить? При синтаксическом анализе запроса вы разбиваете его на составные части (токены и т. д.), Наоборот, составление частей в строковый запрос.

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

Сериализация может также легко означать двоичное представление.

Ben Hoffstein 29.09.2008 18:27

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

Kyle Cronin 29.09.2008 18:34

Судя по всему, клавиатура моего iPod становится лучше меня. Это должно быть «разбор» и «чтение».

Kyle Cronin 29.09.2008 18:37

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

  • Нанизывать()
  • ToSQL ()
  • Оказывать()

сплющить?

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

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

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

Конечно, синтаксический анализ - это двустороннее слово.

Вы можете разобрать аннотацию в запрос.

Вы можете преобразовать запрос в аннотацию.

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

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

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

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

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

+1 для Generate, но закрепите то, что вы генерируете, например, GenerateSQL ()

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

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

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

Противоположностью разбирать является сериализовать.

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

JosephDoggie 17.12.2014 20:25

А как насчет «десериализации»?

Den 28.04.2015 00:38

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

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

Как разбить машину ...

Walter Tross 10.09.2015 23:15

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

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

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

В вашем конкретном сценарии, как указывали другие, ToSql () - еще один хороший выбор.

Я считаю, что ответ, который вы ищете: «Не разбирайте SQL и не собирайте SQL в первую очередь. Используйте Object / Relational Mapper и перестаньте тратить деньги вашего работодателя на решение проблем, которые уже были решены в течение некоторого времени. "

-1. Вы понятия не имеете, что он делает. У него могла быть вполне веская причина для этого. Не все приложения одинаковы.

erikkallen 21.10.2009 01:03

Я должен согласиться, у меня недавно была совершенно хорошая причина для синтаксического анализа SQL, который не имел ничего общего с ORM (который я также использовал в своем проекте).

Craig 21.10.2009 01:46

Я бы хотел услышать эту «совершенно вескую причину». Нет, вообще-то я бы не стал. Я мог бы представить, если бы вы создавали SQL IDE или что-то в этом роде, но даже тогда - зачем вы создаете SQL IDE, когда они уже являются серьезными игроками на рынке?

chadmyers 21.10.2009 02:05

Причина в том, что нам пришлось превратить запрос «SELECT CustomerId FROM Customer» во что-то вроде «SELECT << field: 25 >> FROM << table: 76 >>». Это легко для простого выбора, очень сложно для сложных запросов.

Craig 21.10.2009 02:35

Скажите, пожалуйста, как nHibernate поможет мне в этом?

Craig 21.10.2009 02:35

Пожалуйста, скажите мне, зачем вы вообще это делаете.

chadmyers 06.11.2009 20:36

.GetSqlQuery() был бы моим выбором

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

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

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

Я думаю, что это наоборот, наоборот, esrap

agusgambina 17.12.2014 19:12

@agusgambina: вообще-то, в этом есть смысл ... Подумайте о Bourne shell: если ... фантастический случай ... esac

shrike 18.06.2016 10:26

Я бы использовал рендер

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

> b = render(a)

> console.info(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'
    }
}

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

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

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

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

уходить

Депарс должен разбирать, как:

  • декомпилировать - это компилировать
  • разложить - составить
  • десериализация - это сериализация
  • degroovy - это круто :);)

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

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

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

Быстрый поиск по коду Github показывает, что термин «deparse» не имеет широкого использования, см. github.com/search?q=deparse - я думаю, что «deparse» - это термин из экосистемы R. - Для меня генерируется противоположность парсингу. В разбор у нас есть предложение и грамматика в качестве входных данных, и мы хотим знать, какова синтаксическая структура и / или семантическое представление предложения. В поколение у нас есть семантическое представление и грамматика в качестве входных данных, и мы хотим найти предложения, соответствующие семантическому представлению.

Jens A. Koch 27.08.2015 16:20

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

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

public class FooBarParser{

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

Другие вопросы по теме