コード例 #1
0
ファイル: Parser.cs プロジェクト: cyrsis/C-SandBox
        private void ParseClassVarDecl()
        {
            Contract.Requires(IsNextTokenClassVarDecl());

            Token varKind  = NextToken();
            bool  isStatic = varKind.Value == "static";
            Token varType  = NextToken();
            Token varName  = NextToken();

            do
            {
                if (isStatic)
                {
                    Symbol variable = new Symbol(
                        varType.Value, varName.Value, SymbolKind.Static, _currentClassName);
                    _classSymTable.AddSymbol(variable);
                    _codeGenerator.StaticDeclaration(variable);
                }
                else
                {
                    Symbol variable = new Symbol(
                        varType.Value, varName.Value, SymbolKind.Field, _currentClassName);
                    _classSymTable.AddSymbol(variable);
                    _codeGenerator.FieldDeclaration(variable);
                }
            } while (LookAheadToken.Value == ",");

            Match(new Token(TokenType.Symbol, ";"));
        }