OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 14 Ноябрь, 2019 22:23

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 17 Май, 2014 13:28 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Предлагаю доработать готовый лексер Модулы-2 для Оберона/КП. Тогда GitHub, BitBucket и другие смогут подсвечивать плоский исходный текст.
Код:
class Modula2Lexer(RegexLexer):
    """
    For `Modula-2 <http://www.modula2.org/>`_ source code.

    Additional options that determine which keywords are highlighted:

    `pim`
        Select PIM Modula-2 dialect (default: True).
    `iso`
        Select ISO Modula-2 dialect (default: False).
    `objm2`
        Select Objective Modula-2 dialect (default: False).
    `gm2ext`
        Also highlight GNU extensions (default: False).

    .. versionadded:: 1.3
    """
    name = 'Modula-2'
    aliases = ['modula2', 'm2']
    filenames = ['*.def', '*.mod']
    mimetypes = ['text/x-modula2']

...
...
...


Вложения:
modula2lexer_pygments.py.txt [7.69 КБ]
Скачиваний: 321
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 14:51 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Я бы с удовольствием взялся, но слишком плохо ориентируюсь в питоне.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 15:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
ilovb писал(а):
Я бы с удовольствием взялся, но слишком плохо ориентируюсь в питоне.

Взгляни на прикреплённый исходник и ты увидишь что ничего сложного в нём нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 16:34 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Да, вроде все просто.
Создал реп: https://github.com/Spirit-of-Oberon/cp-pygments
Let's do it!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 17:13 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Сделал первое приближение: https://github.com/Spirit-of-Oberon/cp- ... ca969697f3


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 19:32 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
В общем нужно тестить: https://github.com/Spirit-of-Oberon/cp- ... tree/ilovb

Роман, не в курсе куда этот лексер можно воткнуть чтоб проверить?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 20:54 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Хранилище для разработки Pygments находится на BitBucket.
В частности, лексер для компилируемых языков добавляют в файл pygments/lexers/compiled.py

Задачей Linguist является анализ дерева исходников хранилища в Гитхабе на предмет процентного соотношения используемых языков прог-я, подсветки синтаксиса программ при помощи обёртки pygments.rb, и также других вещей.

Цитата:
The actual syntax highlighting is handled by our Pygments wrapper, pygments.rb.
https://github.com/tmm1/pygments.rb
pygments.rb - это обёртка Руби над питоновским Pygments.

Так что на первом этапе достаточно протестировать посветку синтаксиса в Pygments, который преобразует исходник в файл HTML.

Как только подсветка будет готова, дальнейший порядок действий такой же как и в этом случае:
Add APL language #1013

pchaigno писал(а):
pchaigno commented on Mar 24

I don't think the APL lexer is integrated in the Pygment's version used by linguist yet.
You need to wait for the next release.
When the APL lexer will be available, reopen your PR and I'll be glad to help :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 21:27 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Спасибо за разъяснения


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 22:32 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Добавил правку:
missing identifiers added to cp_pervasives

Нюансы при проверке:
Если выполнять пошаговую проверку
Код:
make mapfiles

как написано в руководстве, то получаем ошибку
Цитата:
...
(cd pygments/formatters; python _mapping.py)
Traceback (most recent call last):
File "_mapping.py", line 19, in <module>
from pygments.formatters.bbcode import BBCodeFormatter
ImportError: No module named pygments.formatters.bbcode
make: *** [mapfiles] Error 1

Тогда нужно попроовать так:
Код:
PYTHONPATH=$PWD make mapfiles


Затем проверяем генерацию подсветки синтаксиса:
Код:
./pygmentize -O full -f html -o example.html example.cp

Примечание: по какой-то причине процесс зацикливается с загрузкой процессора 100%. Я его завершаю принудительно. Думаю, это ненормально.

Далее. Само по себе хранилище cp-pygments не имеет смысла. В любом случае, как я уже писал ранее, требуется сначала добавить класс ComponentPascalLexer в файл compiled.py хранилища pygments-main, предварительно создав его форк на BitBucket'е. Следующим шагом нужно отправить PR автору pygments-main. После того как он выпустит новую версию, править linguist и отправлять PR для добавления в Гитхаб.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 17 Май, 2014 22:37 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Забыл указать что таки файл HTML генерируется с подстветкой. Модуль Kernel подсвечивается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 14:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Роман М. писал(а):
Примечание: по какой-то причине процесс зацикливается с загрузкой процессора 100%. Я его завершаю принудительно. Думаю, это ненормально.


example.cp в студию! :)

Цитата:
Само по себе хранилище cp-pygments не имеет смысла.

Ну это временно. Пока не отладим.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 15:36 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Цитата:
class CppLexer(CFamilyLexer):
"""
For C++ source code with preprocessor directives.
"""
name = 'C++'
aliases = ['cpp', 'c++']
filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
'*.cc', '*.hh', '*.cxx', '*.hxx',
'*.C', '*.H', '*.cp', '*.CPP']
mimetypes = ['text/x-c++hdr', 'text/x-c++src']
priority = 0.1


Не в этом ли проблема?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 15:45 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
ilovb писал(а):
Роман М. писал(а):
Примечание: по какой-то причине процесс зацикливается с загрузкой процессора 100%. Я его завершаю принудительно. Думаю, это ненормально.


example.cp в студию! :)

Цитата:
Само по себе хранилище cp-pygments не имеет смысла.

Ну это временно. Пока не отладим.

Кажется, то был файл конвертера в XHTML.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 18:37 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Роман, что то у меня не проходит make mapfiles
Вернее проходит, но Component Pascal в _mapping.py не попадает. И ничего соответственно не работает. А html генерится по плюсовому лексеру...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Примени этот патч к чистому хранилищу

затем
Код:
PYTHONPATH=$PWD make mapfiles


Вложения:
cp.patch.txt [5.74 КБ]
Скачиваний: 321


Последний раз редактировалось Роман М. Воскресенье, 18 Май, 2014 20:14, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:09 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Разобрался. В общем сделал форк: https://bitbucket.org/boris_ilov/pygmen ... c5a802742f

Последовательность действий в венде такая:
1. Ставим питона 2.7
2. Клонируем реп
3. Копируем папку pygments из репа в C:\Python27\Lib (ну или где он у вас там)
4. Запускаем msys (у меня установлен вместе с mingw)
делаем так:
cd /c/hg/pygments-main
make mapfiles
5. Копируем папку pygments из репа в C:\Python27\Lib (ога, опять)
6. делаем python.exe pygmentize -O full -f html -o Kernel.html Kernel.cp
7. срубаем процесс когда надоест смотреть на зависшее окно
Профит! :lol:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
А.. ну а Линуксе попроще будет. Питон и так стоит. :)

Не понял зачем нужен 5-й пункт.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:22 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Починил! https://bitbucket.org/boris_ilov/pygmen ... eff8be0d60

Во я нуб... :D

Самое забавное, что ошибка найдена благодаря подсветке питона в ST3. Кто там говорил, что подсветка зло? :lol:


Последний раз редактировалось ilovb Воскресенье, 18 Май, 2014 20:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
ilovb писал(а):
Цитата:
class CppLexer(CFamilyLexer):
"""
For C++ source code with preprocessor directives.
"""
name = 'C++'
aliases = ['cpp', 'c++']
filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
'*.cc', '*.hh', '*.cxx', '*.hxx',
'*.C', '*.H', '*.cp', '*.CPP']
mimetypes = ['text/x-c++hdr', 'text/x-c++src']
priority = 0.1


Не в этом ли проблема?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Май, 2014 20:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
ilovb писал(а):
Починил! https://bitbucket.org/boris_ilov/pygmen ... eff8be0d60

Во я нуб... :D

Самое забавное, что ошибка найдена благодаря подсветке питона в ST3. Кто там говорил, что подсветка зло? :lol:

Точно! :) Теперь работает без зависаний.


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

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


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB