Пример #1
0
 public void RegisterPunctuation(params string[] symbols)
 {
     foreach (string symbol in symbols)
     {
         SymbolTerminal term = SymbolTerminal.GetSymbol(symbol);
         term.SetOption(TermOptions.IsPunctuation);
     }
 }
Пример #2
0
        }//method

        public void RegisterBracePair(string openBrace, string closeBrace)
        {
            SymbolTerminal openS  = SymbolTerminal.GetSymbol(openBrace);
            SymbolTerminal closeS = SymbolTerminal.GetSymbol(closeBrace);

            openS.SetOption(TermOptions.IsOpenBrace);
            openS.IsPairFor = closeS;
            closeS.SetOption(TermOptions.IsCloseBrace);
            closeS.IsPairFor = openS;
        }
Пример #3
0
 public void RegisterOperators(int precedence, Associativity associativity, params string[] opSymbols)
 {
     foreach (string op in opSymbols)
     {
         SymbolTerminal opSymbol = SymbolTerminal.GetSymbol(op);
         opSymbol.SetOption(TermOptions.IsOperator, true);
         opSymbol.Precedence    = precedence;
         opSymbol.Associativity = associativity;
     }
 }//method
Пример #4
0
        public static SymbolTerminal GetSymbol(string symbol, string name)
        {
            SymbolTerminal term;

            if (_symbols.TryGetValue(symbol, out term))
            {
                //rename symbol if name is provided explicitly (different from symbol itself)
                if (name != symbol && term.Name != name)
                {
                    term.Name = name;
                }
                return(term);
            }
            string.Intern(symbol);
            term = new SymbolTerminal(symbol, name);
            term.SetOption(TermOptions.IsGrammarSymbol, true);
            _symbols[symbol] = term;
            return(term);
        }