如何用Java解析这种语言?

如何用Java解析这种语言?,java,xml,parsing,lexical-analysis,Java,Xml,Parsing,Lexical Analysis,很抱歉标题含糊不清,我不知道如何用一行字来描述这个问题 基本上,我正在尝试(手动)为语法类似于XML的语言构建一个简单的解析器,如下所示: <my_language check="somestring"> *strings here* </my_language> <my_language check="House"> House myHouse = new House(); house.setAdress("somewhere")

很抱歉标题含糊不清,我不知道如何用一行字来描述这个问题

基本上,我正在尝试(手动)为语法类似于XML的语言构建一个简单的解析器,如下所示:

<my_language check="somestring">
    *strings here*
</my_language>
<my_language check="House">
    House myHouse = new House();
     house.setAdress("somewhere");
</my_language>

<my_language check="House/Garage">
    Garage myGarage = new Garage();
    garage.setCar("some car");
</my_language>

*这里的字符串*
这里的字符串意味着里面可能有任何东西(但很可能是来自另一种语言的代码)。 完整代码的示例如下:

<my_language check="somestring">
    *strings here*
</my_language>
<my_language check="House">
    House myHouse = new House();
     house.setAdress("somewhere");
</my_language>

<my_language check="House/Garage">
    Garage myGarage = new Garage();
    garage.setCar("some car");
</my_language>

房子我的房子=新房子();
房屋地址(“某处”);
车库myGarage=新车库();
车库。setCar(“某辆车”);
语言的意义目前并不真正相关。我需要的是一种解析方法,使用递归下降解析器(由语法分析器和词法分析器组成)

语法分析器的语法不是一个真正的问题。。。我正在努力做的是词法分析器,它可以找到我需要的标记

我最近为一种更类似于XML的语言制作了另一个类似于此的解析器,并为词法分析器使用了StreamTokenizer。在这种情况下,虽然我不知道如何使用它

使用StreamTokenizer,我可以轻松地将“my_language check=“House”>”等部分拆分为标记,但是我需要将标记中的代码作为一个整体(保持格式不变),我不知道如何才能做到这一点。基本上,我需要整个代码块,而不是逐字逐句,但我知道StreamTokenizer不能让我这么做


那么,我应该使用什么方法呢?

大多数现有的XML解析器都应该能够处理这个问题,无需编写自己的解析器。您的示例非常接近XML和SOAP。。。您不能创建一个转换器来将其转换为有效的XML吗?然后,您可以使用所有的XML库来进行语法分析我知道已经有一些现成的解析器或解析器生成器可以为我完成这项工作,但我尝试将此作为练习,以了解如何使用实际语言解析简单的内容。所以为了回答你们的问题,我需要自己解析它,不需要转换成其他语言;这将向您展示他们使用正则表达式来“构建lexer”。