From 91f168227ecdfd6699d89dbf7e0303b4cbde5729 Mon Sep 17 00:00:00 2001 From: Shuai Wang Date: Tue, 17 Mar 2020 22:32:54 +0800 Subject: [PATCH 1/5] init --- libraries/botbuilder-lg/src/LGFileLexer.g4 | 2 +- .../src/generated/LGFileLexer.ts | 182 +++++++++--------- 2 files changed, 92 insertions(+), 92 deletions(-) diff --git a/libraries/botbuilder-lg/src/LGFileLexer.g4 b/libraries/botbuilder-lg/src/LGFileLexer.g4 index 0e9608f22f..5e7ceb9e92 100644 --- a/libraries/botbuilder-lg/src/LGFileLexer.g4 +++ b/libraries/botbuilder-lg/src/LGFileLexer.g4 @@ -46,7 +46,7 @@ fragment STRING_LITERAL : ('\'' (~['\r\n])* '\'') | ('"' (~["\r\n])* '"'); fragment STRING_INTERPOLATION : '`' ('\\`' | ~'`')* '`'; -fragment EXPRESSION_FRAGMENT : '$' '{' (STRING_LITERAL | STRING_INTERPOLATION | EMPTY_OBJECT | ~[\r\n{}'"`] )+ '}'?; +fragment EXPRESSION_FRAGMENT : '$' '{' (STRING_LITERAL | STRING_INTERPOLATION | EMPTY_OBJECT | ~[{}'"`#\-] )+ '}'?; fragment ESCAPE_CHARACTER_FRAGMENT : '\\' ~[\r\n]?; diff --git a/libraries/botbuilder-lg/src/generated/LGFileLexer.ts b/libraries/botbuilder-lg/src/generated/LGFileLexer.ts index eedb60a114..f869a841bc 100644 --- a/libraries/botbuilder-lg/src/generated/LGFileLexer.ts +++ b/libraries/botbuilder-lg/src/generated/LGFileLexer.ts @@ -662,87 +662,87 @@ export class LGFileLexer extends Lexer { ".\b\x02\x03\x04\x05\x06\x07\x19\x04\x02CCcc\x04\x02EEee\x04\x02FFff\x04" + "\x02GGgg\x04\x02HHhh\x04\x02JJjj\x04\x02KKkk\x04\x02NNnn\x04\x02UUuu\x04" + "\x02VVvv\x04\x02WWww\x04\x02YYyy\x04\x02C\\c|\x06\x02\v\v\"\"\xA2\xA2" + - "\uFF01\uFF01\x05\x02\f\f\x0F\x0F))\x05\x02\f\f\x0F\x0F$$\x03\x02bb\t\x02" + - "\f\f\x0F\x0F$$))bb}}\x7F\x7F\x04\x02\f\f\x0F\x0F\x06\x02\f\f\x0F\x0F]" + - "]__\x05\x02\f\f\x0F\x0F*+\x04\x02//aa\x04\x02/0aa\u0286\x020\x03\x02\x02" + - "\x02\x022\x03\x02\x02\x02\x024\x03\x02\x02\x02\x026\x03\x02\x02\x02\x02" + - "8\x03\x02\x02\x02\x02:\x03\x02\x02\x02\x02<\x03\x02\x02\x02\x02>\x03\x02" + - "\x02\x02\x02@\x03\x02\x02\x02\x03B\x03\x02\x02\x02\x03D\x03\x02\x02\x02" + - "\x03F\x03\x02\x02\x02\x03H\x03\x02\x02\x02\x03J\x03\x02\x02\x02\x03L\x03" + - "\x02\x02\x02\x03N\x03\x02\x02\x02\x03P\x03\x02\x02\x02\x04R\x03\x02\x02" + - "\x02\x04T\x03\x02\x02\x02\x04V\x03\x02\x02\x02\x04X\x03\x02\x02\x02\x04" + - "Z\x03\x02\x02\x02\x04\\\x03\x02\x02\x02\x04^\x03\x02\x02\x02\x04`\x03" + - "\x02\x02\x02\x04b\x03\x02\x02\x02\x04d\x03\x02\x02\x02\x04f\x03\x02\x02" + - "\x02\x04h\x03\x02\x02\x02\x05j\x03\x02\x02\x02\x05l\x03\x02\x02\x02\x05" + - "n\x03\x02\x02\x02\x05p\x03\x02\x02\x02\x06r\x03\x02\x02\x02\x06t\x03\x02" + - "\x02\x02\x06v\x03\x02\x02\x02\x06x\x03\x02\x02\x02\x07z\x03\x02\x02\x02" + - "\x07|\x03\x02\x02\x02\x07~\x03\x02\x02\x02\x07\x80\x03\x02\x02\x02\x07" + - "\x82\x03\x02\x02\x02\x07\x84\x03\x02\x02\x02\x07\x86\x03\x02\x02\x02\x07" + - "\x88\x03\x02\x02\x02\x07\x8A\x03\x02\x02\x02\x07\x8C\x03\x02\x02\x02\b" + - "\x8E\x03\x02\x02\x02\n\x90\x03\x02\x02\x02\f\x92\x03\x02\x02\x02\x0E\x94" + - "\x03\x02\x02\x02\x10\x96\x03\x02\x02\x02\x12\x98\x03\x02\x02\x02\x14\x9A" + - "\x03\x02\x02\x02\x16\x9C\x03\x02\x02\x02\x18\x9E\x03\x02\x02\x02\x1A\xA0" + - "\x03\x02\x02\x02\x1C\xA2\x03\x02\x02\x02\x1E\xA4\x03\x02\x02\x02 \xA6" + - "\x03\x02\x02\x02\"\xA8\x03\x02\x02\x02$\xAA\x03\x02\x02\x02&\xAC\x03\x02" + - "\x02\x02(\xC5\x03\x02\x02\x02*\xC7\x03\x02\x02\x02,\xD2\x03\x02\x02\x02" + - ".\xDF\x03\x02\x02\x020\xE3\x03\x02\x02\x022\xF2\x03\x02\x02\x024\xFC\x03" + - "\x02\x02\x026\u0103\x03\x02\x02\x028\u0109\x03\x02\x02\x02:\u010E\x03" + - "\x02\x02\x02<\u0114\x03\x02\x02\x02>\u0119\x03\x02\x02\x02@\u012B\x03" + - "\x02\x02\x02B\u012F\x03\x02\x02\x02D\u0136\x03\x02\x02\x02F\u0141\x03" + - "\x02\x02\x02H\u014B\x03\x02\x02\x02J\u014D\x03\x02\x02\x02L\u014F\x03" + - "\x02\x02\x02N\u0151\x03\x02\x02\x02P\u0154\x03\x02\x02\x02R\u0159\x03" + - "\x02\x02\x02T\u0161\x03\x02\x02\x02V\u016B\x03\x02\x02\x02X\u0173\x03" + - "\x02\x02\x02Z\u017F\x03\x02\x02\x02\\\u0195\x03\x02\x02\x02^\u01A3\x03" + - "\x02\x02\x02`\u01B3\x03\x02\x02\x02b\u01C1\x03\x02\x02\x02d\u01D2\x03" + - "\x02\x02\x02f\u01D5\x03\x02\x02\x02h\u01D9\x03\x02\x02\x02j\u01DF\x03" + - "\x02\x02\x02l\u01E7\x03\x02\x02\x02n\u01EB\x03\x02\x02\x02p\u01F4\x03" + - "\x02\x02\x02r\u01FB\x03\x02\x02\x02t\u0202\x03\x02\x02\x02v\u020E\x03" + - "\x02\x02\x02x\u0219\x03\x02\x02\x02z\u021D\x03\x02\x02\x02|\u022D\x03" + - "\x02\x02\x02~\u0236\x03\x02\x02\x02\x80\u023B\x03\x02\x02\x02\x82\u0245" + - "\x03\x02\x02\x02\x84\u0252\x03\x02\x02\x02\x86\u0256\x03\x02\x02\x02\x88" + - "\u0259\x03\x02\x02\x02\x8A\u025C\x03\x02\x02\x02\x8C\u0260\x03\x02\x02" + - "\x02\x8E\x8F\t\x02\x02\x02\x8F\t\x03\x02\x02\x02\x90\x91\t\x03\x02\x02" + - "\x91\v\x03\x02\x02\x02\x92\x93\t\x04\x02\x02\x93\r\x03\x02\x02\x02\x94" + - "\x95\t\x05\x02\x02\x95\x0F\x03\x02\x02\x02\x96\x97\t\x06\x02\x02\x97\x11" + - "\x03\x02\x02\x02\x98\x99\t\x07\x02\x02\x99\x13\x03\x02\x02\x02\x9A\x9B" + - "\t\b\x02\x02\x9B\x15\x03\x02\x02\x02\x9C\x9D\t\t\x02\x02\x9D\x17\x03\x02" + - "\x02\x02\x9E\x9F\t\n\x02\x02\x9F\x19\x03\x02\x02\x02\xA0\xA1\t\v\x02\x02" + - "\xA1\x1B\x03\x02\x02\x02\xA2\xA3\t\f\x02\x02\xA3\x1D\x03\x02\x02\x02\xA4" + - "\xA5\t\r\x02\x02\xA5\x1F\x03\x02\x02\x02\xA6\xA7\t\x0E\x02\x02\xA7!\x03" + - "\x02\x02\x02\xA8\xA9\x042;\x02\xA9#\x03\x02\x02\x02\xAA\xAB\t\x0F\x02" + - "\x02\xAB%\x03\x02\x02\x02\xAC\xB0\x07}\x02\x02\xAD\xAF\x05$\x10\x02\xAE" + - "\xAD\x03\x02\x02\x02\xAF\xB2\x03\x02\x02\x02\xB0\xAE\x03\x02\x02\x02\xB0" + - "\xB1\x03\x02\x02\x02\xB1\xB3\x03\x02\x02\x02\xB2\xB0\x03\x02\x02\x02\xB3" + - "\xB4\x07\x7F\x02\x02\xB4\'\x03\x02\x02\x02\xB5\xB9\x07)\x02\x02\xB6\xB8" + - "\n\x10\x02\x02\xB7\xB6\x03\x02\x02\x02\xB8\xBB\x03\x02\x02\x02\xB9\xB7" + - "\x03\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBC\x03\x02\x02\x02\xBB\xB9" + - "\x03\x02\x02\x02\xBC\xC6\x07)\x02\x02\xBD\xC1\x07$\x02\x02\xBE\xC0\n\x11" + - "\x02\x02\xBF\xBE\x03\x02\x02\x02\xC0\xC3\x03\x02\x02\x02\xC1\xBF\x03\x02" + - "\x02\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC4\x03\x02\x02\x02\xC3\xC1\x03\x02" + - "\x02\x02\xC4\xC6\x07$\x02\x02\xC5\xB5\x03\x02\x02\x02\xC5\xBD\x03\x02" + - "\x02\x02\xC6)\x03\x02\x02\x02\xC7\xCD\x07b\x02\x02\xC8\xC9\x07^\x02\x02" + - "\xC9\xCC\x07b\x02\x02\xCA\xCC\n\x12\x02\x02\xCB\xC8\x03\x02\x02\x02\xCB" + - "\xCA\x03\x02\x02\x02\xCC\xCF\x03\x02\x02\x02\xCD\xCB\x03\x02\x02\x02\xCD" + - "\xCE\x03\x02\x02\x02\xCE\xD0\x03\x02\x02\x02\xCF\xCD\x03\x02\x02\x02\xD0" + - "\xD1\x07b\x02\x02\xD1+\x03\x02\x02\x02\xD2\xD3\x07&\x02\x02\xD3\xD8\x07" + - "}\x02\x02\xD4\xD9\x05(\x12\x02\xD5\xD9\x05*\x13\x02\xD6\xD9\x05&\x11\x02" + - "\xD7\xD9\n\x13\x02\x02\xD8\xD4\x03\x02\x02\x02\xD8\xD5\x03\x02\x02\x02" + - "\xD8\xD6\x03\x02\x02\x02\xD8\xD7\x03\x02\x02\x02\xD9\xDA\x03\x02\x02\x02" + - "\xDA\xD8\x03\x02\x02\x02\xDA\xDB\x03\x02\x02\x02\xDB\xDD\x03\x02\x02\x02" + - "\xDC\xDE\x07\x7F\x02\x02\xDD\xDC\x03\x02\x02\x02\xDD\xDE\x03\x02\x02\x02" + - "\xDE-\x03\x02\x02\x02\xDF\xE1\x07^\x02\x02\xE0\xE2\n\x14\x02\x02\xE1\xE0" + - "\x03\x02\x02\x02\xE1\xE2\x03\x02\x02\x02\xE2/\x03\x02\x02\x02\xE3\xE7" + - "\x07@\x02\x02\xE4\xE6\x05$\x10\x02\xE5\xE4\x03\x02\x02\x02\xE6\xE9\x03" + - "\x02\x02\x02\xE7\xE5\x03\x02\x02\x02\xE7\xE8\x03\x02\x02\x02\xE8\xEA\x03" + - "\x02\x02\x02\xE9\xE7\x03\x02\x02\x02\xEA\xEB\x07#\x02\x02\xEB\xEC\x07" + - "%\x02\x02\xEC\xEE\x03\x02\x02\x02\xED\xEF\n\x14\x02\x02\xEE\xED\x03\x02" + - "\x02\x02\xEF\xF0\x03\x02\x02\x02\xF0\xEE\x03\x02\x02\x02\xF0\xF1\x03\x02" + - "\x02\x02\xF11\x03\x02\x02\x02\xF2\xF6\x07@\x02\x02\xF3\xF5\n\x14\x02\x02" + - "\xF4\xF3\x03\x02\x02\x02\xF5\xF8\x03\x02\x02\x02\xF6\xF4\x03\x02\x02\x02" + - "\xF6\xF7\x03\x02\x02\x02\xF7\xF9\x03\x02\x02\x02\xF8\xF6\x03\x02\x02\x02" + - "\xF9\xFA\b\x17\x02\x02\xFA3\x03\x02\x02\x02\xFB\xFD\x05$\x10\x02\xFC\xFB" + - "\x03\x02\x02\x02\xFD\xFE\x03\x02\x02\x02\xFE\xFC\x03\x02\x02\x02\xFE\xFF" + - "\x03\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\u0101\b\x18\x02\x02\u0101" + + "\uFF01\uFF01\x05\x02\f\f\x0F\x0F))\x05\x02\f\f\x0F\x0F$$\x03\x02bb\b\x02" + + "$%))//bb}}\x7F\x7F\x04\x02\f\f\x0F\x0F\x06\x02\f\f\x0F\x0F]]__\x05\x02" + + "\f\f\x0F\x0F*+\x04\x02//aa\x04\x02/0aa\u0286\x020\x03\x02\x02\x02\x02" + + "2\x03\x02\x02\x02\x024\x03\x02\x02\x02\x026\x03\x02\x02\x02\x028\x03\x02" + + "\x02\x02\x02:\x03\x02\x02\x02\x02<\x03\x02\x02\x02\x02>\x03\x02\x02\x02" + + "\x02@\x03\x02\x02\x02\x03B\x03\x02\x02\x02\x03D\x03\x02\x02\x02\x03F\x03" + + "\x02\x02\x02\x03H\x03\x02\x02\x02\x03J\x03\x02\x02\x02\x03L\x03\x02\x02" + + "\x02\x03N\x03\x02\x02\x02\x03P\x03\x02\x02\x02\x04R\x03\x02\x02\x02\x04" + + "T\x03\x02\x02\x02\x04V\x03\x02\x02\x02\x04X\x03\x02\x02\x02\x04Z\x03\x02" + + "\x02\x02\x04\\\x03\x02\x02\x02\x04^\x03\x02\x02\x02\x04`\x03\x02\x02\x02" + + "\x04b\x03\x02\x02\x02\x04d\x03\x02\x02\x02\x04f\x03\x02\x02\x02\x04h\x03" + + "\x02\x02\x02\x05j\x03\x02\x02\x02\x05l\x03\x02\x02\x02\x05n\x03\x02\x02" + + "\x02\x05p\x03\x02\x02\x02\x06r\x03\x02\x02\x02\x06t\x03\x02\x02\x02\x06" + + "v\x03\x02\x02\x02\x06x\x03\x02\x02\x02\x07z\x03\x02\x02\x02\x07|\x03\x02" + + "\x02\x02\x07~\x03\x02\x02\x02\x07\x80\x03\x02\x02\x02\x07\x82\x03\x02" + + "\x02\x02\x07\x84\x03\x02\x02\x02\x07\x86\x03\x02\x02\x02\x07\x88\x03\x02" + + "\x02\x02\x07\x8A\x03\x02\x02\x02\x07\x8C\x03\x02\x02\x02\b\x8E\x03\x02" + + "\x02\x02\n\x90\x03\x02\x02\x02\f\x92\x03\x02\x02\x02\x0E\x94\x03\x02\x02" + + "\x02\x10\x96\x03\x02\x02\x02\x12\x98\x03\x02\x02\x02\x14\x9A\x03\x02\x02" + + "\x02\x16\x9C\x03\x02\x02\x02\x18\x9E\x03\x02\x02\x02\x1A\xA0\x03\x02\x02" + + "\x02\x1C\xA2\x03\x02\x02\x02\x1E\xA4\x03\x02\x02\x02 \xA6\x03\x02\x02" + + "\x02\"\xA8\x03\x02\x02\x02$\xAA\x03\x02\x02\x02&\xAC\x03\x02\x02\x02(" + + "\xC5\x03\x02\x02\x02*\xC7\x03\x02\x02\x02,\xD2\x03\x02\x02\x02.\xDF\x03" + + "\x02\x02\x020\xE3\x03\x02\x02\x022\xF2\x03\x02\x02\x024\xFC\x03\x02\x02" + + "\x026\u0103\x03\x02\x02\x028\u0109\x03\x02\x02\x02:\u010E\x03\x02\x02" + + "\x02<\u0114\x03\x02\x02\x02>\u0119\x03\x02\x02\x02@\u012B\x03\x02\x02" + + "\x02B\u012F\x03\x02\x02\x02D\u0136\x03\x02\x02\x02F\u0141\x03\x02\x02" + + "\x02H\u014B\x03\x02\x02\x02J\u014D\x03\x02\x02\x02L\u014F\x03\x02\x02" + + "\x02N\u0151\x03\x02\x02\x02P\u0154\x03\x02\x02\x02R\u0159\x03\x02\x02" + + "\x02T\u0161\x03\x02\x02\x02V\u016B\x03\x02\x02\x02X\u0173\x03\x02\x02" + + "\x02Z\u017F\x03\x02\x02\x02\\\u0195\x03\x02\x02\x02^\u01A3\x03\x02\x02" + + "\x02`\u01B3\x03\x02\x02\x02b\u01C1\x03\x02\x02\x02d\u01D2\x03\x02\x02" + + "\x02f\u01D5\x03\x02\x02\x02h\u01D9\x03\x02\x02\x02j\u01DF\x03\x02\x02" + + "\x02l\u01E7\x03\x02\x02\x02n\u01EB\x03\x02\x02\x02p\u01F4\x03\x02\x02" + + "\x02r\u01FB\x03\x02\x02\x02t\u0202\x03\x02\x02\x02v\u020E\x03\x02\x02" + + "\x02x\u0219\x03\x02\x02\x02z\u021D\x03\x02\x02\x02|\u022D\x03\x02\x02" + + "\x02~\u0236\x03\x02\x02\x02\x80\u023B\x03\x02\x02\x02\x82\u0245\x03\x02" + + "\x02\x02\x84\u0252\x03\x02\x02\x02\x86\u0256\x03\x02\x02\x02\x88\u0259" + + "\x03\x02\x02\x02\x8A\u025C\x03\x02\x02\x02\x8C\u0260\x03\x02\x02\x02\x8E" + + "\x8F\t\x02\x02\x02\x8F\t\x03\x02\x02\x02\x90\x91\t\x03\x02\x02\x91\v\x03" + + "\x02\x02\x02\x92\x93\t\x04\x02\x02\x93\r\x03\x02\x02\x02\x94\x95\t\x05" + + "\x02\x02\x95\x0F\x03\x02\x02\x02\x96\x97\t\x06\x02\x02\x97\x11\x03\x02" + + "\x02\x02\x98\x99\t\x07\x02\x02\x99\x13\x03\x02\x02\x02\x9A\x9B\t\b\x02" + + "\x02\x9B\x15\x03\x02\x02\x02\x9C\x9D\t\t\x02\x02\x9D\x17\x03\x02\x02\x02" + + "\x9E\x9F\t\n\x02\x02\x9F\x19\x03\x02\x02\x02\xA0\xA1\t\v\x02\x02\xA1\x1B" + + "\x03\x02\x02\x02\xA2\xA3\t\f\x02\x02\xA3\x1D\x03\x02\x02\x02\xA4\xA5\t" + + "\r\x02\x02\xA5\x1F\x03\x02\x02\x02\xA6\xA7\t\x0E\x02\x02\xA7!\x03\x02" + + "\x02\x02\xA8\xA9\x042;\x02\xA9#\x03\x02\x02\x02\xAA\xAB\t\x0F\x02\x02" + + "\xAB%\x03\x02\x02\x02\xAC\xB0\x07}\x02\x02\xAD\xAF\x05$\x10\x02\xAE\xAD" + + "\x03\x02\x02\x02\xAF\xB2\x03\x02\x02\x02\xB0\xAE\x03\x02\x02\x02\xB0\xB1" + + "\x03\x02\x02\x02\xB1\xB3\x03\x02\x02\x02\xB2\xB0\x03\x02\x02\x02\xB3\xB4" + + "\x07\x7F\x02\x02\xB4\'\x03\x02\x02\x02\xB5\xB9\x07)\x02\x02\xB6\xB8\n" + + "\x10\x02\x02\xB7\xB6\x03\x02\x02\x02\xB8\xBB\x03\x02\x02\x02\xB9\xB7\x03" + + "\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBC\x03\x02\x02\x02\xBB\xB9\x03" + + "\x02\x02\x02\xBC\xC6\x07)\x02\x02\xBD\xC1\x07$\x02\x02\xBE\xC0\n\x11\x02" + + "\x02\xBF\xBE\x03\x02\x02\x02\xC0\xC3\x03\x02\x02\x02\xC1\xBF\x03\x02\x02" + + "\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC4\x03\x02\x02\x02\xC3\xC1\x03\x02\x02" + + "\x02\xC4\xC6\x07$\x02\x02\xC5\xB5\x03\x02\x02\x02\xC5\xBD\x03\x02\x02" + + "\x02\xC6)\x03\x02\x02\x02\xC7\xCD\x07b\x02\x02\xC8\xC9\x07^\x02\x02\xC9" + + "\xCC\x07b\x02\x02\xCA\xCC\n\x12\x02\x02\xCB\xC8\x03\x02\x02\x02\xCB\xCA" + + "\x03\x02\x02\x02\xCC\xCF\x03\x02\x02\x02\xCD\xCB\x03\x02\x02\x02\xCD\xCE" + + "\x03\x02\x02\x02\xCE\xD0\x03\x02\x02\x02\xCF\xCD\x03\x02\x02\x02\xD0\xD1" + + "\x07b\x02\x02\xD1+\x03\x02\x02\x02\xD2\xD3\x07&\x02\x02\xD3\xD8\x07}\x02" + + "\x02\xD4\xD9\x05(\x12\x02\xD5\xD9\x05*\x13\x02\xD6\xD9\x05&\x11\x02\xD7" + + "\xD9\n\x13\x02\x02\xD8\xD4\x03\x02\x02\x02\xD8\xD5\x03\x02\x02\x02\xD8" + + "\xD6\x03\x02\x02\x02\xD8\xD7\x03\x02\x02\x02\xD9\xDA\x03\x02\x02\x02\xDA" + + "\xD8\x03\x02\x02\x02\xDA\xDB\x03\x02\x02\x02\xDB\xDD\x03\x02\x02\x02\xDC" + + "\xDE\x07\x7F\x02\x02\xDD\xDC\x03\x02\x02\x02\xDD\xDE\x03\x02\x02\x02\xDE" + + "-\x03\x02\x02\x02\xDF\xE1\x07^\x02\x02\xE0\xE2\n\x14\x02\x02\xE1\xE0\x03" + + "\x02\x02\x02\xE1\xE2\x03\x02\x02\x02\xE2/\x03\x02\x02\x02\xE3\xE7\x07" + + "@\x02\x02\xE4\xE6\x05$\x10\x02\xE5\xE4\x03\x02\x02\x02\xE6\xE9\x03\x02" + + "\x02\x02\xE7\xE5\x03\x02\x02\x02\xE7\xE8\x03\x02\x02\x02\xE8\xEA\x03\x02" + + "\x02\x02\xE9\xE7\x03\x02\x02\x02\xEA\xEB\x07#\x02\x02\xEB\xEC\x07%\x02" + + "\x02\xEC\xEE\x03\x02\x02\x02\xED\xEF\n\x14\x02\x02\xEE\xED\x03\x02\x02" + + "\x02\xEF\xF0\x03\x02\x02\x02\xF0\xEE\x03\x02\x02\x02\xF0\xF1\x03\x02\x02" + + "\x02\xF11\x03\x02\x02\x02\xF2\xF6\x07@\x02\x02\xF3\xF5\n\x14\x02\x02\xF4" + + "\xF3\x03\x02\x02\x02\xF5\xF8\x03\x02\x02\x02\xF6\xF4\x03\x02\x02\x02\xF6" + + "\xF7\x03\x02\x02\x02\xF7\xF9\x03\x02\x02\x02\xF8\xF6\x03\x02\x02\x02\xF9" + + "\xFA\b\x17\x02\x02\xFA3\x03\x02\x02\x02\xFB\xFD\x05$\x10\x02\xFC\xFB\x03" + + "\x02\x02\x02\xFD\xFE\x03\x02\x02\x02\xFE\xFC\x03\x02\x02\x02\xFE\xFF\x03" + + "\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\u0101\b\x18\x02\x02\u0101" + "5\x03\x02\x02\x02\u0102\u0104\x07\x0F\x02\x02\u0103\u0102\x03\x02\x02" + "\x02\u0103\u0104\x03\x02\x02\x02\u0104\u0105\x03\x02\x02\x02\u0105\u0106" + "\x07\f\x02\x02\u0106\u0107\x03\x02\x02\x02\u0107\u0108\b\x19\x02\x02\u0108" + @@ -855,17 +855,17 @@ export class LGFileLexer extends Lexer { "\u020D\x03\x02\x02\x02\u020F\u0215\x03\x02\x02\x02\u0210\u0214\x05 \x0E" + "\x02\u0211\u0214\x05\"\x0F\x02\u0212\u0214\t\x18\x02\x02\u0213\u0210\x03" + "\x02\x02\x02\u0213\u0211\x03\x02\x02\x02\u0213\u0212\x03\x02\x02\x02\u0214" + - "\u0217\x03\x02\x02\x02\u0215\u0213"; + "\u0217\x03\x02\x02\x02\u0215\u0213\x03\x02"; private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u0215\u0216\x03\x02\x02\x02\u0216w\x03\x02\x02\x02\u0217" + - "\u0215\x03\x02\x02\x02\u0218\u021A\n\x14\x02\x02\u0219\u0218\x03\x02\x02" + - "\x02\u021A\u021B\x03\x02\x02\x02\u021B\u021C\x03\x02\x02\x02\u021B\u0219" + - "\x03\x02\x02\x02\u021Cy\x03\x02\x02\x02\u021D\u0221\x07@\x02\x02\u021E" + - "\u0220\n\x14\x02\x02\u021F\u021E\x03\x02\x02\x02\u0220\u0223\x03\x02\x02" + - "\x02\u0221\u021F\x03\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0225" + - "\x03\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0224\u0226\x07\x0F\x02\x02" + - "\u0225\u0224\x03\x02\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u0227\x03" + - "\x02\x02\x02\u0227\u0228\x07\f\x02\x02\u0228\u0229\x06;\f\x02\u0229\u022A" + + "\x02\x02\u0215\u0216\x03\x02\x02\x02\u0216w\x03\x02\x02\x02\u0217\u0215" + + "\x03\x02\x02\x02\u0218\u021A\n\x14\x02\x02\u0219\u0218\x03\x02\x02\x02" + + "\u021A\u021B\x03\x02\x02\x02\u021B\u021C\x03\x02\x02\x02\u021B\u0219\x03" + + "\x02\x02\x02\u021Cy\x03\x02\x02\x02\u021D\u0221\x07@\x02\x02\u021E\u0220" + + "\n\x14\x02\x02\u021F\u021E\x03\x02\x02\x02\u0220\u0223\x03\x02\x02\x02" + + "\u0221\u021F\x03\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0225\x03" + + "\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0224\u0226\x07\x0F\x02\x02\u0225" + + "\u0224\x03\x02\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u0227\x03\x02" + + "\x02\x02\u0227\u0228\x07\f\x02\x02\u0228\u0229\x06;\f\x02\u0229\u022A" + "\x03\x02\x02\x02\u022A\u022B\b;\x02\x02\u022B{\x03\x02\x02\x02\u022C\u022E" + "\x05$\x10\x02\u022D\u022C\x03\x02\x02\x02\u022E\u022F\x03\x02\x02\x02" + "\u022F\u022D\x03\x02\x02\x02\u022F\u0230\x03\x02\x02\x02\u0230\u0231\x03" + From 67e60607fea570d2e57134d59824f55942ef728b Mon Sep 17 00:00:00 2001 From: Shuai Wang Date: Wed, 18 Mar 2020 15:54:33 +0800 Subject: [PATCH 2/5] add support for multi line expr in LG --- libraries/botbuilder-lg/src/LGFileLexer.g4 | 2 +- .../src/generated/LGFileLexer.ts | 92 +++++++++---------- libraries/botbuilder-lg/tests/lg.test.js | 15 +++ .../botbuilder-lg/tests/lgDiagnostic.test.js | 18 ++++ .../tests/testData/examples/MultiLineExpr.lg | 26 ++++++ .../exceptionExamples/MultiLineExprError.lg | 19 ++++ 6 files changed, 125 insertions(+), 47 deletions(-) create mode 100644 libraries/botbuilder-lg/tests/testData/examples/MultiLineExpr.lg create mode 100644 libraries/botbuilder-lg/tests/testData/exceptionExamples/MultiLineExprError.lg diff --git a/libraries/botbuilder-lg/src/LGFileLexer.g4 b/libraries/botbuilder-lg/src/LGFileLexer.g4 index 5e7ceb9e92..6a645a6da2 100644 --- a/libraries/botbuilder-lg/src/LGFileLexer.g4 +++ b/libraries/botbuilder-lg/src/LGFileLexer.g4 @@ -46,7 +46,7 @@ fragment STRING_LITERAL : ('\'' (~['\r\n])* '\'') | ('"' (~["\r\n])* '"'); fragment STRING_INTERPOLATION : '`' ('\\`' | ~'`')* '`'; -fragment EXPRESSION_FRAGMENT : '$' '{' (STRING_LITERAL | STRING_INTERPOLATION | EMPTY_OBJECT | ~[{}'"`#\-] )+ '}'?; +fragment EXPRESSION_FRAGMENT : '$' '{' (STRING_LITERAL | STRING_INTERPOLATION | EMPTY_OBJECT | ~[}'"`] )+ '}'?; fragment ESCAPE_CHARACTER_FRAGMENT : '\\' ~[\r\n]?; diff --git a/libraries/botbuilder-lg/src/generated/LGFileLexer.ts b/libraries/botbuilder-lg/src/generated/LGFileLexer.ts index f869a841bc..10b35bc97e 100644 --- a/libraries/botbuilder-lg/src/generated/LGFileLexer.ts +++ b/libraries/botbuilder-lg/src/generated/LGFileLexer.ts @@ -662,8 +662,8 @@ export class LGFileLexer extends Lexer { ".\b\x02\x03\x04\x05\x06\x07\x19\x04\x02CCcc\x04\x02EEee\x04\x02FFff\x04" + "\x02GGgg\x04\x02HHhh\x04\x02JJjj\x04\x02KKkk\x04\x02NNnn\x04\x02UUuu\x04" + "\x02VVvv\x04\x02WWww\x04\x02YYyy\x04\x02C\\c|\x06\x02\v\v\"\"\xA2\xA2" + - "\uFF01\uFF01\x05\x02\f\f\x0F\x0F))\x05\x02\f\f\x0F\x0F$$\x03\x02bb\b\x02" + - "$%))//bb}}\x7F\x7F\x04\x02\f\f\x0F\x0F\x06\x02\f\f\x0F\x0F]]__\x05\x02" + + "\uFF01\uFF01\x05\x02\f\f\x0F\x0F))\x05\x02\f\f\x0F\x0F$$\x03\x02bb\x06" + + "\x02$$))bb\x7F\x7F\x04\x02\f\f\x0F\x0F\x06\x02\f\f\x0F\x0F]]__\x05\x02" + "\f\f\x0F\x0F*+\x04\x02//aa\x04\x02/0aa\u0286\x020\x03\x02\x02\x02\x02" + "2\x03\x02\x02\x02\x024\x03\x02\x02\x02\x026\x03\x02\x02\x02\x028\x03\x02" + "\x02\x02\x02:\x03\x02\x02\x02\x02<\x03\x02\x02\x02\x02>\x03\x02\x02\x02" + @@ -855,51 +855,51 @@ export class LGFileLexer extends Lexer { "\u020D\x03\x02\x02\x02\u020F\u0215\x03\x02\x02\x02\u0210\u0214\x05 \x0E" + "\x02\u0211\u0214\x05\"\x0F\x02\u0212\u0214\t\x18\x02\x02\u0213\u0210\x03" + "\x02\x02\x02\u0213\u0211\x03\x02\x02\x02\u0213\u0212\x03\x02\x02\x02\u0214" + - "\u0217\x03\x02\x02\x02\u0215\u0213\x03\x02"; + "\u0217\x03\x02\x02\x02\u0215\u0213\x03\x02\x02\x02\u0215\u0216"; private static readonly _serializedATNSegment1: string = - "\x02\x02\u0215\u0216\x03\x02\x02\x02\u0216w\x03\x02\x02\x02\u0217\u0215" + - "\x03\x02\x02\x02\u0218\u021A\n\x14\x02\x02\u0219\u0218\x03\x02\x02\x02" + - "\u021A\u021B\x03\x02\x02\x02\u021B\u021C\x03\x02\x02\x02\u021B\u0219\x03" + - "\x02\x02\x02\u021Cy\x03\x02\x02\x02\u021D\u0221\x07@\x02\x02\u021E\u0220" + - "\n\x14\x02\x02\u021F\u021E\x03\x02\x02\x02\u0220\u0223\x03\x02\x02\x02" + - "\u0221\u021F\x03\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0225\x03" + - "\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0224\u0226\x07\x0F\x02\x02\u0225" + - "\u0224\x03\x02\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u0227\x03\x02" + - "\x02\x02\u0227\u0228\x07\f\x02\x02\u0228\u0229\x06;\f\x02\u0229\u022A" + - "\x03\x02\x02\x02\u022A\u022B\b;\x02\x02\u022B{\x03\x02\x02\x02\u022C\u022E" + - "\x05$\x10\x02\u022D\u022C\x03\x02\x02\x02\u022E\u022F\x03\x02\x02\x02" + - "\u022F\u022D\x03\x02\x02\x02\u022F\u0230\x03\x02\x02\x02\u0230\u0231\x03" + - "\x02\x02\x02\u0231\u0232\x06<\r\x02\u0232\u0233\x03\x02\x02\x02\u0233" + - "\u0234\b<\x02\x02\u0234}\x03\x02\x02\x02\u0235\u0237\x07\x0F\x02\x02\u0236" + - "\u0235\x03\x02\x02\x02\u0236\u0237\x03\x02\x02\x02\u0237\u0238\x03\x02" + - "\x02\x02\u0238\u0239\x07\f\x02\x02\u0239\u023A\b=\x1F\x02\u023A\x7F\x03" + - "\x02\x02\x02\u023B\u023C\x07_\x02\x02\u023C\u023D\x06>\x0E\x02\u023D\u023E" + - "\b> \x02\u023E\u023F\x03\x02\x02\x02\u023F\u0240\b>\v\x02\u0240\u0241" + - "\b>\v\x02\u0241\x81\x03\x02\x02\x02\u0242\u0246\x05 \x0E\x02\u0243\u0246" + - "\x05\"\x0F\x02\u0244\u0246\x07a\x02\x02\u0245\u0242\x03\x02\x02\x02\u0245" + - "\u0243\x03\x02\x02\x02\u0245\u0244\x03\x02\x02\x02\u0246\u024C\x03\x02" + - "\x02\x02\u0247\u024B\x05 \x0E\x02\u0248\u024B\x05\"\x0F\x02\u0249\u024B" + - "\t\x18\x02\x02\u024A\u0247\x03\x02\x02\x02\u024A\u0248\x03\x02\x02\x02" + - "\u024A\u0249\x03\x02\x02\x02\u024B\u024E\x03\x02\x02\x02\u024C\u024A\x03" + - "\x02\x02\x02\u024C\u024D\x03\x02\x02\x02\u024D\u024F\x03\x02\x02\x02\u024E" + - "\u024C\x03\x02\x02\x02\u024F\u0250\x06?\x0F\x02\u0250\u0251\b?!\x02\u0251" + - "\x83\x03\x02\x02\x02\u0252\u0253\x07?\x02\x02\u0253\u0254\x06@\x10\x02" + - "\u0254\u0255\b@\"\x02\u0255\x85\x03\x02\x02\x02\u0256\u0257\x07~\x02\x02" + - "\u0257\u0258\bA#\x02\u0258\x87\x03\x02\x02\x02\u0259\u025A\x05.\x15\x02" + - "\u025A\u025B\bB$\x02\u025B\x89\x03\x02\x02\x02\u025C\u025D\x05,\x14\x02" + - "\u025D\u025E\bC%\x02\u025E\x8B\x03\x02\x02\x02\u025F\u0261\n\x14\x02\x02" + - "\u0260\u025F\x03\x02\x02\x02\u0261\u0262\x03\x02\x02\x02\u0262\u0263\x03" + - "\x02\x02\x02\u0262\u0260\x03\x02\x02\x02\u0263\u0264\x03\x02\x02\x02\u0264" + - "\u0265\bD&\x02\u0265\x8D\x03\x02\x02\x02:\x02\x03\x04\x05\x06\x07\xB0" + - "\xB9\xC1\xC5\xCB\xCD\xD8\xDA\xDD\xE1\xE7\xF0\xF6\xFE\u0103\u011D\u0125" + - "\u0131\u0136\u0141\u0146\u0148\u0156\u015B\u016B\u0178\u0186\u018E\u019C" + - "\u01AC\u01BA\u01CB\u01DB\u01F0\u01F4\u01F6\u01FD\u0202\u020E\u0213\u0215" + - "\u021B\u0221\u0225\u022F\u0236\u0245\u024A\u024C\u0262\'\b\x02\x02\x03" + - "\x1A\x02\x07\x03\x02\x03\x1B\x03\x07\x04\x02\x07\x06\x02\x03\x1D\x04\x03" + - "\x1E\x05\x03 \x06\x06\x02\x02\x03(\x07\x07\x05\x02\x03)\b\x03*\t\x03+" + - "\n\x03,\v\x03-\f\x03.\r\x03/\x0E\x030\x0F\x031\x10\x032\x11\x033\x12\t" + - "\x1D\x02\t\x1E\x02\t\x1F\x02\x038\x13\x038\x14\x07\x07\x02\x03=\x15\x03" + - ">\x16\x03?\x17\x03@\x18\x03A\x19\x03B\x1A\x03C\x1B\x03D\x1C"; + "\x03\x02\x02\x02\u0216w\x03\x02\x02\x02\u0217\u0215\x03\x02\x02\x02\u0218" + + "\u021A\n\x14\x02\x02\u0219\u0218\x03\x02\x02\x02\u021A\u021B\x03\x02\x02" + + "\x02\u021B\u021C\x03\x02\x02\x02\u021B\u0219\x03\x02\x02\x02\u021Cy\x03" + + "\x02\x02\x02\u021D\u0221\x07@\x02\x02\u021E\u0220\n\x14\x02\x02\u021F" + + "\u021E\x03\x02\x02\x02\u0220\u0223\x03\x02\x02\x02\u0221\u021F\x03\x02" + + "\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0225\x03\x02\x02\x02\u0223" + + "\u0221\x03\x02\x02\x02\u0224\u0226\x07\x0F\x02\x02\u0225\u0224\x03\x02" + + "\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u0227\x03\x02\x02\x02\u0227" + + "\u0228\x07\f\x02\x02\u0228\u0229\x06;\f\x02\u0229\u022A\x03\x02\x02\x02" + + "\u022A\u022B\b;\x02\x02\u022B{\x03\x02\x02\x02\u022C\u022E\x05$\x10\x02" + + "\u022D\u022C\x03\x02\x02\x02\u022E\u022F\x03\x02\x02\x02\u022F\u022D\x03" + + "\x02\x02\x02\u022F\u0230\x03\x02\x02\x02\u0230\u0231\x03\x02\x02\x02\u0231" + + "\u0232\x06<\r\x02\u0232\u0233\x03\x02\x02\x02\u0233\u0234\b<\x02\x02\u0234" + + "}\x03\x02\x02\x02\u0235\u0237\x07\x0F\x02\x02\u0236\u0235\x03\x02\x02" + + "\x02\u0236\u0237\x03\x02\x02\x02\u0237\u0238\x03\x02\x02\x02\u0238\u0239" + + "\x07\f\x02\x02\u0239\u023A\b=\x1F\x02\u023A\x7F\x03\x02\x02\x02\u023B" + + "\u023C\x07_\x02\x02\u023C\u023D\x06>\x0E\x02\u023D\u023E\b> \x02\u023E" + + "\u023F\x03\x02\x02\x02\u023F\u0240\b>\v\x02\u0240\u0241\b>\v\x02\u0241" + + "\x81\x03\x02\x02\x02\u0242\u0246\x05 \x0E\x02\u0243\u0246\x05\"\x0F\x02" + + "\u0244\u0246\x07a\x02\x02\u0245\u0242\x03\x02\x02\x02\u0245\u0243\x03" + + "\x02\x02\x02\u0245\u0244\x03\x02\x02\x02\u0246\u024C\x03\x02\x02\x02\u0247" + + "\u024B\x05 \x0E\x02\u0248\u024B\x05\"\x0F\x02\u0249\u024B\t\x18\x02\x02" + + "\u024A\u0247\x03\x02\x02\x02\u024A\u0248\x03\x02\x02\x02\u024A\u0249\x03" + + "\x02\x02\x02\u024B\u024E\x03\x02\x02\x02\u024C\u024A\x03\x02\x02\x02\u024C" + + "\u024D\x03\x02\x02\x02\u024D\u024F\x03\x02\x02\x02\u024E\u024C\x03\x02" + + "\x02\x02\u024F\u0250\x06?\x0F\x02\u0250\u0251\b?!\x02\u0251\x83\x03\x02" + + "\x02\x02\u0252\u0253\x07?\x02\x02\u0253\u0254\x06@\x10\x02\u0254\u0255" + + "\b@\"\x02\u0255\x85\x03\x02\x02\x02\u0256\u0257\x07~\x02\x02\u0257\u0258" + + "\bA#\x02\u0258\x87\x03\x02\x02\x02\u0259\u025A\x05.\x15\x02\u025A\u025B" + + "\bB$\x02\u025B\x89\x03\x02\x02\x02\u025C\u025D\x05,\x14\x02\u025D\u025E" + + "\bC%\x02\u025E\x8B\x03\x02\x02\x02\u025F\u0261\n\x14\x02\x02\u0260\u025F" + + "\x03\x02\x02\x02\u0261\u0262\x03\x02\x02\x02\u0262\u0263\x03\x02\x02\x02" + + "\u0262\u0260\x03\x02\x02\x02\u0263\u0264\x03\x02\x02\x02\u0264\u0265\b" + + "D&\x02\u0265\x8D\x03\x02\x02\x02:\x02\x03\x04\x05\x06\x07\xB0\xB9\xC1" + + "\xC5\xCB\xCD\xD8\xDA\xDD\xE1\xE7\xF0\xF6\xFE\u0103\u011D\u0125\u0131\u0136" + + "\u0141\u0146\u0148\u0156\u015B\u016B\u0178\u0186\u018E\u019C\u01AC\u01BA" + + "\u01CB\u01DB\u01F0\u01F4\u01F6\u01FD\u0202\u020E\u0213\u0215\u021B\u0221" + + "\u0225\u022F\u0236\u0245\u024A\u024C\u0262\'\b\x02\x02\x03\x1A\x02\x07" + + "\x03\x02\x03\x1B\x03\x07\x04\x02\x07\x06\x02\x03\x1D\x04\x03\x1E\x05\x03" + + " \x06\x06\x02\x02\x03(\x07\x07\x05\x02\x03)\b\x03*\t\x03+\n\x03,\v\x03" + + "-\f\x03.\r\x03/\x0E\x030\x0F\x031\x10\x032\x11\x033\x12\t\x1D\x02\t\x1E" + + "\x02\t\x1F\x02\x038\x13\x038\x14\x07\x07\x02\x03=\x15\x03>\x16\x03?\x17" + + "\x03@\x18\x03A\x19\x03B\x1A\x03C\x1B\x03D\x1C"; public static readonly _serializedATN: string = Utils.join( [ LGFileLexer._serializedATNSegment0, diff --git a/libraries/botbuilder-lg/tests/lg.test.js b/libraries/botbuilder-lg/tests/lg.test.js index d7b234e053..4c65e88494 100644 --- a/libraries/botbuilder-lg/tests/lg.test.js +++ b/libraries/botbuilder-lg/tests/lg.test.js @@ -54,6 +54,21 @@ describe('LG', function() { assert.strictEqual(evaled === 'Good evening' || evaled === 'Evening! ', true, `Evaled is ${ evaled }`); }); + it('TestMultiLineExprLG', function() { + let templates = Templates.parseFile(GetExampleFilePath('MultiLineExpr.lg')); + + let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); + assert.strictEqual(evaled === 'Not today', true, `Evaled is ${ evaled }`); + + evaled = templates.evaluate('definition'); + assert.strictEqual(evaled, 10); + + evaled = templates.evaluate('template'); + assert.strictEqual(evaled, '15'); + + + }); + it('TestBasicConditionalTemplateWithoutDefault', function() { let templates = Templates.parseFile(GetExampleFilePath('5.lg')); diff --git a/libraries/botbuilder-lg/tests/lgDiagnostic.test.js b/libraries/botbuilder-lg/tests/lgDiagnostic.test.js index 77bcac4b84..f092397810 100644 --- a/libraries/botbuilder-lg/tests/lgDiagnostic.test.js +++ b/libraries/botbuilder-lg/tests/lgDiagnostic.test.js @@ -242,4 +242,22 @@ it(`TestExpressionFormatError`, function() { var diagnostics = GetDiagnostics(`ExpressionFormatError.lg`); assert.strictEqual(diagnostics.length, 1); assert.strictEqual(diagnostics[0].message.includes(`Close } is missing in Expression`), true); +}); + +it(`TestMultiLineExpressionInLG`, function() { + var diagnostics = GetDiagnostics(`MultiLineExprError.lg`); + assert.strictEqual(diagnostics.length, 1); + assert.strictEqual(diagnostics[0].message.includes(`Close } is missing in Expression`), true); + + diagnostics = Templates.parseText('#Demo2\r\n- ${createArray(1,\r\n, 2,3)').diagnostics; + assert.strictEqual(diagnostics.length, 1); + assert.strictEqual(diagnostics[0].message.includes(`Close } is missing in Expression`), true); + + diagnostics = Templates.parseText('#Demo4\r\n- ${createArray(1,\r\n2,3)\r\n> this is a comment').diagnostics; + assert.strictEqual(diagnostics.length, 1); + assert.strictEqual(diagnostics[0].message.includes(`Close } is missing in Expression`), true); + + diagnostics = Templates.parseText('#Demo4\r\n- ${createArray(1,\r\n2,3)\r\n#AnotherTemplate').diagnostics; + assert.strictEqual(diagnostics.length, 1); + assert.strictEqual(diagnostics[0].message.includes(`Close } is missing in Expression`), true); }); \ No newline at end of file diff --git a/libraries/botbuilder-lg/tests/testData/examples/MultiLineExpr.lg b/libraries/botbuilder-lg/tests/testData/examples/MultiLineExpr.lg new file mode 100644 index 0000000000..1db8e5f8da --- /dev/null +++ b/libraries/botbuilder-lg/tests/testData/examples/MultiLineExpr.lg @@ -0,0 +1,26 @@ +>Demo How LG can evalute a multiple line defined expression +#definition +- ${count(concat('hello', +'world'))} + +# definition2 +- this is book list: ${join(createArray("Ender's Game", +"Dune") +, ", ")} + +#ExprInCondition +- IF: ${userName.length < 5 || + day == "Monday"} +- Not today +-ELSE: +- Nice Try + +#template +-${sum( +createArray( +1, +2, +3, +4, +5) +)} diff --git a/libraries/botbuilder-lg/tests/testData/exceptionExamples/MultiLineExprError.lg b/libraries/botbuilder-lg/tests/testData/exceptionExamples/MultiLineExprError.lg new file mode 100644 index 0000000000..f04b618c84 --- /dev/null +++ b/libraries/botbuilder-lg/tests/testData/exceptionExamples/MultiLineExprError.lg @@ -0,0 +1,19 @@ +#Demo +- ${createArray(1,2 +2,3) +[import](5.lg) + +#Demo2 +- ${createArray(1, +2,3) + +#Demo3 +- IF ${32.5 > 14.1 || + userName == 'doskey' || + day = 'Monday' +- good day + +#Demo4 +- ${createArray(1, +2,3) +> this is a comment From 48c0c0dd01638c358df0a492ef82348513857392 Mon Sep 17 00:00:00 2001 From: Shuai Wang Date: Wed, 18 Mar 2020 17:00:48 +0800 Subject: [PATCH 3/5] fix test case --- libraries/botbuilder-lg/tests/lg.test.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/botbuilder-lg/tests/lg.test.js b/libraries/botbuilder-lg/tests/lg.test.js index 4c65e88494..a3386f0b3e 100644 --- a/libraries/botbuilder-lg/tests/lg.test.js +++ b/libraries/botbuilder-lg/tests/lg.test.js @@ -54,17 +54,17 @@ describe('LG', function() { assert.strictEqual(evaled === 'Good evening' || evaled === 'Evening! ', true, `Evaled is ${ evaled }`); }); - it('TestMultiLineExprLG', function() { + it.only('TestMultiLineExprLG', function() { let templates = Templates.parseFile(GetExampleFilePath('MultiLineExpr.lg')); - let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); - assert.strictEqual(evaled === 'Not today', true, `Evaled is ${ evaled }`); + // let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); + // assert.strictEqual(evaled === 'Not today', true, `Evaled is ${ evaled }`); - evaled = templates.evaluate('definition'); - assert.strictEqual(evaled, 10); + // evaled = templates.evaluate('definition'); + // assert.strictEqual(evaled, 10); - evaled = templates.evaluate('template'); - assert.strictEqual(evaled, '15'); + // evaled = templates.evaluate('template'); + // assert.strictEqual(evaled, 15); }); From 45b786c290a1d9a0dd29fed65ffdb0794746cec9 Mon Sep 17 00:00:00 2001 From: Shuai Wang Date: Wed, 18 Mar 2020 17:18:40 +0800 Subject: [PATCH 4/5] remove only in test --- libraries/botbuilder-lg/tests/lg.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/botbuilder-lg/tests/lg.test.js b/libraries/botbuilder-lg/tests/lg.test.js index a3386f0b3e..849df2d31b 100644 --- a/libraries/botbuilder-lg/tests/lg.test.js +++ b/libraries/botbuilder-lg/tests/lg.test.js @@ -54,7 +54,7 @@ describe('LG', function() { assert.strictEqual(evaled === 'Good evening' || evaled === 'Evening! ', true, `Evaled is ${ evaled }`); }); - it.only('TestMultiLineExprLG', function() { + it('TestMultiLineExprLG', function() { let templates = Templates.parseFile(GetExampleFilePath('MultiLineExpr.lg')); // let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); From 0e4a0d9dc13faea471e7c6ea9c8785adb2c4d258 Mon Sep 17 00:00:00 2001 From: Shuai Wang Date: Wed, 18 Mar 2020 17:47:28 +0800 Subject: [PATCH 5/5] undo comment --- libraries/botbuilder-lg/tests/lg.test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/botbuilder-lg/tests/lg.test.js b/libraries/botbuilder-lg/tests/lg.test.js index 849df2d31b..538a58c45d 100644 --- a/libraries/botbuilder-lg/tests/lg.test.js +++ b/libraries/botbuilder-lg/tests/lg.test.js @@ -57,14 +57,14 @@ describe('LG', function() { it('TestMultiLineExprLG', function() { let templates = Templates.parseFile(GetExampleFilePath('MultiLineExpr.lg')); - // let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); - // assert.strictEqual(evaled === 'Not today', true, `Evaled is ${ evaled }`); + let evaled = templates.evaluate('ExprInCondition', { userName: 'Henry', day: 'Monday' }); + assert.strictEqual(evaled === 'Not today', true, `Evaled is ${ evaled }`); - // evaled = templates.evaluate('definition'); - // assert.strictEqual(evaled, 10); + evaled = templates.evaluate('definition'); + assert.strictEqual(evaled, 10); - // evaled = templates.evaluate('template'); - // assert.strictEqual(evaled, 15); + evaled = templates.evaluate('template'); + assert.strictEqual(evaled, 15); });