Зачем нам нужно составлять программу прогресса 4GL? - PullRequest
0 голосов
/ 31 декабря 2018

Хотелось бы узнать, зачем нам составлять программу прогресса 4GL?На самом деле, что там происходит?Почему мы получаем файл .r после компиляции программы?Когда мы проверяем синтаксис, если он правильный, мы получим одно окно сообщения «Синтаксис правильный», как он находит ошибки и показывает сообщения. Любые объяснения приветствуются и приветствуются.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Короткий ответ: когда вы компилируете, вы переводите свою программу на язык, понятный машине.Здесь вы задаете два разных вопроса, поэтому позвольте мне дать вам простой ответ на первый: вам НЕ НУЖНО компилировать, например, если вы единственный, кто использует программу.Но чтобы оптимизировать вашу программу (поскольку она уже находится на уровне машинного языка) и гарантировать, что никто не вмешивается в вашу логику, мы компилируем код и обычно не разрешаем обычным пользователям доступ к исходному коду.

Второй вопрос: как работает средство проверки синтаксиса, я полагаю, вам лучше было бы обратиться в Google и выбрать несколько статей для чтения о компиляторах.Они сложны, но, в двух словах, они берут то, что Progress ожидает как полные, оперативные команды, и сравнивают с тем, что вы делаете.Например, если вы выполните команду

Find first customer where customer.active = yes no-error.

Progress, проверьте, является ли customer таблицей, является ли customer.active полем в этой таблице, является ли это логическим типом, поскольку вы фильтруете, если даи, если все ваши условия могут быть переведены в одно истинное или ложное логическое значение.Далее проверяется, указали ли вы блокировку (и, по умолчанию, на общую, если у вас нет, как в моем примере, что, кстати, нет-нет), что происходит, если существует несколько записей (так как я сказал сначала, а затем получить только первый) и, наконец, что произойдет, если это не удается.Если вы проверите оператор find, есть другие опции для его настройки, и компилятор просто сравнит использование вами оператора с тем, что может иметь для него Progress.И собирать все ошибки, если не может.Вот почему иногда компиляторы будут давать вам общие сообщения.Так как они не знают, что вы пытаетесь сделать, все, что они могут сделать, это сказать вам, что в основном не так с тем, что вы написали.

Надеюсь, это поможет вам понять.

0 голосов
/ 31 декабря 2018

Преимущества скомпилированного r-кода включают:

  1. Проверка синтаксиса
  2. Более быстрое выполнение (r-код выполняется быстрее)
  3. Безопасность (r-код не является"удобочитаемый для человека", и, вероятно, будет замечено вмешательство в него)
  4. Лицензирование (лицензии времени выполнения r-кода намного дешевле)

Для "как найти ошибки и показать«Сообщения» - на высоком уровне это похоже на любой компилятор.Он сравнивает предоставленный источник с синтаксическим деревом и позволяет узнать, когда вы нарушаете правила.Проектирование и конструирование компилятора - довольно сложная тема, которая, вероятно, не вписывается в простой вопрос SO - но если у вас есть что-то более конкретное, что может встать само по себе как вопрос, кто-то может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...