FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» SineCube
mise en forme - Mise en forme de source Panoramic Emptypar Marc Aujourd'hui à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
mise en forme - Mise en forme de source Panoramic Emptypar Marc Aujourd'hui à 12:22

» Philharmusique
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
mise en forme - Mise en forme de source Panoramic Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
mise en forme - Mise en forme de source Panoramic Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
mise en forme - Mise en forme de source Panoramic Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
mise en forme - Mise en forme de source Panoramic Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
mise en forme - Mise en forme de source Panoramic Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
mise en forme - Mise en forme de source Panoramic Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
mise en forme - Mise en forme de source Panoramic Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
mise en forme - Mise en forme de source Panoramic Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
mise en forme - Mise en forme de source Panoramic Emptypar leclode Sam 27 Avr 2024 - 17:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Mise en forme de source Panoramic

Aller en bas 
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

mise en forme - Mise en forme de source Panoramic Empty
MessageSujet: Mise en forme de source Panoramic   mise en forme - Mise en forme de source Panoramic EmptyMar 15 Sep 2009 - 21:17

Pour ma part, j'aime bien dans un source avoir les mots de code du langage en majuscules, pour bien les distinguer du reste. Comme je les écris au départ en minuscules pour aller plus vite, voici un petit programme qui fait la conversion.

Remarques:
- les noms de fichier indiqués: fp$ = fichier source à mettre en forme, fc$ = fichier des mots-clé, fo$ = fichier résultat sont évidemment à changer en fonction des ressources et des besoins.

- le fichier fc$ des mots-clé Panoramic: MclePano.txt a été obtenu à partir de la liste du 'Manuel de Référence' Panoramic: http://pagesperso-orange.fr/panoramic-language/French/ , récupérée par copier/coller dans un fichier puis expurgée des commentaires, lettres seules et espaces (par programme évidemment).

- le programme est extrêmement long à l'exécution (près d'une minute pour le code ci-dessous).
Il manque cruellement une fonction Instr, ce qui oblige à faire appel à un sous-programme.
De plus, le fait que par exemple LEFT$(a$, 0) ou RIGHT$(a$, 0) ou MID$(a$, k, 0) partent en erreur au lieu de renvoyer une chaîne vide (comme en Basic) oblige à des tests acrobatiques pour éviter l'erreur
Pour la durée d'exécution, on se croirait revenu au vieux temps du Basic interprété des débuts.
Je ne conseillerais pas de lancer ce programme sur les derniers sources de Jean-Claude (CFP) !!!! à moins d'avoir quelques heures à perdre.
Pour info, j'ai codé à peu près la même chose dans un autre basic, et là ça va à la vitesse de l'éclair...

On pourrait faire quelque chose du même genre pour générer l'indentation automatique.

EDIT de minuit: allez, je rajoute le sous-programme Mcl qui constitue le fichier des mots-clé à partir du 'Manuel de référence'

Voici le code:
Code:
REM MefPano.bas Mise en majuscules des mots-clé d'un source Panoramic
DIM mcl$(500)
DIM fp$, fc$, fo$, fmc$, ncl, a$, s$, j, ls, k, k1, k2, u, um, ch$, trv, nbl
DIM pr$
LABEL Reb, Instr, Mcl, record

fp$ = "C:\Langages\Panorami\MefPano.bas": Rem fichier source à mettre en forme
fc$ = "C:\Langages\Panorami\MclePano.txt": Rem fichier des mots-clé Panoramic
fo$ = "C:\Temp\MefPano.bas": Rem fichier résultat, mis en forme
fmc$ = "Z:\mcl.txt": Rem fichier copié/collé depuis le 'Manuel de Référence'

IF FILE_EXISTS(fc$) = 0 THEN GOSUB Mcl: Rem création du fichier des mots-clé
ncl = 0: REM 352 mots-clé (09/09)
FILE_OPEN_READ 1,fc$
WHILE FILE_EOF(1) = 0
    ncl = ncl + 1: FILE_READLN 1, mcl$(ncl)
END_WHILE
FILE_CLOSE 1

FILE_OPEN_READ 1,fp$: nbl = 0
FILE_OPEN_WRITE 2, fo$
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: nbl = nbl + 1
    um = LEN(a$): s$ = "REM": ch$ = upper$(a$): u = 1: gosub Instr
    IF k>0 THEN um = k+3
    s$ = CHR$(34): ch$ = a$: u = 1 : REM pour ignorer les mots entre quotes
    GOSUB Instr: k1 = k
    IF k1 > 0
        u = k1+1: GOSUB Instr: k2 = k
    ELSE
        k1 = LEN(a$): k2 = 0
    END_IF
    FOR j = 1 TO ncl
        s$ = mcl$(j): ls = LEN(s$)
        u = 1
Reb:
        ch$ = UPPER$(a$): GOSUB Instr
        IF k > 0 AND k < um
            IF k < k1 OR k > k2
                IF k > 1
                    IF k = LEN(a$) - ls + 1
                        a$ = LEFT$(a$, k-1) + s$
                    ELSE
                        a$ = LEFT$(a$, k-1) + s$ + RIGHT$(a$, LEN(a$)-k-ls+1)
                    END_IF
                ELSE
                    IF LEN(a$) > ls
                        a$ = s$ + RIGHT$(a$, LEN(a$)-ls)
                    ELSE
                        a$ = s$
                    END_IF
                END_IF
                u = k+ls: GOTO Reb
            END_IF
        END_IF
    NEXT j
    FILE_WRITELN 2, a$
END_WHILE
FILE_CLOSE 1
FILE_CLOSE 2
PRINT "Terminé !"
TERMINATE

Instr:
REM recherche de la séquence s$ dans ch$, à partir de la position u
REM position rendue dans k (ou 0: non trouvé)
trv = 0
IF LEN(ch$) >= LEN(s$)
  FOR k = u TO LEN(ch$)-LEN(s$)+1
    IF MID$(ch$, k, LEN(s$)) = s$ THEN trv = k: EXIT_FOR
  NEXT k
END_IF
k = trv
RETURN

Mcl:
Rem Mise en forme du fichier des mots-clé de Panoramic, récupéré par
Rem copier/coller du Manuel de Référence dans Z:\mcl.txt, mis en forme
Rem dans C:\Langages\Panorami\MclePano.txt
FILE_OPEN_READ 1, fmc$
FILE_OPEN_WRITE 2, fc$
pr$ = ""
WHILE FILE_EOF(1) = 0: FILE_READLN 1, a$
    a$ = TRIM$(a$)
    IF LEN(a$) > 1
        IF LEFT$(a$, 9) = "IF C ELSE" THEN a$ = "ELSE": GOTO record
        IF LEFT$(a$, 9) = "(FOR V=S " THEN a$ = "STEP": GOTO record
        IF LEFT$(a$, 9) = "(FOR V=S)" THEN a$ = "TO": GOTO record
        ch$ = a$: s$ = " ": u = 1: GOSUB Instr: if k>0 THEN a$ = LEFT$(a$, k-1)
        ch$ = a$: s$ = "(": u = 1: GOSUB Instr: if k>0 THEN a$ = LEFT$(a$, k-1)
record:
        IF a$ <> pr$ THEN FILE_WRITELN 2, a$: pr$ = a$
    END_IF
END_WHILE
FILE_CLOSE 1: FILE_CLOSE 2
RETURN
Revenir en haut Aller en bas
 
Mise en forme de source Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise en forme de fichier source Panoramic (nième version)
» Mise en forme de sources Panoramic (bis)
» Mise en forme des sources
» Analyse/Mise en forme de sources
» Autre tentative de mise en forme des nombres

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: