vladvro
Вот еще некорректно обрабатываемый пример:
Код: : end-word
[ \ Тут опять вся подсветка падает
RET,
;
Вот еще некорректно обрабатываемый пример:
Код: : end-word
[ \ Тут опять вся подсветка падает
RET,
;
Вот еще некорректно обрабатываемый пример:
Сорри, но мне как обычно трудно войти в контекст...Извинения излишни! Спасибо что ты пытаешься это сделать и у тебя получается
Отловить лексер может все, чему его научатТогда встает другой вопрос, сможем ли мы его научить?
Если в лексере на тег "'" нет никакого ограничения, то это странно, т.к. нет необходимости вводить его в сам лексер, надо просто что бы лексер обрабатывал его так же как и остальные теги из группы "prewords1", т.е. фактически его надо добавить только в файл настроек forth.properties , а не в лексер, но сейчас это не работает
Так вот, в данном случае внутри определения используется только один начальный тег "[" и поскольку завершающего тега нет, то он должен подсвечиваться как обычное слово не "экранирующее" даже следующее за ним слово
Ок разобрался я с этим тегом, в лексере все в порядке, просто этот тег сейчас стоит в группе Keywords...Точно! Сам недавно с подобным же подсказывал, а тут не догадался проверить в других группах ...
У меня вызвает затруднение формализация понятия "нет завершающего тега".Здесь важно добавить что речь идет об наличии/отсутствии завершающего тега в пределах одной конструкции определения нового тега, т.е. от ":" и до ";" (в общем случае...), дальше по тексту после ";" может быть хоть десяток тегов "]", но они в плане расцветки к начальному тегу "[" не будут иметь никакого отношения и он - "[" должен рассматриваться, в этом случае, как самостоятельный тег.
иначе говоря тег ; нельзя экранировать тегами [ ] ?Да. Тег ";" и другие теги (завершающие конструкцию определения нового тега) из группы keywords8 (folding end tokens) всегда должны иметь свою подсветку. Если завершающий тег "]" находится после слова из группы keywords8 (folding end tokens), все теги после начального "]" и до этого "]" должны иметь свою расцветку в соотвествии с настройками...
По поводу библиотеки iconv.c:
Конвертит она нормально.
Но зачем сделаны эти функции iconv.new и iconv.open ?
Почему наименования кодировок (исходная и получаемая) перепутаны местами?
Если честно то я тоже не понимаю зачем была сделана iconv.new.Жаль что не понимаешь Как бы потом восстанавливать не пришлось...
Удалена так как она полностью дублирует iconv.open.
Изменил как ты и хотел.Просто я мельком взглянул в документацию, а там написано:
cd = iconv.new(to, from)Что, конечно, логичнее чем писать задом наперед.
cd = iconv.open(to, from)
...т.к. в nncron.api вообще отсутствуют калтипы...нда, точно, в сборке этот файл "пустой" , у меня он "полнее", но тоже не по всем словам есть подсказки (и те что из Help'а не все с описанием...)
...то заданные мной параметры calltip.nncrontab.parameters.start и calltip.nncrontab.parameters.separators будут очень кстати. Зачем тут ? вообще неясноНемного оффтопа: nnCron это расширенный с помощью создания новых слов (тегов) Форт в сторону проблемной области (таким образом идет создание любой программы на Форте) и в кронтабах можно использовать все слова Форта, все слова nnCron'а и все слова созданные пользователем (каждая созданная пользователем задача - новое готовое к употреблению слово в словаре nnCron'а/Форта). Слова заканчивающиеся на ":" созданы автором nnCron'а исключительно для удобства людей привыкших к инфиксной записи/передачи параметров (таких слов в словаре nnCron'а - меньшенство, после установки он знает всего слов >3000, все инфиксные перечислены в справке), а для работе в Форте (написании задач nnCron'а) гораздо удобнее использовать постфиксную запись. И уж если человек, начал править кронтабы в редакторе, то он очень быстро "прийдет" к постфиксной записи, т.е. начнет работать в Форте. Но главное то, что новым словам в Форте можно давать любые имена (и заканчивать их ":" - вовсе не обязательно) и есть только два ограничения: на длину (32 символа) и не должно быть пробельных символов и перевода строки в имени нового слова..., поэтому задавать какой-либо конкретный символ, IMHO, бессмысленно. Как и в параметре autocomplete.nncrontab.start.characters. По поводу "?" думаю обсудить в параллельном топике.
С учетом всех замечаний nncrontab.properties. Ну что - выкладываем его на SVN ?Да, конечно выкладывайте! Единственно было еще одно замечание по наименованию файла аббревиатур - nncrontab.abbrev, но я не настаиваю
<>Подказки либо отсутстуют совсем либо громадны по размеру - неудобно же пользоваться то...
>R
0<
0=
0<>
Лично я что то не въехал в смысл помещения в forth.api таких строк как...это было добавлено когда я еще не представлял для чего именно используется этот файл и предполагал что смогу таким образом обеспечить подсветку этих слов , я дополню слова короче 4-х символов комментариями - тогда их можно будет оставить?
Подказки либо отсутстуют совсем либо громадны по размеру - неудобно же пользоваться то...- слова короче 4-х символов я дополню комментарием (стековой нотацией), 4 и более можно оставить (некоторые пока) только для автодополнения?
Учтите, что с этого момента вы делате это не только для себя...Я и прежде делал и учитывал это
Вот еще пример кода некорректно обрабатываемого текущей версией лексера
Пока вижу выход в отдельной паре групп начало/конец определения нового тега (по ним при этом так же должен быть фолдинг)
ты действительно считаешь что строка "# подключите в файле SciTEStartup.lua загрузку скрипта abbrevlist.lua" в этом файле лишняя?Прочитав эту фразу, становится ясно - этот файл без abbrevlist.lua работать не будет
дополню комментарием (стековой нотацией),...Вот и будет чудненько
поубираю действительно лишнее
Прочитав эту фразу, становится ясно - этот файл без abbrevlist.lua работать не будет.Так там (nncron.abbrev) аббревиатуры на одни буквенные сочетания вешаются и с отключенным abbrevlist.lua они не работают
Выкладываю скрипт, который обещал: ShowCalltip.lua...Да, то что нужно! Теперь по хоткею появляется подсказка, без набора/стирания дополнительных символов
А как быть с :NONAME ??На дня мне пришла мысль (еще один пример VoidVolker'а меня убедил окончательно), что:
на сколько я понял, это тоже начало определения, вот только к группе defwords этот тег не относится... а еще такие есть? или этот тег уникален?
А как быть с :NONAME ??
на сколько я понял, это тоже начало определения, вот только к группе defwords этот тег не относится... а еще такие есть? или этот тег уникален?
- надо перед каждой группой давать описание принципов работы с подсветкой слов в нее помещенных, что бы любой мог легче оринтироваться куда должно быть добавлено очередное его слово для правильной работы подсветки/фолдинга, уже помещенные туда слова будут ему подсказкой (составить соотвествующие описания - это наша работа, хочу узнать - будут ли они туда помещены?);
- любой тег (даже уже существующий и зафиксированный стандартом, староватым, кстати) может быть переопределен и соотвественно его надо будет помещать в другую группу, в соотвествии с его новым определением, поэтому, фактически, надо обсуждать не конкретные теги, а именно конкертные алгоритмы влияния одних тегов на расцветку следующих за ними;
- из лексера надо убрать все конкретные теги (ведь и "[" и "]" "зашиты" в лексер?) создавая для них дополнительные группы если они не подходят ни под одни существующие группы.
аббревиатуры на одни буквенные сочетания вешаются и с отключенным abbrevlist.lua они не работаютЯ полагал что букв в алфавите и твоей фантазии хватит на то чтобы сделать разные аббревиатуры и не привязывать без особой нужды всех пользователей к скрипту
выводить только комментарий (после первого же пробела следующего за комментрируемым тэгом) без самого тэга
составить соотвествующие описания - это наша работа, хочу узнать - будут ли они туда помещены?
из лексера надо убрать все конкретные теги (ведь и "[" и "]" "зашиты" в лексер?)
Вообще говоря, мне кажется неправильным применение слова "тег", куда более логичным думаю будет слово "лексема" - т.к. трансляторы рассматривают исходный текст программ именно как набор лексем.
Обновил лексер, теперь для всего, что находится внутри определения, создана своя группа подсветки. Это вызванно особенностями работы лексеров в целом.
Тег начала определения теперь может быть двух видов - один как для :NONAME, другой как для :, в первом случае, он задается только в группе начала определения, во втором - в двух группах, в этой и в группе defwords.
Требуется тщательно протестировать работу. Надеюсь скачать обновление и собрать из исходников проблем не вызывает?
термин был выбран мной условно, ок, давайте перейдем на термин "лексема".
А какой из шагов инструкции не осуществим?
Способ выхода в сеть GPRS - соответственно нет возможности качать большие объемы данных. Есть возможность выложить максимально урезанную сборку?
Вот архив с необходимыми для апдейта сборки файлами
рекомендую найти или интернет кафе, или знакомого с дешевым трафиком и скачать MinGW, SVN клиент и файлы SVN репозитория
Частенько наблюдаю при закрытие скайте глюк: вся система примерно на 10 секунд впадает в глубокий ступор.
Еще я не понимаю смысла вот этого...
Так, в новом forth.properties опять все как-то не так :/
Поэтому запись вида:
# prewords1
keywords4.$(file.patterns.forth)=\
CHAR [CHAR] POSTPONE WITH ['] TO [COMPILE] ASCII \' c: '
очень даже неправильная.
Квадратные скобки - они предназначены для переключения режимов работы форта:
[ - устанавливает режим интерпретации, слово немедленного исполнения;
] - устанавливает режим компиляции.
Поэтому, возможно стоит для строк ввести другой формат хранения в *.properties: парами - слово-начало строки и слово-конец строки?
А где можно посмотреть исходники лексера?
А как правильно?
Именно символы, а не лексемы?
Смотри контекст выше - я говорил про разделение слов по признакам на разны группы. В данный момент этого нет - в данном примере слова разного типа(немедленного исполнения и обычные) в одной группе.
Страницы: 1234567891011121314151617181920212223242526
Предыдущая тема: test