summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/Ecc/C.g
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/Ecc/C.g')
-rw-r--r--BaseTools/Source/Python/Ecc/C.g679
1 files changed, 0 insertions, 679 deletions
diff --git a/BaseTools/Source/Python/Ecc/C.g b/BaseTools/Source/Python/Ecc/C.g
deleted file mode 100644
index e344088f36..0000000000
--- a/BaseTools/Source/Python/Ecc/C.g
+++ /dev/null
@@ -1,679 +0,0 @@
-/* @file
- This file is used to be the grammar file of ECC tool
-
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*/
-
-grammar C;
-options {
- language=Python;
- backtrack=true;
- memoize=true;
- k=2;
-}
-
-@lexer::header{
-## @file
-# The file defines the Lexer for C source files.
-#
-# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.
-# This file is generated by running:
-# java org.antlr.Tool C.g
-#
-# Copyright (c) 2009 - 2010, Intel Corporation All rights reserved.
-#
-# This program and the accompanying materials are licensed and made available
-# under the terms and conditions of the BSD License which accompanies this
-# distribution. The full text of the license may be found at:
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-##
-}
-
-@header {
-## @file
-# The file defines the parser for C source files.
-#
-# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.
-# This file is generated by running:
-# java org.antlr.Tool C.g
-#
-# Copyright (c) 2009 - 2010, Intel Corporation All rights reserved.
-#
-# This program and the accompanying materials are licensed and made available
-# under the terms and conditions of the BSD License which accompanies this
-# distribution. The full text of the license may be found at:
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-##
-
-import CodeFragment
-import FileProfile
-}
-
-@members {
-
- def printTokenInfo(self, line, offset, tokenText):
- print str(line)+ ',' + str(offset) + ':' + str(tokenText)
-
- def StorePredicateExpression(self, StartLine, StartOffset, EndLine, EndOffset, Text):
- PredExp = CodeFragment.PredicateExpression(Text, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.PredicateExpressionList.append(PredExp)
-
- def StoreEnumerationDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):
- EnumDef = CodeFragment.EnumerationDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.EnumerationDefinitionList.append(EnumDef)
-
- def StoreStructUnionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):
- SUDef = CodeFragment.StructUnionDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.StructUnionDefinitionList.append(SUDef)
-
- def StoreTypedefDefinition(self, StartLine, StartOffset, EndLine, EndOffset, FromText, ToText):
- Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.TypedefDefinitionList.append(Tdef)
-
- def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset, DeclLine, DeclOffset):
- FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))
- FileProfile.FunctionDefinitionList.append(FuncDef)
-
- def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):
- VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.VariableDeclarationList.append(VarDecl)
-
- def StoreFunctionCalling(self, StartLine, StartOffset, EndLine, EndOffset, FuncName, ParamList):
- FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))
- FileProfile.FunctionCallingList.append(FuncCall)
-
-}
-
-translation_unit
- : external_declaration*
- ;
-
-
-/*function_declaration
-@after{
- print $function_declaration.text
-}
- : declaration_specifiers IDENTIFIER '(' parameter_list ')' ';'
- ;
-*/
-external_declaration
-options {k=1;}
-/*@after{
- print $external_declaration.text
-}*/
- : ( declaration_specifiers? declarator declaration* '{' )=> function_definition
- | declaration
- | macro_statement (';')?
- ;
-
-
-
-function_definition
-scope {
- ModifierText;
- DeclText;
- LBLine;
- LBOffset;
- DeclLine;
- DeclOffset;
-}
-@init {
- $function_definition::ModifierText = '';
- $function_definition::DeclText = '';
- $function_definition::LBLine = 0;
- $function_definition::LBOffset = 0;
- $function_definition::DeclLine = 0;
- $function_definition::DeclOffset = 0;
-}
-@after{
- self.StoreFunctionDefinition($function_definition.start.line, $function_definition.start.charPositionInLine, $function_definition.stop.line, $function_definition.stop.charPositionInLine, $function_definition::ModifierText, $function_definition::DeclText, $function_definition::LBLine, $function_definition::LBOffset, $function_definition::DeclLine, $function_definition::DeclOffset)
-}
- : d=declaration_specifiers? declarator
- ( declaration+ a=compound_statement // K&R style
- | b=compound_statement // ANSI style
- ) {
- if d != None:
- $function_definition::ModifierText = $declaration_specifiers.text
- else:
- $function_definition::ModifierText = ''
- $function_definition::DeclText = $declarator.text
- $function_definition::DeclLine = $declarator.start.line
- $function_definition::DeclOffset = $declarator.start.charPositionInLine
- if a != None:
- $function_definition::LBLine = $a.start.line
- $function_definition::LBOffset = $a.start.charPositionInLine
- else:
- $function_definition::LBLine = $b.start.line
- $function_definition::LBOffset = $b.start.charPositionInLine
- }
- ;
-
-declaration
- : a='typedef' b=declaration_specifiers?
- c=init_declarator_list d=';'
- {
- if b != None:
- self.StoreTypedefDefinition($a.line, $a.charPositionInLine, $d.line, $d.charPositionInLine, $b.text, $c.text)
- else:
- self.StoreTypedefDefinition($a.line, $a.charPositionInLine, $d.line, $d.charPositionInLine, '', $c.text)
- }
- | s=declaration_specifiers t=init_declarator_list? e=';'
- {
- if t != None:
- self.StoreVariableDeclaration($s.start.line, $s.start.charPositionInLine, $t.start.line, $t.start.charPositionInLine, $s.text, $t.text)
- }
- ;
-
-declaration_specifiers
- : ( storage_class_specifier
- | type_specifier
- | type_qualifier
- )+
- ;
-
-init_declarator_list
- : init_declarator (',' init_declarator)*
- ;
-
-init_declarator
- : declarator ('=' initializer)?
- ;
-
-storage_class_specifier
- : 'extern'
- | 'static'
- | 'auto'
- | 'register'
- | 'STATIC'
- ;
-
-type_specifier
- : 'void'
- | 'char'
- | 'short'
- | 'int'
- | 'long'
- | 'float'
- | 'double'
- | 'signed'
- | 'unsigned'
- | s=struct_or_union_specifier
- {
- if s.stop != None:
- self.StoreStructUnionDefinition($s.start.line, $s.start.charPositionInLine, $s.stop.line, $s.stop.charPositionInLine, $s.text)
- }
- | e=enum_specifier
- {
- if e.stop != None:
- self.StoreEnumerationDefinition($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)
- }
- | (IDENTIFIER type_qualifier* declarator)=> type_id
- ;
-
-type_id
- : IDENTIFIER
- //{self.printTokenInfo($a.line, $a.pos, $a.text)}
- ;
-
-struct_or_union_specifier
-options {k=3;}
- : struct_or_union IDENTIFIER? '{' struct_declaration_list '}'
- | struct_or_union IDENTIFIER
- ;
-
-struct_or_union
- : 'struct'
- | 'union'
- ;
-
-struct_declaration_list
- : struct_declaration+
- ;
-
-struct_declaration
- : specifier_qualifier_list struct_declarator_list ';'
- ;
-
-specifier_qualifier_list
- : ( type_qualifier | type_specifier )+
- ;
-
-struct_declarator_list
- : struct_declarator (',' struct_declarator)*
- ;
-
-struct_declarator
- : declarator (':' constant_expression)?
- | ':' constant_expression
- ;
-
-enum_specifier
-options {k=3;}
- : 'enum' '{' enumerator_list ','? '}'
- | 'enum' IDENTIFIER '{' enumerator_list ','? '}'
- | 'enum' IDENTIFIER
- ;
-
-enumerator_list
- : enumerator (',' enumerator)*
- ;
-
-enumerator
- : IDENTIFIER ('=' constant_expression)?
- ;
-
-type_qualifier
- : 'const'
- | 'volatile'
- | 'IN'
- | 'OUT'
- | 'OPTIONAL'
- | 'CONST'
- | 'UNALIGNED'
- | 'VOLATILE'
- | 'GLOBAL_REMOVE_IF_UNREFERENCED'
- | 'EFIAPI'
- | 'EFI_BOOTSERVICE'
- | 'EFI_RUNTIMESERVICE'
- | 'PACKED'
- ;
-
-declarator
- : pointer? ('EFIAPI')? ('EFI_BOOTSERVICE')? ('EFI_RUNTIMESERVICE')? direct_declarator
-// | ('EFIAPI')? ('EFI_BOOTSERVICE')? ('EFI_RUNTIMESERVICE')? pointer? direct_declarator
- | pointer
- ;
-
-direct_declarator
- : IDENTIFIER declarator_suffix*
- | '(' ('EFIAPI')? declarator ')' declarator_suffix+
- ;
-
-declarator_suffix
- : '[' constant_expression ']'
- | '[' ']'
- | '(' parameter_type_list ')'
- | '(' identifier_list ')'
- | '(' ')'
- ;
-
-pointer
- : '*' type_qualifier+ pointer?
- | '*' pointer
- | '*'
- ;
-
-parameter_type_list
- : parameter_list (',' ('OPTIONAL')? '...')?
- ;
-
-parameter_list
- : parameter_declaration (',' ('OPTIONAL')? parameter_declaration)*
- ;
-
-parameter_declaration
- : declaration_specifiers (declarator|abstract_declarator)* ('OPTIONAL')?
- //accomerdate user-defined type only, no declarator follow.
- | pointer* IDENTIFIER
- ;
-
-identifier_list
- : IDENTIFIER
- (',' IDENTIFIER)*
- ;
-
-type_name
- : specifier_qualifier_list abstract_declarator?
- | type_id
- ;
-
-abstract_declarator
- : pointer direct_abstract_declarator?
- | direct_abstract_declarator
- ;
-
-direct_abstract_declarator
- : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) abstract_declarator_suffix*
- ;
-
-abstract_declarator_suffix
- : '[' ']'
- | '[' constant_expression ']'
- | '(' ')'
- | '(' parameter_type_list ')'
- ;
-
-initializer
-
- : assignment_expression
- | '{' initializer_list ','? '}'
- ;
-
-initializer_list
- : initializer (',' initializer )*
- ;
-
-// E x p r e s s i o n s
-
-argument_expression_list
- : assignment_expression ('OPTIONAL')? (',' assignment_expression ('OPTIONAL')?)*
- ;
-
-additive_expression
- : (multiplicative_expression) ('+' multiplicative_expression | '-' multiplicative_expression)*
- ;
-
-multiplicative_expression
- : (cast_expression) ('*' cast_expression | '/' cast_expression | '%' cast_expression)*
- ;
-
-cast_expression
- : '(' type_name ')' cast_expression
- | unary_expression
- ;
-
-unary_expression
- : postfix_expression
- | '++' unary_expression
- | '--' unary_expression
- | unary_operator cast_expression
- | 'sizeof' unary_expression
- | 'sizeof' '(' type_name ')'
- ;
-
-postfix_expression
-scope {
- FuncCallText;
-}
-@init {
- $postfix_expression::FuncCallText = '';
-}
- : p=primary_expression {$postfix_expression::FuncCallText += $p.text}
- ( '[' expression ']'
- | '(' a=')'{self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $a.line, $a.charPositionInLine, $postfix_expression::FuncCallText, '')}
- | '(' c=argument_expression_list b=')' {self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $b.line, $b.charPositionInLine, $postfix_expression::FuncCallText, $c.text)}
- | '(' macro_parameter_list ')'
- | '.' x=IDENTIFIER {$postfix_expression::FuncCallText += '.' + $x.text}
- | '*' y=IDENTIFIER {$postfix_expression::FuncCallText = $y.text}
- | '->' z=IDENTIFIER {$postfix_expression::FuncCallText += '->' + $z.text}
- | '++'
- | '--'
- )*
- ;
-
-macro_parameter_list
- : parameter_declaration (',' parameter_declaration)*
- ;
-
-unary_operator
- : '&'
- | '*'
- | '+'
- | '-'
- | '~'
- | '!'
- ;
-
-primary_expression
- : IDENTIFIER
- | constant
- | '(' expression ')'
- ;
-
-constant
- : HEX_LITERAL
- | OCTAL_LITERAL
- | DECIMAL_LITERAL
- | CHARACTER_LITERAL
- | (IDENTIFIER* STRING_LITERAL+)+ IDENTIFIER*
- | FLOATING_POINT_LITERAL
- ;
-
-/////
-
-expression
- : assignment_expression (',' assignment_expression)*
- ;
-
-constant_expression
- : conditional_expression
- ;
-
-assignment_expression
- : lvalue assignment_operator assignment_expression
- | conditional_expression
- ;
-
-lvalue
- : unary_expression
- ;
-
-assignment_operator
- : '='
- | '*='
- | '/='
- | '%='
- | '+='
- | '-='
- | '<<='
- | '>>='
- | '&='
- | '^='
- | '|='
- ;
-
-conditional_expression
- : e=logical_or_expression ('?' expression ':' conditional_expression {self.StorePredicateExpression($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)})?
- ;
-
-logical_or_expression
- : logical_and_expression ('||' logical_and_expression)*
- ;
-
-logical_and_expression
- : inclusive_or_expression ('&&' inclusive_or_expression)*
- ;
-
-inclusive_or_expression
- : exclusive_or_expression ('|' exclusive_or_expression)*
- ;
-
-exclusive_or_expression
- : and_expression ('^' and_expression)*
- ;
-
-and_expression
- : equality_expression ('&' equality_expression)*
- ;
-equality_expression
- : relational_expression (('=='|'!=') relational_expression )*
- ;
-
-relational_expression
- : shift_expression (('<'|'>'|'<='|'>=') shift_expression)*
- ;
-
-shift_expression
- : additive_expression (('<<'|'>>') additive_expression)*
- ;
-
-// S t a t e m e n t s
-
-statement
- : labeled_statement
- | compound_statement
- | expression_statement
- | selection_statement
- | iteration_statement
- | jump_statement
- | macro_statement
- | asm2_statement
- | asm1_statement
- | asm_statement
- | declaration
- ;
-
-asm2_statement
- : '__asm__'? IDENTIFIER '(' (~(';'))* ')' ';'
- ;
-
-asm1_statement
- : '_asm' '{' (~('}'))* '}'
- ;
-
-asm_statement
- : '__asm' '{' (~('}'))* '}'
- ;
-
-macro_statement
- : IDENTIFIER '(' declaration* statement_list? expression? ')'
- ;
-
-labeled_statement
- : IDENTIFIER ':' statement
- | 'case' constant_expression ':' statement
- | 'default' ':' statement
- ;
-
-compound_statement
- : '{' declaration* statement_list? '}'
- ;
-
-statement_list
- : statement+
- ;
-
-expression_statement
- : ';'
- | expression ';'
- ;
-
-selection_statement
- : 'if' '(' e=expression ')' {self.StorePredicateExpression($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)} statement (options {k=1; backtrack=false;}:'else' statement)?
- | 'switch' '(' expression ')' statement
- ;
-
-iteration_statement
- : 'while' '(' e=expression ')' statement {self.StorePredicateExpression($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)}
- | 'do' statement 'while' '(' e=expression ')' ';' {self.StorePredicateExpression($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)}
- | 'for' '(' expression_statement e=expression_statement expression? ')' statement {self.StorePredicateExpression($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)}
- ;
-
-jump_statement
- : 'goto' IDENTIFIER ';'
- | 'continue' ';'
- | 'break' ';'
- | 'return' ';'
- | 'return' expression ';'
- ;
-
-IDENTIFIER
- : LETTER (LETTER|'0'..'9')*
- ;
-
-fragment
-LETTER
- : '$'
- | 'A'..'Z'
- | 'a'..'z'
- | '_'
- ;
-
-CHARACTER_LITERAL
- : ('L')? '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
- ;
-
-STRING_LITERAL
- : ('L')? '"' ( EscapeSequence | ~('\\'|'"') )* '"'
- ;
-
-HEX_LITERAL : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
-
-DECIMAL_LITERAL : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
-
-OCTAL_LITERAL : '0' ('0'..'7')+ IntegerTypeSuffix? ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-IntegerTypeSuffix
- : ('u'|'U')
- | ('l'|'L')
- | ('u'|'U') ('l'|'L')
- | ('u'|'U') ('l'|'L') ('l'|'L')
- ;
-
-FLOATING_POINT_LITERAL
- : ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
- | '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
- | ('0'..'9')+ Exponent FloatTypeSuffix?
- | ('0'..'9')+ Exponent? FloatTypeSuffix
- ;
-
-fragment
-Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
-
-fragment
-FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
-
-fragment
-EscapeSequence
- : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
- | OctalEscape
- ;
-
-fragment
-OctalEscape
- : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7')
- ;
-
-fragment
-UnicodeEscape
- : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
- ;
-
-WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
- ;
-
-// ingore '\' of line concatenation
-BS : ('\\') {$channel=HIDDEN;}
- ;
-
-// ingore function modifiers
-//FUNC_MODIFIERS : 'EFIAPI' {$channel=HIDDEN;}
-// ;
-
-UnicodeVocabulary
- : '\u0003'..'\uFFFE'
- ;
-COMMENT
- : '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
- ;
-
-
-LINE_COMMENT
- : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
- ;
-
-// ignore #line info for now
-LINE_COMMAND
- : '#' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
- ;