OSDev

для всех
Текущее время: 29 мар 2024, 18:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 20 апр 2015, 19:42 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
pavia писал(а):
Согласно Книге дракона синтаксис и грамматика это одно и тоже.
Судя по всему вы имели в виду формальную грамматику.

Вообще-то формальную грамматику не я имел ввиду, а вы, т.к. запись LR(N) - это и есть обозначение формальной грамматики. Именно в этом плане и следует различать грамматику и порождаемый ей язык (в данном случае синтаксис).

pavia писал(а):
Да я знаю что можно свести. У вас ошибка в рассуждениях. Слово "любой" откуда взялось?

Если A=>B и B=>C, то A=>C. Слово "любой" вытекает из второго пункта.

pavia писал(а):
А зачем тогда потребовались раширения EBNF и собственный формат YACC и раширения бизона?

Исключительно для удобства, т.к. работать ними проще, чем с формальными грамматиками.

pavia писал(а):
1) Они позволяют только повторить то что поддерживает конкретная утилита.

Они позволяют реализовать любую КСГ.

pavia писал(а):
А что-бы добавить придётся переделывать код.

Естественно, чтобы что-то добавить, надо что-то изменить. Это тавтология.

pavia писал(а):
Дело в том что эти утилиты генерируют не человеко понятный код, а машинно ориентированный. Что усложняет поддержку.

Из первого не следует второе (что, в целом, справедливо для любого компилятора).

pavia писал(а):
Дело в том что у Фримана подход функционального программирования (Термин функциональное программирование по Чёрчу). Так вот в таком подходе не предусмотрено указателей. И как следствие всякое подобие дерева отсутствует. Остаётся только рекурсия.

функциональное программирование, указатели, AST и рекурсия вообще друг с другом никак не связаны, т.к. ФП - это парадигма программирования, указатели - это семантика языка, AST - продукт синтаксического разбора, я рекурсия - понятие времени выполнения и оптимизации работы программы.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 20 апр 2015, 20:08 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Freeman писал(а):
При объявлении TSomeClass.MyProp можно использовать любой идентификатор для индекса, но наиболее логичным выглядит Index, его и используют. IDE ошибочно его подсвечивает, но компилятор не считает ключевым словом, и компиляция успешно проходит. А в объявлении TAnotherClass.FirstMy index явно используется как ключевое слово, IDE его также подсвечивает (уже правомерно), и компиляция также успешна.

Является ли такое вольное обращение с ключевыми словами нарушением принципов контекстно-свободной грамматики?

Честно говоря, с Delphi никогда не имел дело, а с Паскалем последний раз работал лет 25 назад, поэтому вряд ли моё мнение будет здесь авторитетным. На первый взгляд, да, использование ключевого слова в другом контексте как идентификатора нарушает правила КСГ. Однако, во многих языках существуют кучи специально оговоренных ситуаций, когда одни правила отменяются и действуют другие правила. Такие случаи обычно обрабатываются отдельно и как правило при помощи грязного хака могут быть реализованы в более-менее стандартном сканере или парсере. Например, в языках C/C++ отдельно стоящие токены "<" и ">" однозначно выделяются как самостоятельные лексемы. Однако в инструкциях препроцессора (и только в них):
Код:
#include <stdio.h>

они должны быть разобраны вместе с заключённым в них набором символов (который, вообще говоря, может содержать точки, пробелы и другие неприятные символы) как единая лексема. Как обстоит в данном случае дело в Delphi, мне неизвестно.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 20 апр 2015, 20:35 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Yoda Вы заблуждаетесь.
Цитата:
Они позволяют реализовать любую КСГ.
А кому КСГ нужна? Не кому!
Все языки таковыми не являются! Взять самый простой язык математики на пример при программирование калькулятора у которого +- интерпретируются как бинарные так и унарные.
Приоритеты операций требуют либо свёртки либо переместить в стек.
Без анализа окружающих символов определить приоритет не возможно.
Для этого создали EBNF.
Но это только один пример. По мимо приоритетов. Есть и другие, к примеру левые и правые атрибуты у операторов. Не помню точно в каком языке вроде в Си++ оператор "*" менял свои свойства с левого на правый в зависимости от контекста. Или самый известный пример проблема висячего Else.
Наибольшее число отступлений от КСГ у BISON.

Всё генераторы парсеров реализуют формальную грамматику, а не КСГ.

Цитата:
функциональное программирование, указатели, AST и рекурсия вообще друг с другом никак не связаны, т.к. ФП - это парадигма программирования, указатели - это семантика языка, AST - продукт синтаксического разбора, я рекурсия - понятие времени выполнения и оптимизации работы программы.
Вот именно что парадигма! Именно из неё и вытекает цепочка. Иначе как только вы введёте понятия указателя вы попадёте уже в другую парадигму.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 20 апр 2015, 21:17 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Yoda писал(а):
На первый взгляд, да, использование ключевого слова в другом контексте как идентификатора нарушает правила КСГ. Однако, во многих языках существуют кучи специально оговоренных ситуаций, когда одни правила отменяются и действуют другие правила. Такие случаи обычно обрабатываются отдельно и как правило при помощи грязного хака могут быть реализованы в более-менее стандартном сканере или парсере.

Да, спасибо. Примерно такой ответ я и хотел услышать.

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

Yoda писал(а):
Как обстоит в данном случае дело в Delphi, мне неизвестно.

У меня нет исходников Delphi, чтобы можно было посмотреть в них и сказать, как оно там на самом деле. А теории, на которые вы ссылаетесь, являются вроде как универсальными, чтобы быть авторитетными сами по себе. Вот только с их трактовкой на практике, как выясняется, не всё однозначно, поэтому у меня и не получился вывод, поскольку я плясал от практики.

Уважаемый pavia, вы путаете теорию и реализацию! Употребляйте термины правильно, пожалуйста! В целом я догадываюсь, что вы имеете в виду, и даже мог бы высказаться, но сначала подожду, пока страсти улягутся. А то как бы резать тему не пришлось, как в старые недобрые времена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 20 апр 2015, 22:51 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Это не я путаю. Это всё Хомский с его классификацией. Он рассматривал LR и RR языки в качестве КС грамматик что правильно. Но в выводах сделал фразу что к КС относятся формальные грамматики. С чем я категорически не согласен. Так как к такому обобщению не было ни каких предпосылок по всему тексту. Хотя оно и не противоречило в виду отсутствия определений на тот момент. Возможно он имел ввиду под формальными принадлежность к классу BNF грамматик. И тогда всё встаёт на свои места. Но вот последующие авторы уже стали считать что все формальные языки это КС. Когда как к таковым относится только BNF с LR или RR парсером.
Нам никто не запрещает написать BNF грамматику и сделать парсер в котором порядок будет зависеть от контекста. Более того я отношу все расширения генераторов к такому отступлению.

Так что в определение КС языка я отхожу от Хомского. О чем я уже говорил.

Ваш вопрос про index это из той же оперы.
Относится ли Delphi к КС языкам или нет? С моей точки зрения такое по видения index является типичным провидением НеКС языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 21 апр 2015, 11:38 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
pavia писал(а):
А кому КСГ нужна? Не кому!
Все языки таковыми не являются! Взять самый простой язык математики на пример при программирование калькулятора у которого +- интерпретируются как бинарные так и унарные.

Тяжёлый случай воинствующего дилетантизма. Не вижу смысла в дальнейшем обсуждении данного вопроса. Я закончил.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формальные грамматики
СообщениеДобавлено: 23 апр 2015, 18:47 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Любая компиляция переходов осуществляется в 2-прохода. Вначале вычисления адреса, а затем запись.

Что касается многопроходности ассемблеров,то она связана с макросами. Их компиляция осуществляется путем раскрутки.
Цитата:
В C++ это решено заголовочными файлами, в Паскале -- интерфейсными секциями и ключевым словом forward,
Типичное заблуждения паскалиста.
Заголовочные файлы в Си++ не такие как в паскале.
Внутри проекта в Си/Си++ ссылаться можно на любую функцию из любого файла.
Для того что-бы собрать файлы в один с используются make файлы со специальной утилитой специально сделанной для Си - Cmake .
Более того есть мнение не моё что в Си++ плохо с объявлениями. Поэтому компиляторы вынуждены постоянно обращаться то к одним файлам то к другим, что замедляет компиляцию в разы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формальные грамматики
СообщениеДобавлено: 01 окт 2015, 01:30 

Зарегистрирован: 18 фев 2015, 12:59
Сообщения: 8
pavia писал(а):
Заголовочные файлы в Си++ не такие как в паскале.
Внутри проекта в Си/Си++ ссылаться можно на любую функцию из любого файла.
Для того что-бы собрать файлы в один с используются make файлы со специальной утилитой специально сделанной для Си - Cmake .
Более того есть мнение не моё что в Си++ плохо с объявлениями. Поэтому компиляторы вынуждены постоянно обращаться то к одним файлам то к другим, что замедляет компиляцию в разы.

В с++ это давно решено, см. компиляция заголовков.
А по теме с/с++ синтаксис не описывается в рамках КСГ, например поведение оператора * зависит от контекста т.е. от типа (указатель/не указатель)

P.S.
А красным я пометил БРЕД.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формальные грамматики
СообщениеДобавлено: 01 окт 2015, 12:23 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
rst256 писал(а):
А по теме с/с++ синтаксис не описывается в рамках КСГ, например поведение оператора * зависит от контекста т.е. от типа (указатель/не указатель)

Прежде, чем писать, вы бы для начала ознакомились, что такое "контекстно свободная грамматика" и чем она отличается от контекстно зависимой грамматики.
Hint: вы перепутали синтаксис с семантикой.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB