diff --git a/src/gherkin_lexer.xrl b/src/gherkin_lexer.xrl new file mode 100644 index 0000000000000000000000000000000000000000..9882f1dbd15ac84e619b3ff0bb6b68ac1c16bb98 --- /dev/null +++ b/src/gherkin_lexer.xrl @@ -0,0 +1,37 @@ +Definitions. + +FEATURE = [Ff]eature: +BACKGROUND = \n\s+[Bb]ackground: +SCENARIO = \n\s+[Ss]cenario: +SCENARIO_OUTLINE = \n\s+[Ss]cenario\s[Oo]utline: +GIVEN = \n\s+[Gg]iven\s +WHEN = \n\s+[Ww]hen\s +THEN = \n\s+[Tt]hen\s +AND = \n\s+[Aa]nd\s +BUT = \n\s+[Bb]ut\s +VAR = <[0-9a-zA-Z_]+> +N = (\r|\n|\r\n) +W = [\x{21}-\x{7b}\x{7d}-\x{ffff}] + +Rules. + +{FEATURE} : {token, {feature, TokenLine}}. +{BACKGROUND} : {token, {background, TokenLine}}. +{SCENARIO} : {token, {scenario, TokenLine}}. +{SCENARIO_OUTLINE} : {token, {scenario_outline, TokenLine}}. +{GIVEN} : {token, {given, TokenLine}}. +{WHEN} : {token, {'when', TokenLine}}. +{THEN} : {token, {then, TokenLine}}. +{AND} : {token, {'and', TokenLine}}. +{BUT} : {token, {but, TokenLine}}. +{VAR} : {token, {var, TokenLine, TokenChars}}. +""" : {token, {docstring, TokenLine}}. +\x{7c}({W}|\s)+\x{7c} : {token, {cell, TokenLine, string:strip(string:strip(TokenChars, both, $|), both, 32)}, "|"}. +\x{7c}{N} : {token, {newline, TokenLine}}. +"({W}|\s)+" : {token, {word, TokenLine, TokenChars}}. +@{W}+ : {token, {tag, TokenLine, TokenChars}}. +{W}+ : {token, {word, TokenLine, TokenChars}}. +\s+ : {token, {space, TokenLine, TokenChars}}. +{N} : {token, {newline, TokenLine}}. + +Erlang code.