示例#1
0
文件: PLLexer.cs 项目: gonzsa04/IA
        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());
        }
示例#2
0
 public void Test_isAlwaysTrueSymbol()
 {
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("True"));
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("tRue"));
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("trUe"));
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("truE"));
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("TRUE"));
     Assert.IsTrue(PropositionSymbol.IsAlwaysTrueSymbol("true"));
     //
     Assert.IsFalse(PropositionSymbol.IsAlwaysTrueSymbol("Tru3"));
     Assert.IsFalse(PropositionSymbol.IsAlwaysTrueSymbol("True "));
     Assert.IsFalse(PropositionSymbol.IsAlwaysTrueSymbol(" True"));
 }