begin process at 2012 05 27 14:34:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CLEX ANALYSEUR LEXICALE DU LANGAGE C

CLEX ANALYSEUR LEXICALE DU LANGAGE C


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :analyse, lexicale, langage c, compilation Niveau :Débutant Date de création :06/04/2009 Date de mise à jour :07/04/2009 00:09:55 Vu / téléchargé :5 483 / 665

Auteur : xtremejames183

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
comme vous savez l'analyse lexicale est la première passe pour les applications orienté traitement (compilateurs,interpréteur,analyseur de requêtes..) et comme je viens de finir le premier chapitre de mon cours de compilation j'ai décidé d'implémenter mon propre analyseur lexicale du langage C ( et non pas de pseudo-pascal ) qui se trouve par centaine sur le site .
les tokens supportes sont les Symboles,Identificateurs (mots-clés inclus) , String (chaine de caractères commençant par " ou ') , nombres (entier,hex,floats) ,les prédécesseurs (#include,#ifdef...),les espaces , les comments (c/c++ style)...
chaque token est identifie par une instance de la structure token ou le contenu du token ainsi que sa taille et la ligne ou il se trouve sont stocke dans cette structure . le tous est gérés via une liste simplement chaines (voir main() ).
Le code a été testes sous UNIX(FreeBSD) et Windows(VS9) , j'ai inclus un petit build script pour unix ou cas ou.

Source


 Conclusion

next Analyse syntaxique (parser)...
A vOs LeS StUdIoS.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Lex
    • build
    • cLex.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 311 octets
    • cLex.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 321 octets
    • cLex.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier75 087 octets
    • cLex.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier878 octets
    • cLex.suoTélécharger ce fichier [Réservé aux membres club]8 192 octets
    • cLex.vcprojTélécharger ce fichier [Réservé aux membres club]3 737 octets
    • FreeBSD-cLex.gmonTélécharger ce fichier [Réservé aux membres club]38 766 octets
    • unix-build.shTélécharger ce fichier [Réservé aux membres club]51 octets

Télécharger le zip


 Historique

07 avril 2009 00:09:56 :
update du zip

 Sources du même auteur

Source avec Zip Source avec une capture COMPRESSION FICHIERS ALGORITHME HUFFMAN C
ITOA FAIT MASION: COVERSION ENTIER 32 BIT NON SIGNE VERS CHA...
Source avec Zip COMBSORT ALGORITHME DE TRI SIMPLE RAPIDE NON-RECURSIF
Source avec Zip Source avec une capture SHAMAN LIBRAIRIE DE HASH SUPPORTANT SHA1 SHA256 SHA384 SHA51...
Source avec Zip CONNEXION A UNE BD SQLITE

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip SCANNER LANGAGE par lajouad
Source avec Zip Source avec une capture JEU PUISSANCE 4 EN C AVEC GTK par msaidara
Source avec Zip GENERIC INPUTBOX FOR WINDOWS (WIN32 AND C) par FrancoisGauthier
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi

Commentaires et avis

Commentaire de uaip le 06/04/2009 22:56:58

Salut,
Je n'ai pas trop regardé le code, mais l'idée me plait, ça m'intéresse.
Juste 2, 3 remarques. Le choix du switch est judicieux dans certains cas, mais parfois des if/else auraient été préférables, non ? (en jouant sur les ascii des caractères alphanumériques, par exemple).
Et, par curiosité, quel est l'avantage d'un for(;;) sur un while(1) ? Il me semblait plus rigoureux d'utiliser while.

Je prendrai le temps de regarder plus en détail ton boulot... quand j'aurai le temps.
Bonne continuation.

Commentaire de Zeroc00l le 26/10/2009 04:00:13

Hello!
Je suis en train de chercher un parseur de C pour un projet (sous linux) et je viens de tomber ici.
Pour le choix if/else / switch, il faut savoir que parfois le switch est plus optimisé.
Comme le switch n'accepte que des valeurs de type entier et non pas des conditions (qui peuvent être très longue et independante entre les if / else if), le compilo peut faire des optimisations sur la séquence de test qui sera exécutée. Et en général c'est mieux que ce que l'on écrit.

Pour le while(1) vs for(;;), Au tout début j'écrivais while (1) et puis quand j'ai vu que dans des sources importantes (genre source de kernel, de bibliothèque super connu ..etc ..) que les auteurs utilisaient for(;;) je me suis mis à utiliser le for. Les vieux ont souvent raison :). Mais bon autrement je pense qu'utiliser f(;;) est mieux car le while(1) fait apparaitre une constante.. et c'est moche ...
Utiliser for(; ; ) nous "garanti" (a priori) que la boucle sera un simple jump, et qu'il n'y aura pas de test sur la valeur 1 (je pense au options -g par exemple qui peuvent "bêtement" compiler).
De plus lorsque l'on écrit "for(;;) " on s'appuie a 100% sur le langage C, ce qui me parait plus blindé que de faire trainer des valeur inutile. Voila... c'est juste mon point de vue et c'est juste une habitude à prendre.

Commentaire de uaip le 26/10/2009 11:23:11

Salut,
Oui oui, ces questions là datent d'avril dernier :p
A l'époque je disais que l'idée m'intéressait. Depuis, j'ai écrit un langage avec flex/bison + l'IDE qui allait avec. (oui... c'est sans doute ma petite fierté qui me fait écrire ça).
Pour ton parseur de C, je ne sais pas si tu as trouvé, mais je crois en avoir vu un ou deux sur ce site, il y a quelques temps. Bonne chance.

Commentaire de Zeroc00l le 11/02/2010 16:41:00

Finalement mon projet utilise llvm::clang, qui est plus officiel et plus pérenne comme bibliothèque qu'un code trouvé ici.

J'ai également un projet qui utilise sparse : http://sparse.wiki.kernel.org/index.php/Main_Page
sparse est un projet initié par Linus Torvald, celui ci trouvait que gcc était horrible à utiliser pour parser parce qu'il est compliqué (tout à fait d'accord avec lui). Sparse est donc une petite bibliotheque qui ne fait QUE parser du C. Elle compile en 3 minutes tandis que llvm met une bonne demi heure parce que le parser clang est intégré à llvm. Et llvm c'est un projet bien plus gros (machine virtuelle, compilateur JIT etc ...)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

compilation analyse lexicale [ par maroonwar ] svp g besoin  d 1 mini programme en langage C ( compilation analyse lexicale) dont les unités lexicales sont :-identificateurs (lettre)-con G++ et analyse lexicale [ par koikidev ] Nous avons besoin pour un projet de réaliser une partie d'analyse lexicale (à l'aide de l'outil lex sous Linux) et nous aimerions réaliser l'applicati Analyse lexicale / syntaxique [ par Cartman13 ] Bonjour a tous.Je bosse actuellement sur un analyseur sémantique en C++.Concrètement le fichier est le avec ifstream (flux d'entrée) et stocké dans un Problème de Debug et d'Execution(Compilation) [ par Maiku ] SalutJe veux faire une Bibliothèque de Classe C++ sous Visual Studio.Net.J'ai donc Fait New Project / Class LibraryJe Commence mon projet mais quand j Analyse de deux fichiers .wav [ par Mickylord ] Bonjour à tous !Imaginons ceci :Deux fichiers .wav(wav1.wav et wav2.wav, pour faire simple).Comment feriez vous pour comparer ses deux fichiers ? Comm probleme compilation [ par ragkiki1985 ] bonjour, impossible de compiler un source le lien du dossier est :  http://www.codes-sources.com/code.aspx?ID=32374 si  quelqu un arrive a le compiler Compilation VC++ [ par harlock999 ] Bonjour,J'ai effectué un ptit web browser simplifié avec des components activx. Mon problème est que j'aimerai avoir une application autonome sans dll Problèmes de headers avec DLL malgré compilation ok [ par Galmiza ] Salut, J'ai un gros projet qui utlise des dll persos (dll pleines de classes). ET j'ai un problème avec ma dernière dll. Elle se compile nickel. Je m probleme de compilation [ par freeskieuse ] Bonjour,j'ai un probleme de compilation:projet.exe(.text+0x0):crtstuff.c: multiple definition of `mainCRTStartup'C:/Program Files/MinGW/bin/../lib/gcc Erreur a la compilation [ par jonezy ] Bonjour Je debute en programmation, j'ai telecharger une source a cette addresse:http://www.cppfrance.com/codes/SCANREP-SCAN-REPE


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales