一键生成`Scope`文法解析器

Compiler of Scope

The C# source code of the compiler Scope is generated by bitzhuwei.GrammarFormat.

Grammar

// 7 VnRegulations:
Scope : '[' 'firstItem1' RangeItems ']' // [0]
      | '[^' 'firstItem2' RangeItems ']' // [1]
      | '[' 'firstItem1' ']' // [2]
      | '[^' 'firstItem2' ']' ; // [3]
RangeItems : RangeItems RangeItem // [4]
           | RangeItem ; // [5]
RangeItem : 'char' ; // [6]
// 3 VtPatterns:
'firstItem1' : %%<'['>\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\\\^|[_-~]%% ; // [0]
'firstItem2' : %%<'[^'>\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\[|\\\\|]|\^|\\\^|[_-~]%% ; // [1]
'char' : %%\\u[0-9]{4}|\\t|\\n|\\r|\\-|[ -Z]|\\\[|\\\\|\\\]|\^|\\\^|[_-~]%% ; // [2]

Lexical Analyzer States

\
BeginToken 'char'

[ -Z]
BeginToken 'char'
ExtendToken 'char'

^
BeginToken 'char'
ExtendToken 'char'

[_-~]
BeginToken 'char'
ExtendToken 'char'

[
BeginToken '[''[^'
ExtendToken '['

]
BeginToken ']'
ExtendToken ']'

u

t
ExtendToken 'char'

n
ExtendToken 'char'

r
ExtendToken 'char'

Unsupported markdown: list

ExtendToken 'char'

[
ExtendToken 'char'

\
ExtendToken 'char'

]
ExtendToken 'char'

^
ExtendToken 'char'

\
AcceptPrevious '['
BeginToken 'firstItem1'

[ -Z]
AcceptPrevious '['
BeginToken 'firstItem1'
ExtendToken 'firstItem1'

[
AcceptPrevious '['
BeginToken 'firstItem1'
ExtendToken 'firstItem1'

]
AcceptPrevious '['
BeginToken 'firstItem1'
ExtendToken 'firstItem1'

[_-~]
AcceptPrevious '['
BeginToken 'firstItem1'
ExtendToken 'firstItem1'

^
ExtendToken '[^'

[0-9]

u

t
ExtendToken 'firstItem1'

n
ExtendToken 'firstItem1'

r
ExtendToken 'firstItem1'

Unsupported markdown: list

ExtendToken 'firstItem1'

\
ExtendToken 'firstItem1'

^
ExtendToken 'firstItem1'

\
AcceptPrevious '[^'
BeginToken 'firstItem2'

[ -Z]
AcceptPrevious '[^'
BeginToken 'firstItem2'
ExtendToken 'firstItem2'

[
AcceptPrevious '[^'
BeginToken 'firstItem2'
ExtendToken 'firstItem2'

]
AcceptPrevious '[^'
BeginToken 'firstItem2'
ExtendToken 'firstItem2'

^
AcceptPrevious '[^'
BeginToken 'firstItem2'
ExtendToken 'firstItem2'

[_-~]
AcceptPrevious '[^'
BeginToken 'firstItem2'
ExtendToken 'firstItem2'

[0-9]

[0-9]

u

t
ExtendToken 'firstItem2'

n
ExtendToken 'firstItem2'

r
ExtendToken 'firstItem2'

Unsupported markdown: list

ExtendToken 'firstItem2'

\
ExtendToken 'firstItem2'

^
ExtendToken 'firstItem2'

[0-9]

[0-9]

[0-9]

[0-9]
ExtendToken 'char'

[0-9]

[0-9]

[0-9]
ExtendToken 'firstItem1'

[0-9]

[0-9]
ExtendToken 'firstItem2'

DFA0 wholeStart

DFA1 {9}

DFA2 {1}

DFA3 {1}

DFA4 {1}

DFA5 {2}

DFA6 {1}

DFA7 {1}

DFA8 {1}

DFA9 {1}

DFA10 {1}

DFA11 {1}

DFA12 {1}

DFA13 {1}

DFA14 {1}

DFA15 {1}

DFA16 {7}

DFA17 {1}

DFA18 {1}

DFA19 {1}

DFA20 {1}

DFA21 {1}

DFA22 {1}

DFA23 {1}

DFA24 {1}

DFA25 {1}

DFA26 {1}

DFA27 {1}

DFA28 {1}

DFA29 {1}

DFA30 {7}

DFA31 {1}

DFA32 {1}

DFA33 {1}

DFA34 {1}

DFA35 {1}

DFA36 {1}

DFA37 {1}

DFA38 {1}

DFA39 {1}

DFA40 {1}

DFA41 {1}

DFA42 {1}

DFA43 {1}

DFA44 {1}

DFA45 {1}

DFA46 {1}

DFA47 {1}

DFA48 {1}

DFA49 {1}

DFA50 {1}

DFA51 {1}

DFA52 {1}

DFA53 {1}

nullable

[0]: nullable( Scope ) = False
[1]: nullable( '[' ) = False
[2]: nullable( 'firstItem1' ) = False
[3]: nullable( RangeItems ) = False
[4]: nullable( ']' ) = False
[5]: nullable( '[^' ) = False
[6]: nullable( 'firstItem2' ) = False
[7]: nullable( RangeItem ) = False
[8]: nullable( 'char' ) = False
[9]: nullable(  ) = True

FIRST

[0]: FIRST( Scope ) = { '[' '[^' }
[1]: FIRST( RangeItems ) = { 'char' }
[2]: FIRST( RangeItem ) = { 'char' }
[3]: FIRST( '[' ) = { '[' }
[4]: FIRST( 'firstItem1' ) = { 'firstItem1' }
[5]: FIRST( ']' ) = { ']' }
[6]: FIRST( '[^' ) = { '[^' }
[7]: FIRST( 'firstItem2' ) = { 'firstItem2' }
[8]: FIRST( 'char' ) = { 'char' }
[9]: FIRST(  ) = { empty }
[10]: FIRST( '[' 'firstItem1' RangeItems ']' ) = { '[' }
[11]: FIRST( '[^' 'firstItem2' RangeItems ']' ) = { '[^' }
[12]: FIRST( '[' 'firstItem1' ']' ) = { '[' }
[13]: FIRST( '[^' 'firstItem2' ']' ) = { '[^' }
[14]: FIRST( RangeItems RangeItem ) = { 'char' }

FOLLOW

[0]: FOLLOW( Scope ) = { }
[1]: FOLLOW( RangeItems ) = { ']' 'char' }
[2]: FOLLOW( RangeItem ) = { ']' 'char' }

LL(1) Syntax Machine

状态 '[' 'firstItem1' ']' '[^' 'firstItem2' 'char'
Scope R[0] R[2] R[1] R[3]
RangeItems R[4] R[5]
RangeItem R[6]

LR(0) Syntax Machine

状态 '[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥' Scope RangeItems RangeItem
0 S2 S3 G1
1 完成
2 S4
3 S5
4 S7 S9 G6 G8
5 S11 S9 G10 G8
6 S12 S9 G13
7 R[2] R[2] R[2] R[2] R[2] R[2] R[2]
8 R[5] R[5] R[5] R[5] R[5] R[5] R[5]
9 R[6] R[6] R[6] R[6] R[6] R[6] R[6]
10 S14 S9 G13
11 R[3] R[3] R[3] R[3] R[3] R[3] R[3]
12 R[0] R[0] R[0] R[0] R[0] R[0] R[0]
13 R[4] R[4] R[4] R[4] R[4] R[4] R[4]
14 R[1] R[1] R[1] R[1] R[1] R[1] R[1]

Scope

'['

'[^'

'firstItem1'

'firstItem2'

RangeItems

']'

RangeItem

'char'

RangeItems

']'

RangeItem

'char'

']'

RangeItem

'char'

']'

RangeItem

'char'

'¥'

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[2]= Scope : '[' 'firstItem1' ']' ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[5]= RangeItems : RangeItem ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[6]= RangeItem : 'char' ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[3]= Scope : '[^' 'firstItem2' ']' ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[0]= Scope : '[' 'firstItem1' RangeItems ']' ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[4]= RangeItems : RangeItems RangeItem ;

'[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥'
R[1]= Scope : '[^' 'firstItem2' RangeItems ']' ;

LR(1) syntax states

syntaxState0
[-1] ResolvedScope> : ⏳ Scope ;
[0] Scope : ⏳ '[' 'firstItem1' RangeItems ']' ;
[1] Scope : ⏳ '[^' 'firstItem2' RangeItems ']' ;
[2] Scope : ⏳ '[' 'firstItem1' ']' ;
[3] Scope : ⏳ '[^' 'firstItem2' ']' ;

syntaxState1
[-1] ResolvedScope> : Scope ⏳ ;

syntaxState2
[0] Scope : '[' ⏳ 'firstItem1' RangeItems ']' ;
[2] Scope : '[' ⏳ 'firstItem1' ']' ;

syntaxState3
[1] Scope : '[^' ⏳ 'firstItem2' RangeItems ']' ;
[3] Scope : '[^' ⏳ 'firstItem2' ']' ;

syntaxState4
[0] Scope : '[' 'firstItem1' ⏳ RangeItems ']' ;
[2] Scope : '[' 'firstItem1' ⏳ ']' ;
[4] RangeItems : ⏳ RangeItems RangeItem ;
[5] RangeItems : ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState5
[1] Scope : '[^' 'firstItem2' ⏳ RangeItems ']' ;
[3] Scope : '[^' 'firstItem2' ⏳ ']' ;
[4] RangeItems : ⏳ RangeItems RangeItem ;
[5] RangeItems : ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState6
[0] Scope : '[' 'firstItem1' RangeItems ⏳ ']' ;
[4] RangeItems : RangeItems ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState7
[2] Scope : '[' 'firstItem1' ']' ⏳ ;

syntaxState8
[5] RangeItems : RangeItem ⏳ ;

syntaxState9
[6] RangeItem : 'char' ⏳ ;

syntaxState10
[1] Scope : '[^' 'firstItem2' RangeItems ⏳ ']' ;
[4] RangeItems : RangeItems ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState11
[3] Scope : '[^' 'firstItem2' ']' ⏳ ;

syntaxState12
[0] Scope : '[' 'firstItem1' RangeItems ']' ⏳ ;

syntaxState13
[4] RangeItems : RangeItems RangeItem ⏳ ;

syntaxState14
[1] Scope : '[^' 'firstItem2' RangeItems ']' ⏳ ;

SLR(1) Syntax Machine

状态 '[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥' Scope RangeItems RangeItem
0 S2 S3 G1
1 完成
2 S4
3 S5
4 S7 S9 G6 G8
5 S11 S9 G10 G8
6 S12 S9 G13
7 R[2]
8 R[5] R[5]
9 R[6] R[6]
10 S14 S9 G13
11 R[3]
12 R[0]
13 R[4] R[4]
14 R[1]

Scope

'['

'[^'

'firstItem1'

'firstItem2'

RangeItems

']'

RangeItem

'char'

RangeItems

']'

RangeItem

'char'

']'

RangeItem

'char'

']'

RangeItem

'char'

'¥'

'¥'
R[2]= Scope : '[' 'firstItem1' ']' ;

']' 'char'
R[5]= RangeItems : RangeItem ;

']' 'char'
R[6]= RangeItem : 'char' ;

'¥'
R[3]= Scope : '[^' 'firstItem2' ']' ;

'¥'
R[0]= Scope : '[' 'firstItem1' RangeItems ']' ;

']' 'char'
R[4]= RangeItems : RangeItems RangeItem ;

'¥'
R[1]= Scope : '[^' 'firstItem2' RangeItems ']' ;

LR(1) syntax states

syntaxState0
[-1] ResolvedScope> : ⏳ Scope ;
[0] Scope : ⏳ '[' 'firstItem1' RangeItems ']' ;
[1] Scope : ⏳ '[^' 'firstItem2' RangeItems ']' ;
[2] Scope : ⏳ '[' 'firstItem1' ']' ;
[3] Scope : ⏳ '[^' 'firstItem2' ']' ;

syntaxState1
[-1] ResolvedScope> : Scope ⏳ ;

syntaxState2
[0] Scope : '[' ⏳ 'firstItem1' RangeItems ']' ;
[2] Scope : '[' ⏳ 'firstItem1' ']' ;

syntaxState3
[1] Scope : '[^' ⏳ 'firstItem2' RangeItems ']' ;
[3] Scope : '[^' ⏳ 'firstItem2' ']' ;

syntaxState4
[0] Scope : '[' 'firstItem1' ⏳ RangeItems ']' ;
[2] Scope : '[' 'firstItem1' ⏳ ']' ;
[4] RangeItems : ⏳ RangeItems RangeItem ;
[5] RangeItems : ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState5
[1] Scope : '[^' 'firstItem2' ⏳ RangeItems ']' ;
[3] Scope : '[^' 'firstItem2' ⏳ ']' ;
[4] RangeItems : ⏳ RangeItems RangeItem ;
[5] RangeItems : ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState6
[0] Scope : '[' 'firstItem1' RangeItems ⏳ ']' ;
[4] RangeItems : RangeItems ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState7
[2] Scope : '[' 'firstItem1' ']' ⏳ ;

syntaxState8
[5] RangeItems : RangeItem ⏳ ;

syntaxState9
[6] RangeItem : 'char' ⏳ ;

syntaxState10
[1] Scope : '[^' 'firstItem2' RangeItems ⏳ ']' ;
[4] RangeItems : RangeItems ⏳ RangeItem ;
[6] RangeItem : ⏳ 'char' ;

syntaxState11
[3] Scope : '[^' 'firstItem2' ']' ⏳ ;

syntaxState12
[0] Scope : '[' 'firstItem1' RangeItems ']' ⏳ ;

syntaxState13
[4] RangeItems : RangeItems RangeItem ⏳ ;

syntaxState14
[1] Scope : '[^' 'firstItem2' RangeItems ']' ⏳ ;

LALR(1) Syntax Machine

状态 '[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥' Scope RangeItems RangeItem
0 S2 S3 G1
1 完成
2 S4
3 S5
4 S7 S9 G6 G8
5 S11 S9 G10 G8
6 S12 S9 G13
7 R[2]
8 R[5] R[5]
9 R[6] R[6]
10 S14 S9 G13
11 R[3]
12 R[0]
13 R[4] R[4]
14 R[1]

Scope

'['

'[^'

'firstItem1'

'firstItem2'

RangeItems

']'

RangeItem

'char'

RangeItems

']'

RangeItem

'char'

']'

RangeItem

'char'

']'

RangeItem

'char'

'¥'

'¥'
R[2]= Scope : '[' 'firstItem1' ']' ;

']' 'char'
R[5]= RangeItems : RangeItem ;

']' 'char'
R[6]= RangeItem : 'char' ;

'¥'
R[3]= Scope : '[^' 'firstItem2' ']' ;

'¥'
R[0]= Scope : '[' 'firstItem1' RangeItems ']' ;

']' 'char'
R[4]= RangeItems : RangeItems RangeItem ;

'¥'
R[1]= Scope : '[^' 'firstItem2' RangeItems ']' ;

LR(1) syntax states

syntaxState0
[-1] ResolvedScope> : ⏳ Scope ; '¥'
[0] Scope : ⏳ '[' 'firstItem1' RangeItems ']' ; '¥'
[1] Scope : ⏳ '[^' 'firstItem2' RangeItems ']' ; '¥'
[2] Scope : ⏳ '[' 'firstItem1' ']' ; '¥'
[3] Scope : ⏳ '[^' 'firstItem2' ']' ; '¥'

syntaxState1
[-1] ResolvedScope> : Scope ⏳ ; '¥'

syntaxState2
[0] Scope : '[' ⏳ 'firstItem1' RangeItems ']' ; '¥'
[2] Scope : '[' ⏳ 'firstItem1' ']' ; '¥'

syntaxState3
[1] Scope : '[^' ⏳ 'firstItem2' RangeItems ']' ; '¥'
[3] Scope : '[^' ⏳ 'firstItem2' ']' ; '¥'

syntaxState4
[0] Scope : '[' 'firstItem1' ⏳ RangeItems ']' ; '¥'
[2] Scope : '[' 'firstItem1' ⏳ ']' ; '¥'
[4] RangeItems : ⏳ RangeItems RangeItem ; ']' 'char'
[5] RangeItems : ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState5
[1] Scope : '[^' 'firstItem2' ⏳ RangeItems ']' ; '¥'
[3] Scope : '[^' 'firstItem2' ⏳ ']' ; '¥'
[4] RangeItems : ⏳ RangeItems RangeItem ; ']' 'char'
[5] RangeItems : ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState6
[0] Scope : '[' 'firstItem1' RangeItems ⏳ ']' ; '¥'
[4] RangeItems : RangeItems ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState7
[2] Scope : '[' 'firstItem1' ']' ⏳ ; '¥'

syntaxState8
[5] RangeItems : RangeItem ⏳ ; ']' 'char'

syntaxState9
[6] RangeItem : 'char' ⏳ ; ']' 'char'

syntaxState10
[1] Scope : '[^' 'firstItem2' RangeItems ⏳ ']' ; '¥'
[4] RangeItems : RangeItems ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState11
[3] Scope : '[^' 'firstItem2' ']' ⏳ ; '¥'

syntaxState12
[0] Scope : '[' 'firstItem1' RangeItems ']' ⏳ ; '¥'

syntaxState13
[4] RangeItems : RangeItems RangeItem ⏳ ; ']' 'char'

syntaxState14
[1] Scope : '[^' 'firstItem2' RangeItems ']' ⏳ ; '¥'

LR(1) Syntax Machine

状态 '[' 'firstItem1' ']' '[^' 'firstItem2' 'char' '¥' Scope RangeItems RangeItem
0 S2 S3 G1
1 完成
2 S4
3 S5
4 S7 S9 G6 G8
5 S11 S9 G10 G8
6 S12 S9 G13
7 R[2]
8 R[5] R[5]
9 R[6] R[6]
10 S14 S9 G13
11 R[3]
12 R[0]
13 R[4] R[4]
14 R[1]

Scope

'['

'[^'

'firstItem1'

'firstItem2'

RangeItems

']'

RangeItem

'char'

RangeItems

']'

RangeItem

'char'

']'

RangeItem

'char'

']'

RangeItem

'char'

'¥'

'¥'
R[2]= Scope : '[' 'firstItem1' ']' ;

']' 'char'
R[5]= RangeItems : RangeItem ;

']' 'char'
R[6]= RangeItem : 'char' ;

'¥'
R[3]= Scope : '[^' 'firstItem2' ']' ;

'¥'
R[0]= Scope : '[' 'firstItem1' RangeItems ']' ;

']' 'char'
R[4]= RangeItems : RangeItems RangeItem ;

'¥'
R[1]= Scope : '[^' 'firstItem2' RangeItems ']' ;

LR(1) syntax states

syntaxState0
[-1] ResolvedScope> : ⏳ Scope ; '¥'
[0] Scope : ⏳ '[' 'firstItem1' RangeItems ']' ; '¥'
[1] Scope : ⏳ '[^' 'firstItem2' RangeItems ']' ; '¥'
[2] Scope : ⏳ '[' 'firstItem1' ']' ; '¥'
[3] Scope : ⏳ '[^' 'firstItem2' ']' ; '¥'

syntaxState1
[-1] ResolvedScope> : Scope ⏳ ; '¥'

syntaxState2
[0] Scope : '[' ⏳ 'firstItem1' RangeItems ']' ; '¥'
[2] Scope : '[' ⏳ 'firstItem1' ']' ; '¥'

syntaxState3
[1] Scope : '[^' ⏳ 'firstItem2' RangeItems ']' ; '¥'
[3] Scope : '[^' ⏳ 'firstItem2' ']' ; '¥'

syntaxState4
[0] Scope : '[' 'firstItem1' ⏳ RangeItems ']' ; '¥'
[2] Scope : '[' 'firstItem1' ⏳ ']' ; '¥'
[4] RangeItems : ⏳ RangeItems RangeItem ; ']' 'char'
[5] RangeItems : ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState5
[1] Scope : '[^' 'firstItem2' ⏳ RangeItems ']' ; '¥'
[3] Scope : '[^' 'firstItem2' ⏳ ']' ; '¥'
[4] RangeItems : ⏳ RangeItems RangeItem ; ']' 'char'
[5] RangeItems : ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState6
[0] Scope : '[' 'firstItem1' RangeItems ⏳ ']' ; '¥'
[4] RangeItems : RangeItems ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState7
[2] Scope : '[' 'firstItem1' ']' ⏳ ; '¥'

syntaxState8
[5] RangeItems : RangeItem ⏳ ; ']' 'char'

syntaxState9
[6] RangeItem : 'char' ⏳ ; ']' 'char'

syntaxState10
[1] Scope : '[^' 'firstItem2' RangeItems ⏳ ']' ; '¥'
[4] RangeItems : RangeItems ⏳ RangeItem ; ']' 'char'
[6] RangeItem : ⏳ 'char' ; ']' 'char'

syntaxState11
[3] Scope : '[^' 'firstItem2' ']' ⏳ ; '¥'

syntaxState12
[0] Scope : '[' 'firstItem1' RangeItems ']' ⏳ ; '¥'

syntaxState13
[4] RangeItems : RangeItems RangeItem ⏳ ; ']' 'char'

syntaxState14
[1] Scope : '[^' 'firstItem2' RangeItems ']' ⏳ ; '¥'

End

posted @   BIT祝威  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
canvas start.

canvas end.



点击右上角即可分享
微信分享提示