Git Product home page Git Product logo

cxxparser's Issues

Grammar railroad diagram

I've done a experimental tool to convert bison grammars to a kind of EBNF understood by https://www.bottlecaps.de/rr/ui to generate railroad diagrams see bellow the converted CxxParser.y and with some hand made changes to allow view it at https://www.bottlecaps.de/rr/ui the order of the rules could be changed to a better view of the railroad diagrams. Copy and paste the EBNF bellow on https://www.bottlecaps.de/rr/ui tab Edit Grammar then switch to the tab View Diagram.



identifier_word ::=
	Identifier

identifier ::=
	identifier_word

id ::=
	identifier
	| identifier template_test '+' template_argument_list '>'
	| identifier template_test '+' '>'
	| identifier template_test '-'
	| template_id

template_test ::=
	'<'

global_scope ::=
	SCOPE
	| TEMPLATE global_scope

id_scope ::=
	id SCOPE

nested_id ::=
	id
	| id_scope nested_id

scoped_id ::=
	nested_id
	| global_scope nested_id

destructor_id ::=
	'~' id
	| TEMPLATE destructor_id

special_function_id ::=
	conversion_function_id
	| operator_function_id
	| TEMPLATE special_function_id

nested_special_function_id ::=
	special_function_id
	| id_scope destructor_id
	| id_scope nested_special_function_id

scoped_special_function_id ::=
	nested_special_function_id
	| global_scope nested_special_function_id

declarator_id ::=
	scoped_id
	| scoped_special_function_id
	| destructor_id

built_in_type_id ::=
	built_in_type_specifier
	| built_in_type_id built_in_type_specifier

pseudo_destructor_id ::=
	built_in_type_id SCOPE '~' built_in_type_id
	| '~' built_in_type_id
	| TEMPLATE pseudo_destructor_id

nested_pseudo_destructor_id ::=
	pseudo_destructor_id
	| id_scope nested_pseudo_destructor_id

scoped_pseudo_destructor_id ::=
	nested_pseudo_destructor_id
	| global_scope scoped_pseudo_destructor_id

string ::=
	StringLiteral

literal ::=
	IntegerLiteral
	| CharacterLiteral
	| FloatingLiteral
	| string
	| boolean_literal

boolean_literal ::=
	FALSE
	| TRUE

translation_unit ::=
	declaration_seq.opt

primary_expression ::=
	literal
	| THIS
	| suffix_decl_specified_ids
	| abstract_expression

abstract_expression ::=
	parenthesis_clause
	| '[' expression.opt ']'
	| TEMPLATE parenthesis_clause

type1_parameters ::=
	parameter_declaration_list ';'
	| type1_parameters parameter_declaration_list ';'

mark_type1 ::=
	/* empty */

postfix_expression ::=
	primary_expression
	| postfix_expression parenthesis_clause mark_type1 '-'
	| postfix_expression parenthesis_clause mark_type1 '+' type1_parameters mark '{' error
	| postfix_expression parenthesis_clause mark_type1 '+' type1_parameters mark error
	| postfix_expression parenthesis_clause mark_type1 '+' error
	| postfix_expression '[' expression.opt ']'
	| postfix_expression '.' declarator_id
	| postfix_expression '.' scoped_pseudo_destructor_id
	| postfix_expression ARROW declarator_id
	| postfix_expression ARROW scoped_pseudo_destructor_id
	| postfix_expression INC
	| postfix_expression DEC
	| DYNAMIC_CAST '<' type_id '>' '(' expression ')'
	| STATIC_CAST '<' type_id '>' '(' expression ')'
	| REINTERPRET_CAST '<' type_id '>' '(' expression ')'
	| CONST_CAST '<' type_id '>' '(' expression ')'
	| TYPEID parameters_clause

expression_list.opt ::=
	/* empty */
	| expression_list

expression_list ::=
	assignment_expression
	| expression_list ',' assignment_expression

unary_expression ::=
	postfix_expression
	| INC cast_expression
	| DEC cast_expression
	| ptr_operator cast_expression
	| suffix_decl_specified_scope star_ptr_operator cast_expression
	| '+' cast_expression
	| '-' cast_expression
	| '!' cast_expression
	| '~' cast_expression
	| SIZEOF unary_expression
	| new_expression
	| global_scope new_expression
	| delete_expression
	| global_scope delete_expression

delete_expression ::=
	DELETE cast_expression

new_expression ::=
	NEW new_type_id new_initializer.opt
	| NEW parameters_clause new_type_id new_initializer.opt
	| NEW parameters_clause
	| NEW parameters_clause parameters_clause new_initializer.opt

new_type_id ::=
	type_specifier ptr_operator_seq.opt
	| type_specifier new_declarator
	| type_specifier new_type_id

new_declarator ::=
	ptr_operator new_declarator
	| direct_new_declarator

direct_new_declarator ::=
	'[' expression ']'
	| direct_new_declarator '[' constant_expression ']'

new_initializer.opt ::=
	/* empty */
	| '(' expression_list.opt ')'

cast_expression ::=
	unary_expression
	| abstract_expression cast_expression

pm_expression ::=
	cast_expression
	| pm_expression DOT_STAR cast_expression
	| pm_expression ARROW_STAR cast_expression

multiplicative_expression ::=
	pm_expression
	| multiplicative_expression star_ptr_operator pm_expression
	| multiplicative_expression '/' pm_expression
	| multiplicative_expression '%' pm_expression

additive_expression ::=
	multiplicative_expression
	| additive_expression '+' multiplicative_expression
	| additive_expression '-' multiplicative_expression

shift_expression ::=
	additive_expression
	| shift_expression SHL additive_expression
	| shift_expression SHR additive_expression

relational_expression ::=
	shift_expression
	| relational_expression '<' shift_expression
	| relational_expression '>' shift_expression
	| relational_expression LE shift_expression
	| relational_expression GE shift_expression

equality_expression ::=
	relational_expression
	| equality_expression EQ relational_expression
	| equality_expression NE relational_expression

and_expression ::=
	equality_expression
	| and_expression '&' equality_expression

exclusive_or_expression ::=
	and_expression
	| exclusive_or_expression '^' and_expression

inclusive_or_expression ::=
	exclusive_or_expression
	| inclusive_or_expression '|' exclusive_or_expression

logical_and_expression ::=
	inclusive_or_expression
	| logical_and_expression LOG_AND inclusive_or_expression

logical_or_expression ::=
	logical_and_expression
	| logical_or_expression LOG_OR logical_and_expression

conditional_expression ::=
	logical_or_expression
	| logical_or_expression '?' expression ':' assignment_expression

assignment_expression ::=
	conditional_expression
	| logical_or_expression assignment_operator assignment_expression
	| logical_or_expression '=' braced_initializer
	| throw_expression

assignment_operator ::=
	'='
	| ASS_ADD
	| ASS_AND
	| ASS_DIV
	| ASS_MOD
	| ASS_MUL
	| ASS_OR
	| ASS_SHL
	| ASS_SHR
	| ASS_SUB
	| ASS_XOR

expression.opt ::=
	/* empty */
	| expression

expression ::=
	assignment_expression
	| expression_list ',' assignment_expression

constant_expression ::=
	conditional_expression

templated_relational_expression ::=
	shift_expression
	| templated_relational_expression '<' shift_expression
	| templated_relational_expression LE shift_expression
	| templated_relational_expression GE shift_expression

templated_equality_expression ::=
	templated_relational_expression
	| templated_equality_expression EQ templated_relational_expression
	| templated_equality_expression NE templated_relational_expression

templated_and_expression ::=
	templated_equality_expression
	| templated_and_expression '&' templated_equality_expression

templated_exclusive_or_expression ::=
	templated_and_expression
	| templated_exclusive_or_expression '^' templated_and_expression

templated_inclusive_or_expression ::=
	templated_exclusive_or_expression
	| templated_inclusive_or_expression '|' templated_exclusive_or_expression

templated_logical_and_expression ::=
	templated_inclusive_or_expression
	| templated_logical_and_expression LOG_AND templated_inclusive_or_expression

templated_logical_or_expression ::=
	templated_logical_and_expression
	| templated_logical_or_expression LOG_OR templated_logical_and_expression

templated_conditional_expression ::=
	templated_logical_or_expression
	| templated_logical_or_expression '?' templated_expression ':' templated_assignment_expression

templated_assignment_expression ::=
	templated_conditional_expression
	| templated_logical_or_expression assignment_operator templated_assignment_expression
	| templated_throw_expression

templated_expression ::=
	templated_assignment_expression
	| templated_expression_list ',' templated_assignment_expression

templated_expression_list ::=
	templated_assignment_expression
	| templated_expression_list ',' templated_assignment_expression

looping_statement ::=
	start_search looped_statement

looped_statement ::=
	statement
	| advance_search '+' looped_statement
	| advance_search '-'

statement ::=
	control_statement
	| compound_statement
	| declaration_statement
	| try_block

control_statement ::=
	labeled_statement
	| selection_statement
	| iteration_statement
	| jump_statement

labeled_statement ::=
	identifier_word ':' looping_statement
	| CASE constant_expression ':' looping_statement
	| DEFAULT ':' looping_statement

compound_statement ::=
	'{' statement_seq.opt '}'
	| '{' statement_seq.opt looping_statement '#' bang error '}'

statement_seq.opt ::=
	/* empty */
	| statement_seq.opt looping_statement
	| statement_seq.opt looping_statement '#' bang error ';'

selection_statement ::=
	IF '(' condition ')' looping_statement
	| IF '(' condition ')' looping_statement ELSE looping_statement
	| SWITCH '(' condition ')' looping_statement

condition.opt ::=
	/* empty */
	| condition

condition ::=
	parameter_declaration_list

iteration_statement ::=
	WHILE '(' condition ')' looping_statement
	| DO looping_statement WHILE '(' expression ')' ';'
	| FOR '(' for_init_statement condition.opt ';' expression.opt ')' looping_statement

for_init_statement ::=
	simple_declaration

jump_statement ::=
	BREAK ';'
	| CONTINUE ';'
	| RETURN expression.opt ';'
	| GOTO identifier ';'

declaration_statement ::=
	block_declaration

compound_declaration ::=
	'{' nest declaration_seq.opt '}'
	| '{' nest declaration_seq.opt util looping_declaration '#' bang error '}'

declaration_seq.opt ::=
	/* empty */
	| declaration_seq.opt util looping_declaration
	| declaration_seq.opt util looping_declaration '#' bang error ';'

looping_declaration ::=
	start_search1 looped_declaration

looped_declaration ::=
	declaration
	| advance_search '+' looped_declaration
	| advance_search '-'

declaration ::=
	block_declaration
	| function_definition
	| template_declaration
	| explicit_specialization
	| specialised_declaration

specialised_declaration ::=
	linkage_specification
	| namespace_definition
	| TEMPLATE specialised_declaration

block_declaration ::=
	simple_declaration
	| specialised_block_declaration

specialised_block_declaration ::=
	asm_definition
	| namespace_alias_definition
	| using_declaration
	| using_directive
	| TEMPLATE specialised_block_declaration

simple_declaration ::=
	';'
	| init_declaration ';'
	| init_declarations ';'
	| decl_specifier_prefix simple_declaration

suffix_built_in_decl_specifier.raw ::=
	built_in_type_specifier
	| suffix_built_in_decl_specifier.raw built_in_type_specifier
	| suffix_built_in_decl_specifier.raw decl_specifier_suffix

suffix_built_in_decl_specifier ::=
	suffix_built_in_decl_specifier.raw
	| TEMPLATE suffix_built_in_decl_specifier

suffix_named_decl_specifier ::=
	scoped_id
	| elaborate_type_specifier
	| suffix_named_decl_specifier decl_specifier_suffix

suffix_named_decl_specifier.bi ::=
	suffix_named_decl_specifier
	| suffix_named_decl_specifier suffix_built_in_decl_specifier.raw

suffix_named_decl_specifiers ::=
	suffix_named_decl_specifier.bi
	| suffix_named_decl_specifiers suffix_named_decl_specifier.bi

suffix_named_decl_specifiers.sf ::=
	scoped_special_function_id
	| suffix_named_decl_specifiers
	| suffix_named_decl_specifiers scoped_special_function_id

suffix_decl_specified_ids ::=
	suffix_built_in_decl_specifier
	| suffix_built_in_decl_specifier suffix_named_decl_specifiers.sf
	| suffix_named_decl_specifiers.sf

suffix_decl_specified_scope ::=
	suffix_named_decl_specifiers SCOPE
	| suffix_built_in_decl_specifier suffix_named_decl_specifiers SCOPE
	| suffix_built_in_decl_specifier SCOPE

decl_specifier_affix ::=
	storage_class_specifier
	| function_specifier
	| FRIEND
	| TYPEDEF
	| cv_qualifier

decl_specifier_suffix ::=
	decl_specifier_affix

decl_specifier_prefix ::=
	decl_specifier_affix
	| TEMPLATE decl_specifier_prefix

storage_class_specifier ::=
	REGISTER
	| STATIC
	| MUTABLE
	| EXTERN
	| AUTO

function_specifier ::=
	EXPLICIT
	| INLINE
	| VIRTUAL

type_specifier ::=
	simple_type_specifier
	| elaborate_type_specifier
	| cv_qualifier

elaborate_type_specifier ::=
	class_specifier
	| enum_specifier
	| elaborated_type_specifier
	| TEMPLATE elaborate_type_specifier

simple_type_specifier ::=
	scoped_id
	| built_in_type_specifier

built_in_type_specifier ::=
	CHAR
	| WCHAR_T
	| BOOL
	| SHORT
	| INT
	| LONG
	| SIGNED
	| UNSIGNED
	| FLOAT
	| DOUBLE
	| VOID

elaborated_type_specifier ::=
	elaborated_class_specifier
	| elaborated_enum_specifier
	| TYPENAME scoped_id

elaborated_enum_specifier ::=
	ENUM scoped_id

enum_specifier ::=
	ENUM scoped_id enumerator_clause
	| ENUM enumerator_clause

enumerator_clause ::=
	'{' enumerator_list_ecarb
	| '{' enumerator_list enumerator_list_ecarb
	| '{' enumerator_list ',' enumerator_definition_ecarb

enumerator_list_ecarb ::=
	'}'
	| bang error '}'

enumerator_definition_ecarb ::=
	'}'
	| bang error '}'

enumerator_definition_filler ::=
	/* empty */
	| bang error ','

enumerator_list_head ::=
	enumerator_definition_filler
	| enumerator_list ',' enumerator_definition_filler

enumerator_list ::=
	enumerator_list_head enumerator_definition

enumerator_definition ::=
	enumerator
	| enumerator '=' constant_expression

enumerator ::=
	identifier

namespace_definition ::=
	NAMESPACE scoped_id compound_declaration
	| NAMESPACE compound_declaration

namespace_alias_definition ::=
	NAMESPACE scoped_id '=' scoped_id ';'

using_declaration ::=
	USING declarator_id ';'
	| USING TYPENAME declarator_id ';'

using_directive ::=
	USING NAMESPACE scoped_id ';'

asm_definition ::=
	ASM '(' string ')' ';'

linkage_specification ::=
	EXTERN string looping_declaration
	| EXTERN string compound_declaration

init_declarations ::=
	assignment_expression ',' init_declaration
	| init_declarations ',' init_declaration

init_declaration ::=
	assignment_expression

star_ptr_operator ::=
	'*'
	| star_ptr_operator cv_qualifier

nested_ptr_operator ::=
	star_ptr_operator
	| id_scope nested_ptr_operator

ptr_operator ::=
	'&'
	| nested_ptr_operator
	| global_scope nested_ptr_operator

ptr_operator_seq ::=
	ptr_operator
	| ptr_operator ptr_operator_seq

ptr_operator_seq.opt ::=
	/* empty */
	| ptr_operator ptr_operator_seq.opt

cv_qualifier_seq.opt ::=
	/* empty */
	| cv_qualifier_seq.opt cv_qualifier

cv_qualifier ::=
	CONST
	| VOLATILE

type_id ::=
	type_specifier abstract_declarator.opt
	| type_specifier type_id

abstract_declarator.opt ::=
	/* empty */
	| ptr_operator abstract_declarator.opt
	| direct_abstract_declarator

direct_abstract_declarator.opt ::=
	/* empty */
	| direct_abstract_declarator

direct_abstract_declarator ::=
	direct_abstract_declarator.opt parenthesis_clause
	| direct_abstract_declarator.opt '[' ']'
	| direct_abstract_declarator.opt '[' constant_expression ']'

parenthesis_clause ::=
	parameters_clause cv_qualifier_seq.opt
	| parameters_clause cv_qualifier_seq.opt exception_specification

parameters_clause ::=
	'(' parameter_declaration_clause ')'

parameter_declaration_clause ::=
	/* empty */
	| parameter_declaration_list
	| parameter_declaration_list ELLIPSIS

parameter_declaration_list ::=
	parameter_declaration
	| parameter_declaration_list ',' parameter_declaration

abstract_pointer_declaration ::=
	ptr_operator_seq
	| multiplicative_expression star_ptr_operator ptr_operator_seq.opt

abstract_parameter_declaration ::=
	abstract_pointer_declaration
	| and_expression '&'
	| and_expression '&' abstract_pointer_declaration

special_parameter_declaration ::=
	abstract_parameter_declaration
	| abstract_parameter_declaration '=' assignment_expression
	| ELLIPSIS

parameter_declaration ::=
	assignment_expression
	| special_parameter_declaration
	| decl_specifier_prefix parameter_declaration

templated_parameter_declaration ::=
	templated_assignment_expression
	| templated_abstract_declaration
	| templated_abstract_declaration '=' templated_assignment_expression
	| decl_specifier_prefix templated_parameter_declaration

templated_abstract_declaration ::=
	abstract_pointer_declaration
	| templated_and_expression '&'
	| templated_and_expression '&' abstract_pointer_declaration

function_definition ::=
	ctor_definition
	| func_definition

func_definition ::=
	assignment_expression function_try_block
	| assignment_expression function_body
	| decl_specifier_prefix func_definition

ctor_definition ::=
	constructor_head function_try_block
	| constructor_head function_body
	| decl_specifier_prefix ctor_definition

constructor_head ::=
	bit_field_init_declaration
	| constructor_head ',' assignment_expression

function_try_block ::=
	TRY function_block handler_seq

function_block ::=
	ctor_initializer.opt function_body

function_body ::=
	compound_statement

initializer_clause ::=
	assignment_expression
	| braced_initializer

braced_initializer ::=
	'{' initializer_list '}'
	| '{' initializer_list ',' '}'
	| '{' '}'
	| '{' looping_initializer_clause '#' bang error '}'
	| '{' initializer_list ',' looping_initializer_clause '#' bang error '}'

initializer_list ::=
	looping_initializer_clause
	| initializer_list ',' looping_initializer_clause

looping_initializer_clause ::=
	start_search looped_initializer_clause

looped_initializer_clause ::=
	initializer_clause
	| advance_search '+' looped_initializer_clause
	| advance_search '-'

colon_mark ::=
	':'

elaborated_class_specifier ::=
	class_key scoped_id
	| class_key scoped_id colon_mark error

class_specifier_head ::=
	class_key scoped_id colon_mark base_specifier_list '{'
	| class_key ':' base_specifier_list '{'
	| class_key scoped_id '{'
	| class_key '{'

class_key ::=
	CLASS
	| STRUCT
	| UNION

class_specifier ::=
	class_specifier_head member_specification.opt '}'
	| class_specifier_head member_specification.opt util looping_member_declaration '#' bang error '}'

member_specification.opt ::=
	/* empty */
	| member_specification.opt util looping_member_declaration
	| member_specification.opt util looping_member_declaration '#' bang error ';'

looping_member_declaration ::=
	start_search looped_member_declaration

looped_member_declaration ::=
	member_declaration
	| advance_search '+' looped_member_declaration
	| advance_search '-'

member_declaration ::=
	accessibility_specifier
	| simple_member_declaration
	| function_definition
	| using_declaration
	| template_declaration

simple_member_declaration ::=
	';'
	| assignment_expression ';'
	| constructor_head ';'
	| member_init_declarations ';'
	| decl_specifier_prefix simple_member_declaration

member_init_declarations ::=
	assignment_expression ',' member_init_declaration
	| constructor_head ',' bit_field_init_declaration
	| member_init_declarations ',' member_init_declaration

member_init_declaration ::=
	assignment_expression
	| bit_field_init_declaration

accessibility_specifier ::=
	access_specifier ':'

bit_field_declaration ::=
	assignment_expression ':' bit_field_width
	| ':' bit_field_width

bit_field_width ::=
	logical_or_expression
	| logical_or_expression '?' bit_field_width ':' bit_field_width

bit_field_init_declaration ::=
	bit_field_declaration
	| bit_field_declaration '=' initializer_clause

base_specifier_list ::=
	base_specifier
	| base_specifier_list ',' base_specifier

base_specifier ::=
	scoped_id
	| access_specifier base_specifier
	| VIRTUAL base_specifier

access_specifier ::=
	PRIVATE
	| PROTECTED
	| PUBLIC

conversion_function_id ::=
	OPERATOR conversion_type_id

conversion_type_id ::=
	type_specifier ptr_operator_seq.opt
	| type_specifier conversion_type_id

ctor_initializer.opt ::=
	/* empty */
	| ctor_initializer

ctor_initializer ::=
	':' mem_initializer_list
	| ':' mem_initializer_list bang error

mem_initializer_list ::=
	mem_initializer
	| mem_initializer_list_head mem_initializer

mem_initializer_list_head ::=
	mem_initializer_list ','
	| mem_initializer_list bang error ','

mem_initializer ::=
	mem_initializer_id '(' expression_list.opt ')'

mem_initializer_id ::=
	scoped_id

operator_function_id ::=
	OPERATOR operator

operator ::=
	NEW
	| DELETE
	| '+'
	| '-'
	| '*'
	| '/'
	| '%'
	| '^'
	| '&'
	| '|'
	| '~'
	| '!'
	| '='
	| '<'
	| '>'
	| ASS_ADD
	| ASS_SUB
	| ASS_MUL
	| ASS_DIV
	| ASS_MOD
	| ASS_XOR
	| ASS_AND
	| ASS_OR
	| SHL
	| SHR
	| ASS_SHR
	| ASS_SHL
	| EQ
	| NE
	| LE
	| GE
	| LOG_AND
	| LOG_OR
	| INC
	| DEC
	| ','
	| ARROW_STAR
	| ARROW
	| '(' ')'
	| '[' ']'

template_declaration ::=
	template_parameter_clause declaration
	| EXPORT template_declaration

template_parameter_clause ::=
	TEMPLATE '<' template_parameter_list '>'

template_parameter_list ::=
	template_parameter
	| template_parameter_list ',' template_parameter

template_parameter ::=
	simple_type_parameter
	| simple_type_parameter '=' type_id
	| templated_type_parameter
	| templated_type_parameter '=' identifier
	| templated_parameter_declaration
	| bang error

simple_type_parameter ::=
	CLASS
	| TYPENAME

templated_type_parameter ::=
	template_parameter_clause CLASS
	| template_parameter_clause CLASS identifier

template_id ::=
	TEMPLATE identifier '<' template_argument_list '>'
	| TEMPLATE template_id

template_argument_list ::=
	template_argument
	| template_argument_list ',' template_argument

template_argument ::=
	templated_parameter_declaration

explicit_specialization ::=
	TEMPLATE '<' '>' declaration

try_block ::=
	TRY compound_statement handler_seq

handler_seq ::=
	handler
	| handler handler_seq

handler ::=
	CATCH '(' exception_declaration ')' compound_statement

exception_declaration ::=
	parameter_declaration

throw_expression ::=
	THROW
	| THROW assignment_expression

templated_throw_expression ::=
	THROW
	| THROW templated_assignment_expression

exception_specification ::=
	THROW '(' ')'
	| THROW '(' type_id_list ')'

type_id_list ::=
	type_id
	| type_id_list ',' type_id

advance_search ::=
	error

bang ::=
	/* empty */

mark ::=
	/* empty */

nest ::=
	/* empty */

start_search ::=
	/* empty */

start_search1 ::=
	/* empty */

util ::=

// Tokens

ASM ::= "asm"
AUTO ::= "auto"
BOOL ::= "bool"
BREAK ::= "break"
CASE ::= "case"
CATCH ::= "catch"
CHAR ::= "char"
CLASS ::= "class"
CONST ::= "const"
CONST_CAST ::= "const_cast"
CONTINUE ::= "continue"
DEFAULT ::= "default"
DELETE ::= "delete"
DO ::= "do"
DOUBLE ::= "double"
DYNAMIC_CAST ::= "dynamic_cast"
ELSE ::= "else"
ENUM ::= "enum"
EXPLICIT ::= "explicit"
EXPORT ::= "export"
EXTERN ::= "extern"
FALSE ::= "false"
FLOAT ::= "float"
FOR ::= "for"
FRIEND ::= "friend"
GOTO ::= "goto"
IF ::= "if"
INLINE ::= "inline"
INT ::= "int"
LONG ::= "long"
MUTABLE ::= "mutable"
NAMESPACE ::= "namespace"
NEW ::= "new"
OPERATOR ::= "operator"
PRIVATE ::= "private"
PROTECTED ::= "protected"
PUBLIC ::= "public"
REGISTER ::= "register"
REINTERPRET_CAST ::= "reinterpret_cast"
RETURN ::= "return"
SHORT ::= "short"
SIGNED ::= "signed"
SIZEOF ::= "sizeof"
STATIC ::= "static"
STATIC_CAST ::= "static_cast"
STRUCT ::= "struct"
SWITCH ::= "switch"
TEMPLATE ::= "template"
THIS ::= "this"
THROW ::= "throw"
TRUE ::= "true"
TRY ::= "try"
TYPEDEF ::= "typedef"
TYPEID ::= "typeid"
TYPENAME ::= "typename"
UNION ::= "union"
UNSIGNED ::= "unsigned"
USING ::= "using"
VIRTUAL ::= "virtual"
VOID ::= "void"
VOLATILE ::= "volatile"
WCHAR_T ::= "wchar_t"
WHILE ::= "while"

SCOPE ::= "::"
ELLIPSIS ::= "..."
SHL ::= "<<"
SHR ::= ">>"
EQ ::= "=="
NE ::= "!="
LE ::= "<="
GE ::= ">="
LOG_AND ::= "&&"
LOG_OR ::= "||"
INC ::= "++"
DEC ::= "--"
ARROW_STAR ::= "->*"
ARROW ::= "->"
DOT_STAR ::= ".*"
ASS_ADD ::= "+="
ASS_SUB ::= "-="
ASS_MUL ::= "*="
ASS_DIV ::= "/="
ASS_MOD ::= "%="
ASS_XOR ::= "^="
ASS_AND ::= "&="
ASS_OR ::= "|="
ASS_SHR ::= ">>="
ASS_SHL ::= "<<="

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.