1 / 20

Recursive Data Structures and Grammars

Recursive Data Structures and Grammars. Themes Recursive Description of Data Structures Grammars and Parsing Recursive Definitions of Properties of Data Structures Recursive Algorithms for Manipulating and Traversing Data Structures Examples Lists Trees Expressions and Expression Trees.

willem
Download Presentation

Recursive Data Structures and Grammars

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursive Data Structures and Grammars • Themes • Recursive Description of Data Structures • Grammars and Parsing • Recursive Definitions of Properties of Data Structures • Recursive Algorithms for Manipulating and Traversing Data Structures • Examples • Lists • Trees • Expressions and Expression Trees

  2. Grammars • Syntactic Categories (non-terminals) • <number> • <digit> • <expr> • Production Rules (replace syntactic category on the rhs by the lhs, “|” is or) • <expr>  <expr> + <expr> • <expr>  <number> • <number>  <digit> <number> • <digit>  0|1|2|3|4|5|6|7|8|9

  3. Derivation • Repeatedly replace syntactic categories by the lhs of rules whose rhs is equal to the syntactic category • <expr>  <expr>+<expr>  <expr>+<expr>+<expr>  <number>+<expr>+<expr>  <number>+<number>+<expr>  <number>+<number>+<number>

  4. Derivation (e.g. 2) • <number>  <digit><number>  <digit><digit><number>  <digit><digit><digit>  <digit><digit>3  <digit>23  123 • When there are no more syntactic categories, the process stops and the resulting string is said to be derived from the initial syntactic category.

  5. Languages • The language, L(<S>), derivable from the syntactic category <S> using the grammar G is defined inductively. • Initially L(<S>) is empty • If <S>  X1    Xn is a production in G and si = Xi is a terminal or si  L(Xi), then the concatenation s1s2 …sn is in L(<S>)

  6. Language • The number of strings of length n in the language L(<number>) is 10n. • Proof is by induction.

  7. Language • <B>  () | (<B>) • L(<B>) = strings of n left parens followed by n right parens, for n >= 0.

  8. Systematic Generation • C statement example

  9. Binary Trees • A binary tree is • empty • consists of a node with 3 elements • value • left, which is a tree • right, which is a tree

  10. Height of Binary Trees • Height(T) = -1 if T is empty • max(Height(T.left),Height(T.right)) + 1 • Alternative: Max over all nodes of the level of the node.

  11. Number of Nodes of a Binary Trees • Nnodes(T) = 0 if T is empty • Nnodes(T.left) + Nnodes(T.right) + 1

  12. Internal Path Length • IPL(T) = 0 if T is empty • IPL(T) = IPL(T.left) + IPL(T.right) + Nnodes(T)-1 • Alternative: Sum over all nodes of the level of the node.

  13. External Format for Binary Trees • <bintree>  []  [<value>,<bintree>,<bintree>] • [], • [1,[],[]], • [2,[1,[],[]],[]], [2,[[],[1,[],[]]] • [3, [2,[1,[],[]],[]], []], [3, [2,[[],[1,[],[]]],[]] [3, [1,[],[]], [1,[],[]]], [3, [],[2,[1,[],[]],[]]], [3, [],[2,[[],[1,[],[]]]]

  14. Recurrence for the Number of Binary Trees • Let Tn be the number of binary trees with n nodes. • T0 = 1, T1 = 1, T2 = 2, T3 = 5

  15. Binary Search Trees • Binary Tree • All elements in T->left are <= T->value • All elements in T->right are >= T->value

  16. Inorder traversal • Recursively visit nodes in T.left • visit root • Recursively visit nodes in T.right • An in order traversal of a BST lists the elements in sorted order. Proof by induction.

  17. Parse Tree • A derivation is conveniently stored in a tree, where internal nodes correspond to syntactic categories and the children of a node correspond to the element of the rhs in the rule that was applied

  18. Example Parse Tree <number> / \ <digit> <number> | / \ 1 <digit> <number> | | 2 <digit> | 3

  19. Recursive Decent Parser • Balanced parentheses

  20. Ambiguous Grammars <expr> <expr> / | \ / | \ <expr>+<expr> <expr>+<expr> / | \ / | \ <expr>+<expr> <expr>+<expr>

More Related