diff --git a/README.md b/README.md index 124ff9f5a..84ca20e03 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ translators for Pygments lexers and styles. Prefix | Language :----: | -------- -A | ABAP, ABNF, ActionScript, ActionScript 3, Ada, Angular2, ANTLR, ApacheConf, APL, AppleScript, Arduino, Awk +A | ABAP, ABNF, ActionScript, ActionScript 3, Ada, Angular2, ANTLR, ApacheConf, APL, AppleScript, ArangoDB AQL, Arduino, Awk B | Ballerina, Bash, Batchfile, BibTeX, Bicep, BlitzBasic, BNF, Brainfuck, BQN C | C, C#, C++, Caddyfile, Caddyfile Directives, Cap'n Proto, Cassandra CQL, Ceylon, CFEngine3, cfstatement, ChaiScript, Chapel, Cheetah, Clojure, CMake, COBOL, CoffeeScript, Common Lisp, Coq, Crystal, CSS, Cython D | D, Dart, Diff, Django/Jinja, Docker, DTD, Dylan diff --git a/lexers/README.md b/lexers/README.md index a205d89c8..60a0055ad 100644 --- a/lexers/README.md +++ b/lexers/README.md @@ -5,7 +5,7 @@ All lexers in Chroma should now be defined in XML unless they require custom cod ## Lexer tests The tests in this directory feed a known input `testdata/.actual` into the parser for `` and check -that its output matches `.exported`. +that its output matches `.expected`. It is also possible to perform several tests on a same parser ``, by placing know inputs `*.actual` into a directory `testdata//`. diff --git a/lexers/embedded/aql.xml b/lexers/embedded/aql.xml new file mode 100644 index 000000000..665465a9a --- /dev/null +++ b/lexers/embedded/aql.xml @@ -0,0 +1,175 @@ + + + ArangoDB AQL + aql + *.aql + text/x-aql + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lexers/testdata/aql/comments.actual b/lexers/testdata/aql/comments.actual new file mode 100644 index 000000000..da1b113c1 --- /dev/null +++ b/lexers/testdata/aql/comments.actual @@ -0,0 +1,5 @@ +code//comment +code/*comment*/ +/* comment RETURN 42 "'` * +multiline */code +white space \ No newline at end of file diff --git a/lexers/testdata/aql/comments.expected b/lexers/testdata/aql/comments.expected new file mode 100644 index 000000000..fbdd434e3 --- /dev/null +++ b/lexers/testdata/aql/comments.expected @@ -0,0 +1,13 @@ +[ + {"type":"Name","value":"code"}, + {"type":"CommentSingle","value":"//comment\n"}, + {"type":"Name","value":"code"}, + {"type":"CommentMultiline","value":"/*comment*/"}, + {"type":"Text","value":"\n"}, + {"type":"CommentMultiline","value":"/* comment RETURN 42 \"'` *\nmultiline */"}, + {"type":"Name","value":"code"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"white"}, + {"type":"Text","value":" \t"}, + {"type":"Name","value":"space"} +] diff --git a/lexers/testdata/aql/functions.actual b/lexers/testdata/aql/functions.actual new file mode 100644 index 000000000..fd169031a --- /dev/null +++ b/lexers/testdata/aql/functions.actual @@ -0,0 +1,14 @@ +RAND() +rand () +Collections() +COUNT_DISTINCT() +COUNT() +not_null() +REMOVE_VALUE() +group::func() +GROUP_57::F9_() + +0::0() +1SUM() +_G::A() +_aql::avg() \ No newline at end of file diff --git a/lexers/testdata/aql/functions.expected b/lexers/testdata/aql/functions.expected new file mode 100644 index 000000000..f9f5dd0e2 --- /dev/null +++ b/lexers/testdata/aql/functions.expected @@ -0,0 +1,48 @@ +[ + {"type":"NameFunction","value":"RAND"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"rand"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"Collections"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"COUNT_DISTINCT"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"COUNT"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"not_null"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"REMOVE_VALUE"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"group::func"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"NameFunction","value":"GROUP_57::F9_"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Operator","value":"::"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"NameFunction","value":"SUM"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"_G"}, + {"type":"Operator","value":"::"}, + {"type":"Name","value":"A"}, + {"type":"Punctuation","value":"()"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"_aql"}, + {"type":"Operator","value":"::"}, + {"type":"NameFunction","value":"avg"}, + {"type":"Punctuation","value":"()"} +] diff --git a/lexers/testdata/aql/identifiers.actual b/lexers/testdata/aql/identifiers.actual new file mode 100644 index 000000000..cbd149ef4 --- /dev/null +++ b/lexers/testdata/aql/identifiers.actual @@ -0,0 +1,19 @@ +i +doc +Vertex +n036 +$X +__foo__ +`FILTER` +`@12 3!` +´&tab FOR äöü´ +`multi\` +\\\` +line` +´multi\´ +\\\´ +line´ + +$6 +$_Y +_8 \ No newline at end of file diff --git a/lexers/testdata/aql/identifiers.expected b/lexers/testdata/aql/identifiers.expected new file mode 100644 index 000000000..eaa2ccead --- /dev/null +++ b/lexers/testdata/aql/identifiers.expected @@ -0,0 +1,32 @@ +[ + {"type":"Name","value":"i"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"doc"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"Vertex"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"n036"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"$X"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"__foo__"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"`FILTER`"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"`@12 3!`"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"´\u0026tab\tFOR äöü´"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"`multi\\`\n\\\\\\`\nline`"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"´multi\\´\n\\\\\\´\nline´"}, + {"type":"Text","value":"\n\n"}, + {"type":"Error","value":"$"}, + {"type":"LiteralNumberInteger","value":"6"}, + {"type":"Text","value":"\n"}, + {"type":"Error","value":"$"}, + {"type":"Name","value":"_Y"}, + {"type":"Text","value":"\n"}, + {"type":"Error","value":"_"}, + {"type":"LiteralNumberInteger","value":"8"} +] diff --git a/lexers/testdata/aql/keywords.actual b/lexers/testdata/aql/keywords.actual new file mode 100644 index 000000000..6a371532d --- /dev/null +++ b/lexers/testdata/aql/keywords.actual @@ -0,0 +1,31 @@ +LET +AT LEAST +NULL +nULL +true +false +TRUE +FALSE +True +fAlSe +WITH COUNT INTO +KEEP +prune +SEARCH +to +OPTIONS {} +options{} +CURRENT +NEW +OLD + +LEAST +AT +CAT LEAST +KNULL +falsey +COUNT +OPTIONS +current +New +old \ No newline at end of file diff --git a/lexers/testdata/aql/keywords.expected b/lexers/testdata/aql/keywords.expected new file mode 100644 index 000000000..acf7d099e --- /dev/null +++ b/lexers/testdata/aql/keywords.expected @@ -0,0 +1,70 @@ +[ + {"type":"KeywordDeclaration","value":"LET"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordReserved","value":"AT LEAST"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"NULL"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"nULL"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"true"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"false"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"TRUE"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"FALSE"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"True"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordConstant","value":"fAlSe"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordReserved","value":"WITH"}, + {"type":"Text","value":" "}, + {"type":"KeywordPseudo","value":"COUNT"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"INTO"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"KEEP"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"prune"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"SEARCH"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"to"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"OPTIONS"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordPseudo","value":"options"}, + {"type":"Punctuation","value":"{}"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltinPseudo","value":"CURRENT"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltinPseudo","value":"NEW"}, + {"type":"Text","value":"\n"}, + {"type":"NameBuiltinPseudo","value":"OLD"}, + {"type":"Text","value":"\n\n"}, + {"type":"Name","value":"LEAST"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"AT"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"CAT"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"LEAST"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"KNULL"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"falsey"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"COUNT"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"OPTIONS"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"current"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"New"}, + {"type":"Text","value":"\n"}, + {"type":"Name","value":"old"} +] diff --git a/lexers/testdata/aql/numbers.actual b/lexers/testdata/aql/numbers.actual new file mode 100644 index 000000000..1f5ac91f8 --- /dev/null +++ b/lexers/testdata/aql/numbers.actual @@ -0,0 +1,9 @@ +0b1100 0B1 +0xC0DE 0Xa7 +0.0 -1.23 .5 8e9 3.33E-3 456.7e+89 +0 2 400 + +0B 0b1e +0x 0X5G +00.7 .e6 ..5 +01 \ No newline at end of file diff --git a/lexers/testdata/aql/numbers.expected b/lexers/testdata/aql/numbers.expected new file mode 100644 index 000000000..1d8a7fac1 --- /dev/null +++ b/lexers/testdata/aql/numbers.expected @@ -0,0 +1,52 @@ +[ + {"type":"LiteralNumberBin","value":"0b1100"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberBin","value":"0B1"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberHex","value":"0xC0DE"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0Xa7"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberFloat","value":"0.0"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"-"}, + {"type":"LiteralNumberFloat","value":"1.23"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":".5"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"8e9"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"3.33E-3"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"45"}, + {"type":"LiteralNumberFloat","value":"6.7e+89"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"400"}, + {"type":"Text","value":"\n\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Name","value":"B"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberBin","value":"0b1"}, + {"type":"Name","value":"e"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Name","value":"x"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0X5"}, + {"type":"Name","value":"G"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"LiteralNumberFloat","value":"0.7"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"."}, + {"type":"Name","value":"e6"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"5"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralNumberInteger","value":"01"} +] diff --git a/lexers/testdata/aql/queries.actual b/lexers/testdata/aql/queries.actual new file mode 100644 index 000000000..7c894ad08 --- /dev/null +++ b/lexers/testdata/aql/queries.actual @@ -0,0 +1,12 @@ +FOR doc IN @@coll + FILTER doc.value >= @val && doc["value"] < COUNT ([.1, FALSE]) + COLLECT ´v a l´ /* legal! */ = doc.value WITH COUNT INTO count // blarg + RETURN MERGE(doc, { [CONCAT("new", 0.125)]: true } ) + +LET arr = [[1,2],3,[0]] +RETURN arr[** FILTER CURRENT % 2 == 0 RETURN CURRENT||null] + +FOR v,e,p IN 2..4 OUTBOUND "components/S" GRAPH "g" + PRUNE e != null AND p.edges[-1].text =~ @AND + OPTIONS { vertexCollections: ['components'] } + RETURN v.´sort´ ?: 0xBEEF diff --git a/lexers/testdata/aql/queries.expected b/lexers/testdata/aql/queries.expected new file mode 100644 index 000000000..a8d348a1b --- /dev/null +++ b/lexers/testdata/aql/queries.expected @@ -0,0 +1,194 @@ +[ + {"type":"KeywordReserved","value":"FOR"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"doc"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"IN"}, + {"type":"Text","value":" "}, + {"type":"NameVariableGlobal","value":"@@coll"}, + {"type":"Text","value":"\n "}, + {"type":"KeywordReserved","value":"FILTER"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"doc"}, + {"type":"Punctuation","value":"."}, + {"type":"Name","value":"value"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003e="}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@val"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u0026\u0026"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"doc"}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringDouble","value":"\"value\""}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"\u003c"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"COUNT"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"(["}, + {"type":"LiteralNumberFloat","value":".1"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"KeywordConstant","value":"FALSE"}, + {"type":"Punctuation","value":"])"}, + {"type":"Text","value":"\n "}, + {"type":"KeywordReserved","value":"COLLECT"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"´v a l´"}, + {"type":"Text","value":" "}, + {"type":"CommentMultiline","value":"/* legal! */"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Name","value":"doc"}, + {"type":"Punctuation","value":"."}, + {"type":"Name","value":"value"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"WITH"}, + {"type":"Text","value":" "}, + {"type":"KeywordPseudo","value":"COUNT"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"INTO"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"count"}, + {"type":"Text","value":" "}, + {"type":"CommentSingle","value":"// blarg\n"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"RETURN"}, + {"type":"Text","value":" "}, + {"type":"NameFunction","value":"MERGE"}, + {"type":"Punctuation","value":"("}, + {"type":"Name","value":"doc"}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"NameFunction","value":"CONCAT"}, + {"type":"Punctuation","value":"("}, + {"type":"LiteralStringDouble","value":"\"new\""}, + {"type":"Punctuation","value":","}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"0.125"}, + {"type":"Punctuation","value":")]"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"KeywordConstant","value":"true"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":")"}, + {"type":"Text","value":"\n\n"}, + {"type":"KeywordDeclaration","value":"LET"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"arr"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"="}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"[["}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":","}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Punctuation","value":"],"}, + {"type":"LiteralNumberInteger","value":"3"}, + {"type":"Punctuation","value":",["}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Punctuation","value":"]]"}, + {"type":"Text","value":"\n"}, + {"type":"KeywordReserved","value":"RETURN"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"arr"}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"**"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"FILTER"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltinPseudo","value":"CURRENT"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"%"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"2"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=="}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberInteger","value":"0"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"RETURN"}, + {"type":"Text","value":" "}, + {"type":"NameBuiltinPseudo","value":"CURRENT"}, + {"type":"Operator","value":"||"}, + {"type":"KeywordConstant","value":"null"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":"\n\n"}, + {"type":"KeywordReserved","value":"FOR"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"v"}, + {"type":"Punctuation","value":","}, + {"type":"Name","value":"e"}, + {"type":"Punctuation","value":","}, + {"type":"Name","value":"p"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"IN"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberFloat","value":"2"}, + {"type":"Operator","value":".."}, + {"type":"LiteralNumberInteger","value":"4"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"OUTBOUND"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringDouble","value":"\"components/S\""}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"GRAPH"}, + {"type":"Text","value":" "}, + {"type":"LiteralStringDouble","value":"\"g\""}, + {"type":"Text","value":"\n "}, + {"type":"KeywordPseudo","value":"PRUNE"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"e"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"!="}, + {"type":"Text","value":" "}, + {"type":"KeywordConstant","value":"null"}, + {"type":"Text","value":" "}, + {"type":"KeywordReserved","value":"AND"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"p"}, + {"type":"Punctuation","value":"."}, + {"type":"Name","value":"edges"}, + {"type":"Punctuation","value":"["}, + {"type":"Operator","value":"-"}, + {"type":"LiteralNumberInteger","value":"1"}, + {"type":"Punctuation","value":"]."}, + {"type":"Name","value":"text"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"=~"}, + {"type":"Text","value":" "}, + {"type":"NameVariable","value":"@AND"}, + {"type":"Text","value":"\n "}, + {"type":"KeywordPseudo","value":"OPTIONS"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"{"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"vertexCollections"}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"["}, + {"type":"LiteralStringSingle","value":"'components'"}, + {"type":"Punctuation","value":"]"}, + {"type":"Text","value":" "}, + {"type":"Punctuation","value":"}"}, + {"type":"Text","value":"\n "}, + {"type":"KeywordReserved","value":"RETURN"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"v"}, + {"type":"Punctuation","value":"."}, + {"type":"Name","value":"´sort´"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":"?:"}, + {"type":"Text","value":" "}, + {"type":"LiteralNumberHex","value":"0xBEEF"}, + {"type":"Text","value":"\n"} +] diff --git a/lexers/testdata/aql/strings.actual b/lexers/testdata/aql/strings.actual new file mode 100644 index 000000000..1bfe4f6df --- /dev/null +++ b/lexers/testdata/aql/strings.actual @@ -0,0 +1,12 @@ +"double" +'single' +"multi +line" +'multi +line' +"escaped\" +quote" +'escaped\' +quote' +"backtick\\'" +'backtick\\"' \ No newline at end of file diff --git a/lexers/testdata/aql/strings.expected b/lexers/testdata/aql/strings.expected new file mode 100644 index 000000000..0c9af5cda --- /dev/null +++ b/lexers/testdata/aql/strings.expected @@ -0,0 +1,17 @@ +[ + {"type":"LiteralStringDouble","value":"\"double\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSingle","value":"'single'"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDouble","value":"\"multi\nline\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSingle","value":"'multi\nline'"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDouble","value":"\"escaped\\\"\nquote\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSingle","value":"'escaped\\'\nquote'"}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringDouble","value":"\"backtick\\\\'\""}, + {"type":"Text","value":"\n"}, + {"type":"LiteralStringSingle","value":"'backtick\\\\\"'"} +]