Forum Programmation.java [Javacc] reconnaissance du token "le plus grand"

Posté par  .
Étiquettes : aucune
0
17
nov.
2008
Bonjour

J'ai un petit compilateur à écrire en javacc et je rencontre un problème: javacc semble reconnaitre le token le plus grand en priorité :/
Le code et l'erreur parle d'eux même je pense.


options {
STATIC = false ;
}
PARSER_BEGIN(Adder)
class Adder {
public static void main( String[] args )
throws ParseException, TokenMgrError {
Adder parser = new Adder( System.in ) ;
parser.Start() ; }
}
PARSER_END(Adder)

SKIP :
{
"\r"
}

TOKEN :
{
< NUMBER: (["0"-"9"])+ >
| < WORD : (~[" ","\n"])+ >
| < WORDS: (|" ")+ >
| < EOL: ("\n") >
}

void Start() :
{
int n;
Token t;
}
{
(t =
{
n = Integer.parseInt(t.image);
System.out.println(n);
}
" "
" "

)+

}


echo "123 mot1 mot2 mot3" | java Adder
Exception in thread "main" ParseException: Encountered " "123 mot1 mot2 mot3 "" at line 1, column 1.
Was expecting:
...

at Adder.generateParseException(Adder.java:190)
at Adder.jj_consume_token(Adder.java:128)
at Adder.Start(Adder.java:13)
at Adder.main(Adder.java:6)



Merci d'avance :)
  • # Correction

    Posté par  . Évalué à 2.

    Désolé je n'avait pas fait attention que les tokens disparaissent :/

    le code:
    options {
    STATIC = false ;
    }
    PARSER_BEGIN(Adder)
    class Adder {
    public static void main( String[] args )
    throws ParseException, TokenMgrError {
    Adder parser = new Adder( System.in ) ;
    parser.Start() ; }
    }
    PARSER_END(Adder)

    SKIP :
    {
    "\r"
    }

    TOKEN :
    {
    < NUMBER: (["0"-"9"])+ >
    | < WORD : (~[" ","\n"])+ >
    | < WORDS: (<WORD>|" ")+ >
    | < EOL: ("\n") >
    }

    void Start() :
    {
    int n;
    Token t;
    }
    {
    (t = <NUMBER>
    {
    n = Integer.parseInt(t.image);
    System.out.println(n);
    }
    " "<WORD>
    " "<WORDS>
    <EOL>
    )+
    <EOF>
    }



    le résultat:
    echo "123 mot1 mot2 mot3" | java Adder
    Exception in thread "main" ParseException: Encountered " <WORDS> "123 mot1 mot2 mot3 "" at line 1, column 1.
    Was expecting:
    <NUMBER> ...

    at Adder.generateParseException(Adder.java:190)
    at Adder.jj_consume_token(Adder.java:128)
    at Adder.Start(Adder.java:13)
    at Adder.main(Adder.java:6)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.