Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var fileStrategy = new FileStrategy();
            var rootDirectory = new Directory(Directory.Root, args.First(), fileStrategy);

            foreach (var file in rootDirectory.AllFiles())
            {
                var stream = new CharacterStream(file.Source());

                var include = new Include();
                var includes = include.Get(stream);
                System.Console.WriteLine(string.Join(",",includes));

                var define = new Define();
                System.Console.WriteLine(define.Get(stream.Reset()));

                var typeAlias = new TypeAlias();
                System.Console.WriteLine(typeAlias.Get(stream.Reset()));

                var comment = new Comment();
                System.Console.WriteLine(comment.Get(stream.Reset()));

                var given = new Given();
                System.Console.WriteLine(given.Get(stream.Reset()));

                var when = new When();
                System.Console.WriteLine(when.Get(stream.Reset()));
            }
        }
Ejemplo n.º 2
0
        public List<string> Get(CharacterStream stream)
        {
            var current = Tokens.First();
            var emitter = new List<string>();
            var buffer = new StringBuilder();

            while (stream.CanContinue())
            {
                var cursor = stream.Continue();

                if (current.Matches(cursor))
                {
                    buffer.Append(cursor.Value);
                }
                else
                {
                    current = ResetTokens();
                    buffer = new StringBuilder();
                }

                if (current.IsWildCard && GetNextToken(current).Matches(cursor))
                    current = GetNextToken(current);

                if (current == Tokens.Last())
                {
                    current = ResetTokens();
                    emitter.Add(buffer.ToString());
                    buffer = new StringBuilder();
                }

                if (current.IsExpired)
                    current = GetNextToken(current);
            }

            return emitter;
        }