public LanguageData(Grammar grammar) { Grammar = grammar; GrammarData = new GrammarData(this); ParserData = new ParserData(this); ScannerData = new ScannerData(this); }
public override void Init(GrammarData grammarData) { base.Init(grammarData); //Remove new line chars from whitespace foreach(char t in LineTerminators) grammarData.Grammar.WhitespaceChars = grammarData.Grammar.WhitespaceChars.Replace(t.ToString(), string.Empty); }
public override void Init(GrammarData grammarData) { base.Init(grammarData); string workPattern = @"\G(" + Pattern + ")"; RegexOptions options = (OwnerGrammar.CaseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase); _expression = new Regex(workPattern, options); if (this.EditorInfo == null) this.EditorInfo = new TokenEditorInfo(TokenType.Unknown, TokenColor.Text, TokenTriggers.None); }
public override void Init(GrammarData grammarData) { base.Init(grammarData); //_endSymbolsFirsts char array is used for fast search for end symbols using String's method IndexOfAny(...) _endSymbolsFirsts = new char[EndSymbols.Count]; for (int i = 0; i < EndSymbols.Count; i++) { string sym = EndSymbols[i]; _endSymbolsFirsts[i] = sym[0]; _isLineComment |= sym.Contains("\n"); if (!_isLineComment) SetOption(TermOptions.IsMultiline); } if (this.EditorInfo == null) { TokenType ttype = _isLineComment ? TokenType.LineComment : TokenType.Comment; this.EditorInfo = new TokenEditorInfo(ttype, TokenColor.Comment, TokenTriggers.None); } }
public override void Init(GrammarData grammarData) { base.Init(grammarData); if (String.IsNullOrEmpty(QuickParseTerminators)) QuickParseTerminators = OwnerGrammar.WhitespaceChars + OwnerGrammar.Delimiters; _defaultFloatTypes = new TypeCode[] { DefaultFloatType }; if (this.EditorInfo == null) this.EditorInfo = new TokenEditorInfo(TokenType.Literal, TokenColor.Number, TokenTriggers.None); }