コード例 #1
0
        protected void Global()
        {
            GlobalKeyWords word = LookupKeyWords();

            switch (word)
            {
            case GlobalKeyWords.None:
                // jedna se o globalni promennou
                string type = GetIdent();
                SkipWhite();
                string name = GetIdent();
                SkipWhite();
                break;

            case GlobalKeyWords.Function:
                Function(PowerObject.Access.Global);
                break;

            case GlobalKeyWords.Subroutine:
                Subroutine(PowerObject.Access.Global);
                break;

            default:
                throw new CompilerException("neocekavane slovo: " + word.ToString());
            }
        }
コード例 #2
0
        protected void ParameterList()
        {
            string type;
            string name;

            Argument.PassingType pass;

            do
            {
                SkipWhite();
                GlobalKeyWords word = LookupKeyWords();
                switch (word)
                {
                case GlobalKeyWords.None:
                    pass = Argument.PassingType.Value;
                    break;

                case GlobalKeyWords.Readonly:
                    pass = Argument.PassingType.Readonly;
                    SkipWhite();
                    break;

                case GlobalKeyWords.Ref:
                    pass = Argument.PassingType.Ref;
                    SkipWhite();
                    break;

                default:
                    throw new CompilerException("Nepovolene klicove slovo: " + word.ToString());
                }
                SkipWhite();
                type = GetIdent();
                SkipWhite();
                name = GetIdent();
                if (MatchMayBe('['))
                {
                    // jedna se o pole
                    string range;
                    if (!Peek(']'))
                    {
                        range = GetNumber();
                    }
                    Match(']');
                    name = name;
                }
                SkipWhite();
                powerScriptHolder.CreateArgument(name, type, pass);
            } while(MatchMayBe(','));
        }