Eclipse с плагином для DSL со следующей грамматикой (xtext)
AbstractStatement returns AbstractStatement:
IfStructureStatement | DeclarativeStatement | BreakStatement | EqualityStatement | SignalStatement;
Component returns Component:
LED_Panel | Switch | Timer | LED_Light;
Setup returns Setup:
{Setup}
'SETUP BEGIN'
( abstractstatement+=AbstractStatement ( "\r" abstractstatement+=AbstractStatement)* )?
'SETUP END';
DeclarativeStatement returns DeclarativeStatement:
{DeclarativeStatement}
'DECLARE'
( component+=[Component|EString] ( "," component+=[Component|EString])* )?
( variable+=[Variable|EString] ( "," variable+=[Variable|EString])* )?
( constant+=[Constant|EString] ( "," constant+=[Constant|EString])* )?";";
LED_Panel returns LED_Panel:
{LED_Panel}
'LED_PANEL'
ElementName=EString
('{'
'PanelWidth' PanelWidth=EInt
'PanelHeight' PanelHeight=EInt
'PanelText' PanelText=EString
'ON' '{' pin+=Pin ( "," pin+=Pin)* '}'
'}')?;
И следующий исходный файл:
SETUP BEGIN
DECLARE LED_PANEL p;
SETUP END
Этот код выдаёт мне ошибку "несоответствующий вход LED_PANEL", ожидая ";"
Он действует так, будто не может распознать Компонент LED_PANEL
Я ожидаю, что он сможет подтвердить этот код.