| Grammaire | |
|
|
Auteur | Message |
---|
wood51
Messages : 72 Date d'inscription : 20/01/2013 Age : 43 Localisation : Orléans
| Sujet: Grammaire Ven 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 | |
|
| |
Cpl.Bator Admin
Messages : 50 Date d'inscription : 20/01/2013
| Sujet: Re: Grammaire Sam 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. | |
|
| |
wood51
Messages : 72 Date d'inscription : 20/01/2013 Age : 43 Localisation : Orléans
| Sujet: Re: Grammaire Sam 26 Jan - 16:37 | |
| Ah ! bien vu comme d'hab !!! 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 Le plus dur c'est de modifier la grammaire pour éviter les boucle infinies . | |
|
| |
Cpl.Bator Admin
Messages : 50 Date d'inscription : 20/01/2013
| Sujet: Re: Grammaire Sam 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. | |
|
| |
wood51
Messages : 72 Date d'inscription : 20/01/2013 Age : 43 Localisation : Orléans
| Sujet: Re: Grammaire Ven 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 ? | |
|
| |
Cpl.Bator Admin
Messages : 50 Date d'inscription : 20/01/2013
| Sujet: Re: Grammaire Sam 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 ? | |
|
| |
wood51
Messages : 72 Date d'inscription : 20/01/2013 Age : 43 Localisation : Orléans
| Sujet: Re: Grammaire Sam 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é | |
|
| |
Cpl.Bator Admin
Messages : 50 Date d'inscription : 20/01/2013
| Sujet: Re: Grammaire Sam 9 Fév - 14:53 | |
| la notation PB des nombre binaire & hexa n'est pas terrible en pb | |
|
| |
wood51
Messages : 72 Date d'inscription : 20/01/2013 Age : 43 Localisation : Orléans
| Sujet: Re: Grammaire Sam 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 . | |
|
| |
Contenu sponsorisé
| Sujet: Re: Grammaire | |
| |
|
| |
| Grammaire | |
|