Reflecting on Change

2020 and the beginning of 2021 has presented so many challenges and fundamental threats to our understanding of democracy and society as a whole. Last March, as my children were sent home from school…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Pattern 8 Parse Tree

Language Implementation Patterns — Pragmatic Programmers (40 / 120)

👈 Constructing ASTs with ANTLR Grammars | TOC | Homogeneous AST 👉

A parse tree describes how a parser recognized an input sentence.

A parse tree is sometimes called a syntax tree (as opposed to an abstract syntax tree). Despite not being that useful for building interpreters and translators, I’m including this pattern because parse trees are heavily used by development environments and text rewriting systems.

Parse trees record the sequence of rules a parser applies as well as the tokens it matches. Interior parse tree nodes represent rule applications, and leaf nodes represent token matches. Parse trees describe sentence structure by grouping input symbols into subtrees. Subtrees represent the structure of phrases (sentence fragments). For example, the following parse tree clearly identifies the parts of speech in sentence “the cat runs quickly”:

images/IR/catrunsquickly.png

By successfully applying a rule to a phrase, the parser identifies the role it plays in the sentence. So, for example, the parse tree identifies “cat” as a noun and “the cat” as the sentence subject.

Parse trees are specific to a grammar. Here is the core of the grammar for that parse tree:

The interior nodes of computer language parse trees also name language substructures. For example, we can see the parse tree for 5*[1,2] in a vector math language in Figure 9, ​Parse tree for 5*[1,2]​.

images/IR/vecmult.png

Figure 9. Parse tree for 5*[1,2]

Parse trees are really easy to build by hand and are so regular that tools like ANTLR can automate the process for us. That’s the good news. The bad news is that parse trees are extremely inconvenient to walk and transform. Parse trees are full of noise because of all the interior rule nodes. They are also very sensitive to…

Add a comment

Related posts:

Describe Elements with JSX

When traditional web development techniques don't cut it, try React. Use React to create highly interactive web pages faster and with fewer errors. With a little JavaScript experience under your belt, you'll be up and running in no time creating dynamic web applications. Craft isolated components that make your apps easier to de

MUXIANG Italian Briar Pipe Kit

This Briar Pipe Kit features a classic Italian briar pipe made by the best briar pipe brand MUXIANG. The pipe is made of high-quality briar wood and has a smooth finish. and has excellent…

Tips to Set Up FIFA 23 Crossplay

FIFA 23 crossplay enables players to play games from different platforms, so you’re no longer limited to playing with friends using the same console. Players of the same generation platform can play…