Skip to content

Instantly share code, notes, and snippets.

@conartist6
Last active March 14, 2024 03:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save conartist6/0a871c2d2652b6a2ada9722103fd5fe5 to your computer and use it in GitHub Desktop.
Save conartist6/0a871c2d2652b6a2ada9722103fd5fe5 to your computer and use it in GitHub Desktop.
BABLR two-VM parse log
advance(<>)
>>> <>
--> Tree
eat(<Match> null [
(<Fragment> /<[#@*]*>/)
(<Node> '<')
])
--> Match
match(/<[#@*]*>/)
eat(<Fragment> null null)
advance(root)
>>> root:
advance(<Fragment>)
>>> <Fragment>
--> Fragment
eat(<OpenFragmentTag> 'open')
advance(open)
>>> open:
advance(<OpenFragmentTag>)
>>> <OpenFragmentTag>
--> OpenFragmentTag
eat(<*Punctuator '<' lexicalSpan='Tag' balanced='>'> 'open')
advance(open)
>>> open:
advance(<*Punctuator lexicalSpan='Tag'>)
bindAttribute(lexicalSpan 'Tag')
bindAttribute(balanced '>')
>>> <*Punctuator lexicalSpan='Tag' balanced='>'>
--> Punctuator
eat('<')
advance('<')
>>> '<'
<-- Punctuator
advance(</Punctuator>)
>>> </>
eatMatch(<FragmentFlags> 'flags')
branch()
advance(flags)
advance(<FragmentFlags>)
--> FragmentFlags
eatMatch(/\s+/)
eatMatch(<*Punctuator '#'> 'comment')
branch()
advance(comment)
advance(<*Punctuator>)
--> Punctuator
eat('#')
reject()
x-- Punctuator
eatMatch(/\s+/)
x-- FragmentFlags
advance(</FragmentFlags>)
accept()
>>> flags:
>>> <FragmentFlags>
>>> comment:
>>> null
>>> </>
eat(<*Punctuator '>' balancer> 'close')
advance(close)
>>> close:
advance(<*Punctuator balancer=true>)
bindAttribute(balancer true)
>>> <*Punctuator balancer>
--> Punctuator
eat('>')
advance('>')
>>> '>'
<-- Punctuator
advance(</Punctuator>)
>>> </>
<-- OpenFragmentTag
advance(</OpenFragmentTag>)
>>> </>
eatMatch(<FragmentChild> 'children[]')
branch()
advance(children[])
--> FragmentChild
eatMatch(/\s+/)
eat(<Match> null [
(<Node> /<[#@]/)
(<Property> /\w/)
])
--> Match
match(/<[#@]/)
match(/\w/)
x-- Match
x-- FragmentChild
reject()
>>> children[]:
>>> null
eat(<CloseFragmentTag> 'close')
advance(close)
>>> close:
advance(<CloseFragmentTag>)
>>> <CloseFragmentTag>
--> CloseFragmentTag
eat(<*Punctuator '</'> 'open')
advance(open)
>>> open:
advance(<*Punctuator>)
>>> <*Punctuator>
--> Punctuator
eat('</')
advance('</')
>>> '</'
<-- Punctuator
advance(</Punctuator>)
>>> </>
eat(<*Punctuator '>'> 'close')
advance(close)
>>> close:
advance(<*Punctuator>)
>>> <*Punctuator>
--> Punctuator
eat('>')
advance('>')
>>> '>'
<-- Punctuator
advance(</Punctuator>)
>>> </>
<-- CloseFragmentTag
advance(</CloseFragmentTag>)
>>> </>
<-- Fragment
advance(</Fragment>)
>>> </>
<-- Match
<-- Tree
advance(</>)
>>> </>
<>
root:
<Fragment>
open:
<OpenFragmentTag>
open:
<*Punctuator lexicalSpan='Tag' balanced='>'>
'<'
</>
flags:
<FragmentFlags>
comment:
null
</>
close:
<*Punctuator balancer>
'>'
</>
</>
children[]:
null
close:
<CloseFragmentTag>
open:
<*Punctuator>
'</'
</>
close:
<*Punctuator>
'>'
</>
</>
</>
</>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment