Нежелательная ошибка при получении из Xtext в редакторе

Я разработал IDE, используя eclipse EMF/RCP, в котором я разработал один редактор с использованием xtext,rcp и emf

Ниже приведена моя грамматика для этого раздела

// automatically generated by Xtext
grammar com.xyz.pmide.RoutingLineINI with org.eclipse.xtext.common.Terminals 

import "platform:/resource/com.xyz.pmide.routingline.xtext.model/model/pmrouting.ecore" 
import "http://www.eclipse.org/emf/2002/Ecore" as ecore

IniRoutingLineProject:
    {IniRoutingLineProject}
        (iniRoutingConfig=IniRoutingConfiguration)?
    ;

IniRoutingConfiguration:    
    {IniRoutingConfiguration}
    (iniRoutingSectConfig=IniRoutingLogicSection)
    (iniLogMessageSectionConfig=IniLogMessageSet)?
    (iniPreDefGroupSectionConfig=IniPreDefGroupVariableSet)?
    (iniRegWSSectionConfig=IniRegisterWSCommandSet)?
    (iniOtherRoutingSectionConfig=IniRoutingPropertySet)
    (iniGlobalRoutingSectionConfig=IniGlobalRoutingSection)?
    (iniAlarmSignalSectionConfig=IniAlarmSignalSection)?
    (iniOptionPopupSectionConfig=IniOptionPopupSection)
;

IniRoutingLogicSection:
    {IniRoutingLogicSection}
    '[Routing]'('\r\n')*
//  ('Warning_Rate='warningRate=ANS1TERM)?('\r\n')*
//  ('Busy_Rate='busyRate=ANS1TERM)?('\r\n')* 
//  ('MaxRecursionConcurence=' maxRecursionOccurence=ANS1TERM)?('\r\n')* 
//  ('WS_Speed=' wsSpeed=ANS1TERM)?('\r\n')* 
//  ('ReactivationTime=' reactivationTime=ANS1TERM)?('\r\n')* 
//  ('WaitTime_WS_Reuse=' waitTimeWSReuse=ANS1TERM)?('\r\n')*
    (routingLines+=IniRoutingLine)*('\r\n')*
;

terminal ALPHA :('a'..'z'|'A'..'Z');

terminal NUM:('0'..'9')+;

terminal SYMBOL : ('.'|','|'('|')'|'{'|'}'|'<'|'>'|'+'|'-'|'*'|'%'|'!'|'"'|':'|'|'|'?'|'#'|'_'|' '|'=');

terminal SYMBOL1 : ('['|']')*;

terminal SYMBOL2 : ('/'|';')* ;

terminal ANS : (ALPHA|NUM|SYMBOL)* SYMBOL2;

terminal SL_COMMENT : '//-' !('\n'|'\r')* ('\r'? '\n')?;

terminal ML_COMMENT : '//*' -> '*//';

ANSTERM : ANS;

ANSS1TERM : (ANS|SYMBOL1)+;

GRPCOMMENT_STR_END : SYMBOL2("===========================================================================================================================================================================") ;

GRPCOMMENT : 
    (GRPCOMMENT_STR_END)('\r\n')*
    SYMBOL2(ANSS1TERM)('\r\n')*
    (GRPCOMMENT_STR_END)('\r\n')*
;


LINECOMMENT : 
//  (LINECOMMENT_STR_END)('\r\n')*
//  (ANSS1TERM|LINECOMMENT)('\r\n')*
//  (LINECOMMENT_STR_END)?('\r\n')*;
    (('/*'('\r\n')*
    (ANSS1TERM)('\r\n')*
    (LINECOMMENT)?('\r\n')*
     '*/'?('\r\n')*)|GENCOMMENT)
;


IniTimeStampSampleSectPropSet:
    {IniTimeStampSampleSectPropSet} 
    '[TimeStamp_Sample]'('\r\n')*
    (inLabKeyValue+=IniUnitPositionsPair)*('\r\n')*
;


IniPositionConnect: 
    {IniPositionConnect}
//  (srcPosition=ANS1TERM)(destPosition=ANS1TERM)?('\r\n')*
    (src_dest_Pos=ANSS1TERM)('\r\n')*
;

IniListSampleSection: 
    {IniListSampleSection}
    '[LISTSAMPLE]'('\r\n')*
    (iniOnType+=IniListSample_OnType)*('\r\n')*
;

IniListSample_OnType: 
    {IniListSample_OnType}
    (sampleType=('OnType'|ANSS1TERM))(popUpNo=ANSS1TERM)?('\r\n')*
;


IniGeneralRoutingSectPropSet: 
    {IniGeneralRoutingSectPropSet}
    '[General]'('\r\n')*
//  (version=('version='|ANSTERM))?('\r\n')*
    (keySet+=IniNewKey_NL)*('\r\n')*
;

IniChildWSTriggerSectionSet:
    {IniChildWSTriggerSectionSet} 
    (iniTriggerSectionConfig+=IniTriggerSectionConfiguration)*('\r\n')*
;


IniTriggerSectionConfiguration: 
    {IniTriggerSectionConfiguration}
    SYMBOL1(sectName=ANSTERM)SYMBOL1('\r\n')*
    (triggerUnit=('TriggerUnit='|ANSTERM))?('\r\n')*
    (createPoint=('CreatePoint='|ANSTERM))?('\r\n')*
;

Ниже приведена проверка моей части, или вы можете сказать, проверьте правила для моих разделов в редакторе

@Check
    def validate_TriggerSectionConfiguration(IniTriggerSectionConfiguration iniTriggerSectionConfiguration){
        val value = iniTriggerSectionConfiguration.sectName;
        if (value.startsWith("[") && !value.endsWith("]")) {
            error("Missing \"]\"",iniTriggerSectionConfiguration, PmroutingPackage.Literals.INI_TRIGGER_SECTION_CONFIGURATION__SECT_NAME)
        }
    }

Ниже моя часть редактора

Если я изменю вышеуказанное имя на заглавную S

Если я пойду к красной ошибке, отметьте это сообщение об ошибке, которое я получаю

Я пытаюсь найти решение, которое не нашел. Моя проблема в checkRule Если я не написал никакой проверки для этой ошибки, почему Xtext дает такую ​​ошибку. Эта проблема возникает, когда мое имя начинается с этой заглавной буквы: A, G, L, M, O, P, R, S, T, W. Это проблема с моим кодом, или в xtext есть ошибки или я что-то упустил?

0 ответов

Другие вопросы по тегам