LINUX.ORG.RU

Классы и типы

 , , ,


0

2

Мне кажется, что если мы введем следующие ограничения для классов:

1 иммутабельность

2 запрет суперклассов

, то мы получим типы. Иными словами, типы, с точки зрения семантики, являются частным случаем классов. Разумеется, я тут не рассматриваю вопросов статической проверки, только семантика. Так ли это?

Ответ на: комментарий от anonymous

пойду расскажу бабушке, что она крутой математик оказывается.

Разумеется. Она ещё арифметику знает и геометрию :-)

monk ★★★★★
()
Ответ на: комментарий от monk

Да, ещё одно состояние забыл.

А может ты еще что-то забыл. Чем докажешь, что алгоритм отработает на всем множестве?

anonymous
()
Ответ на: комментарий от monk

Значит тебе повезло, и математические конструкции ты понимаешь интуитивно.

Здорово! :)

Debasher ★★★★★
()
Ответ на: комментарий от anonymous

Чем докажешь, что алгоритм отработает на всем множестве

Только если есть полная спецификация на синтаксис комментариев. Иначе никак.

monk ★★★★★
()
Ответ на: комментарий от monk

Только если есть полная спецификация на синтаксис комментариев. Иначе никак.

Так строка «*/» с синтаксису комментариев не относится.

anonymous
()
Ответ на: комментарий от anonymous

Так не работает почему твой строгий алгоритм

Я же сказал: одно состояние забыл

состояние JS:
    читаем символ
    если в конце буфера без учёта регистра "</SCRIPT>", тогда
        вывести буфер
        перейти HTML
    если в конце буфера "//", тогда
        вывести буфер без последних "//"
        перейти JSLine
    если в конце буфера "/*", тогда
        вывести буфер без последних "/*"
        перейти JSBlock
    если в конце буфера '"', тогда
        вывести буфер
        перейти JSString
состояние JSString:
    читаем символ
    если в конце буфера '\', тогда
        читаем символ
        вывести буфер
        перейти JSString
    если в конце буфера '"', тогда
        вывести буфер
        перейти JS

monk ★★★★★
()
Ответ на: комментарий от monk

Ещё одна правка (строки бывают 'такие')

состояние JS:
    читаем символ
    если в конце буфера без учёта регистра "</SCRIPT>", тогда
        вывести буфер
        перейти HTML
    если в конце буфера "//", тогда
        вывести буфер без последних "//"
        перейти JSLine
    если в конце буфера "/*", тогда
        вывести буфер без последних "/*"
        перейти JSBlock
    если в конце буфера '"', тогда
        вывести буфер
        перейти JSString1
    если в конце буфера "'", тогда
        вывести буфер
        перейти JSString2
состояние JSString1:
    читаем символ
    если в конце буфера '\', тогда
        читаем символ
        вывести буфер
        перейти JSString
    если в конце буфера '"', тогда
        вывести буфер
        перейти JS
состояние JSString2:
    читаем символ
    если в конце буфера '\', тогда
        читаем символ
        вывести буфер
        перейти JSString2
    если в конце буфера "'", тогда
        вывести буфер
        перейти JS
monk ★★★★★
()
Ответ на: комментарий от monk

Неа, опять не работает.

/*
var smile = '*/';
*/
anonymous
()
Ответ на: комментарий от monk

Все равно не работает, ты в состоянии JSBlock, а не в JS.

anonymous
()
Ответ на: комментарий от monk

Вообще-то, это не комментарий.

Так и быть, во имя великой математики будем удалять и потом снова добавлять неполиткорректный код ручками.

И все же:

var smile = "/*";


Пошли дальше:

<img src="foo.jpg" alt="<!--">
anonymous
()
Ответ на: комментарий от anonymous

var smile = «/*»;

Это нормально обработается.

<img src=«foo.jpg» alt=«<!--»>

состояние HTML: 
    читаем символ
    если в конце буфера '"', тогда
        перейти HTMLString
    если в конце буфера "<!--", 
    тогда
        вывести буфер без последних "<!--"
        перейти HTMLComment
    если в конце буфера без учёта регистра 
        '<SCRIPT type="text/javascript">'
         или '<SCRIPT>',
    тогда
        вывести буфер 
        перейти JS
состояние HTMLString:
    читаем символ
    если в конце буфера '"', тогда
        перейти HTML
monk ★★★★★
()
Ответ на: комментарий от anonymous
/"/.test("foo/bar"));

И т. д.

/\/*/.test("foo/bar"));

И т. п.

Короче говоря, математика - продажная девка борщевизма.

anonymous
()
Ответ на: комментарий от anonymous

Если я правильно понял синтаксис этого особого случая, то достаточно

состояние JS:
    читаем символ
    если в конце буфера без учёта регистра "</SCRIPT>", тогда
        вывести буфер
        перейти HTML
    если в конце буфера "//" и не "\//", тогда
        вывести буфер без последних "//"
        перейти JSLine
    если в конце буфера "/*" и не "\/*", , тогда
        вывести буфер без последних "/*"
        перейти JSBlock
    если в конце буфера '"', тогда
        вывести буфер
        перейти JSString1
    если в конце буфера "'", тогда
        вывести буфер
        перейти JSString2

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.