Пример #1
0
        } /* end ParseInfoRequest */

/* ---------------------------------------------------------------------------
 * private method ParseCompilationRequest(sym)
 * ---------------------------------------------------------------------------
 * compilationRequest :
 *   dialect? products? capabilities? sourceFile diagnostics?
 *   ;
 * ------------------------------------------------------------------------ */

        private static ArgumentToken ParseCompilationRequest(ArgumentToken sym)
        {
            if (ArgumentLexer.IsDialectOption(sym))
            {
                sym = ParseDialect(sym);
            } /* end */

            if (ArgumentLexer.IsProductOption(sym))
            {
                sym = ParseProducts(sym);
            } /* end */

            if (ArgumentLexer.IsCapabilityOption(sym))
            {
                sym = ParseCapabilities(sym);
            } /* end */

            if (sym == ArgumentToken.SOURCE_FILE)
            {
                sym = ParseSourceFile(sym);
            }
            else
            {
                ReportMissingSourceFile();
            } /* end if */

            if (ArgumentLexer.IsDiagnosticsOption(sym))
            {
                sym = ParseDiagnostics(sym);
            } /* end */

            return(sym);
        } /* end ParseCompilationRequest */
Пример #2
0
        } /* end ParseCommentOption */

/* ---------------------------------------------------------------------------
 * private method ParseCapabilities(sym)
 * ---------------------------------------------------------------------------
 * capabilities :
 *   ( synonyms | octalLiterals | explicitCast |
 *     coroutines | variantRecords | localModules |
 *     lowlineIdentifiers | toDoStatement )+
 *   ;
 * ------------------------------------------------------------------------ */

        private static ArgumentToken ParseCapabilities(ArgumentToken sym)
        {
            while (ArgumentLexer.IsCapabilityOption(sym))
            {
                switch (sym)
                {
                case ArgumentToken.SYNONYMS:
                    SetOption(Option.Synonyms, true);
                    break;

                case ArgumentToken.NO_SYNONYMS:
                    SetOption(Option.Synonyms, false);
                    break;

                case ArgumentToken.OCTAL_LITERALS:
                    SetOption(Option.OctalLiterals, true);
                    break;

                case ArgumentToken.NO_OCTAL_LITERALS:
                    SetOption(Option.OctalLiterals, false);
                    break;

                case ArgumentToken.EXPLICIT_CAST:
                    SetOption(Option.ExplicitCast, true);
                    break;

                case ArgumentToken.NO_EXPLICIT_CAST:
                    SetOption(Option.ExplicitCast, false);
                    break;

                case ArgumentToken.COROUTINES:
                    SetOption(Option.Coroutines, true);
                    break;

                case ArgumentToken.NO_COROUTINES:
                    SetOption(Option.Coroutines, false);
                    break;

                case ArgumentToken.VARIANT_RECORDS:
                    SetOption(Option.VariantRecords, true);
                    break;

                case ArgumentToken.NO_VARIANT_RECORDS:
                    SetOption(Option.VariantRecords, false);
                    break;

                case ArgumentToken.LOCAL_MODULES:
                    SetOption(Option.LocalModules, true);
                    break;

                case ArgumentToken.NO_LOCAL_MODULES:
                    SetOption(Option.LocalModules, false);
                    break;

                case ArgumentToken.LOWLINE_IDENTIFIERS:
                    SetOption(Option.LowlineIdentifiers, true);
                    break;

                case ArgumentToken.NO_LOWLINE_IDENTIFIERS:
                    SetOption(Option.LowlineIdentifiers, false);
                    break;

                case ArgumentToken.TO_DO_STATEMENT:
                    SetOption(Option.ToDoStatement, true);
                    break;

                case ArgumentToken.NO_TO_DO_STATEMENT:
                    SetOption(Option.ToDoStatement, false);
                    break;
                } /* end switch */

                sym = ArgumentLexer.NextToken();
            } /* end while */

            return(sym);
        } /* end ParseCapabilities */