No, they all have different meanings.
Vertical and left recursion refer to recursion in production rules. A product for a nonterminal recursive, if it can output a sequence containing this nonterminal; it is left-recursive if the nonterminal can appear at the beginning (left edge) of the derived sequence and it is right-recursive if it can appear at the end (right edge). Production can be recursive without being left or right recursive, and it can be either left or right recursive.
For example:
term: term '*' factor { } assignment: lval '=' assignment { }
The above examples are direct recursion; nonterminal directly outputs a sequence containing nonterminal. Recursion can also be indirect; it's still recursion.
All common parsing algorithms are processed from left to right, which is the first L in LL and LR. Top-down parsing (LL) finds the leftmost output (second L), while bottom-up parsing (LR) finds the rightmost output (R).
Effectively, both types of analyzer start with one nonterminal (start character) and “guess” the output based on some nonterminal in the current sequence until the input text is received. In the leftmost derivation, it is always the leftmost nonterminal that expands. In the very right derivation, it is always the most right non-terminal.
Thus, the analyzer from top to bottom always guesses which production to use for the first non-terminal, after which it needs to work again on what is now the first non-terminal. (“Guess” here is informal, he can look at the input that needs to be matched - or at least the next k input tokens - to determine which production to use.) This is called top-down processing because it builds a top-down parsing tree .
It’s easier (at least for me) to visualize the action of the analyzer from the bottom up in the reverse order; he builds a parse tree from bottom to top, repeating enough of the whole input to find some kind of production that will be the last derivation in the derivation chain. Therefore, it produces the rightmost conclusion, but it brings it back to the fore.
In an LR grammar for an operator language (roughly speaking, a grammar for languages ​​that look like arithmetic expressions), left and right associativity are modeled using left and right recursive grammar rules, respectively. "Associativity" is an unofficial description of grammar, as well as "priority."
The priority is modeled using a series of grammar rules, each of which relates to the following rule (and usually this leads to recursive production for processing parentheses - '(' expr ')' , which is neither left, recursive).
There is an older bottom-up style of analysis called “parsing operator priorities” in which priority is clearly part of the language description. One common operator precedence algorithm is the so-called Shunting Yard algorithm. But if you have a LALR (1) parser generator, like a bison, you can use it instead because it is more general and more accurate.