在我目前的项目中,我用 Xtext 编写了具有很好功能的语法。例如,我的语法代码片段
Device:
deviceName = ID ':'
('region' ':' ( deviceRegions += DeviceRegions)+ )* ;
DeviceRegions:
regionLabel = [RegionLabel] ';'
// It stores a List of regionLabel functionalities
;
RegionLabel: name = ID ;
使用上述语法,我编写了以下高级规范:
DeviceOne :
region :
Room ;
Floor ;
Building;
DeviceTwo:
region :
Room ;
Floor ;
Building;
我希望看到用 xText 编写的等效 BNF 语法。例如,等效语法如下:
Device = ID ':'
( 'region' ':' (deviceRegions = DeviceRegions)+)* ;
DeviceRegions :
regionLabel = RegionLabel ';' ;
RegionLabel = 'room' | 'Floor' | 'Building' ;
ID = 'A'..'Z' ('a' ..'z' | 'A' ..'Z')* ;
我的问题是“有什么方法可以将 xText 书面语法转换为等值 BNF 语法,还是我应该手动进行?
我知道 xText 语法很容易学习和编写。但是,我有 BNF 语法的要求。