Fonctionnement du parser "Vernac"

Remarques génerales

Au lancement, le parser charge un certain nombre de module. Il envoie la chaîne "Starting Centaur Specialized Parser Loop" lorsqu'il est pret.
Dans ce document, les chaines sont délimitées par des simples quotes (').

Format des messages en entrée

Remarques :

CommandesDescription
'print_version'
Utiliser pour obtenir la version du parser ($Id: vernac.html,v 1.1 1998/11/23 14:29:08 plequang Exp $ cvs)
'parse_string' <reqid> [<PHYLUM>]
<chaine>
'&& END--OF--DATA'
Utiliser pour analyser une chaine
Retour : parsed, syntax_error
'parse_file' <reqid> '"'<nom_fichier>'".'
Pour analyser un fichier complet
Retour : parsed, syntax_error
'add_path' <reqid> '"'<path>'"'
Ajout/Extension du chemin de recherche des modules externes/fichiers de syntax (??)
Retour : pas de retour
'load_syntax_file' <reqid> <ident>'.'
Equivalent a "Require <ident>
Cette commande n'est jamais utilisée par ctcoq. Elle n'est utilisée que dans le fichier d'initialisation du parser et le fichier .vernacrc de l'utilisateur.
Retour : pas de retour
'quiet_parse_string'
<chaine>
'&& END--OF--DATA'.
Analyse une chaine sans renvoyer le résultat. Utilisé pour initialiser les "parsing tables" après le chargement de nouveaux modules.
Retour :

Format des messages en retour

Les messages en retour ont la structure générale suivante :

! Certains messages n'ont pas cette structure, notemment certains messages d'erreurs.

"parsed"

'message'
'parsed'
<reqid>
'***'
<résultat de l'analyse sous forme de protocole d'arbre>
'e' <nom de l'arbre>

"syntax_error"

'message'
'syntax_error'
<identificateur de requète>
'***'

Suite à une requète 'parse_string' 'At location <position>
Syntax error: <message d'erreur>'
Suite à une requète 'parse_file', fichier lisible 'Error with file'
<nomfic>
'At location <position>
Syntax error: <message d'erreur>'
Suite à une requète 'parse_file', fichier illisible 'Error with file'
<nomfic>
'OS error:'<message d'erreur

'E-n-d---M-e-s-s-a-g-e'

"file_error"

'message'
'file_error'
<identificateur de requete>
'***'
...
'E-n-d---M-e-s-s-a-g-e'

Messages d'erreur(à compléter)

error while loading syntax module <module_name> : Library.intern_module
Can't find module <module_name> on loadpath

Protocole d'arbre utilisé dans vernac

Ce protocole permet de transmettre un arbre uniquement grâce a une succession de chaine qu'on empile pour pouvoir ensuite reconstituer l'arbre.
Pour une description générale, voir le rapport technique numéro 165, Aout 1994 : "Distributed programming environments : an example of a message protocol".

Un arbre est composé de 2 types de noeud :

Format des opérateurs : <langage>$<opérateur>

Les noeuds sont transmis de la façon suivante :

Pour transmettre un noeud avec 3 fils atomiques, on procède de la facon suivante :

La fin de l'arbre se fait par l'emvoi de la chaine 'e', suivi du nom de l'arbre (non utilise).

Remarque : qu'est ce qu'on fait des annotations ?


Pascal Lequang INRIA Sophia Antipolis
Last modified: Mon Nov 23 15:25:09 MET 1998