[ {"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"} ]