api.chapi-ast-csharp.1.3.1.source-code.CSharpPreprocessorParser.g4 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of chapi-ast-csharp Show documentation
Show all versions of chapi-ast-csharp Show documentation
Chapi is A common language meta information convertor, convert different languages to same meta-data model
// Eclipse Public License - v 1.0, http://www.eclipse.org/legal/epl-v10.html
// Copyright (c) 2013, Christian Wulf ([email protected])
// Copyright (c) 2016-2017, Ivan Kochurkin ([email protected]), Positive Technologies.
parser grammar CSharpPreprocessorParser;
options { tokenVocab=CSharpLexer; superClass=chapi.ast.antlr.CSharpPreprocessorParserBase; }
preprocessor_directive returns [Boolean value]
: DEFINE CONDITIONAL_SYMBOL directive_new_line_or_sharp { this.OnPreprocessorDirectiveDefine(); } #preprocessorDeclaration
| UNDEF CONDITIONAL_SYMBOL directive_new_line_or_sharp { this.OnPreprocessorDirectiveUndef(); } #preprocessorDeclaration
| IF expr=preprocessor_expression directive_new_line_or_sharp { this.OnPreprocessorDirectiveIf(); } #preprocessorConditional
| ELIF expr=preprocessor_expression directive_new_line_or_sharp { this.OnPreprocessorDirectiveElif(); } #preprocessorConditional
| ELSE directive_new_line_or_sharp { this.OnPreprocessorDirectiveElse(); } #preprocessorConditional
| ENDIF directive_new_line_or_sharp { this.OnPreprocessorDirectiveEndif(); } #preprocessorConditional
| LINE (DIGITS STRING? | DEFAULT | DIRECTIVE_HIDDEN) directive_new_line_or_sharp { this.OnPreprocessorDirectiveLine(); } #preprocessorLine
| ERROR TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveError(); } #preprocessorDiagnostic
| WARNING TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveWarning(); } #preprocessorDiagnostic
| REGION TEXT? directive_new_line_or_sharp { this.OnPreprocessorDirectiveRegion(); } #preprocessorRegion
| ENDREGION TEXT? directive_new_line_or_sharp { this.OnPreprocessorDirectiveEndregion(); } #preprocessorRegion
| PRAGMA TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectivePragma(); } #preprocessorPragma
| NULLABLE TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveNullable(); } #preprocessorNullable
;
directive_new_line_or_sharp
: DIRECTIVE_NEW_LINE
| EOF
;
preprocessor_expression returns [String value]
: TRUE { this.OnPreprocessorExpressionTrue(); }
| FALSE { this.OnPreprocessorExpressionFalse(); }
| CONDITIONAL_SYMBOL { this.OnPreprocessorExpressionConditionalSymbol(); }
| OPEN_PARENS expr=preprocessor_expression CLOSE_PARENS { this.OnPreprocessorExpressionConditionalOpenParens(); }
| BANG expr=preprocessor_expression { this.OnPreprocessorExpressionConditionalBang(); }
| expr1=preprocessor_expression OP_EQ expr2=preprocessor_expression { this.OnPreprocessorExpressionConditionalEq(); }
| expr1=preprocessor_expression OP_NE expr2=preprocessor_expression { this.OnPreprocessorExpressionConditionalNe(); }
| expr1=preprocessor_expression OP_AND expr2=preprocessor_expression { this.OnPreprocessorExpressionConditionalAnd(); }
| expr1=preprocessor_expression OP_OR expr2=preprocessor_expression { this.OnPreprocessorExpressionConditionalOr(); }
;
© 2015 - 2025 Weber Informatics LLC | Privacy Policy