• Aucun résultat trouvé

Description du langage Scriptol

N/A
N/A
Protected

Academic year: 2022

Partager "Description du langage Scriptol"

Copied!
18
0
0

Texte intégral

(1)

Scriptol

(2)

Table des Matières

Description du langage Scriptol ... 3

Caractéristiques de Scriptol ... 3

Pourquoi utiliser Scriptol ... 5

Comment utiliser Scriptol? ... 5

Influence de Scriptol sur les autres langages de programmation ... 7

La licence ... 7

Exemples de code Scriptol ... 8

(3)

Description du langage Scriptol

Scriptol est un langage de programmation qui est soit interprété soit compilé, conçu pour être simple et facile à apprendre, permettant aux nouveaux utilisateurs d'être prêts à programmer en quelques heures, et qui réduit énormément le temps de travail.

Scriptol est orienté objets, extensible, universel, utilise les librairies de C++, PHP ou Java et GTK comme interface utilisateur graphique. Il est universel ce qui signifie qu'il convient pour faire des scripts, pour construire des applications ou pour créer des pages web dynamiques.

Des compilateurs Scriptol gratuits existent pour Windows et Unix.

Caractéristiques de Scriptol

Scriptol est :

Objectivement moderne: il a été défini selon sept règles de simplicité et, sureté, et n'hérite pas de syntaxes anciennes et obsolètes.

Orienté objet, même de simples scalaires comme

"int", ou des litéraux comme "123", sont des objets et ont des méthodes.

Typé: le compilateur peut comparer le contenu que l'on assigne et le type des variables, ce qui est impossible avec les langages de scripts.

Naturel: les types ne sont pas basés sur le matériel de l'ordinateur mais sur les concepts humains et ensembles

(4)

mathématiques: text, number, integer,real, etc...

Puissant et sûr: de nouvelles structures de contrôle ont été introduite avec Scriptol.

Exemples:

- if composite, qui est à la fois une instruction if et un switch case, mais avec toutes sortes de valeurs.

- while let, qui protèges des boucles sans fin.

- for .. in liste, or for .. in a..b, le moyen le plus simple d'exprimer un intervalle.

Simple. Pas de symboles du genre -> ou ::, seulement un point dans tous les cas.

Ajouter 1 à x s'écrit juste: x + 1, et non pas x +=

1

Pas de gestion de mémoire requise, un garbage collector est inclus.

Clair. Le point-virgule est un séparateur. La fin de ligne est un terminateur. D'autres langages

cumulent inutilement les deux.

Le langage est conçu pour les éditeurs modernes à coloration syntaxique. C, Java etc... utilisent des symboles comme { }, #, convenant aux éditeurs anciens.

Compatible avec C++. Vous avez juste à lier des fichiers objet C++ ou des fichiers librairies, et utiliser directement les fonctions qu'ils contiennent,

pas d'extension à écrire.

Par exemple, il suffit d'ajouter les libraires GTK dans le fichier de configuration d'un programme, pour disposer de l'interface utilisateur graphique.

Compatible avec PHP: vous pouvez programmer des pages web en Scriptol, le code est converti en PHP, toutes les fonctions PHP peuvent être utilisées.

(5)

Portable, fonctionne sur toute plateformes supportant l'interpréteur PHP ou le compilateur C++.

Pourquoi utiliser Scriptol

Principalement pour:

Intégrer du code sûr et naturel à l'intérieur de pages html. Cela fonctionnera sur tout serveur supportant PHP 4.

Protéger votre travail en distribuant des exécutables binaires.

Ecrire facilement et rapidement des scripts, grâce à la syntaxe de haut niveau.

Prototyping, tester rapidement un programme avec l'interpréteur avant de construire un exécutable natif.

Construire des applications. Scriptol peut être intégré dans des outils de développement rapide et peut utiliser des librairies inter-plateformes comme GTK.

Scriptol n'a pas besoin de fichier project.

Comment utiliser Scriptol?

Vous pouvez ouvrir une console Windows, quelquefois appelée "Fenêtre Dos", et taper la commande:

solc or solp pour voir les options.

(6)

Uitiliser Scriptol en ligne de commande

Un éditeur est fourni avec les compilateurs qui dispose de la coloration syntaxique pour les sources Scriptol, C++ ou PHP.

On peut compiler et lancer à partir de l'éditeur.

Les sources colorés peuvent être sauvés en fichiers Html ou Pdf.

Vous pouvez aussi intégrer le compilateur Scriptol C++

dans C Builder (version proffessionelle) ou Visual Studio, qui permettent de compile le source Scriptol d'abord, puis le code C++ généré ensuite.

(7)

Influence de Scriptol sur les autres langages de programmation

Plusieurs caractéristiques de Scriptol on été reprises par des langages plus récents et aident ainsi à améliorer la programmation.

Un nom de variable global ne peut pas être réutilisé dans un bloc local. Dans Dart cela déclenche un avertissement.

Utilisation conjointe de variables dynamiques et statiquement typées. C'est le cas de Dart. Dart utilise aussi un typenum, qui est proche de number en Scriptol.

switch case utilise des tests différent. Cela se retrouve dans Go puis dans Xtend.

La suppression des parenthèses dans les conditions avec if ou for, est reprise par Go, ainsi que la suppression des points-virgule. Malheureusement pas dans Dart.

La licence

Le langage est gratuit mais copyrighted. Le compilateur est sous Licence Mozilla. Un interpréteur ou compilateur peut être écrit par n'importe qui pourvu que la

compatibilité soit préservée.

L'edition commune (common) des compilateurs Scriptol est gratuite, même pour réaliser des logiciels commerciaux.

(8)

Exemples de code Scriptol

Algorithme de Fibonacci itératif int fibmax = 20

int fibonacci(int n) int u = 0

int v = 1 int t

for int i in 2 .. n t = u + v u = v v = t /for return v

for int x in 1..fibmax echo "fib(" , x , ") ", fibonacci(x), "\n"

Passer des arguments à un script Usage: sol ex_main [paramètres]

A la différence de for .. in, qui lite chaque élément d'une séquence dans une variable, scan pointe sur chacun et chacun peut être lu et modifié parce que le symbole [] vide désignre l'élément courant.

int main(array arglist, int argnum) print argnum, "arguments"

int i = 0

scan arglist ` scan the array

print "$i)", arglist[] ` display the next argument

(9)

i + 1 /scan return 0

main($argv, $argc) ` argv and argc are Php variables directly used.

fcomp - Comparer deux fichiers

die() affiche un message et termine le programme.

int main(int argnum, array arglist)

if argnum <> 3 ? die("usage: php fcomp.php file1 file2")

print "Comparing", arglist[1], arglist[2]

array f1, f2

f1.load(arglist[1]) ` array filled with a file f2.load(arglist[2])

if f1.size() <> f2.size() ? die("sizes differ") for int i in 0..f1.size() - 1

if f1[i] <> f2[i] ? die("files differ") /for

print "No difference found."

return 0

main($argv) ` argv est une variable PHP.

Compter les occurences d'une chaîne

Text, array, dict, file, sont des classes virtuelles et chaque instance peut utiliser des méthodes virtuelles comme ici find méthode de text.

class String

(10)

int count(text base, text sea) int ctr = 0

int i = 0

while forever

i = base.find(sea, i) if i = nil break i + 1

ctr + 1 /while return ctr /class

String str

print str.count("somestring", "string")

Classe et héritage (ex_car.sol)

A partir de la classe de base "Car", on peut hériter d'autres classes utilisant ses méthodes, faire des instance de Car ou de ses classes dérivées.

class Car

int power = 850

int getPower() return power text color(int c)

text tc = "other"

if c

= 1: tc = "blue"

= 2: tc = "green"

= 4: tc = "red"

(11)

/if

return "color is " + tc /class

class FormulaOne is Car int speed

int getSpeed()

speed = getPower() * 2 / 4 return speed

/class

FormulaOne f1 // instance de FormulaOne print f1.power // attribut de la superclasss print f1.getPower() // méthodd de la

superclasss

print f1.getSpeed() // méthode de la classe elle- même

print FormulaOne.color(4) // méthode statique de la superclasss (Car.color() marche aussi).

Utiliser GTK include "gtk.sol"

include <gtk/gtk.h>

int main(int argc, array argv) GtkWidget window = null gtk_init(null, null)

window =

gtk_window_new($GTK_WINDOW_TOPLEVEL) gtk_widget_show(window)

gtk_main() return 0

(12)

Récursion

Algorithme de Fibonacci récursif. Calcul des nombres de Fibonacci.

constant int fibmax = 16 int z = 0

int fib(int n)

if n <= 1 : z = n else

z = 0 + fib(n - 1) + fib(n - 2) /if

return z

for int i in 0..fibmax print "fib($i)=" , fib(i) /for

Fonctions intégrées

L'heure et la date courante ou dernière modification d'un fichier.

print "Example of date and time"

(13)

print "Format ISO 8601 (PHP 5/Scriptol C++)"

real d = time()

print "Current date and time:", date("c", d) d = filetime("exdate.sol")

text filedate = date("c", d)

print "Date of this file:", filedate[ .. 9]

Ligne de commande

Hello You. Fonctions d'entrée-sorties de base en ligne de commande.

text name

input "What is you name? ", name print "Hello", name

Arguments de ligne de commande. Passer des arguments en ligne de commande.

extern int argc extern array argv

int main(int argnum, array arglist) print argnum, "arguments"

int i = 0

(14)

scan arglist ` scan the array

echo i, ")", " ", arglist[], "\n" ` display next argument

i + 1 /scan return 0

main(argc, argv) ` argv and argc are PHP or C variables.

Graphismes utilisant GD (Scriptol PHP)

Dessiner un bouton. Créer un bouton avec un libellé, avec la bibliothèque Scriptol Image.

include "phpgd.h"

include "image.sol"

print "Program Button - Testing GD"

Image button

button.create(88,31)

int black = button.createColor(0, 0, 0)

(15)

int white = button.createColor(255,255,255) int green = button.createColor(0, 192, 0)

` filling background and drawing borders button.fill(green)

button.line(0,0,87,0, white) button.line(0,0,0,30, white) button.line(0,30,87,30, black) button.line(87,0,87,30, black)

` now, writing a label button.setFontSize(5)

button.write(26, 8, "Label", black)

text bname = "button.jpg"

button.saveJpeg(bname, 100) print bname,"created"

Charger une page XML

`` Ce petit programme teste le chargeur XML sax

`` et affiche les noms de pilotes F1.

(16)

xml dom /xml

text fname = "demos\f1-drivers.xml"

print "loading", fname, "..."

if not dom.load(fname)

print fname, "file not found"

exit() /if

print dom.document.driver.at() while dom.isFound()

dom.down() // set current to name text driver = dom.getData()

print driver.trim() dom.up()

let dom.inc()

Créer un simple fichier XML accessible par les méthodes de DOM.

text tag = "Internet"

text title = "My article"

text article ="Here is the story I am speaking of..."

text fname="article.xml"

array arr = array("<?xml version=\"1.0\" ?>\n",

"<articles>\n",

" <article tag=\"" + tag + "\" title=\"" + title+ "\"

(17)

>\n", article + "\n",

" </article>\n", "</articles>\n" )

file nfile = fopen(fname, "w") for text x in arr

nfile.write(x) /for

nfile.close()

Le fichier XML créé:

<?xml version="1.0" ?>

<articles>

<article tag="Internet" title="My article" >

Here is the story I am speaking of...

</article>

</articles>

Charger le fichier XML et lire le contenu par les attributs et méthodes de DOM.

text name = "article.xml";

DOMDocument doc DOMNodeList articles

(18)

DOMNode node

DOMElement article = null

doc.load(name)

articles = doc.getElementsByTagName("article") node= articles.item(0)

article = node

text tag = article.getAttribute("tag") text title= article.getAttribute("title") text content= article.textContent

print "Title:",title,"Tag:",tag,"Content:",content

Références

Documents relatifs

Écrire un script PHP qui calcule, par additions successives, le produit de deux variables $M et $N en utilisant une boucle while. Écrire un script PHP qui calcule, par

La valeur affectée à une variable peut également être le résultat d’une expression.. Attention, à droite d’une affectation = , les variables utilisées dans

La création d’un nouveau fichier se fait dans le répertoire courant. Suppression d’un fichier

Ce document peut être reproduit, distribué et/ou modifié selon les termes de la Licence GNU de Documentation Libre (GNU Free Documentation Licence) dans sa version 1.1 ou

 Par valeur , c'est a dire que s'ils ont une valeur à l'extérieur de la fonction, seule la valeur est transmise à la fonction, si la variable subit des modifications à

À l'intérieur de guillemets simples, aucune interpolation de variable

Cela a vous a peut être parut un peu lourd, mais si vous n'avez fait que survolez cette partie, vous verrez que vous y reviendrais car c'est vraiment des bases très importants à

Pour cela, il existe la directive safe_mode à activer dans le php.ini. Elle permet entre autres de.. pourra accéder à un fichier que si le propriétaire du fichier est le même que