PurePicBasic - Asm

Forum de développement du compilateur asm / basic pour les puces microchip
 
AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

Partagez
 

 Grammaire

Aller en bas 
AuteurMessage
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Grammaire  Empty
MessageSujet: Grammaire    Grammaire  EmptyVen 25 Jan - 20:46


Règle Générales


<Nl> ::= NewLine <Nl> | Newline
<Nl_Opt> ::= NewLine <Nl_Opt> | <Vide>

<Start> ::= <Nl_Opt> <Statements>

<Statements> ::= <Statement> <Statements> | <Vide>

<Statement> ::= | Identifer <Assign_Expression> <nl>
| <Variable_Declaration> <nl>
| <Fonction_Declaration> <nl>
| <If_Expression> <nl>
| <While_Expression> <nl>
| <Fonction_Expression> <nl>
| Identifer <Appel_Fonction> <nl>
| 'EnableExplicit' <nl>
| 'DisableExplicit' <nl>


Déclarations



<Variable_Declaration> ::= 'Define' '.' Type Identifier { ',' Identifier }
| 'Define' '.' Type Identifier
| Identifier '.' Type '=' <Expression>

<Fonction_Declaration> ::= 'DECLARE' '.' Type Identifier '(' [ <Function_List_Declaration> ] ')'

<Function_List_Declaration> ::= Identifer '.' Type { ',' Identifier '.' Type}


Procédures



<Fonction_Expression> ::= 'PROCEDURE' Identifier '(' <Arguments_List> ')' <nl> <Statements> 'ENDPROCEDURE'

<Appel_Fonction> ::= '(' <Expression_List> ')'

<Arguments_List> ::= Identifer { ',' Identifier }


Contrôle



<If_Expression> ::= 'IF' <Expression> <nl> <Statements> 'ENDIF'
| 'IF' <Expression> <nl> <Statements> 'ELSE' <nl> <Statements> 'ENDIF'

<While_Expression> ::= 'WHILE' <Expression> <nl> <Statements> 'WEND'



Assignation



<Assign_Expression> ::= '=' <Expression>


Expressions



<Expression_List> ::= <Expression> { ',' <Expression> }

<Expression> ::= <Expression> '>' <Add_Expression>
| <Expression> '<' <Add_Expression>
| <Expression> '<=' <Add_Expression>
| <Expression> '>=' <Add_Expression>
| <Expression> '=' <Add_Expression>
| <Expression> '<>' <Add_Expression>
| <Add_Expression>

<Add_Expression> ::= <Add_Expression> '+' <Mult_Expression>
| <Add_Expression> '-' <Mult_Expression>
| <Mult_Expression>

<Mult_Expression> ::= <Mult_Expression> '*' <Negate_Expression>
| <Mult_Expression> '/' <Negate_Expression>
| <Negate_Expression>

<Negate_Expression> ::= '-' <Value> | <Value>

<Value> ::= Identifier | Number | '(' <Expression> ')' | Identifier <Appel_Fonction>



Dernière édition par wood51 le Dim 27 Jan - 20:54, édité 5 fois
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 26 Jan - 16:12

tout ces tokens on des "valeurs"
par exemple :

code:
Code:
#DEFINE CONST 256

suite de token:
Code:
#TOKEN_PREPROCESSOR
#TOKEN_UNKNOWN
#TOKEN_NUMERIC
#TOKEN_END_OF_INSTRUCTION

Chaque constante on des valeurs , admetons pour la suite de constante vu au dessus :
Code:
1,6,7,10

un code valide est donc de cette valeur : 16710
mais si j'avais fait ce code :
Code:
#DEFINE 256 CONST

la suite de token serait comme cela :
Code:
#TOKEN_PREPROCESSOR
#TOKEN_NUMERIC
#TOKEN_UNKNOWN
#TOKEN_END_OF_INSTRUCTION

les valeurs serait donc : 17610 au lieu de 16710 , donc erreur de syntaxe. Very Happy




Revenir en haut Aller en bas
http://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 26 Jan - 16:37

Ah ! bien vu comme d'hab Razz !!! Je n'avais pas pensé à çà!
Par contre tu fais comment pour différencier les différentes erreurs de syntaxe ? Remarque avec l'asm , il n'y a pas 36000 possibilitées .
Pour ma par j'ai préféré une approche plus académique Laughing Le plus dur c'est de modifier la grammaire pour éviter les boucle infinies .
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 26 Jan - 16:40

en fait , tu créer des règles.

par exemple voici l'instruction suivante sous forme de valeur :

569810

une serie de règle prédefinie :

56947810
549210
569810
54865810

avec un test de comparaison itératif , l'affaire est dans le sac. Wink
Revenir en haut Aller en bas
http://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptyVen 8 Fév - 23:56

Salut !
Dis t'aurais pas une idée pour évaluer les nombres binaire au niveau lexical .
Je m'explique ,ce qui me pose pb c'est :
%10011101 l'analyseur sépare % et 10011101 . % peut être ou le début d'un nombre binaire ou un modulo . Pour garder cette forme je vois pas trop ???

Je peut a la limite transforme en B´10011101' comme mplab ou faire une commande native reste = Modulo(dividende,diviseur) .

À ton avis ?
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 9 Fév - 13:09

tu peut gardé % pour le modulo.
pour le binaire comme pour le reste , colle au compilo asm ? 0b1010101 0xAAFFAA ? c'est plus simple , non ?
Revenir en haut Aller en bas
http://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 9 Fév - 14:49

en fait j'était persuadé que tu préférais collé le plus possible à la syntaxe de purebasic . 0b et 0x implémenté Very Happy
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 9 Fév - 14:53

la notation PB des nombre binaire & hexa n'est pas terrible en pb Wink
Revenir en haut Aller en bas
http://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  EmptySam 9 Fév - 15:02

Je suis complètement d'accord.
J'ai plus ou moins remis en forme les sources de venom et ajouter au svn , du coup j'ai un projet orphelin dans le répertoire ide , si tu pouvais le supprimer ?
Si tu veut tester le compilateur basic ( tout du moins la partie syntax et sémantique en cours ) tu peut , ça m'aideras as débusquer les bug résiduel que je n'ai pas trouver . Directement avec l'ide , c'est fonctionnel .
Revenir en haut Aller en bas
Contenu sponsorisé




Grammaire  Empty
MessageSujet: Re: Grammaire    Grammaire  Empty

Revenir en haut Aller en bas
 
Grammaire
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
PurePicBasic - Asm :: PurePicBasic-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser