Monkey Studio IDE The way IDEs should be

Reconnaissance syntaxique de R

Bonjour, En "compilant" MStudio (avec des résultats par ailleurs satisfaisants) j'ai pu remarquer que la reconnaissance syntaxique de R était supportée , mais que le suffixe R n'était pas un suffixe valide . J'espère que ma découverte récente de MStudio ne m'a pas amené à commettre un acte d'incompétence. Ce besoin de reconnaître (et colorier syntaxiquement) R est d'autant plus grand pour les utilisateurs de R (ils disent les usRs, Rer ou rien étant ridicule) que le seul éditeur libre assumant, aussi bien sous Windows que sous Linux/Unix, cette fonction est (g)vi(m), susceptible de traumatiser des débutants.... On peut trouver context (gratuit) sous Windows et Kate/Kwrite sous Linux/BSD, mais il serait plus sain d'avoir un seul éditeur .....

Bonjour, Tout d'abord, merci

Bonjour,
Tout d'abord, merci d'avoir expliqué un peu la structure.

Ce qui m'interesserait le plus maintenant, c'est une estimation de la difficulté de créer un enrobage (je sais programmer en Fortran,R et en bash; j'ai abandonné C dès que j'ai eu un compilateur Fortran décent; mais je n'ai pas un temps easesPearl branchesinfini).J'utilise vi, mais je suis conscient que des débutants seraient plus interessés par scintilla/monkeystudio.
La syntaxe de C (voire de bash, je veux bien pour C++) est assez adaptée à R (et une des difficultés de R est que sa syntaxe a changé en 2004, une autre est que le = (une commodité pour l'affectation) ne peut pas fonctionner lors de la fixation de défauts à l'appel d'une fonction.
Pour Fortran, une configuration de scintilla, donc de MStudio ?
(ai je bien compris?) est disponible dans http://www.g95.org ..

denis

pasnox's picture

Bonjour, Je ne suis pas sur

Bonjour,

Je ne suis pas sur d'avoir compris la première partie du message :D
Pour la seconde je pense que tu n'as pas saisie, MkS utilise QScintilla, un wrapper Qt4/C++ au dessus de la lib Scintilla.
De ce fait, les colorisations disponibles sont celle qui hérite de QSciLexer, dont Fortran et R ne font pas partis.
Par contre, leurs intégrations bas level existent ( au niveau de Scintilla ), il est donc possible de créer des QSciLexer pour gérer R et Fortran.
Ca demande un peu de coding, et une connaissance des dits langages, que je n'ai pas :/
Si tu te sens prêt à les créer, je veux bien essayer de te filer un coup de main pour créer les classes Qt de base.

You can seek team on IRC.
If you don't know what is IRC, then go to the IRC page.
If you want an answer, please be explicit and verbose.
Help by email will be ignored.

Le gros problème que je vois,

C'est une
estimation du temps (
basée par exemple sur le temps pour faire une manip analogue, puisque d'autres langages sont supportés!!!)
que l'on peut consacrer à faire une moulinette/un enrobage (mon anglais est faible : qu'est un wrapper????) permettant de faire le lien entre l'existant (analyseur de Scintilla pour R et Fortran) et Qscintilla en sachant :

a) que ce ne sont pas les langages (considérés comme) les plus populaires qui ont besoin d'aide syntaxique -sinon, ça serait grave!!- , mais ceux ... dont la syntaxe est peu connue, {faute de pratique (Fortran) ou parce qu'ils sont utilisés pour enseigner (R)} et qui restent cependant fort utiles (au point que le code de leur analyseur .... dorme).

b) qu'il existe déjà au moins trois solutions pour R et Fortran (cette demande a existé pendant plusieurs années; je connais 4 solutions dont une boiteuse, mais il doit y en avoir des dizaines d'autres)

C'est pour ça que, avant d'envisager quoi que ce soit, il est nécessaire de savoir quelle sont la difficulté et le temps qu'on peut y mettre.

denis

pasnox's picture

Alors la, je ne sais pas du

Alors la, je ne sais pas du tout :D
Je n'ai créé aucun lexer, j'utilise ceux qui existent.
Je pense que en t'inspirant du QsciLexerCpp ça peut allez très vite ( moins d'une journée ).

You can seek team on IRC.
If you don't know what is IRC, then go to the IRC page.
If you want an answer, please be explicit and verbose.
Help by email will be ignored.

Remerciements

Pour votre estimation du temps (je pense que ça me prendra + de temps, car je suis très lent : c'était un facteur limitant pour moi), et la piste à suivre....
Et bon week end.

denis

hlamer's picture

Bonjour, Je ne vois pas de

Bonjour,

Je ne vois pas de lexer R dans le code de MkS, je suppose donc qu'il ne le gère pas.
Qu'est ce qui te fait penser que MkS le supporte ? Ne connaissant pas R je suis tout ouïe sur tes commentaires.

Le lexer de R n'est pas dans le code de MkS

On peut le trouver par :
57 find monkeystudio-svn2110-1.8.2.0/ -name \*R\*
58 less monkeystudio-svn2110-1.8.2.0/qscintilla/\
QScintilla-gpl-2.2.1-snapshot-20080309/src/LexR.cpp
... autres manips rompant la croissace régulière du journal et liées au montage d'une clé...
62 history 11 > /media/KINGSTON/lexeurdeR.txt
Et les commentaires de Lexr.cpp sont:
****************************
// Scintilla source code edit control
/** @file Lexr.cxx
** Lexer for R, S, SPlus Statistics Program (Heavily derived from CPP Lexer).
**
**/
***************************
Nota : l'idée de s'inspirer de cpp pour la syntaxe de R n'est pas stupide (on recommande d'utiliser une syntaxe avoisinante pour colorier R et j'utilise C).
Ca m'amène à la question suivante :
Est-il facile de rajouter un langage pour qu'il soit colorié syntaxiquement (ça peut faire gagner jusqu'à 10% du temps de correction, selon ma navrante expérience)? Ca serait utile pour R, mais aussi pour fortran
(ne reconnaît pas les *.f{,90} )
Le fait que cette question a peut être déjà eu des réponses s'explique par le fait que je ne suis pas connté à Internet (j'utilise un cybercafé, quand je peux).

denis

pasnox's picture

Effectivement, il est bien

Effectivement, il est bien disponible en low level ( Scintilla ) hors la librarie QScintilla utilisée ( qui est en fait un wrapper Qt sur la lib Scintilla ) n'a pas créé de QsciLexerR, de ce fait il n'est pas disponible.
Si le coloriage C++ peut convenir, alors tu peux ajouter une association de suffixe au lexer C++ en ajoutant le suffixe "*.r" au lexer C++ ( Edit -> Settings -> Editor -> Lexers Associations ).
Le coloriage ne sera pas 100% correcte mais il devrait convenir.
Au pire tu peux toujours creer ce fameux QsciLexerR et nous le faire parvenir en tant que patch pour l'integrer dans une future version de MkS.

You can seek team on IRC.
If you don't know what is IRC, then go to the IRC page.
If you want an answer, please be explicit and verbose.
Help by email will be ignored.