예제 #1
0
        /// <summary>
        /// Execute la sequence d'instruction
        /// </summary>
        /// <param name="context">la partie droite de la regle de la grammaire</param>
        /// <returns>le resultat de la derniere instruction</returns>
        public override Term VisitSequence([NotNull] TableurParser.SequenceContext context)
        {
            String res = "";

            foreach (TableurParser.InstrContext curr in context.instr())
            {
                res = this.Visit(curr).ToString();
            }
            return(new Texte(res));
        }
예제 #2
0
        /// <summary>
        /// Analyse la saisie utilisateur, après découpage de la saisie fait appelle vers les méthodes de la classe Kernel si la saisie est valide.
        /// </summary>
        /// <param name="saisie">La chaine de caracteres rentree par l'utilisateur</param>
        /// <returns>Le resultat de l'analyse pour effecteur le traitement</returns>
        public String Analyse(string saisie)
        {
            ICharStream stream = CharStreams.fromstring(saisie);

            //Passe la chaine aux classes Antlr4 pour créer l'arbre syntaxique
            TableurLexer tableurLexer = new TableurLexer(stream);

            tableurLexer.RemoveErrorListener(ConsoleErrorListener <int> .Instance);
            tableurLexer.AddErrorListener(new ErrorLexerListener());
            CommonTokenStream commonTokenStream = new CommonTokenStream(tableurLexer);
            TableurParser     tableurParser     = new TableurParser(commonTokenStream);

            tableurParser.RemoveErrorListener(ConsoleErrorListener <IToken> .Instance);
            tableurParser.AddErrorListener(new ErrorParserListener());


            TableurParser.SequenceContext expressionContext = tableurParser.sequence();

            //Visite de l'arbre pour faire l'execution des commandes
            Term resul = this.visitor.Visit(expressionContext);

            return(resul.ToString());
        }
예제 #3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="TableurParser.sequence"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitSequence([NotNull] TableurParser.SequenceContext context)
 {
     return(VisitChildren(context));
 }
예제 #4
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="TableurParser.sequence"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitSequence([NotNull] TableurParser.SequenceContext context)
 {
 }