[
  {"type":"NameTag","value":"@foo34"},
  {"type":"NameFunction","value":" "},
  {"type":"NameTag","value":"@bar"},
  {"type":"Comment","value":" # some comment"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"Feature:"},
  {"type":"NameFunction","value":" proof of concept\n\n  In order to read Cucumber features faster and eaiser on Github \n  As a Cucumber user\n  I want to have syntax highlighting for Gherkin\n  This is part of the narrative, even if I have the # symbol, it is still the narrative- not a comment\n\n  "},
  {"type":"Keyword","value":"Background:"},
  {"type":"NameFunction","value":" this is multi-line description\n    do you like it?\n"},
  {"type":"Keyword","value":"    Given "},
  {"type":"NameFunction","value":"cheese is good\n\n  "},
  {"type":"Keyword","value":"Scenario Outline:"},
  {"type":"NameFunction","value":" this is a test \n                    this the second line of the desctiption\n"},
  {"type":"Keyword","value":"    Given "},
  {"type":"NameFunction","value":"I have a "},
  {"type":"NameVariable","value":"\u003cvar1\u003e"},
  {"type":"NameFunction","value":" and some \""},
  {"type":"LiteralString","value":"string"},
  {"type":"NameFunction","value":"\"\n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"the following table and some 'string'\n"},
  {"type":"Keyword","value":"      |"},
  {"type":"LiteralString","value":" header 1"},
  {"type":"Keyword","value":"  |"},
  {"type":"LiteralString","value":" header 2"},
  {"type":"Keyword","value":"  |"},
  {"type":"Comment","value":" # here is a comment after a step table header"},
  {"type":"Keyword","value":"\n      |"},
  {"type":"LiteralString","value":" cell 1-1"},
  {"type":"Keyword","value":"  |"},
  {"type":"LiteralString","value":" cell 1-2"},
  {"type":"Keyword","value":"  |"},
  {"type":"Comment","value":" # here is a comment after a step table row"},
  {"type":"Keyword","value":"\n      |"},
  {"type":"LiteralString","value":" cell 2-1"},
  {"type":"Keyword","value":"  |"},
  {"type":"LiteralString","value":" \"cell 2-2\""},
  {"type":"Keyword","value":" |\n"},
  {"type":"NameFunction","value":"\n    "},
  {"type":"Keyword","value":"When "},
  {"type":"NameFunction","value":"I do "},
  {"type":"NameVariable","value":"\u003cvar2\u003e"},
  {"type":"NameFunction","value":"\n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"use apostrophes then the feature's syntax still looks good\n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"here is a string with single and double quotes- \""},
  {"type":"LiteralString","value":"i'll be back"},
  {"type":"NameFunction","value":"\" \n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"here is a string with the opposite 'the quote is \""},
  {"type":"LiteralString","value":"Foo"},
  {"type":"NameFunction","value":"\"'\n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"what about a var in a quote like so: \""},
  {"type":"NameVariable","value":"\u003cvar2\u003e"},
  {"type":"NameFunction","value":"\"\n    "},
  {"type":"Keyword","value":"And "},
  {"type":"NameFunction","value":"what about a multiline string with a var in it like so:\n    "},
  {"type":"Keyword","value":"\"\"\""},
  {"type":"LiteralString","value":"\n    Hello!\n    I am a multiple line string, often called a pystring.\n    I can have regular \"double quotes\" without a problem...\n    I can also sub in vars as well like: "},
  {"type":"NameVariable","value":"\u003cvar1\u003e"},
  {"type":"LiteralString","value":" and "},
  {"type":"NameVariable","value":"\u003cvar2\u003e"},
  {"type":"LiteralString","value":"\n    "},
  {"type":"Keyword","value":"\"\"\""},
  {"type":"NameFunction","value":"\n\n    "},
  {"type":"Keyword","value":"Then "},
  {"type":"NameFunction","value":"I should see something...\n    "},
  {"type":"Keyword","value":"But "},
  {"type":"NameFunction","value":"not something else...\n\n  "},
  {"type":"Keyword","value":"Examples:\n    |"},
  {"type":"NameVariable","value":" var1"},
  {"type":"Keyword","value":"  |"},
  {"type":"NameVariable","value":"  var2"},
  {"type":"Keyword","value":"  |"},
  {"type":"Comment","value":" # i am a comment"},
  {"type":"Keyword","value":"\n    |"},
  {"type":"NameVariable","value":" foo"},
  {"type":"Keyword","value":"   |"},
  {"type":"NameVariable","value":"  bar"},
  {"type":"Keyword","value":"   |"},
  {"type":"Comment","value":" # so am i"},
  {"type":"Keyword","value":"\n    |"},
  {"type":"NameVariable","value":" dog"},
  {"type":"Keyword","value":"   |"},
  {"type":"NameVariable","value":"  food"},
  {"type":"Keyword","value":"  |\n"},
  {"type":"NameFunction","value":"\n  "},
  {"type":"Keyword","value":"Scenarios:"},
  {"type":"NameFunction","value":" some other examples with a description\n             and guess waht?!? I can have multilines as well!"},
  {"type":"Comment","value":"  # look at me, I'm a comment"},
  {"type":"NameFunction","value":"\n             Who would have thunk?"},
  {"type":"Keyword","value":"\n    |"},
  {"type":"NameVariable","value":" var1"},
  {"type":"Keyword","value":"  |"},
  {"type":"NameVariable","value":"  var2"},
  {"type":"Keyword","value":"  |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" foo"},
  {"type":"Keyword","value":"   |"},
  {"type":"LiteralString","value":"  bar"},
  {"type":"Keyword","value":"   |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" dog"},
  {"type":"Keyword","value":"   |"},
  {"type":"LiteralString","value":"  food"},
  {"type":"Keyword","value":"  |\n"},
  {"type":"NameFunction","value":"\n  "},
  {"type":"NameTag","value":"@some_tag"},
  {"type":"NameFunction","value":" "},
  {"type":"NameTag","value":"@another_tag"},
  {"type":"NameFunction","value":"\n  "},
  {"type":"Keyword","value":"Scenario:"},
  {"type":"NameFunction","value":" more examples\n            will follow after this multi-line description\n"},
  {"type":"Keyword","value":"    Given "},
  {"type":"NameFunction","value":"some context"},
  {"type":"Comment","value":"# this is an inline comment"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Comment","value":"    # This is a comment"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Comment","value":"# So is this with no space at front..."},
  {"type":"NameFunction","value":"\n\n"},
  {"type":"Keyword","value":"Funktionalität:"},
  {"type":"NameFunction","value":" Addition\n  Um dumme Fehler zu vermeiden\n  möchte ich als Matheidiot\n  die Summe zweier Zahlen gesagt bekommen\n\n  "},
  {"type":"Keyword","value":"Szenariogrundriss:"},
  {"type":"NameFunction","value":" Zwei Zahlen hinzufügen\n"},
  {"type":"Keyword","value":"    Gegeben sei "},
  {"type":"NameFunction","value":"ich habe "},
  {"type":"NameVariable","value":"\u003cEingabe_1\u003e"},
  {"type":"NameFunction","value":" in den Taschenrechner eingegeben\n    "},
  {"type":"Keyword","value":"Und "},
  {"type":"NameFunction","value":"ich habe "},
  {"type":"NameVariable","value":"\u003cEingabe_2\u003e"},
  {"type":"NameFunction","value":" in den Taschenrechner eingegeben\n    "},
  {"type":"Keyword","value":"Wenn "},
  {"type":"NameFunction","value":"ich "},
  {"type":"NameVariable","value":"\u003cKnopf\u003e"},
  {"type":"NameFunction","value":" drücke\n    "},
  {"type":"Keyword","value":"Dann "},
  {"type":"NameFunction","value":"sollte das Ergebniss auf dem Bildschirm "},
  {"type":"NameVariable","value":"\u003cAusgabe\u003e"},
  {"type":"NameFunction","value":" sein\n\n  "},
  {"type":"Keyword","value":"Beispiele:\n    |"},
  {"type":"NameVariable","value":" Eingabe_1"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" Eingabe_2"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" Knopf"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" Ausgabe"},
  {"type":"Keyword","value":" |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 20"},
  {"type":"Keyword","value":"        |"},
  {"type":"LiteralString","value":" 30"},
  {"type":"Keyword","value":"        |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"   |"},
  {"type":"LiteralString","value":" 50"},
  {"type":"Keyword","value":"      |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 2"},
  {"type":"Keyword","value":"         |"},
  {"type":"LiteralString","value":" 5"},
  {"type":"Keyword","value":"         |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"   |"},
  {"type":"LiteralString","value":" 7"},
  {"type":"Keyword","value":"       |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 0"},
  {"type":"Keyword","value":"         |"},
  {"type":"LiteralString","value":" 40"},
  {"type":"Keyword","value":"        |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"   |"},
  {"type":"LiteralString","value":" 40"},
  {"type":"Keyword","value":"      |\n"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"Feature:"},
  {"type":"NameFunction","value":" Addition\n  In order to avoid silly mistakes\n  As a math idiot \n  I want to be told the sum of two numbers\n\n  "},
  {"type":"Keyword","value":"Scenario Outline:"},
  {"type":"NameFunction","value":" Add two numbers\n"},
  {"type":"Keyword","value":"    Given "},
  {"type":"NameFunction","value":"I have entered "},
  {"type":"NameVariable","value":"\u003cinput_1\u003e"},
  {"type":"NameFunction","value":" into the calculator\n    "},
  {"type":"Keyword","value":"* "},
  {"type":"NameFunction","value":"I have entered "},
  {"type":"NameVariable","value":"\u003cinput_2\u003e"},
  {"type":"NameFunction","value":" into the calculator\n    "},
  {"type":"Keyword","value":"When "},
  {"type":"NameFunction","value":"I press "},
  {"type":"NameVariable","value":"\u003cbutton\u003e"},
  {"type":"NameFunction","value":"\n    "},
  {"type":"Keyword","value":"Then "},
  {"type":"NameFunction","value":"the result should be "},
  {"type":"NameVariable","value":"\u003coutput\u003e"},
  {"type":"NameFunction","value":" on the screen\n\n  "},
  {"type":"Keyword","value":"Examples:\n    |"},
  {"type":"NameVariable","value":" input_1"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" input_2"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" button"},
  {"type":"Keyword","value":" |"},
  {"type":"NameVariable","value":" output"},
  {"type":"Keyword","value":" |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 20"},
  {"type":"Keyword","value":"      |"},
  {"type":"LiteralString","value":" 30"},
  {"type":"Keyword","value":"      |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 50"},
  {"type":"Keyword","value":"     |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 2"},
  {"type":"Keyword","value":"       |"},
  {"type":"LiteralString","value":" 5"},
  {"type":"Keyword","value":"       |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 7"},
  {"type":"Keyword","value":"      |"},
  {"type":"NameFunction","value":"\n"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 0"},
  {"type":"Keyword","value":"       |"},
  {"type":"LiteralString","value":" 40"},
  {"type":"Keyword","value":"      |"},
  {"type":"LiteralString","value":" add"},
  {"type":"Keyword","value":"    |"},
  {"type":"LiteralString","value":" 40"},
  {"type":"Keyword","value":"     |\n"}
]