а вот пробельные символы как учесть... А вообще, такой синтаксис (с пробелами) допустимо использовать как нерегулярку? Т.е. как сам js воспринимает такое выражение:
7 Lexical Conventions
The source text of an ECMAScript program is first converted into a sequence of input elements, which are tokens, line terminators, comments, or white space. The source text is scanned from left to right, repeatedly taking the longest possible sequence of characters as the next input element.
There are two goal symbols for the lexical grammar. The InputElementDiv symbol is used in those syntactic grammar contexts where a leading division (/) or division-assignment (/=) operator is permitted. The InputElementRegExp symbol is used in other syntactic grammar contexts.
NOTE There are no syntactic grammar contexts where both a leading division or division-assignment, and a leading RegularExpressionLiteral are permitted. This is not affected by semicolon insertion (see 7.9); in examples such as the following:
a = b
/hi/g.exec(c).map(d);
where the first non-whitespace, non-comment character after a LineTerminator is slash (/) and the syntactic context allows division or division-assignment, no semicolon is inserted at the LineTerminator. That is, the above example is interpreted in the same way as:
a = b / hi / g.exec(c).map(d);
Syntax
InputElementDiv ::
WhiteSpace
LineTerminator
Comment
Token
DivPunctuator
InputElementRegExp ::
WhiteSpace
LineTerminator
Comment
Token
RegularExpressionLiteral
Posted: Sat Oct 24, 2015 2:36 pm
by YuS
FeyFre wrote:Число, тут думать даже нечего.
А если кто хочет подумать привожу параграф 7 из стандарта
Дык ить, уже придумалось, осталось только протестировать на всевозможных crazy - codes
Но, всё же, формулировка вводит в ступор своей "четкостью" изложения:
Символ InputElementRegExp используется в других синтаксических контекстах грамматики.
Тут бы уточнения не помешали, но видимо их просто нет.
Кстати, спасибо, за цитату. Ещё один момент надо дополнить в регулярку: вот такое сочетание "/=", является явным признаком не регэкспа. Будем исправлять...
Posted: Sat Oct 24, 2015 10:07 pm
by FeyFre
вот такое сочетание "/=", является явным признаком не регэкспа. Будем исправлять...
Чегось? /=/ - не регэксп?
Проблема в том, что понять в контретном месть может тут быть регексп или нет может можно если парсить граматику, а не раскрашивать каждый тип элемента начиная просмотр файла сначала.
Posted: Sun Oct 25, 2015 1:17 am
by YuS
FeyFre wrote:
Чегось? /=/ - не регэксп?
Уж насколько ясный и четкий, приведенный выше стандарт, настолько и понимаю его. А что не так:
There are two goal symbols for the lexical grammar. The InputElementDiv symbol is used in those syntactic grammar contexts where a leading division (/) or division-assignment (/=) operator is permitted. The InputElementRegExp symbol is used in other syntactic grammar contexts.
?
FeyFre wrote:
Проблема в том, что понять в контретном месть может тут быть регексп или нет может можно если парсить граматику, а не раскрашивать каждый тип элемента начиная просмотр файла сначала.
Наверное, да, надо контекст окружающий парсить, чтобы понять допускается такое применение или нет. Только для этого инструмент регэкспов, не совсем подходит...
Ну или предложите, как это можно сделать... критика должна быть конструктивной
Posted: Sun Oct 25, 2015 9:13 am
by Infocatcher
YuS wrote:Наверное, да, надо контекст окружающий парсить, чтобы понять допускается такое применение или нет. Только для этого инструмент регэкспов, не совсем подходит...
Я вот такую жесть делал.
Там все портят возможные комментарии со штуками типа
Там на самом деле деление, но чтобы это понять, надо отбросить комментарий.
Вот-вот, об этом и говорю... с точки зрения синтаксиса, вроде всё верно, но шаблон из QuotesRE, в принципе, не сможет такое, у него, если не ошибаюсь, построчный парсинг. Тут надо что-то другое изобретать, или попросить Александра, чтобы подсказал чем это можно сделать или может быть, чтобы добавил какие-то необходимые для этого функции в Coder.
PS Кстати, надо бы добавить этот пример в собрание crazy - codes, на будущее, чтобы не забылось.
Posted: Mon Oct 26, 2015 8:33 pm
by Cuprum
Instructor
Можно ли добавить в js.coder подсветку нативных
Правда, чтобы исключить "лишнюю раскраску" надо позволить им светиться, видимо, только после таких символов слева: ., ), }, ]. Такое можно устроить? Прошу прошения, конечно же, перед методом должна быть только точка. А ), }, ... и пр. - что предшествует точке. Если упрощать, то их можно в расчет не брать.
Posted: Wed Oct 28, 2015 1:14 pm
by Cuprum
Instructor
В css.coder в секции Words некоторые свойства повторяются из-за разных случаев подсветки. Соотвественно, в окне подсказки со звездочкой они тоже выводятся по 2 раза. Можно ли как-то это учитывать и в подсказке при любом количестве дублей у слова показывать его только единожды?
Вроде, с последними правками этого файла - такой проблемы больше нет, но... их и до правок там не было: похоже, что проблема была в том, что комментарии идущие в конце строк QuotesRE правил обрабатывались плагином не как комментарии, а как значения для недавно добавленных новых столбцов для этой секции.
Похоже, что использование однострочных комментариев в конце строк с правилами внутри .coder файлов (что активно эксплуатируется мной в ahk.coder) не совсем явно допустимая возможность.
Вы бы не могли как-то пролить свет на статус таких комментариев?
Они допустимы, допустимы-но-нежелательны или недопустимы?
Если допустимы-но-нежелательны - ок, будем знать, но лучше тогда сразу во всех .coder-файлах было бы проставить нули в качестве значений для новых добавленных столбцов (а то новые столбцы вроде как и не обязательны к заполнению, но получается, что если значения у них не заданы, а вместо них идёт комментарий - жди беды).
Если допустимы, то: во-первых хорошо бы добавить в coder проверку, что если в строке присутствует '\s(;.*$)' - это надо трактовать как комментарий, а не как значение для одного из столбцов, а во-вторых, следует добавить правил (в Quotes: или QuotesRE:) для раскраски таких кусков как комментариев.
Если недопустимы - ладно. Хотя лучше бы coder тогда сразу ругался бы на них - я бы их даже не начинал бы тогда использовать.