[Feature] 写完了 打死不改了
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
int i=0,t,b=15;
|
||||
if(i>=10)
|
||||
if(k==9)
|
||||
h = 6;
|
||||
else
|
||||
{
|
||||
c=10;
|
||||
if(k<=95 && )
|
||||
}
|
||||
{
|
||||
int a =1*9+2;
|
||||
if(a>9){
|
||||
a=a+1;
|
||||
if(9>1){
|
||||
a=10;
|
||||
}
|
||||
a=2+2;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,17 +3,25 @@
|
||||
}
|
||||
|
||||
StatementList {
|
||||
Statement*
|
||||
LBrace Statement* RBrace
|
||||
}
|
||||
|
||||
@skip { Whitespace }
|
||||
|
||||
IfStatement {
|
||||
If LParen ConditionalExpression RParen PartIfStatement Else Statement | If LParen ConditionalExpression RParen Statement
|
||||
If ConditionPart PartIfStatement Else Statement | If ConditionPart Statement
|
||||
}
|
||||
|
||||
PartIfStatement {
|
||||
If LParen ConditionalExpression RParen PartIfStatement Else PartIfStatement | NoIfStatement
|
||||
If ConditionPart PartIfStatement Else PartIfStatement | NoIfStatement
|
||||
}
|
||||
|
||||
ConditionPart {
|
||||
LParen Condition RParen
|
||||
}
|
||||
|
||||
Condition {
|
||||
ConditionalExpression (LogicalOperator ConditionalExpression)*
|
||||
}
|
||||
|
||||
ConditionalExpression {
|
||||
@@ -45,7 +53,7 @@ ConstantDefinition {
|
||||
}
|
||||
|
||||
VariableDefinition {
|
||||
Type (Identifier | AssignmentStatement)+ (Comma Identifier | Comma AssignmentStatement)*
|
||||
Type (Identifier | AssignmentStatement) (Comma Identifier | Comma AssignmentStatement)*
|
||||
}
|
||||
|
||||
Type {
|
||||
@@ -69,7 +77,11 @@ Number {
|
||||
}
|
||||
|
||||
Operator {
|
||||
EuqalTo | NotEqualTo | LessThan | GreaterThan | LessThanOrEqual | GreaterThanOrEqual
|
||||
EqualTo | NotEqualTo | LessThan | GreaterThan | LessThanOrEqual | GreaterThanOrEqual
|
||||
}
|
||||
|
||||
LogicalOperator {
|
||||
And | Or
|
||||
}
|
||||
|
||||
@tokens {
|
||||
@@ -93,7 +105,7 @@ Operator {
|
||||
UnsignedNumber { $[0-9]+ }
|
||||
String { "\"" $[\x00-\x7F]* "\"" }
|
||||
Character { "'" $[\x00-\x7F] "'" }
|
||||
EuqalTo { "==" }
|
||||
EqualTo { "==" }
|
||||
NotEqualTo { "!=" }
|
||||
LessThan { "<" }
|
||||
GreaterThan { ">" }
|
||||
@@ -101,4 +113,6 @@ Operator {
|
||||
GreaterThanOrEqual { ">=" }
|
||||
Equal { "=" }
|
||||
Whitespace { $[\t\n\r]+ }
|
||||
And { "&&" }
|
||||
Or { "||" }
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
文法:
|
||||
key: Program
|
||||
0 Program ::= . StatementList
|
||||
key: StatementList
|
||||
1 StatementList ::= . LBrace Statement_0 RBrace
|
||||
key: IfStatement
|
||||
2 IfStatement ::= . If ConditionPart PartIfStatement Else Statement
|
||||
3 IfStatement ::= . If ConditionPart Statement
|
||||
key: PartIfStatement
|
||||
4 PartIfStatement ::= . If ConditionPart PartIfStatement Else PartIfStatement
|
||||
5 PartIfStatement ::= . NoIfStatement
|
||||
key: ConditionPart
|
||||
6 ConditionPart ::= . LParen Condition RParen
|
||||
key: Condition
|
||||
7 Condition ::= . ConditionalExpression LogicalOperator_ConditionalExpression_0
|
||||
key: ConditionalExpression
|
||||
8 ConditionalExpression ::= . Expression Operator Expression
|
||||
9 ConditionalExpression ::= . Expression
|
||||
key: Expression
|
||||
10 Expression ::= . Term AddLike_Term_0
|
||||
key: Statement
|
||||
11 Statement ::= . IfStatement
|
||||
12 Statement ::= . NoIfStatement
|
||||
key: NoIfStatement
|
||||
13 NoIfStatement ::= . AssignmentStatement Semicolon
|
||||
14 NoIfStatement ::= . VariableDefinition Semicolon
|
||||
15 NoIfStatement ::= . LBrace Statement_1 RBrace
|
||||
16 NoIfStatement ::= . ConstantDefinition Semicolon
|
||||
17 NoIfStatement ::= . Semicolon
|
||||
key: AssignmentStatement
|
||||
18 AssignmentStatement ::= . Identifier Equal Expression
|
||||
key: Term
|
||||
19 Term ::= . Factor MultiplyLike_Factor_0
|
||||
key: ConstantDefinition
|
||||
20 ConstantDefinition ::= . Const VariableDefinition
|
||||
key: VariableDefinition
|
||||
21 VariableDefinition ::= . Type Identifier__AssignmentStatement_0 Comma_Identifier__Comma_AssignmentStatement_0
|
||||
key: Type
|
||||
22 Type ::= . Int
|
||||
23 Type ::= . Char
|
||||
key: Factor
|
||||
24 Factor ::= . Identifier
|
||||
25 Factor ::= . Number
|
||||
26 Factor ::= . Character
|
||||
27 Factor ::= . LParen Expression RParen
|
||||
key: AddLike
|
||||
28 AddLike ::= . Plus
|
||||
29 AddLike ::= . Minus
|
||||
key: MultiplyLike
|
||||
30 MultiplyLike ::= . Multiply
|
||||
31 MultiplyLike ::= . Divide
|
||||
32 MultiplyLike ::= . Modulo
|
||||
key: Number
|
||||
33 Number ::= . UnsignedNumber
|
||||
34 Number ::= . Minus UnsignedNumber
|
||||
35 Number ::= . Plus UnsignedNumber
|
||||
key: Operator
|
||||
36 Operator ::= . EqualTo
|
||||
37 Operator ::= . NotEqualTo
|
||||
38 Operator ::= . LessThan
|
||||
39 Operator ::= . GreaterThan
|
||||
40 Operator ::= . LessThanOrEqual
|
||||
41 Operator ::= . GreaterThanOrEqual
|
||||
key: LogicalOperator
|
||||
42 LogicalOperator ::= . And
|
||||
43 LogicalOperator ::= . Or
|
||||
key: Statement_0
|
||||
44 Statement_0 ::= .
|
||||
45 Statement_0 ::= . Statement Statement_0
|
||||
key: LogicalOperator_ConditionalExpression_0
|
||||
46 LogicalOperator_ConditionalExpression_0 ::= .
|
||||
47 LogicalOperator_ConditionalExpression_0 ::= . LogicalOperator ConditionalExpression LogicalOperator_ConditionalExpression_0
|
||||
key: AddLike_Term_0
|
||||
48 AddLike_Term_0 ::= .
|
||||
49 AddLike_Term_0 ::= . AddLike Term AddLike_Term_0
|
||||
key: Statement_1
|
||||
50 Statement_1 ::= .
|
||||
51 Statement_1 ::= . Statement Statement_1
|
||||
key: MultiplyLike_Factor_0
|
||||
52 MultiplyLike_Factor_0 ::= .
|
||||
53 MultiplyLike_Factor_0 ::= . MultiplyLike Factor MultiplyLike_Factor_0
|
||||
key: Identifier__AssignmentStatement_0
|
||||
54 Identifier__AssignmentStatement_0 ::= . Identifier
|
||||
55 Identifier__AssignmentStatement_0 ::= . AssignmentStatement
|
||||
key: Comma_Identifier__Comma_AssignmentStatement_0
|
||||
56 Comma_Identifier__Comma_AssignmentStatement_0 ::= .
|
||||
57 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma Identifier Comma_Identifier__Comma_AssignmentStatement_0
|
||||
58 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma AssignmentStatement Comma_Identifier__Comma_AssignmentStatement_0
|
||||
@@ -0,0 +1,90 @@
|
||||
文法:
|
||||
key: Program
|
||||
0 Program ::= . StatementList
|
||||
key: StatementList
|
||||
1 StatementList ::= . LBrace Statement_0 RBrace
|
||||
key: IfStatement
|
||||
2 IfStatement ::= . If ConditionPart PartIfStatement Else Statement
|
||||
3 IfStatement ::= . If ConditionPart Statement
|
||||
key: PartIfStatement
|
||||
4 PartIfStatement ::= . If ConditionPart PartIfStatement Else PartIfStatement
|
||||
5 PartIfStatement ::= . NoIfStatement
|
||||
key: ConditionPart
|
||||
6 ConditionPart ::= . LParen Condition RParen
|
||||
key: Condition
|
||||
7 Condition ::= . ConditionalExpression LogicalOperator_ConditionalExpression_0
|
||||
key: ConditionalExpression
|
||||
8 ConditionalExpression ::= . Expression Operator Expression
|
||||
9 ConditionalExpression ::= . Expression
|
||||
key: Expression
|
||||
10 Expression ::= . Term AddLike_Term_0
|
||||
key: Statement
|
||||
11 Statement ::= . IfStatement
|
||||
12 Statement ::= . NoIfStatement
|
||||
key: NoIfStatement
|
||||
13 NoIfStatement ::= . AssignmentStatement Semicolon
|
||||
14 NoIfStatement ::= . VariableDefinition Semicolon
|
||||
15 NoIfStatement ::= . LBrace Statement_1 RBrace
|
||||
16 NoIfStatement ::= . ConstantDefinition Semicolon
|
||||
17 NoIfStatement ::= . Semicolon
|
||||
key: AssignmentStatement
|
||||
18 AssignmentStatement ::= . Identifier Equal Expression
|
||||
key: Term
|
||||
19 Term ::= . Factor MultiplyLike_Factor_0
|
||||
key: ConstantDefinition
|
||||
20 ConstantDefinition ::= . Const VariableDefinition
|
||||
key: VariableDefinition
|
||||
21 VariableDefinition ::= . Type Identifier__AssignmentStatement_0 Comma_Identifier__Comma_AssignmentStatement_0
|
||||
key: Type
|
||||
22 Type ::= . Int
|
||||
23 Type ::= . Char
|
||||
key: Factor
|
||||
24 Factor ::= . Identifier
|
||||
25 Factor ::= . Number
|
||||
26 Factor ::= . Character
|
||||
27 Factor ::= . LParen Expression RParen
|
||||
key: AddLike
|
||||
28 AddLike ::= . Plus
|
||||
29 AddLike ::= . Minus
|
||||
key: MultiplyLike
|
||||
30 MultiplyLike ::= . Multiply
|
||||
31 MultiplyLike ::= . Divide
|
||||
32 MultiplyLike ::= . Modulo
|
||||
key: Number
|
||||
33 Number ::= . UnsignedNumber
|
||||
34 Number ::= . Minus UnsignedNumber
|
||||
35 Number ::= . Plus UnsignedNumber
|
||||
key: Operator
|
||||
36 Operator ::= . EqualTo
|
||||
37 Operator ::= . NotEqualTo
|
||||
38 Operator ::= . LessThan
|
||||
39 Operator ::= . GreaterThan
|
||||
40 Operator ::= . LessThanOrEqual
|
||||
41 Operator ::= . GreaterThanOrEqual
|
||||
key: LogicalOperator
|
||||
42 LogicalOperator ::= . And
|
||||
43 LogicalOperator ::= . Or
|
||||
key: Statement_0
|
||||
44 Statement_0 ::= .
|
||||
45 Statement_0 ::= . Statement Statement_0
|
||||
key: LogicalOperator_ConditionalExpression_0
|
||||
46 LogicalOperator_ConditionalExpression_0 ::= .
|
||||
47 LogicalOperator_ConditionalExpression_0 ::= . LogicalOperator ConditionalExpression LogicalOperator_ConditionalExpression_0
|
||||
key: AddLike_Term_0
|
||||
48 AddLike_Term_0 ::= .
|
||||
49 AddLike_Term_0 ::= . AddLike Term AddLike_Term_0
|
||||
key: Statement_1
|
||||
50 Statement_1 ::= .
|
||||
51 Statement_1 ::= . Statement Statement_1
|
||||
key: MultiplyLike_Factor_0
|
||||
52 MultiplyLike_Factor_0 ::= .
|
||||
53 MultiplyLike_Factor_0 ::= . MultiplyLike Factor MultiplyLike_Factor_0
|
||||
key: Identifier__AssignmentStatement_0
|
||||
54 Identifier__AssignmentStatement_0 ::= . Identifier
|
||||
55 Identifier__AssignmentStatement_0 ::= . Identifier Identifier__AssignmentStatement_0
|
||||
56 Identifier__AssignmentStatement_0 ::= . AssignmentStatement
|
||||
57 Identifier__AssignmentStatement_0 ::= . AssignmentStatement Identifier__AssignmentStatement_0
|
||||
key: Comma_Identifier__Comma_AssignmentStatement_0
|
||||
58 Comma_Identifier__Comma_AssignmentStatement_0 ::= .
|
||||
59 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma Identifier Comma_Identifier__Comma_AssignmentStatement_0
|
||||
60 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma AssignmentStatement Comma_Identifier__Comma_AssignmentStatement_0
|
||||
Reference in New Issue
Block a user