23 #region Constants and Fields
45 #region Constructors and Destructors
61 : this(language, null, null)
77 Scanner = scanner ?? language.CreateScanner();
81 Scanner.Initialize(
this);
85 Language.Errors.Add(GrammarErrorLevel.Error, null,
"Scanner is not initialized for this grammar");
91 Root = Language.Grammar.Root;
92 InitialState = Language.ParserData.InitialState;
96 if (Root != Language.Grammar.Root && !Language.Grammar.SnippetRoots.Contains(Root))
101 InitialState = Language.ParserData.InitialStates[Root];
107 #region Public Properties
115 #region Public Methods
125 return Parse(sourceText,
"<Source>");
145 Scanner.SetSourceText(sourceText, fileName);
147 Context.CurrentParseTree =
new ParseTree(sourceText, fileName);
148 Context.Status = ParserStatus.Parsing;
149 int start = Environment.TickCount;
151 Context.CurrentParseTree.ParseTime = Environment.TickCount - start;
152 UpdateParseTreeStatus();
153 return Context.CurrentParseTree;
166 Context.CurrentParseTree =
new ParseTree(sourceText, fileName);
171 var token = Scanner.GetToken();
172 if (token == null || token.Terminal == Language.Grammar.Eof)
178 return Context.CurrentParseTree;
185 internal void Reset()
192 private void UpdateParseTreeStatus()
194 var parseTree = Context.CurrentParseTree;
195 if (parseTree.ParserMessages.Count > 0)
197 parseTree.ParserMessages.Sort(ParserMessageList.ByLocation);
200 if (parseTree.HasErrors())
202 parseTree.Status = ParseTreeStatus.Error;
204 else if (Context.Status ==
ParserStatus.AcceptedPartial)
206 parseTree.Status = ParseTreeStatus.Partial;
210 parseTree.Status = ParseTreeStatus.Parsed;
A strongly-typed resource class, for looking up localized strings, etc.
Scanner base class. The Scanner's function is to transform a stream of characters into aggregates/wor...
Parser(LanguageData language, Scanner scanner, NonTerminal root)
Initializes a new instance of the Parser class.
static string ErrRootNotRegistered
Looks up a localized string similar to ({0}) term passed as 'root' paramater to parserr is not Root o...
Parser(LanguageData language)
ParseTree Parse(string sourceText)
ParseTree ScanOnly(string sourceText, string fileName)
ParseTree Parse(string sourceText, string fileName)
readonly NonTerminal Root
readonly LanguageData Language
readonly CoreParser CoreParser