//========================================================================================= internal override ScannerSpecification CreateScannerSpecification() { var oSpec = new ScannerSpecification(); oSpec.AddLiteral("letter", CharType.Letters, '_'); oSpec.AddLiteral("digit", CharType.Numbers); oSpec.AddLiteral("lt", '<'); oSpec.AddLiteral("gt", '>'); oSpec.AddLiteral("sqBr1", '['); oSpec.AddLiteral("sqBr2", ']'); oSpec.AddLiteral("slash", '/'); oSpec.AddLiteral("quest", '?'); oSpec.AddLiteral("excl", '!'); oSpec.AddLiteral("minus", '-'); oSpec.AddLiteral("eq", '='); oSpec.AddLiteral("doubleQuote", '"'); oSpec.AddLiteral("c", 'C'); oSpec.AddLiteral("d", 'D'); oSpec.AddLiteral("a", 'A'); oSpec.AddLiteral("t", 'T'); oSpec.AddTokenDeclaration("id", "letter{letter|digit}"); oSpec.AddTokenDeclaration("lt", "lt[slash|quest]"); oSpec.AddTokenDeclaration("gt", "[slash|quest]gt"); oSpec.AddTokenDeclaration("eq", "eq"); oSpec.AddBoundedToken("attrValue", "doubleQuote", "doubleQuote", null, 1, 1); oSpec.AddBoundedToken("comment", "lt excl minus minus", "minus minus gt", null, 4, 3); oSpec.AddBoundedToken("cdata", "lt excl sqBr1 c d a t a sqBr1", "sqBr2 sqBr2 gt", null, 9, 3); return oSpec; }
public void MultiLineTokens() { ScannerSpecification oSpec = new ScannerSpecification(); oSpec.AddLiteral("l", CharType.Letters, '_'); oSpec.AddLiteral("d", CharType.Numbers); oSpec.AddLiteral("br1", '['); oSpec.AddLiteral("br2", ']'); oSpec.AddTokenDeclaration("id", "l{l|d}"); oSpec.AddBoundedToken("id2", "br1", "br2", null); StateParser oStateParser = new StateParser(new StateScanner(oSpec, 4)); oStateParser.Spec.AddRule("id", "id|id2"); { oStateParser.SetSource( @"select [ x int] from x "); this.ReadAndAssertToken(oStateParser, "id", "select"); this.ReadAndAssertToken(oStateParser, "id2", "["); this.ReadAndAssertToken(oStateParser, "id2", " x int]"); } }
//========================================================================================= internal override ScannerSpecification CreateScannerSpecification() { var oSpec = new ScannerSpecification(); oSpec.AddLiteral("l", CharType.Letters, '_', '@'); oSpec.AddLiteral("d", CharType.Numbers); oSpec.AddLiteral("minus", '-'); oSpec.AddLiteral("asterisk", '*'); oSpec.AddLiteral("slash", '/'); oSpec.AddLiteral("poundkey", '#'); oSpec.AddLiteral("operators", '=', '>', '<', ';', ',', '.', '+', ')', '(', '|', '&'); oSpec.AddLiteral("n", 'N', 'n'); oSpec.AddLiteral("singleQuote", '\''); oSpec.AddLiteral("doubleQuote", '"'); oSpec.AddLiteral("caretReturn", '\n'); oSpec.AddLiteral("tilda", '`'); oSpec.AddTokenDeclaration("id", "(n|l){l|d}"); oSpec.AddTokenDeclaration("number", "d{d}"); oSpec.AddTokenDeclaration("operator", "(operators|minus)"); // |asterisk oSpec.AddBoundedToken("stringConst", "singleQuote", "singleQuote", "singleQuote"); oSpec.AddBoundedToken("stringConst", "n singleQuote", "singleQuote", "singleQuote"); oSpec.AddBoundedToken("stringConst", "doubleQuote", "doubleQuote", "doubleQuote"); oSpec.AddBoundedToken("comment1", "slash asterisk", "asterisk slash", null); oSpec.AddBoundedToken("comment2", "minus minus", "caretReturn", null); oSpec.AddBoundedToken("comment3", "poundkey", "caretReturn", null); oSpec.AddBoundedToken("quotedId", "tilda", "tilda", "tilda"); return oSpec; }
//========================================================================================= internal override ScannerSpecification CreateScannerSpecification() { var oSpec = new ScannerSpecification(); oSpec.AddLiteral("l", CharType.Letters, '_'); oSpec.AddLiteral("d", CharType.Numbers); oSpec.AddLiteral("minus", '-'); oSpec.AddLiteral("asterisk", '*'); oSpec.AddLiteral("slash", '/'); oSpec.AddLiteral("backSlash", '\\'); oSpec.AddLiteral("operators", '=', '>', '<', ';', ',', '.', '+', ')', '(', '|', '&'); oSpec.AddLiteral("singleQuote", '\''); oSpec.AddLiteral("doubleQuote", '"'); oSpec.AddLiteral("caretReturn", '\n'); oSpec.AddTokenDeclaration("id", "l{l|d}"); oSpec.AddTokenDeclaration("number", "d{d}"); oSpec.AddTokenDeclaration("operator", "(operators|minus)"); oSpec.AddBoundedToken("charConst", "singleQuote", "singleQuote", "backSlash"); oSpec.AddBoundedToken("comment1", "slash asterisk", "asterisk slash", null); oSpec.AddBoundedToken("comment2", "slash slash", "caretReturn", null); oSpec.AddBoundedToken("stringConst", "doubleQuote", "doubleQuote", "backSlash"); return oSpec; }