Exemplo n.º 1
0
        private Token Symbol()
        {
            int           startPosition = GetCurrentPositionInInput();
            StringBuilder sbuf          = new StringBuilder(); // StringBuffer en Java lo hemos modernizado a StringBuilder

            while (PropositionSymbol.IsPropositionSymbolIdentifierPart(LookAhead(1)))
            {
                sbuf.Append(LookAhead(1));
                Consume();
            }
            string symbol = sbuf.ToString();

            if (PropositionSymbol.IsAlwaysTrueSymbol(symbol))
            {
                return(new Token(LogicTokenTypes.TRUE, PropositionSymbol.TRUE_SYMBOL, startPosition));
            }
            else if (PropositionSymbol.IsAlwaysFalseSymbol(symbol))
            {
                return(new Token(LogicTokenTypes.FALSE, PropositionSymbol.FALSE_SYMBOL, startPosition));
            }
            else if (PropositionSymbol.IsPropositionSymbol(symbol))
            {
                return(new Token(LogicTokenTypes.SYMBOL, sbuf.ToString(), startPosition));
            }

            throw new LexerException("Lexing error on symbol " + symbol + " at position " + GetCurrentPositionInInput(), GetCurrentPositionInInput());
        }
Exemplo n.º 2
0
        public void Test_isPropositionSymbolDoesNotContainConnectiveChars()
        {
            // '~', '&', '|', '=', '<', '>'
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("~"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("&"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("|"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("="));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("<"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol(">"));

            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A~"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A&"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A|"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A="));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A<"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A>"));
        }
Exemplo n.º 3
0
        public void Test_isPropositionSymbol()
        {
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("True"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("False"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("A"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("A1"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("A_1"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("a"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("a1"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("A_1"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("_"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("_1"));
            Assert.IsTrue(PropositionSymbol.IsPropositionSymbol("_1_2"));

            // Las comas no se permiten (sólo caracteres que puedan estar en identificadores legales de Java... ahora C#)
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A1,2"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol(" A"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A "));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("A B"));
            // En Java sí se permiten identificadores con el símbolo del dólar... pero en C# no
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("$"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("$1"));
            Assert.IsFalse(PropositionSymbol.IsPropositionSymbol("$1_1"));
        }