Dans le cadre de mon projet, je suis supposé convertir EBNF en BNF et utiliser DCG pour programmer BNF dans SWI-Prolog.convertir EBNF à BNF et l'utiliser comme format DCG sur Prolog
EBNF est la suivante:
program -> int main () { declarations statements }
declarations -> { declaration }
declaration -> type identifier [ [digit] ] ;
type -> int | bool | float | char
statements -> { statement }
statement -> ; | block | assignment | if_statement | while_statement
block -> { statements }
assignment -> identifier [ [digit] ] = expression ;
if_statement -> if (expression) statement
while_statement -> while (expression) statement
expression -> conjunction { || conjunction }
conjunction -> equality { && equality }
equality -> relation [ equ_op relation ]
equ_op -> == | !=
relation -> addition [ rel_op addition ]
rel_op -> < | <= | > | >=
addition -> term { add_op term }
add_op -> + | -
term -> factor { mul_op factor }
mul_op -> * |/| %
factor -> [ unary_op ] primary
unary_op -> - | !
primary -> identifier [ [digit] ] | literal | (expression) | type (
expression)
literal --> digit | boolean
identifier -> A | ... | Z
boolean --> true | false
digit --> 0 | ... | 9
Mon programme devrait prendre le fichier source en entrée et imprimer un message qui dit que le programme est syntaxiquement correct ou non. Comme je n'ai aucune expérience en prologue et que je regarde beaucoup de vidéos sur Youtube et que je lis des didacticiels et des weblogs qui ne me sont d'aucune utilité (du moins par manque d'expérience), j'ai besoin d'aide. Y a-t-il quelqu'un s'il vous plait?