本文整理汇总了C#中ProgramClassParser类的典型用法代码示例。如果您正苦于以下问题:C# ProgramClassParser类的具体用法?C# ProgramClassParser怎么用?C# ProgramClassParser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ProgramClassParser类属于命名空间,在下文中一共展示了ProgramClassParser类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseProgramOrClass
public static void ParseProgramOrClass(TextSourceInfo textSourceInfo, ISearchableReadOnlyList<CodeElementsLine> codeElementsLines, TypeCobolOptions compilerOptions, SymbolTable customSymbols, out Program newProgram, out Class newClass, out IList<ParserDiagnostic> diagnostics)
{
// Create an Antlr compatible token source on top a the token iterator
CodeElementsLinesTokenSource tokenSource = new CodeElementsLinesTokenSource(
textSourceInfo.Name,
codeElementsLines);
// Init parser
ITokenStream tokenStream = new TokensLinesTokenStream(tokenSource, Token.CHANNEL_SourceTokens);
ProgramClassParser cobolParser = new ProgramClassParser(tokenStream);
// -> activate full ambiguities detection
//parser.Interpreter.PredictionMode = PredictionMode.LlExactAmbigDetection;
// Register all parse errors in a list in memory
DiagnosticSyntaxErrorListener errorListener = new DiagnosticSyntaxErrorListener();
cobolParser.RemoveErrorListeners();
cobolParser.AddErrorListener(errorListener);
// Try to parse a Cobol program or class
ProgramClassParser.CobolCompilationUnitContext codeElementParseTree = cobolParser.cobolCompilationUnit();
// Visit the parse tree to build a first class object representing a Cobol program or class
ParseTreeWalker walker = new ParseTreeWalker();
CobolNodeBuilder programClassBuilder = new CobolNodeBuilder();
programClassBuilder.CustomSymbols = customSymbols;
programClassBuilder.Dispatcher = new NodeDispatcher();
programClassBuilder.Dispatcher.CreateListeners();
walker.Walk(programClassBuilder, codeElementParseTree);
// Register compiler results
newProgram = programClassBuilder.Program;
newClass = programClassBuilder.Class;
diagnostics = errorListener.Diagnostics;
}
示例2: EnterWhenSearchConditionClause
public override void EnterWhenSearchConditionClause(ProgramClassParser.WhenSearchConditionClauseContext context)
{
var terminal = context.WhenSearchCondition();
var condition = terminal != null? (WhenSearchCondition)terminal.Symbol : null;
Enter(new WhenSearch(condition), context);
if (context.NextSentenceStatement() != null) {
Enter(new NextSentence((NextSentenceStatement)context.NextSentenceStatement().Symbol));
Exit();
}
}
示例3: ExitXmlParseStatementConditional
public override void ExitXmlParseStatementConditional(ProgramClassParser.XmlParseStatementConditionalContext context)
{
AttachEndIfExists(context.XmlStatementEnd());
}
示例4: ExitWhenSearchConditionClause
public override void ExitWhenSearchConditionClause(ProgramClassParser.WhenSearchConditionClauseContext context)
{
Exit(); // WHEN
}
示例5: ExitUnstringStatementConditional
public override void ExitUnstringStatementConditional(ProgramClassParser.UnstringStatementConditionalContext context)
{
AttachEndIfExists(context.UnstringStatementEnd());
}
示例6: ExitStatement
public override void ExitStatement(ProgramClassParser.StatementContext context)
{
if (skipEmptyStatement) skipEmptyStatement = false;
else Exit();
}
示例7: ExitSearchStatementWithBody
public override void ExitSearchStatementWithBody(ProgramClassParser.SearchStatementWithBodyContext context)
{
AttachEndIfExists(context.SearchStatementEnd());
}
示例8: ExitParagraph
public override void ExitParagraph(ProgramClassParser.ParagraphContext context)
{
if (Program.SyntaxTree.CurrentNode is Paragraph) Exit();
}
示例9: ExitEvaluateStatementWithBody
public override void ExitEvaluateStatementWithBody(ProgramClassParser.EvaluateStatementWithBodyContext context)
{
AttachEndIfExists(context.EvaluateStatementEnd());// exit EVALUATE
}
示例10: ExitEnvironmentDivision
public override void ExitEnvironmentDivision(ProgramClassParser.EnvironmentDivisionContext context)
{
Exit();
}
示例11: ExitDataDivision
public override void ExitDataDivision(ProgramClassParser.DataDivisionContext context)
{
Exit();
}
示例12: ExitConfigurationSection
public override void ExitConfigurationSection(ProgramClassParser.ConfigurationSectionContext context)
{
Exit(); // exit ConfigurationSection node
}
示例13: ExitCobolProgram
public override void ExitCobolProgram(ProgramClassParser.CobolProgramContext context)
{
AttachEndIfExists(context.ProgramEnd());
Exit();
programsStack.Pop();
}
示例14: EnterXmlGenerateStatementConditional
public override void EnterXmlGenerateStatementConditional(ProgramClassParser.XmlGenerateStatementConditionalContext context)
{
var terminal = context.XmlGenerateStatement();
var statement = terminal != null? (XmlGenerateStatement)terminal.Symbol : null;
Enter(new XmlGenerate(statement), context);
}
示例15: EnterWorkingStorageSection
/// <summary>parent: DATA DIVISION</summary>
/// <param name="context">WORKING-STORAGE SECTION</param>
public override void EnterWorkingStorageSection(ProgramClassParser.WorkingStorageSectionContext context)
{
var terminal = context.WorkingStorageSectionHeader();
var header = terminal != null? (WorkingStorageSectionHeader)terminal.Symbol : null;
Enter(new WorkingStorageSection(header), context);
}