コード例 #1
0
        private static AlterationModel GetAlterationModelFromAlterationExpression(IEnumerable <BaseExpression> symbols)
        {
            var alterationModel = new AlterationModel();

            foreach (var symbol in symbols)
            {
                switch (symbol)
                {
                case ProductionExpression productionExpression:
                    alterationModel.AddSymbol(productionExpression.ProductionModel);
                    break;

                case SymbolExpression symbolExpression:
                    alterationModel.AddSymbol(symbolExpression.SymbolModel);
                    break;

                case GrammarReferenceExpression grammarReferenceExpression:
                    alterationModel.AddSymbol(grammarReferenceExpression.GrammarReferenceModel);
                    break;

                case RuleExpression expr:
                    foreach (var symbolModel in GetSymbolModelsFromExpr(expr))
                    {
                        alterationModel.AddSymbol(symbolModel);
                    }

                    break;
                }
            }

            return(alterationModel);
        }