首页 > 其他分享 >用于练习和测试的一些简单文法

用于练习和测试的一些简单文法

时间:2023-05-13 17:45:12浏览次数:35  
标签:specifier 文法 statement expression 练习 nonarray 测试 type qualifier

// GrammarName = ABB
// ExtractedType = BCounter
A : A '+' B | 'a' ;
B : 'b' ;
// GrammarName = SLR
// ExtractedType = SLR2
S : L '=' R | R ;
L : '*' R | 'id' ;
R : L ;
// GrammarName = Calc
// ExtractedType = FinalValue
Additive       : Additive '+' Multiplicative 
               | Additive '-' Multiplicative 
               | Multiplicative ;
Multiplicative : Multiplicative '*' Primary 
               | Multiplicative '/' Primary 
               | Primary ;
Primary        : '(' Additive ')' 
               | 'number' ;
//--------------------------------------------
'number'       : %%[0-9]+%% ; // 暂时只处理非负数的四则运算
PreRegex   : 'refVt' ;
// 'refVt'    : %%\<'([ -&]|\\'|[(-\[]|\\\\)+'\>%% ;
'refVt'    : %%(\\|[Y-\\])+%% ; 
// GrammarName=Grammar
// ExtractedType=GrammarDraft
//-------------Syntax Statements-----------------
StatementList         : StatementList Statement | Statement ;
Statement             : SyntaxProduction | LexiProduction ;
SyntaxProduction      : 'Vn' ':' CandidateList ';' ;
CandidateList         : CandidateList '|' Candidate | Candidate ;
Candidate             : VList | 'empty' ; // candidate is a list of V or the keyword(empty)
VList                 : VList V | V ;
V                     : 'Vn' | 'Vt' ; // V is Vn or Vt.
LexiProduction        : 'Vt' ':' 'pattern' ';' ;
//--------------Lexi Statements------------------
'Vn'                  : %%[a-zA-Z_][a-zA-Z0-9_]*%% ; // identifier
'Vt'                  : %%'([ -&]|\\'|[(-\[]|\\\\|[\]-~])+'%% ; // any char or \'
'pattern'             : %%[%]{2}[ -~]([^%]|%[^%])*[%]{2}%% ; // %%xxx%%
// GrammarName = Ints
// ExtractedType = IntArray
Ints : Ints Int | Int ;
Int : 'integer' ;
'integer' : %%[0-9]+%% ;
// GrammarName = Ints2
// ExtractedType = Ints2Array
Ints : Ints ',' Int | Int ;
Int : 'integer' ;
'integer' : %%[0-9]+%% ;
// GrammarName = LALR1Error
// ExtractedType = LALR1Error2
S : 'a' A 'd' | 'b' B 'd' | 'a' B 'e' | 'b' A 'e' ;
A : 'c' ;
B : 'c' ;
// GrammarName = Numbers
// ExtractedType = NumberArray
Numbers : Numbers Number | Number ;
Number  : 'integer' | 'float' ;
'integer' : %%[0-9]+%% ;
'float'   : %%[0-9]+\.[0-9]+%% ;
// something(...) between %%...%%
// GrammarName=Pattern
// ExtractedType=TokenDraft
// VnRegulations:
Pattern    : PreRegex Regex PostRegex ;
PreRegex   : 'refVt' | empty ;
PostRegex  : '/' Regex | empty ;
Regex      : Regex '|' Bunch | Bunch;
Bunch      : Bunch Unit | Unit ;
Unit       : 'char' Repeat | '.' Repeat | 'scope' Repeat | '(' Regex ')' Repeat ;
Repeat     : '?' | '+' | '*' | '{' 'min' UpperBound '}' | empty ;
UpperBound : ',' 'max' | ',' | empty ;
// VtRegex:
'refVt'    : %%\<'([ -&]|\\'|[(-~])+'\>%% ; // start with <' and end with '> 
'min'      : %%<'{'>[0-9]+%% ;
'max'      : %%<','>[0-9]+%% ;
// 'char' is a letter or an escape
'char'     : %%[ !"#%&',]|-|[0-9:;<=>@A-Z_`a-z~]|\\[$()*+]|\\-|\\[./<>?]|\\\[|\\\\|\\\]|\\\^|\\\{|\\\||\\\}|\\u[0-9a-fA-F]{4}%% ;
//'scope'    : %%\[((firstLetter1)(char)*|\^(firstLetter2)(char)*)\]%% ; // a-z or A-Z or ...
//firstLetter1 = \\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\\\^|[_-~]
//firstLetter2 = \\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\^|\\\^|[_-~]
//char =         \\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\\\[|\\\\|\\\]|\^|\\\^|[_-~]
'scope'    : %%\[((\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\\\^|[_-~])(\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\\\[|\\\\|\\\]|\^|\\\^|[_-~])*|\^(\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\^|\\\^|[_-~])(\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\\\[|\\\\|\\\]|\^|\\\^|[_-~])*)\]%% ; // a-z or A-Z or ...
// GrammarName = Postfix
// ExtractedType = Postfix2
// 4 VnRegulations:
Items : Items Item | Item ;
Item : 'entityId' '=' 'refEntity' ;
// 2 VtPatterns:
'entityId'  : %%[0-9]+/=%% ;
'refEntity' : %%[0-9]+%% ;
// GrammarName = Prefix
// ExtractedType = Prefix2
// 4 VnRegulations:
Items : Items Item | Item ;
Item : 'entityId' '=' 'refEntity' ;
// 2 VtPatterns:
'entityId'  : %%[0-9]+%% ;
'refEntity' : %%<'='>[0-9]+%% ;
// GrammarName = SAB
// ExtractedType = SAB2
S : A 'a' 's' | B 'b' 's' | 'd' ;
A : 'a' ;
B : 'c' | empty;
// GrammarName = Scope
// ExtractedType = ResolvedScope
Scope : '[' 'firstItem1' RangeItems ']' ;
Scope : '[^' 'firstItem2' RangeItems ']' ;
Scope : '[' 'firstItem1' ']' ;
Scope : '[^' 'firstItem2' ']' ;
RangeItems : RangeItems RangeItem | RangeItem ;
RangeItem : 'char' ;

// \uNNNN \t \n \r 口 ! " # $ % & '
// ( ) * + , - . /
// 0 1 2 3 4 5 6 7 8 9
// : ; < = > ? @
// A B C D E F G H I J K L M
// N O P Q R S T U V W X Y Z
// [ \ ] ^ _ `
// a b c d e f g h i j k l m
// n o p q r s t u v w x y z
// { | } ~

// escape: \ ^
'firstItem1' : %%<'['>\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\\\^|[_-~]%% ;
// escape: \
'firstItem2' : %%<'[^'>\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\^|\\\^|[_-~]%% ;
// escape: [ \ ]
'char' : %%\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\\\[|\\\\|\\\]|\^|\\\^|[_-~]%% ;
//GrammarName=SES
//ExtractedType=SES2
S : N V N ; //[0]
N : 's' // [1]
  | 't' // [2]
  | 'g' // [3]
  | 'w' ;//[4]
V : 'e' // [5]
  | 'd' ;// [6]
V : 'Vt' ;
'Vt' : %%'([ -&]|\\'|[(-\[]|\\\\|[\]-~])+'%% ;
// GrammarName=GLSL
// ExtractedType=ShaderModel
translation_unit : external_declaration ;
translation_unit : translation_unit external_declaration ;
external_declaration : function_definition ;
external_declaration : declaration ;
function_definition : function_prototype compound_statement_no_new_scope ;
variable_identifier : 'identifier' ;
primary_expression : variable_identifier ;
primary_expression : 'number' ;
primary_expression : BOOLCONSTANT ;
primary_expression : '(' expression ')' ;
BOOLCONSTANT : 'true' ;
BOOLCONSTANT : 'false' ;
postfix_expression : primary_expression ;
postfix_expression : postfix_expression '[' integer_expression ']' ;
postfix_expression : function_call ;
postfix_expression : postfix_expression '.' FIELD_SELECTION ;
postfix_expression : postfix_expression '++' ;
postfix_expression : postfix_expression '--' ;
FIELD_SELECTION : 'identifier' ;
integer_expression : expression ;
function_call : function_call_or_method ;
function_call_or_method : function_call_generic ;
function_call_generic : function_call_header_with_parameters ')' ;
function_call_generic : function_call_header_no_parameters ')' ;
function_call_header_no_parameters : function_call_header 'void' ;
function_call_header_no_parameters : function_call_header ;
function_call_header_with_parameters : function_call_header assignment_expression ;
function_call_header_with_parameters : function_call_header_with_parameters ',' assignment_expression ;
function_call_header : function_identifier '(' ;
function_identifier : type_specifier ;
function_identifier : postfix_expression ;
unary_expression : postfix_expression ;
unary_expression : '++' unary_expression ;
unary_expression : '--' unary_expression ;
unary_expression : unary_operator unary_expression ;
unary_operator : '+' ;
unary_operator : '-' ;
unary_operator : '!' ;
unary_operator : '~' ;
multiplicative_expression : unary_expression ;
multiplicative_expression : multiplicative_expression '*' unary_expression ;
multiplicative_expression : multiplicative_expression '/' unary_expression ;
multiplicative_expression : multiplicative_expression '%' unary_expression ;
additive_expression : multiplicative_expression ;
additive_expression : additive_expression '+' multiplicative_expression ;
additive_expression : additive_expression '-' multiplicative_expression ;
shift_expression : additive_expression ;
shift_expression : shift_expression '<<' additive_expression ;
shift_expression : shift_expression '>>' additive_expression ;
relational_expression : shift_expression ;
relational_expression : relational_expression '<' shift_expression ;
relational_expression : relational_expression '>' shift_expression ;
relational_expression : relational_expression '<=' shift_expression ;
relational_expression : relational_expression '>=' shift_expression ;
equality_expression : relational_expression ;
equality_expression : equality_expression '==' relational_expression ;
equality_expression : equality_expression '!=' relational_expression ;
and_expression : equality_expression ;
and_expression : and_expression '&' equality_expression ;
exclusive_or_expression : and_expression ;
exclusive_or_expression : exclusive_or_expression '^' and_expression ;
inclusive_or_expression : exclusive_or_expression ;
inclusive_or_expression : inclusive_or_expression '|' exclusive_or_expression ;
logical_and_expression : inclusive_or_expression ;
logical_and_expression : logical_and_expression '&&' inclusive_or_expression ;
logical_xor_expression : logical_and_expression ;
logical_xor_expression : logical_xor_expression '^^' logical_and_expression ;
logical_or_expression : logical_xor_expression ;
logical_or_expression : logical_or_expression '||' logical_xor_expression ;
conditional_expression : logical_or_expression ;
conditional_expression : logical_or_expression '?' expression ':' assignment_expression ;
assignment_expression : conditional_expression ;
assignment_expression : unary_expression assignment_operator assignment_expression ;
assignment_operator : '=' ;
assignment_operator : '*=' ;
assignment_operator : '/=' ;
assignment_operator : '%=' ;
assignment_operator : '+=' ;
assignment_operator : '-=' ;
assignment_operator : '<<=' ;
assignment_operator : '>>=' ;
assignment_operator : '&=' ;
assignment_operator : '^=' ;
assignment_operator : '|=' ;
expression : assignment_expression ;
expression : expression ',' assignment_expression ;
constant_expression : conditional_expression ;
declaration : function_prototype ';' ;
declaration : init_declarator_list ';' ;
declaration : 'precision' precision_qualifier type_specifier ';' ;
declaration : type_qualifier 'identifier' '{' struct_declaration_list '}' ';' ;
declaration : type_qualifier 'identifier' '{' struct_declaration_list '}' 'identifier' ';' ;
declaration : type_qualifier 'identifier' '{' struct_declaration_list '}' 'identifier' array_specifier ';' ;
declaration : type_qualifier ';' ;
declaration : type_qualifier 'identifier' ';' ;
declaration : type_qualifier 'identifier' identifier_list ';' ;
identifier_list : ',' 'identifier' ;
identifier_list : identifier_list ',' 'identifier' ;
function_prototype : function_declarator ')' ;
function_declarator : function_header ;
function_declarator : function_header_with_parameters ;
function_header_with_parameters : function_header parameter_declaration ;
function_header_with_parameters : function_header_with_parameters ',' parameter_declaration ;
function_header : fully_specified_type 'identifier' '(' ;
parameter_declarator : type_specifier 'identifier' ;
parameter_declarator : type_specifier 'identifier' array_specifier ;
parameter_declaration : type_qualifier parameter_declarator ;
parameter_declaration : parameter_declarator ;
parameter_declaration : type_qualifier parameter_type_specifier ;
parameter_declaration : parameter_type_specifier ;
parameter_type_specifier : type_specifier ;
init_declarator_list : single_declaration ;
init_declarator_list : init_declarator_list ',' 'identifier' ;
init_declarator_list : init_declarator_list ',' 'identifier' array_specifier ;
init_declarator_list : init_declarator_list ',' 'identifier' array_specifier '=' initializer ;
init_declarator_list : init_declarator_list ',' 'identifier' '=' initializer ;
single_declaration : fully_specified_type ;
single_declaration : fully_specified_type 'identifier' ;
single_declaration : fully_specified_type 'identifier' array_specifier ;
single_declaration : fully_specified_type 'identifier' array_specifier '=' initializer ;
single_declaration : fully_specified_type 'identifier' '=' initializer ;
fully_specified_type : type_specifier ;
fully_specified_type : type_qualifier type_specifier ;
invariant_qualifier : 'invariant' ;
interpolation_qualifier : 'smooth' ;
interpolation_qualifier : 'flat' ;
interpolation_qualifier : 'noperspective' ;
layout_qualifier : 'layout' '(' layout_qualifier_id_list ')' ;
layout_qualifier_id_list : layout_qualifier_id ;
layout_qualifier_id_list : layout_qualifier_id_list ',' layout_qualifier_id ;
layout_qualifier_id : 'identifier' ;
layout_qualifier_id : 'identifier' '=' 'number' ;
precise_qualifier : 'precise' ;
type_qualifier : single_type_qualifier ;
type_qualifier : type_qualifier single_type_qualifier ;
single_type_qualifier : storage_qualifier ;
single_type_qualifier : layout_qualifier ;
single_type_qualifier : precision_qualifier ;
single_type_qualifier : interpolation_qualifier ;
single_type_qualifier : invariant_qualifier ;
single_type_qualifier : precise_qualifier ;
storage_qualifier : 'const' ;
storage_qualifier : 'inout' ;
storage_qualifier : 'in' ;
storage_qualifier : 'out' ;
storage_qualifier : 'centroid' ;
storage_qualifier : 'patch' ;
storage_qualifier : 'sample' ;
storage_qualifier : 'uniform' ;
storage_qualifier : 'buffer' ;
storage_qualifier : 'shared' ;
storage_qualifier : 'coherent' ;
storage_qualifier : 'volatile' ;
storage_qualifier : 'restrict' ;
storage_qualifier : 'readonly' ;
storage_qualifier : 'writeonly' ;
storage_qualifier : 'subroutine' ;
storage_qualifier : 'subroutine' '(' type_name_list ')' ;
type_name_list : 'userDefinedType' ;
type_name_list : type_name_list ',' 'userDefinedType' ;
type_specifier : type_specifier_nonarray ;
type_specifier : type_specifier_nonarray array_specifier ;
array_specifier : '[' ']' ;
array_specifier : '[' constant_expression ']' ;
array_specifier : array_specifier '[' ']' ;
array_specifier : array_specifier '[' constant_expression ']' ;
type_specifier_nonarray : 'void' ;
type_specifier_nonarray : 'float' ;
type_specifier_nonarray : 'double' ;
type_specifier_nonarray : 'int' ;
type_specifier_nonarray : 'uint' ;
type_specifier_nonarray : 'bool' ;
type_specifier_nonarray : 'vec2' ;
type_specifier_nonarray : 'vec3' ;
type_specifier_nonarray : 'vec4' ;
type_specifier_nonarray : 'dvec2' ;
type_specifier_nonarray : 'dvec3' ;
type_specifier_nonarray : 'dvec4' ;
type_specifier_nonarray : 'bvec2' ;
type_specifier_nonarray : 'bvec3' ;
type_specifier_nonarray : 'bvec4' ;
type_specifier_nonarray : 'ivec2' ;
type_specifier_nonarray : 'ivec3' ;
type_specifier_nonarray : 'ivec4' ;
type_specifier_nonarray : 'uvec2' ;
type_specifier_nonarray : 'uvec3' ;
type_specifier_nonarray : 'uvec4' ;
type_specifier_nonarray : 'mat2' ;
type_specifier_nonarray : 'mat3' ;
type_specifier_nonarray : 'mat4' ;
type_specifier_nonarray : 'mat2x2' ;
type_specifier_nonarray : 'mat2x3' ;
type_specifier_nonarray : 'mat2x4' ;
type_specifier_nonarray : 'mat3x2' ;
type_specifier_nonarray : 'mat3x3' ;
type_specifier_nonarray : 'mat3x4' ;
type_specifier_nonarray : 'mat4x2' ;
type_specifier_nonarray : 'mat4x3' ;
type_specifier_nonarray : 'mat4x4' ;
type_specifier_nonarray : 'dmat2' ;
type_specifier_nonarray : 'dmat3' ;
type_specifier_nonarray : 'dmat4' ;
type_specifier_nonarray : 'dmat2x2' ;
type_specifier_nonarray : 'dmat2x3' ;
type_specifier_nonarray : 'dmat2x4' ;
type_specifier_nonarray : 'dmat3x2' ;
type_specifier_nonarray : 'dmat3x3' ;
type_specifier_nonarray : 'dmat3x4' ;
type_specifier_nonarray : 'dmat4x2' ;
type_specifier_nonarray : 'dmat4x3' ;
type_specifier_nonarray : 'dmat4x4' ;
type_specifier_nonarray : 'atomic_uint' ;
type_specifier_nonarray : 'sampler1D' ;
type_specifier_nonarray : 'sampler2D' ;
type_specifier_nonarray : 'sampler3D' ;
type_specifier_nonarray : 'samplerCube' ;
type_specifier_nonarray : 'sampler1DShadow' ;
type_specifier_nonarray : 'sampler2DShadow' ;
type_specifier_nonarray : 'samplerCubeShadow' ;
type_specifier_nonarray : 'sampler1DArray' ;
type_specifier_nonarray : 'sampler2DArray' ;
type_specifier_nonarray : 'sampler1DArrayShadow' ;
type_specifier_nonarray : 'sampler2DArrayShadow' ;
type_specifier_nonarray : 'samplerCubeArray' ;
type_specifier_nonarray : 'samplerCubeArrayShadow' ;
type_specifier_nonarray : 'isampler1D' ;
type_specifier_nonarray : 'isampler2D' ;
type_specifier_nonarray : 'isampler3D' ;
type_specifier_nonarray : 'isamplerCube' ;
type_specifier_nonarray : 'isampler1DArray' ;
type_specifier_nonarray : 'isampler2DArray' ;
type_specifier_nonarray : 'isamplerCubeArray' ;
type_specifier_nonarray : 'usampler1D' ;
type_specifier_nonarray : 'usampler2D' ;
type_specifier_nonarray : 'usampler3D' ;
type_specifier_nonarray : 'usamplerCube' ;
type_specifier_nonarray : 'usampler1DArray' ;
type_specifier_nonarray : 'usampler2DArray' ;
type_specifier_nonarray : 'usamplerCubeArray' ;
type_specifier_nonarray : 'sampler2DRect' ;
type_specifier_nonarray : 'sampler2DRectShadow' ;
type_specifier_nonarray : 'isampler2DRect' ;
type_specifier_nonarray : 'usampler2DRect' ;
type_specifier_nonarray : 'samplerBuffer' ;
type_specifier_nonarray : 'isamplerBuffer' ;
type_specifier_nonarray : 'usamplerBuffer' ;
type_specifier_nonarray : 'sampler2DMS' ;
type_specifier_nonarray : 'isampler2DMS' ;
type_specifier_nonarray : 'usampler2DMS' ;
type_specifier_nonarray : 'sampler2DMSArray' ;
type_specifier_nonarray : 'isampler2DMSArray' ;
type_specifier_nonarray : 'usampler2DMSArray' ;
type_specifier_nonarray : 'image1D' ;
type_specifier_nonarray : 'iimage1D' ;
type_specifier_nonarray : 'uimage1D' ;
type_specifier_nonarray : 'image2D' ;
type_specifier_nonarray : 'iimage2D' ;
type_specifier_nonarray : 'uimage2D' ;
type_specifier_nonarray : 'image3D' ;
type_specifier_nonarray : 'iimage3D' ;
type_specifier_nonarray : 'uimage3D' ;
type_specifier_nonarray : 'image2DRect' ;
type_specifier_nonarray : 'iimage2DRect' ;
type_specifier_nonarray : 'uimage2DRect' ;
type_specifier_nonarray : 'imageCube' ;
type_specifier_nonarray : 'iimageCube' ;
type_specifier_nonarray : 'uimageCube' ;
type_specifier_nonarray : 'imageBuffer' ;
type_specifier_nonarray : 'iimageBuffer' ;
type_specifier_nonarray : 'uimageBuffer' ;
type_specifier_nonarray : 'image1DArray' ;
type_specifier_nonarray : 'iimage1DArray' ;
type_specifier_nonarray : 'uimage1DArray' ;
type_specifier_nonarray : 'image2DArray' ;
type_specifier_nonarray : 'iimage2DArray' ;
type_specifier_nonarray : 'uimage2DArray' ;
type_specifier_nonarray : 'imageCubeArray' ;
type_specifier_nonarray : 'iimageCubeArray' ;
type_specifier_nonarray : 'uimageCubeArray' ;
type_specifier_nonarray : 'image2DMS' ;
type_specifier_nonarray : 'iimage2DMS' ;
type_specifier_nonarray : 'uimage2DMS' ;
type_specifier_nonarray : 'image2DMSArray' ;
type_specifier_nonarray : 'iimage2DMSArray' ;
type_specifier_nonarray : 'uimage2DMSArray' ;
type_specifier_nonarray : struct_specifier ;
type_specifier_nonarray : 'userDefinedType' ;
precision_qualifier : 'high_precision' ;
precision_qualifier : 'medium_precision' ;
precision_qualifier : 'low_precision' ;
// semantic parsing needed
struct_specifier : 'struct' type_name '{' struct_declaration_list '}' ;
type_name : 'identifier' ;
struct_specifier : 'struct' '{' struct_declaration_list '}' ;
struct_declaration_list : struct_declaration ;
struct_declaration_list : struct_declaration_list struct_declaration ;
struct_declaration : type_specifier struct_declarator_list ';' ;
struct_declaration : type_qualifier type_specifier struct_declarator_list ';' ;
struct_declarator_list : struct_declarator ;
struct_declarator_list : struct_declarator_list ',' struct_declarator ;
struct_declarator : 'identifier' ;
struct_declarator : 'identifier' array_specifier ;
initializer : assignment_expression ;
initializer : '{' initializer_list '}' ;
initializer : '{' initializer_list ',' '}' ;
initializer_list : initializer ;
initializer_list : initializer_list ',' initializer ;
declaration_statement : declaration ;
statement : compound_statement ;
statement : simple_statement ;
simple_statement : declaration_statement ;
simple_statement : expression_statement ;
simple_statement : selection_statement ;
simple_statement : switch_statement ;
simple_statement : case_label ;
simple_statement : iteration_statement ;
simple_statement : jump_statement ;
compound_statement : '{' '}' ;
compound_statement : '{' statement_list '}' ;
statement_no_new_scope : compound_statement_no_new_scope ;
statement_no_new_scope : simple_statement ;
compound_statement_no_new_scope : '{' '}' ;
compound_statement_no_new_scope : '{' statement_list '}' ;
statement_list : statement ;
statement_list : statement_list statement ;
expression_statement : ';' ;
expression_statement : expression ';' ;
selection_statement : 'if' '(' expression ')' selection_rest_statement ;
selection_rest_statement : statement 'else' statement ;
selection_rest_statement : statement ;
condition : expression ;
condition : fully_specified_type 'identifier' '=' initializer ;
switch_statement : 'switch' '(' expression ')' '{' switch_statement_list '}' ;
switch_statement_list : statement_list ;
case_label : 'case' expression ':' ;
case_label : 'default' ':' ;
iteration_statement : 'while' '(' condition ')' statement_no_new_scope ;
iteration_statement : 'do' statement 'while' '(' expression ')' ';' ;
iteration_statement : 'for' '(' for_init_statement for_rest_statement ')' statement_no_new_scope ;
for_init_statement : expression_statement ;
for_init_statement : declaration_statement ;
conditionopt : condition ;
for_rest_statement : conditionopt ';' ;
for_rest_statement : conditionopt ';' expression ;
jump_statement : 'continue' ';' ;
jump_statement : 'break' ';' ;
jump_statement : 'return' ';' ;
jump_statement : 'return' expression ';' ;
jump_statement : 'discard' ';' ;
// lexical statements
'identifier' : %%[a-z-A-Z_][a-z-A-Z0-9_]*%% ;
'number'     : %%[-+]?[0-9]+([.][0-9]+)?([Ee][-+]?[0-9]+)?%% ;

标签:specifier,文法,statement,expression,练习,nonarray,测试,type,qualifier
From: https://www.cnblogs.com/bitzhuwei/p/some-grammars.html

相关文章

  • 一键生成`ABB`文法解析器
    CompilerofABBTheC#sourcecodeofthecompilerABBisgeneratedbybitzhuwei.GrammarFormat.Grammar//3VnRegulations:A:A'+'B//[0]|'a';//[1]B:'b';//[2]//0VtPatterns:LexicalAnalyzerStatesflowc......
  • 威纶触摸屏485直接控制监控台达vfd-m变频器程序 目前已测试成功台
    威纶触摸屏485直接控制监控台达vfd-m变频器程序目前已测试成功台达,三菱,施耐德变频器。功能很强大,道理也不复杂,只需两条通信线,可以实现在触摸屏或者电脑通过EB8000在线模拟模式下加usb转485转换头控制变频器正反转,停止,及频率设定,加减速,变频器加减速时间,频率上下限亦可设定,还能实现......
  • [信友队图灵杯中级组-D]基础循环结构练习题
    2023-5-13题目题目传送门难度&重要性(1~10):6.5题目来源信友队图灵杯题目算法构造解题思路我们可以知道,在一开始我们得到的\(a\)数组是\(1,2,3,\dotsn\)。所以我们可以看做是:题目让我们构造出一个\(b\)数组。因为数据是\(1\len\le10^3,1\leb_i\le10^5\)......
  • Burp Suite Professional / Community 2023.5 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.5(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • c++练习
    #include<iostream>usingnamespacestd;classtime{public: inthour; intminute; intsec;};intmain(){ timet1; cin>>t1.hour; cin>>t1.minute; cin>>t1.sec; cout<<t1.hour<<":"; cout<<t1.minute<<":......
  • 三菱FX3U-485ADP-MB通讯三种变频器程序 已实现测试的变频器:施
    三菱FX3U-485ADP-MB通讯三种变频器程序已实现测试的变频器:施耐德ATV312,三菱E700,台达VFD-M三款变频器,支持rtu的协议的变频器都可实现。需要硬件:FX3UPLC,FX3U-485ADP-MB通信扩展模块,施耐德ATV312变频器或台达vfd-m变频器或三菱E700变频器,fx3u-cnv-bd。通过modbusrtu通讯方式,可......
  • 西门子SMART200和三菱D700变频器485通讯例程 现已测试成
    西门子SMART200和三菱D700变频器485通讯例程现已测试成功施耐德ATV312,台达vfd-m,伟创,欧瑞变频器,支持rtu协议的变频器都可以实现。功能:通过MODBUS通信,SMARTPLC来控制三菱变频器的正反转,停止和频率的加减速及设定,输出频率输出电压的监控,配smart700触摸屏和mcgs两套屏程序。有完整......
  • 三菱FX3U4DA模拟量输出模块,使用ST结构化文本源代码制作的FB标准库文件,本人自己编写,上
    三菱FX3U4DA模拟量输出模块,使用ST结构化文本源代码制作的FB标准库文件,本人自己编写,上机测试正常,一个Plc可以最多带7个模块,直接程序中重复调用,简单易用。ID:7150629701091822......
  • Vulnhub之election靶机详细测试过程
    Election作者:jasonhuawen靶机信息名称:eLection:1URL:https://www.vulnhub.com/entry/election-1,503/识别IP地址─(kali㉿kali)-[~/Vulnhub/Election]└─$sudonetdiscover-ieth1-r192.168.56.0/24urrentlyscanning:192.168.56.0/24|ScreenView:U......
  • MySql学习日志三,测试小练习
    --跟着遇见狂神说mysql进行小练习--题目--目标:创建一个schoo1数据库--创建学生表(列,字段)使用Sql创建--学号int登入密码varchar(20)姓名,性別varchar(2),出生日期Cdatatime),家庭住址,email自己敲了一遍,成功了CREATETABLEIFNOTEXISTS`student`( `id`I......