2016-03-26 2 views
0

Je fais un Analixer syntaxique avec jflex + javacup. Au gramatic de .cup Je cette partie:Comment créer un symbole lambda sur jflex?

SUBPPARAMLIST ::= lambda | "(" EXPLIST ")" 

Où lambda ne veulent rien dire (SUBPPARAMLIST peut être vide)

Eh bien, je réussi à créer tous mes jetons correctement dans mon .flex, mais je ne sais pas comment créer le symbole lambda. J'espère que vous les gars peuvent me aider, laissez-moi savoir si vous ne comprenez pas mon problème


WhatDoIWriteHere{return symbol(sym.lambda);}

Répondre

0

La production vide (ce que vous appelez « lambda ») n'a pas besoin d'un symbole, parce qu'il est vide. Vous exprimez cela par une règle de production:

SUBPPARAMLIST ::= lambda | "(" EXPLIST ")" ; 
lambda ::= ; 

Quote: Chaque production dans la grammaire a un côté gauche suivi non terminal par le symbole « :: = », qui est ensuite suivie d'une série de zéro ou plusieurs symboles d'actions, terminaux ou non terminaux, suivis d'une affectation de priorité contextuelle optionnelle, et terminés par un point-virgule (;). Notez le « ... zéro ou plus ... »

Peut-être l'analyseur de grammaire est également capable de gérer tout cela:

SUBPPARAMLIST ::= "(" EXPLIST ")" | ;