Skip to content

Instantly share code, notes, and snippets.

@conartist6
Last active April 14, 2025 11:22
Show Gist options
  • Save conartist6/39dc3e65d4ecaf08156008d87ffa1798 to your computer and use it in GitHub Desktop.
Save conartist6/39dc3e65d4ecaf08156008d87ffa1798 to your computer and use it in GitHub Desktop.
BABLR `/[--]/` parse log
>>> init('https://bablr.org/languages/core/en/bablr-regex-pattern')
>>> startFrame('eat', m`< />`, {})
>>> advance(t`<!0:cstml { bablrLanguage: 'https://bablr.org/languages/core/en/bablr-regex-pattern' }>`)
>>> advance(t`<$_>`)
--> `@bablr/fragment`
>>> eat(m`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':Pattern />`)
>>> advance(t`.:`)
>>> startFrame('eat', m`.: <$'https://bablr.org/languages/core/en/bablr-regex-pattern':Pattern />`, { bind: false, allowEmpty: false })
>>> advance(t`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':Pattern>`)
--> Pattern
>>> eat(m`openToken: <*Punctuator '/' { balanced: '/', balancedSpan: 'Pattern' } />`)
>>> match(m`openToken: <*Punctuator '/' { balanced: '/', balancedSpan: 'Pattern' } />`)
>>> advance(t`openToken:`)
>>> startFrame('eat', m`openToken: <*Punctuator '/' { balanced: '/', balancedSpan: 'Pattern' } />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Punctuator { balanced: '/', balancedSpan: 'Pattern' }>`)
>>> advance(t`'/'`)
>>> advance(t`</>`)
>>> endFrame()
>>> eat(m`<_Alternatives />`)
>>> startFrame('eat', m`.: <_Alternatives />`, { bind: false, allowEmpty: false })
--> Alternatives
>>> eat(m`alternatives[]$: <Alternative />`)
>>> advance(t`alternatives[]$:`)
>>> advance(t`[]`)
>>> advance(t`alternatives[]$:`)
>>> startFrame('eat', m`alternatives[]$: <Alternative />`, { bind: false, allowEmpty: false })
>>> advance(t`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':Alternative>`)
--> Alternative
>>> eat(m`elements[]+$: <_Elements />`)
>>> startFrame('eat', m`elements[]+$: <_Elements />`, { bind: false, allowEmpty: false })
--> Elements
>>> eat(m`.[]: []`)
>>> advance(t`elements[]+$:`)
>>> advance(t`[]`)
>>> match(re`/[^|]/`)
>>> match(re`/[^|]/`)
>>> eat(m`.[]+: <__Element />`)
>>> advance(t`elements[]+$:`)
>>> startFrame('eat', m`elements[]+$: <__Element />`, { bind: false, allowEmpty: false })
--> Element
>>> guard(m`<*Keyword /[*+?]/ />`)
>>> match(m`<*Keyword /[*+?]/ />`)
>>> eat(m`<_Any />`, [m`<CharacterClass '[' />`, m`<Group '(?:' />`, m`<__Assertion /[$^]|\\b/i />`, m`<Gap '\\g' />`, m`<__CharacterSet /\.|\\[dswp]/i />`, m`<*Character />`])
>>> startFrame('eat', m`.: <_Any />`, { bind: false, allowEmpty: false })
--> Any
>>> eatMatch(m`<CharacterClass '[' />`)
>>> match(m`<CharacterClass '[' />`)
>>> startFrame('eat', m`elements[]+$: <CharacterClass '[' />`, { bind: false, allowEmpty: false })
>>> advance(t`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':CharacterClass { negate: undefined }>`)
--> CharacterClass
>>> eat(m`openToken: <*Punctuator '[' { balancedSpan: 'CharacterClass', balanced: ']' } />`)
>>> match(m`openToken: <*Punctuator '[' { balancedSpan: 'CharacterClass', balanced: ']' } />`)
>>> advance(t`openToken:`)
>>> startFrame('eat', m`openToken: <*Punctuator '[' { balancedSpan: 'CharacterClass', balanced: ']' } />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Punctuator { balancedSpan: 'CharacterClass', balanced: ']' }>`)
>>> advance(t`'['`)
>>> advance(t`</>`)
>>> endFrame()
>>> eatMatch(m`negateToken: <*Keyword '^' />`, null, { bind: true })
>>> match(m`negateToken: <*Keyword '^' />`)
>>> advance(t`negateToken:`)
>>> advance(t`null`)
>>> defineAttribute('negate', false)
>>> advance(t`{negate: false}`)
>>> match(re`/./s`)
>>> match(re`/./s`)
>>> eat(m`elements[]+$: <__CharacterClassElement />`)
>>> advance(t`elements[]+$:`)
>>> advance(t`[]`)
>>> advance(t`elements[]+$:`)
>>> startFrame('eat', m`elements[]+$: <__CharacterClassElement />`, { bind: false, allowEmpty: false })
--> CharacterClassElement
>>> eat(m`<_Any />`, [m`<__CharacterSet /\\[dswp]/i />`, m`<Gap '\\g' />`, m`<*Character />`])
>>> startFrame('eat', m`.: <_Any />`, { bind: false, allowEmpty: false })
--> Any
>>> eatMatch(m`<__CharacterSet /\\[dswp]/i />`)
>>> match(m`<__CharacterSet /\\[dswp]/i />`)
>>> eatMatch(m`<Gap '\\g' />`)
>>> match(m`<Gap '\\g' />`)
>>> eatMatch(m`<*Character />`)
>>> branch()
>>> startFrame('eatMatch', m`elements[]+$: <*Character />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Character>`)
--> Character
>>> match('\\')
>>> match('\\')
>>> eat(re`/[^\r\n\t]/`)
>>> match(re`/[^\r\n\t]/`)
>>> advance(t`'-'`)
<-- Character
>>> advance(t`</>`)
>>> endFrame()
>>> accept()
<-- Any
>>> endFrame()
>>> match('-')
>>> match('-')
<-- CharacterClassElement
>>> holdForMatch(m`<CharacterClassRange />`)
>>> endFrame(true)
>>> branch()
>>> startFrame('holdForMatch', m`elements[]+$: <CharacterClassRange />`, { bind: false, allowEmpty: false })
>>> advance(t`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':CharacterClassRange>`)
--> CharacterClassRange
>>> eat(m`min+$: <*Character />`)
>>> advance(t`min+$:`)
>>> startFrame('eat', m`min+$: <*Character />`, { bind: false, allowEmpty: false })
>>> advance(t`<//>`)
>>> endFrame()
>>> eat(m`sigilToken: <*Punctuator '-' />`)
>>> match(m`sigilToken: <*Punctuator '-' />`)
>>> advance(t`sigilToken:`)
>>> startFrame('eat', m`sigilToken: <*Punctuator '-' />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Punctuator>`)
>>> advance(t`'-'`)
>>> advance(t`</>`)
>>> endFrame()
>>> eat(m`max+$: <*Character />`)
>>> advance(t`max+$:`)
>>> startFrame('eat', m`max+$: <*Character />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Character>`)
--> Character
>>> match('\\')
>>> match('\\')
>>> eat(re`/[^\r\n\t]/`)
>>> match(re`/[^\r\n\t]/`)
x-- Character
>>> throw()
x-- CharacterClassRange
>>> throw()
>>> reject({ bind: false })
>>> match(re`/./s`)
>>> match(re`/./s`)
>>> eat(m`elements[]+$: <__CharacterClassElement />`)
>>> advance(t`elements[]+$:`)
>>> startFrame('eat', m`elements[]+$: <__CharacterClassElement />`, { bind: false, allowEmpty: false })
--> CharacterClassElement
>>> eat(m`<_Any />`, [m`<__CharacterSet /\\[dswp]/i />`, m`<Gap '\\g' />`, m`<*Character />`])
>>> startFrame('eat', m`.: <_Any />`, { bind: false, allowEmpty: false })
--> Any
>>> eatMatch(m`<__CharacterSet /\\[dswp]/i />`)
>>> match(m`<__CharacterSet /\\[dswp]/i />`)
>>> eatMatch(m`<Gap '\\g' />`)
>>> match(m`<Gap '\\g' />`)
>>> eatMatch(m`<*Character />`)
>>> branch()
>>> startFrame('eatMatch', m`elements[]+$: <*Character />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Character>`)
--> Character
>>> match('\\')
>>> match('\\')
>>> eat(re`/[^\r\n\t]/`)
>>> match(re`/[^\r\n\t]/`)
>>> advance(t`'-'`)
<-- Character
>>> advance(t`</>`)
>>> endFrame()
>>> accept()
<-- Any
>>> endFrame()
>>> match('-')
>>> match('-')
<-- CharacterClassElement
>>> endFrame()
>>> match(re`/./s`)
>>> match(re`/./s`)
>>> eat(m`closeToken: <*Punctuator ']' { balancer: true } />`)
>>> match(m`closeToken: <*Punctuator ']' { balancer: true } />`)
>>> advance(t`closeToken:`)
>>> startFrame('eat', m`closeToken: <*Punctuator ']' { balancer: true } />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Punctuator { balancer: true }>`)
>>> advance(t`']'`)
>>> advance(t`</>`)
>>> endFrame()
<-- CharacterClass
>>> advance(t`</>`)
>>> endFrame()
<-- Any
>>> endFrame()
>>> match(re`/[*+?{]/`)
>>> match(re`/[*+?{]/`)
<-- Element
>>> endFrame()
>>> match(re`/[^|]/`)
>>> match(re`/[^|]/`)
<-- Elements
>>> endFrame()
<-- Alternative
>>> advance(t`</>`)
>>> endFrame()
>>> eatMatch(m`separatorTokens[]: <*Punctuator '|' />`)
>>> match(m`separatorTokens[]: <*Punctuator '|' />`)
>>> advance(t`separatorTokens[]:`)
>>> advance(t`[]`)
<-- Alternatives
>>> endFrame()
>>> eat(m`closeToken: <*Punctuator '/' { balancer: true } />`)
>>> match(m`closeToken: <*Punctuator '/' { balancer: true } />`)
>>> advance(t`closeToken:`)
>>> startFrame('eat', m`closeToken: <*Punctuator '/' { balancer: true } />`, { bind: false, allowEmpty: false })
>>> advance(t`<*'https://bablr.org/languages/core/en/bablr-regex-pattern':Punctuator { balancer: true }>`)
>>> advance(t`'/'`)
>>> advance(t`</>`)
>>> endFrame()
>>> eat(m`flags$: <Flags />`)
>>> advance(t`flags$:`)
>>> startFrame('eat', m`flags$: <Flags />`, { bind: false, allowEmpty: false })
>>> advance(t`<$'https://bablr.org/languages/core/en/bablr-regex-pattern':Flags { global: undefined, ignoreCase: undefined, multiline: undefined, dotAll: undefined, unicode: undefined, sticky: undefined }>`)
--> Flags
>>> match(re`/[gimsuy]/`)
>>> match(re`/[gimsuy]/`)
>>> defineAttribute('global', false)
>>> advance(t`{global: false}`)
>>> defineAttribute('ignoreCase', false)
>>> advance(t`{ignoreCase: false}`)
>>> defineAttribute('multiline', false)
>>> advance(t`{multiline: false}`)
>>> defineAttribute('dotAll', false)
>>> advance(t`{dotAll: false}`)
>>> defineAttribute('unicode', false)
>>> advance(t`{unicode: false}`)
>>> defineAttribute('sticky', false)
>>> advance(t`{sticky: false}`)
<-- Flags
>>> advance(t`</>`)
>>> endFrame()
<-- Pattern
>>> advance(t`</>`)
>>> endFrame()
<-- `@bablr/fragment`
>>> advance(t`</>`)
>>> endFrame()
<!0:cstml { bablrLanguage: 'https://bablr.org/languages/core/en/bablr-regex-pattern' }>
<$_>
.:
<$Pattern>
openToken: <*Punctuator '/' { balanced: '/', balancedSpan: 'Pattern' } />
alternatives[]$: []
alternatives[]$:
<$Alternative>
elements[]+$: []
elements[]+$:
<$CharacterClass { negate: false }>
openToken: <*Punctuator '[' { balancedSpan: 'CharacterClass', balanced: ']' } />
negateToken: null
elements[]+$: []
elements[]+$: <*Character '-' />
elements[]+$: <*Character '-' />
closeToken: <*Punctuator ']' { balancer: true } />
</>
</>
separatorTokens[]: []
closeToken: <*Punctuator '/' { balancer: true } />
flags$: <$Flags { global: false, ignoreCase: false, multiline: false, dotAll: false, unicode: false, sticky: false } />
</>
</>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment