Pré. | Proc. |
Commandes de grammaire
Les commandes, comme les instructions, ressemblent à des appels de fonction. Elles remplissent deux fonctions principales :
- Traiter les jetons d'une manière spécifique ou
- Pour fournir un résultat à l'appelant
Commandes
Commande |
Description |
---|---|
attribut(Nom : String , valeur : expression) |
Crée un attribut sur le nœud AST actuel. L'attribut sera créé avec le nom spécifié dans la source de grammaire et recevra la valeur de tous les jetons consommés dans le cadre de l'exécution de l'expression de valeur. Cette commande produit les attributs du nœud AST sur lesquels Enterprise Architect opère dans l'ingénierie de code. |
attributeEx(Nom : String ) |
Crée un attribut sur le nœud AST actuel sans consommer de jetons. L'attribut sera créé avec le même nom que celui spécifié dans la source de grammaire et avec une valeur vide ou la valeur spécifiée par l'argument Value facultatif. Cette commande produit les attributs du nœud AST sur lesquels Enterprise Architect opère dans l'ingénierie de code. |
except(Cible : Expression, Exception : Expression) |
Consomme les données d'entrée qui correspondent à l'expression cible, mais échoue sur les données qui correspondent à l'expression d'exception. Son fonctionnement est assez similaire à celui de la commande skip, mais exactement à l'opposé de celle-ci. |
échouer() |
Fait échouer l'analyseur sur la règle actuelle, y compris toutes les définitions restantes. |
mots-clés() |
Correspond à n'importe quelle string littérale utilisée comme terme de grammaire ; c'est-à-dire que si vous entrez une string explicite que vous recherchez, elle devient un mot clé. |
mapLeft(Cible : Expression, Commun : Expression) |
Consomme les données d’entrée qui correspondent à l’expression cible, puis consomme les données d’entrée qui correspondent à l’expression commune. Les nœuds et Attributes AST générés à partir de l’expression commune sont ensuite copiés dans chacun des nœuds de niveau supérieur générés par l’expression cible. Les expressions cibles et communes doivent être analysées avec succès pour que cette commande réussisse. |
mapRight(Commun : Expression, Cible : Expression) |
Consomme les données d’entrée qui correspondent à l’expression commune, puis consomme les données d’entrée qui correspondent à l’expression cible. Les nœuds et Attributes AST générés à partir de l’expression commune sont ensuite copiés dans chacun des nœuds de niveau supérieur générés par l’expression cible. Les expressions communes et cibles doivent être analysées avec succès pour que cette commande réussisse. |
nœud (Nom : String , cible : expression) |
Crée un nœud AST sous le nœud AST actuel (les nœuds sur lesquels Enterprise Architect opère dans l'ingénierie de code). Le nœud sera créé avec le nom spécifié dans la source de grammaire. |
preProcess(Cible : Expression) |
Évalue une expression et utilise ces données prétraitées dans plusieurs définitions. Cette fonction est particulièrement utile dans l'analyse d'expressions, où la même expression de gauche sera évaluée par rapport à un certain nombre d'opérateurs. Cette commande réduit le travail que l'analyseur doit effectuer pour que cela se produise. |
sauter(Cible : Expression) |
Consomme des données d'entrée (caractères lors de l'analyse lexicale et jetons lors de l'analyse) jusqu'à ce que l'expression « Target » soit mise en correspondance. L'expression facultative « Escape » peut être utilisée pour gérer des instances telles que des guillemets échappés dans des chaînes. |
skipBalanced(Origine : Expression, Cible : Expression) |
Consomme des données d'entrée (caractères ou jetons) jusqu'à ce que l'expression « Target » corresponde et que le niveau d'imbrication atteigne zéro. Si l'expression « Origin » correspond pendant ce processus, le niveau d'imbrication est augmenté. Si l'expression « Target » correspond, le niveau d'imbrication est diminué. Lorsque le niveau d'imbrication atteint zéro, la commande se termine avec succès. Une expression « Escape » facultative peut être fournie. |
sauterEOF() |
Consomme toutes les données restantes (caractères ou jetons) jusqu'à la fin du fichier. |
jeton (cible : expression) |
Crée un jeton lors de l'analyse lexicale pour le traitement lors de l'analyse. La valeur du jeton sera la valeur de tous les caractères consommés suite à l'exécution de l'expression cible. |
avertissement() |
Insère un avertissement dans l'AST résultant. |