Réserver une Démo
Pré. Proc.

Commandes de grammaire

Les commandes, comme les instructions, ressemblent à des appels de fonction. Ils servent deux objectifs principaux :

  • Pour 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 de nœud AST sur lesquels Enterprise Architect opère dans l'ingénierie de code.

attributEx(Nom : String )
attributEx(Nom : String , Valeur : 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 la grammaire, et avec soit une valeur vide, soit la valeur spécifiée par l'argument optionnel Value.

Cette commande produit les attributs de nœud AST sur lesquels Enterprise Architect opère dans l'ingénierie de code.

node(Name : String , Target : 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.

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 à la suite de l'exécution de l'expression cible.

mots clés()

Correspond à toute 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é.

sauter(Cible : Expression)
sauter(cible : expression, échappement : expression)

Consomme les données d'entrée (caractères lors de la lexification et jetons lors de l'analyse) jusqu'à ce que l'expression 'Target' corresponde. 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)
skipBalanced(Origine : Expression, Cible : Expression, Échappement : Expression)

Consomme les 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 'Origine' correspond au cours de ce processus, le niveau d'imbrication est augmenté. Si l'expression 'Cible' 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.

échouer()

L'analyseur fait échouer la règle actuelle, y compris toutes les définitions restantes.

Attention()

Insère un avertissement dans l'AST résultant.

sauf(Cible : Expression, Exception : Expression)

Consomme les données d'entrée qui correspondent à l'expression Target, mais échoue sur les données qui correspondent à l'expression Exception. Cela fonctionne un peu comme, mais exactement à l'opposé de la commande skip.

preProcess(Cible : Expression)

Évalue une expression et utilise ces données prétraitées dans plusieurs définitions. Ceci est particulièrement utile dans l'analyse d'expression, 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.

Apprenez Plus