diff --git a/Units/parser-robot.r/keyword-started-from-varref.d/expected.tags b/Units/parser-robot.r/keyword-started-from-varref.d/expected.tags index 4885f862cd..04a01ca332 100644 --- a/Units/parser-robot.r/keyword-started-from-varref.d/expected.tags +++ b/Units/parser-robot.r/keyword-started-from-varref.d/expected.tags @@ -3,15 +3,31 @@ My Regular Keyword input.robot /^My Regular Keyword$/;" k My_Regular_Keyword input.robot /^My Regular Keyword$/;" k ${embedded arg} Starting Single input.robot /^${embedded arg} Starting Single$/;" k ${embedded_arg}_Starting_Single input.robot /^${embedded arg} Starting Single$/;" k +${e} Starting Single Letter input.robot /^${e} Starting Single Letter$/;" k +${e}_Starting_Single_Letter input.robot /^${e} Starting Single Letter$/;" k +${embedded arg:value1|value2} Starting Single With Regex input.robot /^${embedded arg:value1|value2} Starting Single With Regex$/;" k +${embedded_arg:value1|value2}_Starting_Single_With_Regex input.robot /^${embedded arg:value1|value2} Starting Single With Regex$/;" k ${embedded arg1} Starting ${embedded arg2} Multiple input.robot /^${embedded arg1} Starting ${embedded arg2} Multiple$/;" k ${embedded_arg1}_Starting_${embedded_arg2}_Multiple input.robot /^${embedded arg1} Starting ${embedded arg2} Multiple$/;" k +${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex input.robot /^${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex$/;" k +${embedded_arg1}_Starting_${embedded_arg2:value1|value2}_Multiple_With_Regex input.robot /^${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex$/;" k ${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3} input.robot /^${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3}$/;" k ${embedded_arg1}_Starting_And_${embedded_arg2}_Ending_${embedded_arg3} input.robot /^${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3}$/;" k Middle ${embedded arg} Single Arguments input.robot /^Middle ${embedded arg} Single Arguments$/;" k Middle_${embedded_arg}_Single_Arguments input.robot /^Middle ${embedded arg} Single Arguments$/;" k Middle ${embedded arg1} Multiple ${embedded arg2} Arguments input.robot /^Middle ${embedded arg1} Multiple ${embedded arg2} Arguments$/;" k Middle_${embedded_arg1}_Multiple_${embedded_arg2}_Arguments input.robot /^Middle ${embedded arg1} Multiple ${embedded arg2} Arguments$/;" k +Middle ${embedded arg:value1|value2} Single Arguments With Regex input.robot /^Middle ${embedded arg:value1|value2} Single Arguments With Regex$/;" k +Middle_${embedded_arg:value1|value2}_Single_Arguments_With_Regex input.robot /^Middle ${embedded arg:value1|value2} Single Arguments With Regex$/;" k +Middle ${e} Single Letter Arguments input.robot /^Middle ${e} Single Letter Arguments$/;" k +Middle_${e}_Single_Letter_Arguments input.robot /^Middle ${e} Single Letter Arguments$/;" k Ending Single ${embedded arg} input.robot /^Ending Single ${embedded arg}$/;" k Ending_Single_${embedded_arg} input.robot /^Ending Single ${embedded arg}$/;" k Ending Multiple ${embedded arg1} And ${embedded arg2} input.robot /^Ending Multiple ${embedded arg1} And ${embedded arg2}$/;" k Ending_Multiple_${embedded_arg1}_And_${embedded_arg2} input.robot /^Ending Multiple ${embedded arg1} And ${embedded arg2}$/;" k +My Keyword_with_underscore-and-dashes input.robot /^My Keyword_with_underscore-and-dashes$/;" k +My Keyword with underscore-and-dashes input.robot /^My Keyword_with_underscore-and-dashes$/;" k +My Keyword_With $ dollar sign input.robot /^My Keyword_With $ dollar sign$/;" k +My Keyword With $ dollar sign input.robot /^My Keyword_With $ dollar sign$/;" k +My Test With Template1 input.robot /^My Test With Template1 My Kw 1 My Kw 2$/;" t +My_Test_With_Template1 input.robot /^My Test With Template1 My Kw 1 My Kw 2$/;" t diff --git a/Units/parser-robot.r/keyword-started-from-varref.d/input.robot b/Units/parser-robot.r/keyword-started-from-varref.d/input.robot index c8adc3d65d..90ffcc55b6 100644 --- a/Units/parser-robot.r/keyword-started-from-varref.d/input.robot +++ b/Units/parser-robot.r/keyword-started-from-varref.d/input.robot @@ -1,7 +1,8 @@ # -# This test input is taken from #1570 opened by @mMontu. +# This test input is taken from #1572 opened by @mMontu. # *** Variables *** + ${myvar} variable_value *** Keywords *** @@ -12,9 +13,19 @@ My Regular Keyword ${embedded arg} Starting Single No Operation +${e} Starting Single Letter + No Operation + + +${embedded arg:value1|value2} Starting Single With Regex + No Operation + ${embedded arg1} Starting ${embedded arg2} Multiple No Operation +${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex + No Operation + ${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3} No Operation @@ -24,8 +35,24 @@ Middle ${embedded arg} Single Arguments Middle ${embedded arg1} Multiple ${embedded arg2} Arguments No Operation +Middle ${embedded arg:value1|value2} Single Arguments With Regex + No Operation + +Middle ${e} Single Letter Arguments + No Operation + Ending Single ${embedded arg} No Operation Ending Multiple ${embedded arg1} And ${embedded arg2} No Operation + +My Keyword_with_underscore-and-dashes + No Operation + +My Keyword_With $ dollar sign + No Operation + +*** Test Cases *** + +My Test With Template1 My Kw 1 My Kw 2 diff --git a/parsers/robot.c b/parsers/robot.c index 2ee0f924a5..f1ce814872 100644 --- a/parsers/robot.c +++ b/parsers/robot.c @@ -144,7 +144,7 @@ static void initialize (const langType language) addLanguageCallbackRegex ( language, - "(^([A-Za-z0-9]+|\\$\\{[_A-Za-z0-9][' _A-Za-z0-9]+\\})([${}' _][-${}A-Za-z0-9]+)*)", + "(^([A-Za-z0-9]+|\\$\\{[_A-Za-z0-9][' _A-Za-z0-9]*(:([^}]|\\\\|)+)*\\})([${}' _]([-_$A-Za-z0-9]+|\\{[_A-Za-z0-9][' _A-Za-z0-9]*(:([^}]|\\\\|)+)*\\})+)*)", "{exclusive}", tagKeywordsAndTestCases, NULL, NULL); addLanguageCallbackRegex (language, "^[$@]\\{([_A-Za-z0-9][' _A-Za-z0-9]+)\\} [ ]*.+",