2010-09-08 5 views
0

Implémentation d'une application JavaScript volumineuse avec beaucoup de scripts, il devient nécessaire de créer un script de génération. Les étiquettes JavaScript étant omniprésentes, j'ai décidé de les utiliser comme annotations pour un collateur de script personnalisé. Jusqu'à présent, je suis juste en utilisant la déclaration d'utilisation, comme ceci:Analyse syntaxique des annotations JavaScript personnalisées

use: com.example.Class; 

Cependant, je veux soutenir une syntaxe « devis en option », de sorte que le suivant serait analysée correctement et

use: 'com.example.Class'; 

J'utilise actuellement ce modèle pour analyser la première forme:

/\s*use:\s*(\S+);\s*/g 

le « \ S + » gloms tous les caractères entre la déclaration du nom d'annotation et demi deux points de terminaison. Quelle règle puis-je écrire pour remplacer \ S + qui renverra une valeur d'annotation sans guillemets, peu importe si elle a été citée ou non? Je peux le faire en deux étapes, mais je veux le faire en un.

Je sais que je Action de grâce ai mis cela un peu maladroitement

1. Modifier

Je suis en mesure de l'utiliser, mais à mon humble ses Mess- une des solutions plus élégantes? (Soit dit en passant, celui-ci analysera tous les noms de marque)

/\s*([a-z]+):\s*(?:['])([a-zA-Z0-9_.]+)(?:['])|([a-zA-Z0-9_.]+);/g 

2. Modifier

La logique est la même, mais se montre un peu plus succinctement. Cependant, cela pose un problème car il semble y avoir toutes sortes de code javascript.

/\s*([a-z]+):\s*'([\w_\.]+)'|([\w_\.]+);/g 

Répondre

0

Ok, cela semblait le faire. J'espère que quelqu'un peut améliorer cela.

/\s*([a-z]+): *('[\w_\/\.]+'|[\w_\/\.]+);/g