I know that a bottom-up parser is better than a top-down parser because it can accept left-recursive grammar, what can be other reasons that we prefer bottom-up parsing over top-down parsing?
Parsing the Context-free-Grammars
595 Views Asked by Amna Ahmed At
2
There are 2 best solutions below
0
blaze
On
We have bottom-up parsers generators like byson. Using them is much simpler then writing parsers manually.
Also, recursive descent parsers make all operations right-associative by default, which is incorrect for arithmetics. Turning them back to left-associative requires additional steps in parsing.
Related Questions in ALGORITHM
- Two different numbers in an array which their sum equals to a given value
- Given two arrays of positive numbers, re-arrange them to form a resulting array, resulting array contains the elements in the same given sequence
- Time complexity of the algorithm?
- Find a MST in O(V+E) Time in a Graph
- Why k and l for LSH used for approximate nearest neighbours?
- How to count the number of ways of choosing of k equal substrings from a List L(the list of All Substrings)
- Issues with reversing the linkedlist
- Finding first non-repeating number in integer array
- Finding average of an array
- How to check for duplicates with less time in a list over 9000 elements by python
- How to pick a number based on probability?
- Insertion Sort help in javascript -- Khan Academy
- Developing a Checkers (Draughts) engine, how to begin?
- Can Bellman-Ford algorithm be used to find shorthest path on a graph with only positive edges?
- What is the function for the KMP Failure Algorithm?
Related Questions in PARSING
- How to resize images with PHP PARSE SDK
- Constraint not propagated upon instantiation of list members
- How can I parse fixed-length, non-delimited integers with attoparsec?
- jSon result optional value error
- Date parse with Timezone - Android
- URL Variable is not being recognized using NSURL
- Regex to get vCard base64 string (C#)
- Retrieving string value from label and then parsing into an integer, pyqt4
- How to use Papa Parse for javascript csv parsing
- How to parse/split a string?
- String concatenation with padded integers
- Is this file an XML or HTML file? How can I parse it?
- json parser to spinner
- Use DateTime format in a class but restrict time tokens
- Saving multiple occurrences of strstr() from a line in C?
Related Questions in LL-GRAMMAR
- can removing left recursion introduce ambiguity?
- How many ways are there to build a parser?
- What other tools can help me create a small language targeting JVM, besides ANTLR?
- Which contemporary computer languages are LL(1)?
- Ilustrate the left-most derivation on a token stream
- ANTLR failure due to left recursion. How to solve?
- How to prove that a grammar is LL(k) for k>1
- Finding an LL(1) grammar?
- Finding FIRST sets in a grammar
- Removing nullable productions
- Is this a LL(1) grammar?
- Convert LALR to LL
- Writing correct LL(1) grammars?
- Can an LL(1) parse table be valid if there is a column with no entries in its cells?
- Difference between LL and LR Parsing
Related Questions in LR-GRAMMAR
- How many ways are there to build a parser?
- Solution in shift/reduce conflict at bison grammar
- Trying to write a parser
- Is there a general way to convert an unambiguous context-free-grammar into a LALR(1) grammar?
- Difference between LL and LR Parsing
- Example of an LR grammar that cannot be represented by LL?
- Parsing the Context-free-Grammars
- How to solve this S/R conflict
- LR(k) to LR(1) grammar conversion
- Python lrparsing module; cannot parse simple recursive grammar
- Building parse trees with shift-reduce parsing
- Does Golang have LR(1) grammar?
- How can I resolve a reduce reduce conflict:
- What are the columns in a LR Parsing Table?
- LR-Parsing-Table: What determines next state in reduce-actions?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Theoretically speaking, the LL(k) grammars are always strict subsets of the LR(k) grammars for any k, so deterministic predictive bottom-up parsers can accept a strictly greater set of grammars than than deterministic predictive top-down parsers. This also means that any LL(k) grammar is also LR(k).
Also, a tricky proof shows that any deterministic CFL (a CFL accepted by a deterministic push down automaton) has an LR(1) grammar, which means that LR grammars correspond precisely to those languages that have efficient stack-based parsing algorithms.
That said, if you allow for more general parsing algorithms like Unger's algorithm, Earley's algorithm, or the CYK algorithm, then top-down and bottom-up methods exist for parsing arbitrary CFGs. These algorithms can be much slower than the predictive methods, though, so they typically aren't used for programming languages.
Hope this helps!