Est-il possible d'ajouter 2 opérandes ou plus dans un projet YACC en utilisant le langage C pour créer un analyseur syntaxique pour un sous-ensemble LISP, c'est la grammaireOpérations avec YACC en C pour un sous-ensemble LISP
« mod »et « laisser » ne sont pas sensibles à la casse, ni les symboles
P:
'('LET '('DEF_VARS')' BODY')'
|BODY
;
DEF_VARS:
DEF_VARS DEF
|DEF
;
DEF:
'('SYMBOL OPN')'
;
CUERPO:
BODY EXPR
|EXPR
;
EXPR:
'('OPER OPNS')'
;
OPER:
'+'
|'-'
|'*'
|MOD // %
|'/'
;
OPNS:
OPNS OPN
|OPN
;
OPN:
EXPR
|INT // [-+]?[0-9]+
|SYMBOL //[a-zA-Z][a-zA-Z0-9_]* //a variable
;
Je loooking de savoir comment utiliser une table de symboles et d'ajouter, soustraire, multiplier, diviser et mod, une liste d'éléments, et déclarer des variables Je n'ai aucune idée de comment utiliser une table de symboles dans le code.
par exemple, ces phrases sont valables pour la langue:
(+ 30 -7 +3)
résultat
est 26
(* (+ 3 4) (- -5 2))
résultat est -49
(lEt ((x(+ 1 2))(y x))(/ (mod x y) 3))
résultat est
Toute aide est la bienvenue viens. Merci d'avance.