1. <lexer>
    
  2.   <config>
    
  3.     <name>Gherkin</name>
    
  4.     <alias>cucumber</alias>
    
  5.     <alias>Cucumber</alias>
    
  6.     <alias>gherkin</alias>
    
  7.     <alias>Gherkin</alias>
    
  8.     <filename>*.feature</filename>
    
  9.     <filename>*.FEATURE</filename>
    
  10.     <mime_type>text/x-gherkin</mime_type>
    
  11.   </config>
    
  12.   <rules>
    
  13.     <state name="comments">
    
  14.       <rule pattern="\s*#.*$">
    
  15.         <token type="Comment"/>
    
  16.       </rule>
    
  17.     </state>
    
  18.     <state name="featureElementsOnStack">
    
  19.       <rule pattern="^(\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y&#39;all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y&#39;all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu&#39;|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y&#39;all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y&#39;all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y&#39;all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )">
    
  20.         <token type="Keyword"/>
    
  21.         <pop depth="2"/>
    
  22.       </rule>
    
  23.       <rule>
    
  24.         <include state="comments"/>
    
  25.       </rule>
    
  26.       <rule pattern="(\s|.)">
    
  27.         <token type="NameFunction"/>
    
  28.       </rule>
    
  29.     </state>
    
  30.     <state name="tableContent">
    
  31.       <rule pattern="\s+\|\s*$">
    
  32.         <token type="Keyword"/>
    
  33.         <pop depth="1"/>
    
  34.       </rule>
    
  35.       <rule>
    
  36.         <include state="comments"/>
    
  37.       </rule>
    
  38.       <rule pattern="\\\|">
    
  39.         <token type="LiteralString"/>
    
  40.       </rule>
    
  41.       <rule pattern="\s*\|">
    
  42.         <token type="Keyword"/>
    
  43.       </rule>
    
  44.       <rule pattern="&#34;">
    
  45.         <token type="LiteralString"/>
    
  46.         <push state="doubleStringTable"/>
    
  47.       </rule>
    
  48.       <rule>
    
  49.         <include state="string"/>
    
  50.       </rule>
    
  51.     </state>
    
  52.     <state name="numbers">
    
  53.       <rule pattern="(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?">
    
  54.         <token type="LiteralString"/>
    
  55.       </rule>
    
  56.     </state>
    
  57.     <state name="tableVars">
    
  58.       <rule pattern="(&lt;[^&gt;]+&gt;)">
    
  59.         <token type="NameVariable"/>
    
  60.       </rule>
    
  61.     </state>
    
  62.     <state name="doubleString">
    
  63.       <rule pattern="&#34;">
    
  64.         <token type="NameFunction"/>
    
  65.         <pop depth="1"/>
    
  66.       </rule>
    
  67.       <rule>
    
  68.         <include state="string"/>
    
  69.       </rule>
    
  70.     </state>
    
  71.     <state name="featureElements">
    
  72.       <rule pattern="^(\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y&#39;all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y&#39;all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu&#39;|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y&#39;all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y&#39;all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y&#39;all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )">
    
  73.         <token type="Keyword"/>
    
  74.         <push state="stepContentStack"/>
    
  75.       </rule>
    
  76.       <rule>
    
  77.         <include state="comments"/>
    
  78.       </rule>
    
  79.       <rule pattern="(\s|.)">
    
  80.         <token type="NameFunction"/>
    
  81.       </rule>
    
  82.     </state>
    
  83.     <state name="examplesTableHeader">
    
  84.       <rule pattern="\s+\|\s*$">
    
  85.         <token type="Keyword"/>
    
  86.         <pop depth="2"/>
    
  87.       </rule>
    
  88.       <rule>
    
  89.         <include state="comments"/>
    
  90.       </rule>
    
  91.       <rule pattern="\\\|">
    
  92.         <token type="NameVariable"/>
    
  93.       </rule>
    
  94.       <rule pattern="\s*\|">
    
  95.         <token type="Keyword"/>
    
  96.       </rule>
    
  97.       <rule pattern="[^|]">
    
  98.         <token type="NameVariable"/>
    
  99.       </rule>
    
  100.     </state>
    
  101.     <state name="stepContentStack">
    
  102.       <rule pattern="$">
    
  103.         <token type="Keyword"/>
    
  104.         <pop depth="2"/>
    
  105.       </rule>
    
  106.       <rule>
    
  107.         <include state="stepContent"/>
    
  108.       </rule>
    
  109.     </state>
    
  110.     <state name="pyString">
    
  111.       <rule pattern="&#34;&#34;&#34;">
    
  112.         <token type="Keyword"/>
    
  113.         <pop depth="1"/>
    
  114.       </rule>
    
  115.       <rule>
    
  116.         <include state="string"/>
    
  117.       </rule>
    
  118.     </state>
    
  119.     <state name="examplesTable">
    
  120.       <rule pattern="\s+\|">
    
  121.         <token type="Keyword"/>
    
  122.         <push state="examplesTableHeader"/>
    
  123.       </rule>
    
  124.       <rule>
    
  125.         <include state="comments"/>
    
  126.       </rule>
    
  127.       <rule pattern="(\s|.)">
    
  128.         <token type="NameFunction"/>
    
  129.       </rule>
    
  130.     </state>
    
  131.     <state name="stepContentRoot">
    
  132.       <rule pattern="$">
    
  133.         <token type="Keyword"/>
    
  134.         <pop depth="1"/>
    
  135.       </rule>
    
  136.       <rule>
    
  137.         <include state="stepContent"/>
    
  138.       </rule>
    
  139.     </state>
    
  140.     <state name="doubleStringTable">
    
  141.       <rule pattern="&#34;">
    
  142.         <token type="LiteralString"/>
    
  143.         <pop depth="1"/>
    
  144.       </rule>
    
  145.       <rule>
    
  146.         <include state="string"/>
    
  147.       </rule>
    
  148.     </state>
    
  149.     <state name="string">
    
  150.       <rule>
    
  151.         <include state="tableVars"/>
    
  152.       </rule>
    
  153.       <rule pattern="(\s|.)">
    
  154.         <token type="LiteralString"/>
    
  155.       </rule>
    
  156.     </state>
    
  157.     <state name="stepContent">
    
  158.       <rule pattern="&#34;">
    
  159.         <token type="NameFunction"/>
    
  160.         <push state="doubleString"/>
    
  161.       </rule>
    
  162.       <rule>
    
  163.         <include state="tableVars"/>
    
  164.       </rule>
    
  165.       <rule>
    
  166.         <include state="numbers"/>
    
  167.       </rule>
    
  168.       <rule>
    
  169.         <include state="comments"/>
    
  170.       </rule>
    
  171.       <rule pattern="(\s|.)">
    
  172.         <token type="NameFunction"/>
    
  173.       </rule>
    
  174.     </state>
    
  175.     <state name="scenarioSectionsOnStack">
    
  176.       <rule pattern="^(\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|剧本大纲|剧本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l&#39;escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y&#39;all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$">
    
  177.         <bygroups>
    
  178.           <token type="NameFunction"/>
    
  179.           <token type="Keyword"/>
    
  180.           <token type="Keyword"/>
    
  181.           <token type="NameFunction"/>
    
  182.         </bygroups>
    
  183.         <push state="featureElementsOnStack"/>
    
  184.       </rule>
    
  185.     </state>
    
  186.     <state name="narrative">
    
  187.       <rule>
    
  188.         <include state="scenarioSectionsOnStack"/>
    
  189.       </rule>
    
  190.       <rule pattern="(\s|.)">
    
  191.         <token type="NameFunction"/>
    
  192.       </rule>
    
  193.     </state>
    
  194.     <state name="root">
    
  195.       <rule pattern="\n">
    
  196.         <token type="NameFunction"/>
    
  197.       </rule>
    
  198.       <rule>
    
  199.         <include state="comments"/>
    
  200.       </rule>
    
  201.       <rule pattern="&#34;&#34;&#34;">
    
  202.         <token type="Keyword"/>
    
  203.         <push state="pyString"/>
    
  204.       </rule>
    
  205.       <rule pattern="\s+\|">
    
  206.         <token type="Keyword"/>
    
  207.         <push state="tableContent"/>
    
  208.       </rule>
    
  209.       <rule pattern="&#34;">
    
  210.         <token type="NameFunction"/>
    
  211.         <push state="doubleString"/>
    
  212.       </rule>
    
  213.       <rule>
    
  214.         <include state="tableVars"/>
    
  215.       </rule>
    
  216.       <rule>
    
  217.         <include state="numbers"/>
    
  218.       </rule>
    
  219.       <rule pattern="(\s*)(@[^@\r\n\t ]+)">
    
  220.         <bygroups>
    
  221.           <token type="NameFunction"/>
    
  222.           <token type="NameTag"/>
    
  223.         </bygroups>
    
  224.       </rule>
    
  225.       <rule pattern="^(\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y&#39;all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y&#39;all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu&#39;|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y&#39;all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y&#39;all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y&#39;all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )">
    
  226.         <bygroups>
    
  227.           <token type="NameFunction"/>
    
  228.           <token type="Keyword"/>
    
  229.         </bygroups>
    
  230.         <push state="stepContentRoot"/>
    
  231.       </rule>
    
  232.       <rule pattern="^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$">
    
  233.         <bygroups>
    
  234.           <token type="Keyword"/>
    
  235.           <token type="Keyword"/>
    
  236.           <token type="NameFunction"/>
    
  237.         </bygroups>
    
  238.         <push state="narrative"/>
    
  239.       </rule>
    
  240.       <rule pattern="^(\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|剧本大纲|剧本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l&#39;escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y&#39;all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$">
    
  241.         <bygroups>
    
  242.           <token type="NameFunction"/>
    
  243.           <token type="Keyword"/>
    
  244.           <token type="Keyword"/>
    
  245.           <token type="NameFunction"/>
    
  246.         </bygroups>
    
  247.         <push state="featureElements"/>
    
  248.       </rule>
    
  249.       <rule pattern="^(\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$">
    
  250.         <bygroups>
    
  251.           <token type="NameFunction"/>
    
  252.           <token type="Keyword"/>
    
  253.           <token type="Keyword"/>
    
  254.           <token type="NameFunction"/>
    
  255.         </bygroups>
    
  256.         <push state="examplesTable"/>
    
  257.       </rule>
    
  258.       <rule pattern="(\s|.)">
    
  259.         <token type="NameFunction"/>
    
  260.       </rule>
    
  261.     </state>
    
  262.   </rules>
    
  263. </lexer>