我是靠谱客的博主 贪玩钻石,最近开发中收集的这篇文章主要介绍Java递归下降分析器_递归下降语法分析器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

用java语言编写的递归下降语法分析器,是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。就连微软C#官方的编译器也是手写而成的递归下降语法分析器。

使用递归下降法编写语法分析器无需任何类库,编写简单的分析器时甚至连前面学习的词法分析库都无需使用。我们来看一个例子:现在有一种表示二叉树的字符串表达式,它的文法是:N → a ( N, N )

N → ε

其中终结符a表示任意一个英文字母,ε表示空。这个文法的含义是,二叉树的节点要么是空,要么是一个字母开头,并带有一对括号,括号中逗号左边是这个节点的左儿子,逗号右边是这个节点的右儿子。例如字符串 A(B(,C(,)),D(,))就表示这样一棵二叉树:

28c782814abd486ea1db40957a27252a.png

注意

文法规定节点即使没有儿子(儿子是空),括号和逗号也是不可省略的,所以只有一个节点的话也要写成A(,)。现在我们要写一个解析器,输入这种字符串,然后在内存中建立起这棵二叉树。

其中内存中的二叉树是用下面这样的类来表示的:class Node

{

public Node LeftChild { get; private set; }

public Node RightChild { get; priv

最后

以上就是贪玩钻石为你收集整理的Java递归下降分析器_递归下降语法分析器的全部内容,希望文章能够帮你解决Java递归下降分析器_递归下降语法分析器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部