Core Technology

Le Langage
VVL

VAILS Virtual Language : Un langage de script orienté données, conçu pour l'automatisation, l'IA et l'orchestration de systèmes complexes.

Syntaxe
Unifiée

Le VVL utilise une syntaxe par crochets [...] inspirée du Lisp mais adaptée aux besoins modernes. Tout est expression.

  • Typage Dynamique : Listes, JSON, XML natifs.
  • Automation Web : Pilotage Selenium intégré.
  • Fonctions Lambda : [lambda [x] [...]]
automation_web.vvl
1234567891011121314
# Exemple d'automatisation Chrome $url = "https://prosuite.ventures" $drv = [webdriver "chrome" ["--start-maximized"]] [go $drv $url] [wait $drv "ready" 15000] # Fonction locale de screenshot $takeShot = [lambda [label] [do $fname = "shot_" + $label + ".png" [screenshot $drv $fname] [log "SNAP: " + $fname] ] ] [$takeShot "homepage"] [webQuit $drv]

Modules
Intégrés

Neuro-Symbolique

Module IA

Intègre des opérateurs flous comme == (équivalence sémantique) ou + (fusion de concepts) via LLM.

RAG Memory

Module Mémoire

Indexation vectorielle automatique de documents et interrogation en langage naturel via [ragAsk].

Web Driver

Module Automation

Pilotage complet de navigateurs (Chrome/Edge) pour le scraping ou les tests E2E.

Office COM

Module Bureautique

Manipulation native de Word, Excel et Outlook pour la génération de rapports.

SQL & Data

Module Données

Connecteurs SQLite isolés par Workspace. Gestion JSON et XML native.

REST Server

Module Réseau

Exposez vos fonctions VVL en tant qu'API Web sécurisée instantanément.

Référence du
Langage VVL

Documentation complète des opérateurs, fonctions et structures du langage VVL.

Variables & Types de Données

Déclaration de Variables

# Variables globales/standard $maVar = "valeur" $nombre = 42 $actif = true # Variables dynamiques (nom calculé) ${"user_" + "name"} = "Neo" # Variables locales (dans les lambdas) $__nom = "local"

Types Natifs

String

"Texte" ou 'Texte'

Nombres

42 ou 3.14

Booléen

true, false

Liste

["a" "b" "c"]

JSON

<{ "clé": "valeur" }>

XML

<< <tag>...</tag> >>

Opérateurs (Infixes)

Les opérations s'écrivent en notation infixe et doivent être parenthésées.

Mathématiques

$res = ($a + $b) $diff = ($x - $y) $prod = ($a * $b) $div = ($a / $b) $mod = ($a % $b)

Logiques & Comparaison

# Comparaison ($a == $b), ($a != $b) ($a < $b), ($a > $b) # Logique ($a && $b) # ET ($a || $b) # OU ($a ^^ $b) # XOR

Contrôle de Flux

Conditions (if)

[if ($age >= 18) "Majeur" "Mineur" ]

Boucle For

[for $item $maListe [log $item] ]

Boucle While

[while ($i < 10) [do $i = ($i + 1) [log $i] ] ]

Gestion d'Erreur (try)

[try [ / 10 0 ] [log "Erreur: " $__error] ]

Fonctions & Lambdas

Fonctions Anonymes (lambda)

Deux conventions : paramètres "Mots" (localisation auto avec $__nom) ou "Variables" (explicites avec $nom).

# Lambda avec paramètres automatiques $carre = [lambda [n] ($__n * $__n)] [$carre 5] # Retourne 25 # Lambda avec paramètres explicites $double = [lambda [$x] ($x * 2)] [$double 10] # Retourne 20

Macros (keyword)

Étendent le langage par expansion de code. Utilisent le backtick ` et les placeholders @1, @2...

[keyword "LOG_TWICE" `[do [log @1] [log @1] ]`] [LOG_TWICE "Hello"]

Parallélisme & Asynchronisme

VVL intègre des primitives puissantes pour l'exécution concurrente.

Parallèle (|)

Exécute en threads, retourne une liste.

$res = ( [scrape "url1"] | [scrape "url2"] )

Course (first)

Premier résultat non nul.

[first [ping "srv1"] [ping "srv2"] ]

Séquence (>>)

Exécute A puis B.

[setup] >> [process]

Bibliothèque Standard (Builtins)

Texte & Listes

  • [join [list]] - Concatène une liste
  • [length $x] - Longueur
  • [split sep str] - Sépare une chaîne
  • [replace regex new str]
  • [append head|tail val list]

Conversion (Casts)

  • [INT $x] - Convertir en entier
  • [FLOAT $x] - Convertir en flottant
  • [BOOL $x] - Convertir en booléen
  • [convert "json" $str]

Programmation Fonctionnelle

  • [map $lambda $list]
  • [filter $lambda $list]
  • [range start end step]

Système & IO

  • [log "msg"] - Écrire dans les logs
  • [import "script.vvl"] - Importer
  • [mem "db" "key" "val"] - Stockage
  • [evaluate "code"] - Exécution dynamique

⚡ Pièges Courants & Bonnes Pratiques