예제 #1
0
        private Instruction ParseInstruction()
        {
            string parameter   = null;
            var    instruction = new Instruction
            {
                Name = _scanner.GetPreviousToken()
            };

            while ((parameter = _scanner.GetToken()) != ")")
            {
                instruction.AddParameter(parameter);
            }

            if (_scanner.CurrentTokenIs(";"))
            {
                _scanner.GetToken();
            }

            return(instruction);
        }
예제 #2
0
        /// <summary>
        /// Reads the define file.
        /// </summary>
        private void Read()
        {
            _scanner.Read();

            string token = null;

            while ((token = _scanner.GetToken()) != null)
            {
                if (token == "#" && _scanner.GetToken() == "define")
                {
                    string defineName = _scanner.GetToken();

                    if (_scanner.CurrentTokenIs("#"))
                    {
                        continue;
                    }

                    var defineValueToken = _scanner.GetToken();

                    if (defineValueToken is null)
                    {
                        continue;
                    }

                    object defineValue = ParseDefineValue(defineValueToken);

                    if (_defines.ContainsKey(defineName))
                    {
                        _defines[defineName] = defineValue;
                    }
                    else
                    {
                        _defines.Add(defineName, defineValue);
                    }
                }
            }
        }