#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. | |
| SgNode * | AstFromString::c_sgnode |
| current anchor SgNode associated with parsing. It will serve as a start point to find enclosing scopes for resolving identifiers/symbols | |
| SgNode * | AstFromString::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 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.
1.4.7