Je travaille sur l'écriture d'un interpréteur Prolog simple en Java.Comment puis-je trouver l'index du premier "élément" dans ma chaîne en utilisant Java?
Comment puis-je trouver le dernier indice de caractère du premier élément, soit l'élément head ou l'élément tail d'une chaîne dans "List Syntax"?
Liste Syntaxe ressemble:
(X)
(PAB)
(func (func2 a) (fonc3 XY))
(veille égale (mère cain))
La tête pour chacune de ces chaînes dans l'ordre sont:
Head: "X", Index: 1
Head: "p", Index: 1 012 Head: « Fonction », Index: 4
tête: « égal », Indice 5
Fondamentalement, je dois correspondre à la chaîne qui suit immédiatement la première « (» et se termine soit par un espace ou une fermeture ")", peu importe lequel vient en premier. J'ai besoin de l'index de caractère du dernier caractère de l'élément de tête.
Comment puis-je faire correspondre et obtenir cet index en Java?
La solution de Brabster est vraiment proche. Cependant, considérons le cas de:
((b X) Y)
Lorsque l'élément de tête est (b x). J'ai essayé de le réparer en enlevant "(" des délimiteurs de scanner mais il hoquet toujours à cause de l'espace entre "b" et "x".)
De même: ((((b W) X) Y) Z)
Lorsque la tête est (((pc) x) Y).
Il peut également être utile d'examiner les générateurs d'analyse syntaxique comme ANTLR ou JavaCC si vous ne voulez pas vous occuper de l'analyse vous-même. – Brabster
@Brabster, comment traitez-vous la chaîne: "((b X) Y)" où (b x) était le chef de la liste? –
@Brabster, j'ai essayé de supprimer "(" de la liste des délimiteurs mais j'ai encore des problèmes à cause de l'espace entre b et x –