J'écris actuellement une Parser
qui s'étend JavaTokenParsers
dans Scala
qui devrait entre autres parse suivantes Grammar
:Scala passe Liste des expressions et une autre expression comme une liste à Constructor
list = "[" [ { expr "," } expr ] "]"
Mon Parser Classe:
class ExpParser extends JavaTokenParsers {
def expr: Parser[Expression] = int | list | bool | id
[...]
private def list: Parser[Liste] = "[" ~> repsep(expr, ",") ~ expr <~ "]" ^^ {
case el ~ e => Liste(List(el, e))
} // error
[..]
}
object ParseProgram extends ExpParser {
def parse(s: String): ParseResult[Expression] = {
parseAll(expr, s)
}
}
Mon cas classe:
sealed trait Expression
[...]
case class Liste(l: List[Expression]) extends Expression
[...]
J'ai essayé de créer un nouveau List
et le transmettre à la Liste Constructor
mais je reçois le message suivant d'erreur:
Type mismatch, attendu: Liste [expression], réelle: Liste [Objet]
Alors, comment puis-je passer le list
de Expressions
que je reçois de repsep(expr, ",")
et expression
que je reçois de ~ expr
comme l'un list
à la Liste Constructor
?
Merci beaucoup, c'est absolument ce que je veux. Je pense que je pensais juste trop compliqué – TheDoctor