AstFromString.h File Reference

#include "sage3basic.h"
#include <iostream>
#include <vector>

Include dependency graph for AstFromString.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  AstFromString

Namespace scope variables

Semi-global variables

#define OFS_MAX_LEN   256
 maximum length for a buffer for a variable, constant, or pragma construct name
const char * AstFromString::c_char
 A namespace scope char* to avoid passing and returning a target c string for every and each function current characters being scanned, what is pointed is const, the pointer itself is not const.
SgNodeAstFromString::c_sgnode
 current anchor SgNode associated with parsing. It will serve as a start point to find enclosing scopes for resolving identifiers/symbols
SgNodeAstFromString::c_parsed_node
 Store the AST substree (expression, statement) generated from a helper function.

Character check , without side effect on the current position

utility functions for checking characters, without changing the current position of the input string being parsed.

bool AstFromString::afs_is_digit ()
 Check if the current character is a digit. The current position of the input string remains unchanged either way.
bool AstFromString::afs_is_identifier_char ()
 Check if the current character is a legal identifier character, including letters, digits, '_' and '$' (For fortran). No side effect on the current position.
bool AstFromString::afs_is_letter ()
 Check if the current character is a letter. No side effect on the current position of the input string.
bool AstFromString::afs_is_lower_letter ()
 Check if the current character is a lower case letter.
bool AstFromString::afs_is_upper_letter ()
 Check if the current character is a upper case letter.

Match with side effects (set c_parsed_node and advance the current position of character) if successful. Return false and have no side effects if the match fails.

utility functions for matching string, whitespace, identifiers, const etc. Successful match will advance the current position. entry point, declarations, types Follow the order of http://www.antlr.org/grammar/1153358328744/C.g

bool AstFromString::afs_match_char (char c)
 match a char, advance one position if successful.
bool AstFromString::afs_match_substr (const char *substr, bool checkTrail=true)
 Match a sub string: a given sub c string from the input c string, again skip heading space/tabs if any.
bool AstFromString::afs_skip_whitespace ()
 Match and skip whitespace.
bool AstFromString::afs_match_identifier ()
 Match identifier, move to the next character if successful. The identifier could be a name of a type, function, variable, or label. The resolved identifier (type or variable/function/label name) is stored into c_parsed_node.
bool AstFromString::afs_match_integer_const (int *result)
 Match an integer constant, store it into result.
bool AstFromString::afs_match_translation_unit ()
 Match a translation unit. Not yet implemented.
bool AstFromString::afs_match_external_declaration ()
 Match an external declaration. Not yet implemented.
bool AstFromString::afs_match_function_definition ()
 Match a function definition. Not yet implemented.
bool AstFromString::afs_match_declaration ()
 Match a declaration. Not yet implemented.
bool AstFromString::afs_match_declaration_specifiers ()
 Match declaration specifiers. Not yet implemented.
bool AstFromString::afs_match_init_declarator_list ()
 Match an init declarator list. Not yet implemented.
bool AstFromString::afs_match_init_declarator ()
 Match init declarator. Not yet implemented.
bool AstFromString::afs_match_storage_class_specifier ()
 Match a storage class specifier. Not yet implemented.
bool AstFromString::afs_match_type_specifier ()
 Match a type specifier : 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | type_id. The recognized type is stored in c_parsed_node.
bool AstFromString::afs_match_specifier_qualifier_list (std::vector< SgNode * > &)
 Match a list of specifiers and qualifiers : : ( type_qualifier | type_specifier )+.
bool AstFromString::afs_match_type_qualifier ()
 Match a type qualifier : 'const' | 'volatile'.
bool AstFromString::afs_match_type_name ()
 Match a type name : specifier_qualifier_list abstract_declarator?

Expression

utility functions for parsing expressions and generate AST pieces for them. Successful match will advance the current position. The function names and grammars largely follow the conventions used in http://www.antlr.org/grammar/1153358328744/C.g. For example in the grammar shown, | means or, * means 0 or more repetition of the previous term , ? means 0 or 1 occurrence of the previous term. + means 1 or more occurrence.

bool AstFromString::afs_match_argument_expression_list ()
 Grammar: argument_expression_list : assignment_expression (',' assignment_expression)* one assignment_expression, followed by optionally arbitrary numbers of (',' assignment_expression).
bool AstFromString::afs_match_additive_expression ()
 Grammar: additive_expression : (multiplicative_expression) ('+' multiplicative_expression | '-' multiplicative_expression)*.
bool AstFromString::afs_match_multiplicative_expression ()
 multiplicative_expression : (cast_expression) ('*' cast_expression | '/' cast_expression | '' cast_expression)*
bool AstFromString::afs_match_cast_expression ()
 cast_expression : '(' type_name ')' cast_expression | unary_expression
bool AstFromString::afs_match_unary_expression ()
 unary_expression : postfix_expression | INC_OP unary_expression | DEC_OP unary_expression | unary_operator cast_expression | SIZEOF unary_expression | SIZEOF '(' type_name ')'
bool AstFromString::afs_match_postfix_expression ()
 postfix_expression : primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
bool AstFromString::afs_match_primary_expression ()
 primary_expression : IDENTIFIER | constant | '(' expression ')'
bool AstFromString::afs_match_constant ()
 Only integer constant is supported for now. Full grammar is constant : HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL.
bool AstFromString::afs_match_expression ()
 expression : assignment_expression (',' assignment_expression)*. Match one or more assignment_expression
bool AstFromString::afs_match_constant_expression ()
 constant_expression : conditional_expression
bool AstFromString::afs_match_assignment_expression ()
 assignment_expression : lvalue assignment_operator assignment_expression | conditional_expression
bool AstFromString::afs_match_lvalue ()
 lvalue: unary_expression
bool AstFromString::afs_match_conditional_expression ()
 conditional_expression : logical_or_expression ('?' expression ':' conditional_expression)? '?' means 0 or 1 occurrence
bool AstFromString::afs_match_logical_or_expression ()
 logical_or_expression : logical_and_expression ('||' logical_and_expression)*
bool AstFromString::afs_match_logical_and_expression ()
 logical_and_expression : inclusive_or_expression ('&&' inclusive_or_expression)*
bool AstFromString::afs_match_inclusive_or_expression ()
 inclusive_or_expression : exclusive_or_expression ('|' exclusive_or_expression)*
bool AstFromString::afs_match_exclusive_or_expression ()
 exclusive_or_expression : and_expression ('^' and_expression)*
bool AstFromString::afs_match_and_expression ()
 and_expression : equality_expression ('&' equality_expression)*
bool AstFromString::afs_match_equality_expression ()
 equality_expression : relational_expression (('=='|'!=') relational_expression)*
bool AstFromString::afs_match_relational_expression ()
 relational_expression : shift_expression (('<'|'>'|'<='|'>=') shift_expression)*
bool AstFromString::afs_match_shift_expression ()
 shift_expression : additive_expression (('<<'|'>>') additive_expression)*

Statement

utility functions to parse a few statements. Successful match will advance the current position. INCOMPLETE now, Don't use them yet!

bool AstFromString::afs_match_statement ()
 match any statement, not complete yet. Don't use it yet . : labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement
bool AstFromString::afs_match_labeled_statement ()
 Match labeled statement : IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement.
bool AstFromString::afs_match_compound_statement ()
 Not yet implemented. Match compound statement: '{' declaration* statement_list? '}'.
bool AstFromString::afs_match_expression_statement ()
 Match expression statement: : ';' | expression ';'.
bool AstFromString::afs_match_selection_statement ()
 Match selection statement: IF '(' expression ')' statement | IF '(' expression ')' statement ELSE statement | SWITCH '(' expression ')' statement.
bool AstFromString::afs_match_iteration_statement ()
 Match an iteration statement: : 'while' '(' expression ')' statement | 'do' statement 'while' '(' expression ')' ';' | 'for' '(' expression_statement expression_statement expression? ')' statement.
bool AstFromString::afs_match_jump_statement ()
 Match a jump statement : 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';'.


Define Documentation

#define OFS_MAX_LEN   256

maximum length for a buffer for a variable, constant, or pragma construct name

Definition at line 27 of file AstFromString.h.


Generated on Wed May 16 06:18:19 2012 for ROSE by  doxygen 1.4.7