|
|
@@ -1,1681 +0,0 @@
|
|
|
-REGEX AST /^token/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /^token/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /^token/
|
|
|
-Program {
|
|
|
- source: ^token
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- BOITest(hardFail: true)
|
|
|
- L0000: MatchLiteral(literal: "token")
|
|
|
- L0018: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(\w)?^token/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- Loop([0-1], greedy)
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- {
|
|
|
- MatchSet(positive, [0-9A-Z_a-z])
|
|
|
- }
|
|
|
- }
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(\w)?^token/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,DefineGroup,Loop,MatchSet}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5-6]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: false
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- Loop([0-1], greedy)
|
|
|
- <
|
|
|
- features: {DefineGroup,Loop,MatchSet}
|
|
|
- firstSet: [0-9A-Z_a-z]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0-1]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: true
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: false
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- <
|
|
|
- features: {DefineGroup,MatchSet}
|
|
|
- firstSet: [0-9A-Z_a-z] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [1]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- MatchSet(positive, [0-9A-Z_a-z])
|
|
|
- <
|
|
|
- features: {MatchSet}
|
|
|
- firstSet: [0-9A-Z_a-z] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [1]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [0-1]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-1]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(\w)?^token/
|
|
|
-Program {
|
|
|
- source: (\w)?^token
|
|
|
- flags:
|
|
|
- numGroups: 2
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: SyncToLiteralAndBackup(literal: "token" (with full map Boyer-Moore scanner), backup: [0-1])
|
|
|
- L0458: TryMatchSet(set: [0-9A-Z_a-z], failLabel: L04b8)
|
|
|
- L0498: DefineGroupFixed(groupId: 1, length: 1, noNeedToSave: false)
|
|
|
- L04b8: BOITest(hardFail: false)
|
|
|
- L04d0: MatchLiteral(literal: "token")
|
|
|
- L04e8: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /token/ {
|
|
|
- MatchLiteral("token")
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /token/ {
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
-}
|
|
|
-REGEX PROGRAM /token/
|
|
|
-Program {
|
|
|
- source: token
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: SyncToLiteralAndConsume(literal: "token" (with full map Boyer-Moore scanner))
|
|
|
- L0450: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /^^token/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /^^token/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /^^token/
|
|
|
-Program {
|
|
|
- source: ^^token
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- BOITest(hardFail: true)
|
|
|
- L0000: MatchLiteral(literal: "token")
|
|
|
- L0018: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /token^/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- BOL()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /token^/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [5]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /token^/
|
|
|
-Program {
|
|
|
- source: token^
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: SyncToLiteralAndConsume(literal: "token" (with full map Boyer-Moore scanner))
|
|
|
- L0450: BOITest(hardFail: true)
|
|
|
- L0468: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /token^token/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /token^token/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [10]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [5]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [5]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /token^token/
|
|
|
-Program {
|
|
|
- source: token^token
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: SyncToLiteralAndConsume(literal: "token" (with full map Boyer-Moore scanner))
|
|
|
- L0450: BOITest(hardFail: true)
|
|
|
- L0468: MatchLiteral(literal: "token")
|
|
|
- L0480: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /^token|^abc/ {
|
|
|
- Alt()
|
|
|
- {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("abc")
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /^token|^abc/ {
|
|
|
- Alt()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,Alt}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3-5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: false
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [a]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [3]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchLiteral("abc")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [a] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: false
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /^token|^abc/
|
|
|
-Program {
|
|
|
- source: ^token|^abc
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: Try(failLabel: L0060)
|
|
|
- L0018: BOITest(hardFail: false)
|
|
|
- L0030: MatchLiteral(literal: "token")
|
|
|
- L0048: Jump(targetLabel: L0090)
|
|
|
- L0060: BOITest(hardFail: false)
|
|
|
- L0078: MatchLiteral(literal: "abc")
|
|
|
- L0090: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(?!token)^abc/ {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- Assertion(negative)
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
- BOL()
|
|
|
- MatchLiteral("abc")
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(?!token)^abc/ {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,Assertion}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- Assertion(negative)
|
|
|
- <
|
|
|
- features: {MatchLiteral,Assertion}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [3]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: false
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [a]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [3]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- MatchLiteral("abc")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [a] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(?!token)^abc/
|
|
|
-Program {
|
|
|
- source: (?!token)^abc
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: BeginAssertion(isNegation: true, nextLabel: L0048, minBodyGroupId: 1, maxBodyGroupId: -1)
|
|
|
- L0020: MatchLiteral(literal: "token")
|
|
|
- L0038: EndAssertion()
|
|
|
- L0048: BOITest(hardFail: true)
|
|
|
- L0060: MatchLiteral(literal: "abc")
|
|
|
- L0078: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(?=^abc)/ {
|
|
|
- Assertion(positive)
|
|
|
- {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("abc")
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(?=^abc)/ {
|
|
|
- Assertion(positive)
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,Assertion}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [a]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [3-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- MatchLiteral("abc")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [a] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(?=^abc)/
|
|
|
-Program {
|
|
|
- source: (?=^abc)
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: BeginAssertion(isNegation: false, nextLabel: L0060, minBodyGroupId: 1, maxBodyGroupId: -1)
|
|
|
- L0020: BOITest(hardFail: true)
|
|
|
- L0038: MatchLiteral(literal: "abc")
|
|
|
- L0050: EndAssertion()
|
|
|
- L0060: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(^token)/ {
|
|
|
- DefineGroup(1)
|
|
|
- {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("token")
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(^token)/ {
|
|
|
- DefineGroup(1)
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,DefineGroup}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [t]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [5]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- MatchLiteral("token")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [t] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [5]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(^token)/
|
|
|
-Program {
|
|
|
- source: (^token)
|
|
|
- flags:
|
|
|
- numGroups: 2
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- BOITest(hardFail: true)
|
|
|
- L0000: MatchLiteral(literal: "token")
|
|
|
- L0018: DefineGroupFixed(groupId: 1, length: 5, noNeedToSave: true)
|
|
|
- L0038: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(^a)+/ {
|
|
|
- Loop([1-inf], greedy)
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchChar('a')
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(^a)+/ {
|
|
|
- Loop([1-inf], greedy)
|
|
|
- <
|
|
|
- features: {BOL,MatchChar,Concat,DefineGroup,Loop}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [1-inf]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: false
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- <
|
|
|
- features: {BOL,MatchChar,Concat,DefineGroup}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [1]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchChar,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [1]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [a]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [1-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchChar('a')
|
|
|
- <
|
|
|
- features: {MatchChar}
|
|
|
- firstSet: [a] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [1]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(^a)+/
|
|
|
-Program {
|
|
|
- source: (^a)+
|
|
|
- flags:
|
|
|
- numGroups: 2
|
|
|
- numLoops: 1
|
|
|
- instructions: {
|
|
|
- L0000: SyncToCharAndBackup(c: 'a', backup: [0-inf])
|
|
|
- L0020: BeginLoopFixedGroupLastIteration(loopId: 0, repeats: [1-inf], exitLabel: L0098, hasOuterLoops: false, hasInnerNondet: false, length: 1, groupId: 1, noNeedToSave: true)
|
|
|
- L0050: BOITest(hardFail: false)
|
|
|
- L0068: MatchChar(c: 'a')
|
|
|
- L0080: RepeatLoopFixedGroupLastIteration(beginLabel: L0020)
|
|
|
- L0098: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(?=^)/ {
|
|
|
- Assertion(positive)
|
|
|
- {
|
|
|
- BOL()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(?=^)/ {
|
|
|
- Assertion(positive)
|
|
|
- <
|
|
|
- features: {BOL,Assertion}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(?=^)/
|
|
|
-Program {
|
|
|
- source: (?=^)
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: BeginAssertion(isNegation: false, nextLabel: L0048, minBodyGroupId: 1, maxBodyGroupId: -1)
|
|
|
- L0020: BOITest(hardFail: true)
|
|
|
- L0038: EndAssertion()
|
|
|
- L0048: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(^)/ {
|
|
|
- DefineGroup(1)
|
|
|
- {
|
|
|
- BOL()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(^)/ {
|
|
|
- DefineGroup(1)
|
|
|
- <
|
|
|
- features: {BOL,DefineGroup}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: true
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(^)/
|
|
|
-Program {
|
|
|
- source: (^)
|
|
|
- flags:
|
|
|
- numGroups: 2
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- BOITest(hardFail: true)
|
|
|
- L0000: DefineGroupFixed(groupId: 1, length: 0, noNeedToSave: true)
|
|
|
- L0020: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(^)+/ {
|
|
|
- Loop([1-inf], greedy)
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- {
|
|
|
- BOL()
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(^)+/ {
|
|
|
- Loop([1-inf], greedy)
|
|
|
- <
|
|
|
- features: {BOL,DefineGroup,Loop}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: false
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- DefineGroup(1)
|
|
|
- <
|
|
|
- features: {BOL,DefineGroup}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: false
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(^)+/
|
|
|
-Program {
|
|
|
- source: (^)+
|
|
|
- flags:
|
|
|
- numGroups: 2
|
|
|
- numLoops: 1
|
|
|
- instructions: {
|
|
|
- L0000: BeginLoop(loopId: 0, repeats: [1-inf], exitLabel: L0080, hasOuterLoops: false, hasInnerNondet: false, minBodyGroupId: 1, maxBodyGroupId: 1, greedy: true)
|
|
|
- L0030: BOITest(hardFail: false)
|
|
|
- L0048: DefineGroupFixed(groupId: 1, length: 0, noNeedToSave: false)
|
|
|
- L0068: RepeatLoop(beginLabel: L0000)
|
|
|
- L0080: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(?!^)/ {
|
|
|
- Assertion(negative)
|
|
|
- {
|
|
|
- BOL()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(?!^)/ {
|
|
|
- Assertion(negative)
|
|
|
- <
|
|
|
- features: {BOL,Assertion}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: false
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(?!^)/
|
|
|
-Program {
|
|
|
- source: (?!^)
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 0
|
|
|
- instructions: {
|
|
|
- L0000: BeginAssertion(isNegation: true, nextLabel: L0048, minBodyGroupId: 1, maxBodyGroupId: -1)
|
|
|
- L0020: BOITest(hardFail: false)
|
|
|
- L0038: EndAssertion()
|
|
|
- L0048: Succ()
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX AST /(?:^abc)+?/ {
|
|
|
- Loop([1-inf], non-greedy)
|
|
|
- {
|
|
|
- Concat()
|
|
|
- {
|
|
|
- BOL()
|
|
|
- MatchLiteral("abc")
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX ANNOTATED AST /(?:^abc)+?/ {
|
|
|
- Loop([1-inf], non-greedy)
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat,Loop}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0]
|
|
|
- thisConsumes: [3-inf]
|
|
|
- followConsumes: [0]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: false
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: false
|
|
|
- isNotInLoop: true
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- Concat()
|
|
|
- <
|
|
|
- features: {BOL,MatchLiteral,Concat}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- {
|
|
|
- BOL()
|
|
|
- <
|
|
|
- features: {BOL}
|
|
|
- firstSet: [\x00-\uffff]
|
|
|
- followSet: [a]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [0]
|
|
|
- followConsumes: [3-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: false
|
|
|
- isWord: false
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- MatchLiteral("abc")
|
|
|
- <
|
|
|
- features: {MatchLiteral}
|
|
|
- firstSet: [a] (exact)
|
|
|
- followSet: [\x00-\uffff]
|
|
|
- prevConsumes: [0-inf]
|
|
|
- thisConsumes: [3]
|
|
|
- followConsumes: [0-inf]
|
|
|
- isThisIrrefutable: false
|
|
|
- isFollowIrrefutable: true
|
|
|
- isWord: true
|
|
|
- isThisWillNotProgress: true
|
|
|
- isThisWillNotRegress: true
|
|
|
- isPrevWillNotProgress: false
|
|
|
- isPrevWillNotRegress: true
|
|
|
- isDeterministic: true
|
|
|
- isNotInLoop: false
|
|
|
- isNotNegated: true
|
|
|
- isAtLeastOnce: true
|
|
|
- hasInitialHardFailBOI: false
|
|
|
- >
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-REGEX PROGRAM /(?:^abc)+?/
|
|
|
-Program {
|
|
|
- source: (?:^abc)+?
|
|
|
- flags:
|
|
|
- numGroups: 1
|
|
|
- numLoops: 1
|
|
|
- instructions: {
|
|
|
- L0000: SyncToLiteralAndBackup(literal: "abc" (with linear map Boyer-Moore scanner), backup: [0-inf])
|
|
|
- L0050: BeginLoop(loopId: 0, repeats: [1-inf], exitLabel: L00c8, hasOuterLoops: false, hasInnerNondet: false, minBodyGroupId: 1, maxBodyGroupId: -1, greedy: false)
|
|
|
- L0080: BOITest(hardFail: true)
|
|
|
- L0098: MatchLiteral(literal: "abc")
|
|
|
- L00b0: RepeatLoop(beginLabel: L0050)
|
|
|
- L00c8: Succ()
|
|
|
- }
|
|
|
-}
|