예제 #1
0
        public void IsEmpty_WhenTerminalsHasValues_ReturnsExpected(string[] terminals, bool expected)
        {
            // Arrange:
            var ts = new TerminalSet();

            foreach (var terminal in terminals)
            {
                ts.Add(terminal);
            }

            // Act:
            var actual = ts.IsEmpty();

            // Assert:
            Assert.AreEqual(expected, actual);
        }
예제 #2
0
파일: PL.cs 프로젝트: adesproject/ADES
        private bool GetSymbol(TerminalSet followers, bool done, bool genXCPN)
        {
            string s;

              if (symbol.IsProcessed) NextSymbol();
              symbol.SetProcessed(done);
              if (parseAnyText || followers.IsEmpty()) return true;

              if (syntaxErrorStat) return false;
              if (symbol.Terminal == ANYSYM || followers.Contains(symbol.Terminal))
            return true;
              else
              {
            if (terminalAsId && symbol.Terminal != Identifier)
            {
              int t = symbol.Terminal;
              symbol.Terminal = Identifier;
              if (symbol.HasIdFormat && followers.Contains(symbol.Terminal))
              {
            return true;
              }
              symbol.Terminal = t; // restore error value
            }

            switch (symbol.Terminal)
            {
              case EndOfLine:
            if (seeEndOfLine) s = "<EndOfLine>"; else goto default;
            s = "<EndOfLine>";
            break;
              case EndOfInput:
            s = "<EndOfInput>";
            break;
              default:
            s = String.Format("\"{0}\"", symbol.ToString());
            break;
            }
              }
              s = String.Format("*** Unexpected symbol: {0}{1}*** Expected one of: {2}", s,
                         Environment.NewLine, terminalTable.TerminalImageSet(followers));
              if (genXCPN)
            SyntaxError = s;
              else
            errorMessage = s;

              return true;
        }
예제 #3
0
            protected override bool GetSymbol(TerminalSet followers, bool done, bool genXCPN)
            {
                string s;

                if (symbol.IsProcessed)
                {
                    NextSymbol();
                }

                symbol.SetProcessed(done);
                if (parseAnyText || followers.IsEmpty())
                {
                    return(true);
                }

                if (syntaxErrorStat)
                {
                    return(false);
                }

                if (symbol.TerminalId == ANYSYM || followers.Contains(symbol.TerminalId))
                {
                    return(true);
                }

                switch (symbol.TerminalId)
                {
                case EndOfLine:
                    if (seeEndOfLine)
                    {
                        s = "<EndOfLine>";
                    }
                    else
                    {
                        goto default;
                    }
                    s = "<EndOfLine>";
                    break;

                case EndOfInput:
                    s = "<EndOfInput>";
                    break;

                default:
                    s = String.Format("\"{0}\"", symbol.ToString());
                    break;
                }

                s = String.Format("*** Unexpected symbol: {0}{1}*** Expected one of: {2}", s,
                                  Environment.NewLine, terminalTable.TerminalImageSet(followers));
                if (genXCPN)
                {
                    SyntaxError = s;
                }
                else
                {
                    errorMessage = s;
                }

                return(true);
            }