2017-10-02 6 views
0

Existe-t-il un moyen d'utiliser la classe Scanner pour lire une grammaire?Comment utiliser le scanner pour lire une grammaire récursive

Disons que nous avons ce fichier.

Y a-t-il un moyen logique qui me permette de créer un objet de classe et aussi de remplir ses attributs et opérations. J'ai essayé d'utiliser useDelimiter (";"), mais retourne la classe complète sans la séparer, devrais-je la réinitialiser? Quelle est la manière pratique de traiter cela?

CLASS Team 
ATTRIBUTES 
     name: String 
OPERATIONS 
     nb_players() : Integer, 
     trainer() : String 
; 

CLASS AUDIENCE 
ATTRIBUTES 
     name : String 
OPERATIONS 
; 

J'ai déjà créé les objets, par exemple ma classe de classe possède ces attributs

public final String Identifier; 
public final Class_Content class_content; 

class_content contient les attributs et les opérations (de manière récursive de faire les choses)

Répondre

1

Est il existe un moyen d'utiliser la classe Scanner pour lire une grammaire?

Vous ne voulez certainement pas lire une grammaire. Il est fort probable que vous souhaitiez lire un fichier conforme à une grammaire.

Vous ne pouvez pas lire du texte conforme à une grammaire intrinsèquement récursive avec un appel simple ou des appels au java.util.Scanner. Vous devez construire un analyseur.

L'exemple que vous avez donné n'a pas l'air d'avoir besoin d'une grammaire récursive pour le décrire. Cependant, je pense que l'écriture ou la génération d'un analyseur est probablement la meilleure solution.

Si vous voulez écrire un, il y a des tutoriels/exemples sur le web:

Si vous voulez générer un, vous pouvez apprendre et utiliser un outil générateur d'analyseur tel que JavaCC ou AntLR.


1 - Mais dans le cas où vous ne voulez vraiment lire une grammaire (G), le problème est fondamentalement la même. La grammaire doit être exprimée dans une certaine langue, et cette langue a une grammaire (GG). Vous devez lire/analyser votre grammaire G en utilisant un analyseur pour la grammaire GG. Par exemple, la notation EBNF a une grammaire simple, donc pour lire une grammaire exprimée en EBNF vous avez besoin d'un analyseur pour EBNF.

+0

Puisque vous pensez que cela pourrait être fait sans recusion, avez-vous un certain site où il est expliqué? quand j'ai dit que c'est récursif, c'est comme si tout donnait autre chose. – hehexd

+0

Lisez les liens que j'ai fournis. Un analyseur pour une grammaire non récursive est simplement une forme simplifiée d'un analyseur RD sans les appels récursifs. –