4 using System.Collections.Generic;
9 namespace SiliconStudio.Shaders.
Grammar
13 private Dictionary<string, Terminal> keywordToTerminal =
new Dictionary<string, Terminal>();
14 private Dictionary<string, Terminal> caseInsensitiveKeywordToTerminal =
new Dictionary<string, Terminal>(StringComparer.InvariantCultureIgnoreCase);
26 foreach (var typeTerm
in ((
ShaderGrammar)grammar).TokenTypeToTerminals)
28 AddTerminal(typeTerm.Key, typeTerm.Value);
35 if (
char.IsLetter(term.Name[0]))
47 if (tokenInfo == null)
49 Errors.Add(GrammarErrorLevel.Error, null,
"Terminal {0} is doesn't have associated TokenInfo", term.Name);
53 var keyMap = (tokenInfo.IsCaseInsensitive) ? caseInsensitiveKeywordToTerminal : keywordToTerminal;
54 if (!keyMap.ContainsKey(term.
Name))
55 keyMap.Add(term.
Name, term);
59 SymbolToToken[(int)type] = term;
66 return new CustomScanner(
new Tokenizer(
this));
71 return SymbolToToken[(int)tokenType];
78 if (!caseInsensitiveKeywordToTerminal.TryGetValue(name, out terminal))
79 keywordToTerminal.TryGetValue(name, out terminal);
TokenCategory
Token category.
Methods used to create the Abstract Syntax Tree..
Scanner base class. The Scanner's function is to transform a stream of characters into aggregates/wor...
Terminal FindTerminalByName(string name)
ShaderLanguageData(Irony.Parsing.Grammar grammar)
Initializes a new instance of the ShaderLanguageData class.
override Scanner CreateScanner()
Terminal FindTerminalByType(TokenType tokenType)
readonly Terminal SyntaxError