コード例 #1
0
        static string inputText   = "";     // change as desired
        static void Main(string[] args)
        {
            if (!useCustomText)
            {
                inputText = readFileContents(inputText);
            }


            Parse(inputText);
            Console.WriteLine("********************************************");

            List <Chunk> chunks = ChunkHandler.getChunks();


            try
            {
                Console.WriteLine(chunk.GetChunk("Name").GetStr("Last"));
                Console.WriteLine(chunk.GetNum("Age"));
                Console.WriteLine(chunk.GetChunk("Address").GetStr("PostalCode"));
                Console.WriteLine(chunk.GetChunk("Address").GetNum("Number"));
                Console.WriteLine(chunk.GetArray("LuckyNumbers").GetStr(0));

                /*
                 * Console.WriteLine(chunk.GetStr("Name"));
                 * Console.WriteLine(chunk.GetArray("Games").getStr(1));
                 * Console.WriteLine(chunk.GetNum("Established"));
                 * Console.WriteLine(chunk.GetChunk("Scores").GetChunk("Players").GetNum("Alice"));
                 * // Console.WriteLine(chunk.FindNum("Alice"));
                 */
            } catch (Exception e)
            {
                Console.WriteLine(e);
            }
            Console.ReadLine();
        }
コード例 #2
0
        private static void Parse(string allText)
        {
            List <char> literals = new List <char>()
            {
                '{', '}', '=', ',', '(', ')', '"'
            };

            ChunkHandler.initializeChunkHandler();
            Tokenizer.initializeTokenizer(allText, literals);
            Prog program = new Prog();

            program.parse();
            chunk = ChunkHandler.getRoot();
        }
コード例 #3
0
 public override void parse()
 {
     ChunkHandler.closeChunk();
 }
コード例 #4
0
        internal override void handleStatement()
        {
            // Case: New "Chunk"
            if (value.Equals("{"))
            {
                ChunkHandler.createChunk(definition);
            }

            // Case: String
            if (value.Equals("\""))
            {
                try
                {
                    Chunk currentChunk = ChunkHandler.getCurrentChunk();
                    currentChunk.addToStringMap(definition, Tokenizer.getNext());
                }
                catch
                {
                    Console.WriteLine("Error: Chunk not found :(");
                }
            }

            // Case: List (paren)
            if (value.Equals("("))
            {
                int           x            = ChunkHandler.chunkDepth;
                Chunk         currentChunk = ChunkHandler.getCurrentChunk();
                List <object> newList      = new List <object>();
                while (!Tokenizer.checkToken(")"))
                {
                    if (!Tokenizer.checkToken(",") && !Tokenizer.checkToken("\""))
                    {
                        string newString = Tokenizer.getNext();
                        try
                        {
                            int newVal = Convert.ToInt32(newString);
                            newList.Add(newVal);
                        } catch
                        {
                            newList.Add(newString);
                        }
                    }
                    else
                    {
                        Tokenizer.incrementTokenIndex();
                    }
                }
                currentChunk.addNewListToMap(definition, newList);
            }

            // Case: Int
            else
            {
                try
                {
                    Chunk currentChunk = ChunkHandler.getCurrentChunk();
                    int   newVal       = Convert.ToInt32(value);
                    currentChunk.addToIntMap(definition, newVal);
                }
                catch
                {
                    // Console.WriteLine("Error: Not an int");
                }
            }
        }