Prexonite, a .NET hosted scripting language with a focus on meta-programming and embedded DSLs
0

Configure Feed

Select the types of activity you want to include in your feed.

PRX-49 Dot-separated meta values

This PR is a BREAKING with regards to how `.<identifier>` is parsed globally (namespaced names, but also member access). Previously, there was a lexer-level hack that issued multiple tokens when `.<identifier>` was recognized. This has two problems:

1. you can't put noise (whitespace) between the dot and the identifier. Not that anyone should ever do this, but Prexonite Script follows the general convention that you can put whitespace pretty much everywhere
2. it fails miserably if you need to do `.$"identifier with spaces"`. This requires state tracking. And while the lexer _does_ support state transitions, this stuff should be handled by the parser if we want to keep the lexer sane.

With this PR, we now explicitly allow pretty much all identifiers and keywords following immediately on a dot. While I was initially a bit reluctant to give up all of that nice "design real-estate" (I mean `.this`, `.new`, `.as` could be used in interesting ways), we don't really control the libraries that Prexonite Script wants to call into. And reserving words that are pretty common identifiers in C# sounds like a bad idea (e.g., `.And`)

The PR also tweaks how meta data entries are represented to make use of the new dot-separated format. As an adjacent change, we now also render version numbers without quotes (and by extension "real" numbers). All of these are stored as text anyway.

Also:
- Automatically generate `Resources.Designer.cs` (to not depend on Visual Studio)
- Update PSR 2 to use dot-separated module names

Christian Klauser (Apr 27, 2021, 1:05 PM +0200) b09047bf 5cc127ec

+520 -1318
+1
.gitignore
··· 101 101 PrexoniteTests/OldPrexoniteTests.csproj.xml 102 102 PrexoniteTests/Tests/Configurations/PsrUnitTests.cs 103 103 PrexoniteTests/Tests/Configurations/VMTestConfigurations.cs 104 + Prexonite/Properties/Resources.Designer.cs 104 105 105 106 # Ignore NuGet packages folder 106 107 packages/*
+13 -7
Prexonite/Compiler/Grammar/Parser.GlobalScope.atg
··· 82 82 ( enabled (. entry = true; .) 83 83 | disabled (. entry = false; .) 84 84 | MetaExpr<out entry> 85 - | (. entry = true; .) 85 + | (. entry = true; .) 86 86 ) 87 87 | add (. MetaEntry subEntry; .) 88 88 MetaExpr<out subEntry> (. if(!subEntry.IsList) subEntry = (MetaEntry) subEntry.List; .) ··· 105 105 . 106 106 107 107 MetaExpr<out MetaEntry entry> 108 - (. bool sw; int i; double r; entry = null; string str; Version v; .) 108 + (. bool sw; int i; double r; entry = null; string str; Version v; 109 + QualifiedId qualifiedId; 110 + .) 109 111 = 110 - Boolean<out sw> (. entry = sw; .) 111 - | Integer<out i> (. entry = i.ToString(CultureInfo.InvariantCulture); .) 112 - | Real<out r> (. entry = r.ToString(CultureInfo.InvariantCulture); .) 112 + Boolean<out sw> (. entry = sw; .) 113 + | Integer<out i> (. entry = i.ToString(CultureInfo.InvariantCulture); .) 114 + | Real<out r> (. entry = r.ToString(CultureInfo.InvariantCulture); .) 113 115 | ( String<out str> (. entry = str; .) 116 + | NsQualifiedId<out qualifiedId> 117 + (. entry = qualifiedId.ToString(); .) 114 118 | GlobalQualifiedId<out str> 115 119 (. entry = str; .) 116 120 ) ··· 123 127 .) 124 128 [ MetaExpr<out subEntry> (. lst.Add(subEntry); .) 125 129 { comma (. if(lastWasEmpty) 126 - SemErr("Missing meta expression in list (two consecutive commas)."); 130 + Loader.ReportMessage(Message.Error( 131 + Resources.Parser_MissingMetaExprInList, 132 + GetPosition(), MessageClasses.DuplicateComma)); 127 133 .) 128 134 ( MetaExpr<out subEntry> 129 135 (. lst.Add(subEntry); ··· 949 955 } 950 956 .) 951 957 dot 952 - ( GlobalId<out part> (. parts.Add(part); .) 958 + ( DotId<out part> (. parts.Add(part); .) 953 959 | timessym (. parts.Add(OperatorNames.Prexonite.Multiplication); .) 954 960 | (. ISourcePosition starPos = GetPosition(); .) 955 961 times (. hasWildcard = true;
+61
Prexonite/Compiler/Grammar/Parser.Helper.atg
··· 31 31 ) (. id = cache(t.val); .) 32 32 . 33 33 34 + // Id that immediately follows a dot; tolerate additional keywords used as identifiers (e.g., method names) 35 + DotId<out string id> (. id = "\\NoId\\"; .) //<-- should never surface. this is for debugging purposes 36 + = 37 + GlobalId<out id> 38 + | ( enabled 39 + | disabled 40 + | build 41 + | add 42 + | declare 43 + | function 44 + | command 45 + | build 46 + | ref 47 + | var 48 + | mod 49 + | true 50 + | false 51 + | is 52 + | as 53 + | not 54 + | asm 55 + | return 56 + | in 57 + | to 58 + | continue 59 + | yield 60 + | break 61 + | or 62 + | and 63 + | xor 64 + | static 65 + | goto 66 + | if 67 + | unless 68 + | else 69 + | new 70 + | coroutine 71 + | from 72 + | do 73 + | does 74 + | until 75 + | while 76 + | for 77 + | foreach 78 + | try 79 + | catch 80 + | try 81 + | finally 82 + | throw 83 + | then 84 + | uusing 85 + | macro 86 + | lazy 87 + | let 88 + | method 89 + | this 90 + | namespace 91 + | export 92 + ) (. id = cache(t.val); .) 93 + . 94 + 34 95 Boolean<out bool value> (. value = true; .) 35 96 = 36 97 true
+2 -2
Prexonite/Compiler/Grammar/Parser.Statement.atg
··· 137 137 dot (. extension = new AstIndirectCall(this, PCall.Get, subject); .) 138 138 Arguments<extension.Arguments> 139 139 | dot 140 - Id<out id> (. var ns = subject as AstNamespaceUsage; 140 + DotId<out id> (. var ns = subject as AstNamespaceUsage; 141 141 if(ns == null) 142 142 { 143 143 // Ordinary member access ··· 320 320 .) 321 321 = 322 322 ExplicitTypeExpr<out typeExpr> 323 - dot Id<out memberId> (. staticCall = new AstGetSetStatic(this, PCall.Get, typeExpr, memberId); .) 323 + dot DotId<out memberId> (. staticCall = new AstGetSetStatic(this, PCall.Get, typeExpr, memberId); .) 324 324 Arguments<staticCall.Arguments> 325 325 . 326 326 //Fallback in case of a syntax error to avoid NullReferenceExceptions
+246 -256
Prexonite/Compiler/Lexer.cs
··· 1 - /* The following code was generated by CSFlex 1.4 on 2021-04-26 */ 1 + /* The following code was generated by CSFlex 1.4 on 2021-04-27 */ 2 2 3 3 #line 1 "Prexonite.lex" 4 4 /* ··· 41 41 /** 42 42 * This class is a scanner generated by <a href="http://www.sourceforge.net/projects/csflex/">C# Flex</a>, based on 43 43 * <a href="http://www.jflex.de/">JFlex</a>, version 1.4 44 - * on 2021-04-26 from the specification file 44 + * on 2021-04-27 from the specification file 45 45 * <tt>Prexonite.lex</tt> 46 46 */ 47 47 class Lexer: Prexonite.Internal.IScanner { ··· 194 194 1, 41, 1, 31, 1, 42, 1, 3, 1, 11, 1, 5, 1, 12, 2, 0, 195 195 1, 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, 6, 1, 0, 196 196 1, 49, 1, 3, 1, 50, 1, 51, 1, 3, 1, 52, 14, 0, 1, 53, 197 - 1, 54, 1, 15, 1, 0, 3, 3, 1, 55, 1, 56, 1, 57, 1, 58, 198 - 1, 59, 1, 60, 1, 61, 1, 62, 1, 63, 1, 64, 1, 65, 1, 66, 199 - 1, 67, 1, 68, 1, 0, 1, 69, 1, 0, 1, 70, 1, 71, 1, 72, 200 - 1, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, 80, 201 - 1, 0, 1, 81, 1, 0, 1, 82, 1, 83, 1, 84, 1, 85, 1, 86, 202 - 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, 203 - 1, 95, 1, 44, 1, 0, 1, 96, 1, 97, 2, 0, 2, 3, 1, 0, 204 - 1, 98, 1, 0, 1, 99, 1, 0, 1, 100, 1, 101, 6, 0, 1, 102, 205 - 1, 103, 1, 104, 1, 0, 1, 105, 1, 0, 1, 106, 2, 0, 1, 2, 206 - 1, 107, 1, 3, 1, 108, 1, 109, 1, 0, 1, 110, 1, 0, 1, 88, 207 - 1, 92, 1, 95, 1, 111, 2, 0, 1, 112, 1, 6, 1, 113, 1, 114, 208 - 1, 115, 1, 116, 1, 117, 1, 118, 1, 119, 4, 0, 1, 120, 1, 0, 209 - 1, 121, 1, 122, 1, 123, 1, 0, 1, 3, 1, 109, 1, 0, 1, 110, 210 - 1, 0, 1, 124, 1, 0, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 211 - 1, 130, 1, 131, 1, 132, 1, 109, 1, 0, 1, 110, 2, 0, 2, 109, 212 - 2, 110, 1, 125, 6, 0, 0 }; 197 + 1, 54, 1, 0, 3, 3, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 198 + 1, 60, 1, 61, 1, 62, 1, 63, 1, 64, 1, 65, 1, 66, 1, 67, 199 + 1, 68, 1, 0, 1, 69, 1, 0, 1, 70, 1, 71, 1, 72, 1, 73, 200 + 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, 80, 1, 0, 201 + 1, 81, 1, 0, 1, 82, 1, 83, 1, 84, 1, 85, 1, 86, 1, 87, 202 + 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, 1, 95, 203 + 1, 44, 1, 0, 1, 96, 1, 97, 2, 0, 2, 3, 1, 0, 1, 98, 204 + 1, 0, 1, 99, 1, 0, 1, 100, 1, 101, 6, 0, 1, 102, 1, 103, 205 + 1, 104, 1, 0, 1, 105, 1, 0, 1, 106, 2, 0, 1, 2, 1, 107, 206 + 1, 3, 1, 108, 1, 109, 1, 0, 1, 110, 1, 0, 1, 88, 1, 92, 207 + 1, 95, 1, 111, 2, 0, 1, 112, 1, 6, 1, 113, 1, 114, 1, 115, 208 + 1, 116, 1, 117, 1, 118, 1, 119, 4, 0, 1, 120, 1, 0, 1, 121, 209 + 1, 122, 1, 123, 1, 0, 1, 3, 1, 109, 1, 0, 1, 110, 1, 0, 210 + 1, 124, 1, 0, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, 1, 130, 211 + 1, 131, 1, 132, 1, 109, 1, 0, 1, 110, 2, 0, 2, 109, 2, 110, 212 + 1, 125, 6, 0, 0 }; 213 213 214 214 private static int [] zzUnpackAction() { 215 - int [] result = new int[244]; 215 + int [] result = new int[243]; 216 216 int offset = 0; 217 217 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); 218 218 return result; ··· 240 240 0, 0, 0, 53, 0, 106, 0, 159, 0, 212, 0, 0x0109, 0, 0x013e, 0, 0x0173, 241 241 0, 0x01a8, 0, 0x01dd, 0, 0x0212, 0, 0x0247, 0, 0x027c, 0, 0x02b1, 0, 0x02e6, 0, 0x031b, 242 242 0, 0x0212, 0, 0x0350, 0, 0x0385, 0, 0x0212, 0, 0x03ba, 0, 0x03ef, 0, 0x0424, 0, 0x0459, 243 - 0, 0x048e, 0, 0x04c3, 0, 0x0212, 0, 0x04f8, 0, 0x052d, 0, 0x0562, 0, 0x0597, 0, 0x05cc, 244 - 0, 0x0601, 0, 0x0636, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x066b, 0, 0x06a0, 0, 0x06d5, 245 - 0, 0x070a, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x073f, 0, 0x0212, 0, 0x0212, 0, 0x0774, 246 - 0, 0x07a9, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x07de, 0, 0x0813, 0, 0x0212, 0, 0x0212, 247 - 0, 0x0848, 0, 0x0212, 0, 0x087d, 0, 0x0212, 0, 0x0212, 0, 0x08b2, 0, 0x08e7, 0, 0x0212, 248 - 0, 0x091c, 0, 0x0951, 0, 0x0986, 0, 0x09bb, 0, 0x09f0, 0, 0x0a25, 0, 0x0212, 0, 0x0212, 249 - 0, 0x0212, 0, 0x0a5a, 0, 0x0212, 0, 0x0212, 0, 0x0a8f, 0, 0x0ac4, 0, 0x027c, 0, 0x0af9, 250 - 0, 0x0b2e, 0, 0x0212, 0, 0x0b63, 0, 0x0212, 0, 0x0b98, 0, 0x0bcd, 0, 0x0c02, 0, 0x0c37, 251 - 0, 0x0c6c, 0, 0x0ca1, 0, 0x0cd6, 0, 0x0d0b, 0, 0x0d40, 0, 0x0d75, 0, 0x0daa, 0, 0x0ddf, 252 - 0, 0x0e14, 0, 0x0e49, 0, 0x0212, 0, 0x0212, 0, 0x0e7e, 0, 0x0eb3, 0, 0x0ee8, 0, 0x0f1d, 243 + 0, 0x048e, 0, 0x04c3, 0, 0x0212, 0, 0x04f8, 0, 0x0212, 0, 0x052d, 0, 0x0562, 0, 0x0597, 244 + 0, 0x05cc, 0, 0x0601, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0636, 0, 0x066b, 0, 0x06a0, 245 + 0, 0x06d5, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x070a, 0, 0x0212, 0, 0x0212, 0, 0x073f, 246 + 0, 0x0774, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x07a9, 0, 0x07de, 0, 0x0212, 0, 0x0212, 247 + 0, 0x0813, 0, 0x0212, 0, 0x0848, 0, 0x0212, 0, 0x0212, 0, 0x087d, 0, 0x08b2, 0, 0x0212, 248 + 0, 0x08e7, 0, 0x091c, 0, 0x0951, 0, 0x0986, 0, 0x09bb, 0, 0x09f0, 0, 0x0212, 0, 0x0212, 249 + 0, 0x0212, 0, 0x0a25, 0, 0x0212, 0, 0x0212, 0, 0x0a5a, 0, 0x0a8f, 0, 0x027c, 0, 0x0ac4, 250 + 0, 0x0af9, 0, 0x0212, 0, 0x0b2e, 0, 0x0212, 0, 0x0b63, 0, 0x0b98, 0, 0x0bcd, 0, 0x0c02, 251 + 0, 0x0c37, 0, 0x0c6c, 0, 0x0ca1, 0, 0x0cd6, 0, 0x0d0b, 0, 0x0d40, 0, 0x0d75, 0, 0x0daa, 252 + 0, 0x0ddf, 0, 0x0e14, 0, 0x0212, 0, 0x0212, 0, 0x0e49, 0, 0x0e7e, 0, 0x0eb3, 0, 0x0ee8, 253 + 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 254 + 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0f1d, 0, 0x0212, 253 255 0, 0x0f52, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 254 - 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0f87, 255 - 0, 0x0212, 0, 0x0fbc, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 256 - 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0ff1, 0, 0x0212, 0, 0x1026, 257 - 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x105b, 0, 0x0212, 258 - 0, 0x0212, 0, 0x0212, 0, 0x1090, 0, 0x0212, 0, 0x0212, 0, 0x10c5, 0, 0x10fa, 0, 0x112f, 259 - 0, 0x1164, 0, 0x0212, 0, 0x1199, 0, 0x11ce, 0, 0x1203, 0, 0x1238, 0, 0x126d, 0, 0x0212, 260 - 0, 0x12a2, 0, 0x0212, 0, 0x12d7, 0, 0x0212, 0, 0x0212, 0, 0x130c, 0, 0x1341, 0, 0x1376, 261 - 0, 0x13ab, 0, 0x13e0, 0, 0x1415, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x144a, 0, 0x0212, 262 - 0, 0x147f, 0, 0x0212, 0, 0x14b4, 0, 0x14e9, 0, 0x0eb3, 0, 0x027c, 0, 0x151e, 0, 0x027c, 263 - 0, 0x1553, 0, 0x1588, 0, 0x15bd, 0, 0x15f2, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 264 - 0, 0x1627, 0, 0x165c, 0, 0x0212, 0, 0x0212, 0, 0x027c, 0, 0x027c, 0, 0x0212, 0, 0x0212, 265 - 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x1691, 0, 0x16c6, 0, 0x16fb, 0, 0x1730, 0, 0x0212, 266 - 0, 0x1765, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x179a, 0, 0x17cf, 0, 0x1804, 0, 0x1839, 267 - 0, 0x186e, 0, 0x18a3, 0, 0x18d8, 0, 0x190d, 0, 0x1942, 0, 0x0212, 0, 0x0212, 0, 0x0212, 268 - 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x027c, 0, 0x1977, 0, 0x19ac, 0, 0x19e1, 0, 0x1a16, 269 - 0, 0x1a4b, 0, 0x0212, 0, 0x1a80, 0, 0x0212, 0, 0x1ab5, 0, 0x1aea, 0, 0x1b1f, 0, 0x1b54, 270 - 0, 0x1b89, 0, 0x1bbe, 0, 0x1977, 0, 0x19e1, 0 }; 256 + 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0f87, 0, 0x0212, 0, 0x0fbc, 0, 0x0212, 257 + 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0ff1, 0, 0x0212, 0, 0x0212, 258 + 0, 0x0212, 0, 0x1026, 0, 0x0212, 0, 0x0212, 0, 0x105b, 0, 0x1090, 0, 0x10c5, 0, 0x10fa, 259 + 0, 0x0212, 0, 0x112f, 0, 0x1164, 0, 0x1199, 0, 0x11ce, 0, 0x1203, 0, 0x0212, 0, 0x1238, 260 + 0, 0x0212, 0, 0x126d, 0, 0x0212, 0, 0x0212, 0, 0x12a2, 0, 0x12d7, 0, 0x130c, 0, 0x1341, 261 + 0, 0x1376, 0, 0x13ab, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x13e0, 0, 0x0212, 0, 0x1415, 262 + 0, 0x0212, 0, 0x144a, 0, 0x147f, 0, 0x0e49, 0, 0x027c, 0, 0x14b4, 0, 0x027c, 0, 0x14e9, 263 + 0, 0x151e, 0, 0x1553, 0, 0x1588, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x15bd, 264 + 0, 0x15f2, 0, 0x0212, 0, 0x0212, 0, 0x027c, 0, 0x027c, 0, 0x0212, 0, 0x0212, 0, 0x0212, 265 + 0, 0x0212, 0, 0x0212, 0, 0x1627, 0, 0x165c, 0, 0x1691, 0, 0x16c6, 0, 0x0212, 0, 0x16fb, 266 + 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x1730, 0, 0x1765, 0, 0x179a, 0, 0x17cf, 0, 0x1804, 267 + 0, 0x1839, 0, 0x186e, 0, 0x18a3, 0, 0x18d8, 0, 0x0212, 0, 0x0212, 0, 0x0212, 0, 0x0212, 268 + 0, 0x0212, 0, 0x0212, 0, 0x027c, 0, 0x190d, 0, 0x1942, 0, 0x1977, 0, 0x19ac, 0, 0x19e1, 269 + 0, 0x0212, 0, 0x1a16, 0, 0x0212, 0, 0x1a4b, 0, 0x1a80, 0, 0x1ab5, 0, 0x1aea, 0, 0x1b1f, 270 + 0, 0x1b54, 0, 0x190d, 0, 0x1977, 0 }; 271 271 272 272 private static int [] zzUnpackRowMap() { 273 - int [] result = new int[244]; 273 + int [] result = new int[243]; 274 274 int offset = 0; 275 275 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); 276 276 return result; ··· 342 342 2, 0, 1, 13, 11, 0, 2, 13, 13, 0, 1, 84, 44, 0, 1, 85, 343 343 1, 86, 8, 0, 1, 87, 1, 88, 3, 0, 1, 89, 5, 0, 1, 90, 344 344 1, 91, 1, 0, 1, 92, 9, 0, 1, 93, 1, 94, 1, 95, 1, 96, 345 - 1, 97, 1, 98, 34, 0, 1, 99, 16, 0, 1, 100, 11, 0, 1, 101, 346 - 1, 0, 1, 101, 2, 0, 2, 101, 5, 0, 1, 101, 2, 0, 2, 101, 347 - 2, 0, 2, 101, 6, 0, 7, 101, 3, 0, 1, 101, 11, 0, 2, 101, 348 - 1, 0, 1, 12, 1, 0, 1, 12, 23, 0, 1, 69, 1, 12, 1, 102, 349 - 24, 0, 3, 13, 1, 103, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 350 - 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 1, 70, 351 - 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 345 + 1, 97, 1, 98, 34, 0, 1, 99, 16, 0, 1, 100, 10, 0, 1, 12, 346 + 1, 0, 1, 12, 23, 0, 1, 69, 1, 12, 1, 101, 24, 0, 3, 13, 347 + 1, 102, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 348 + 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 1, 70, 2, 0, 1, 13, 349 + 11, 0, 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 350 + 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 5, 13, 351 + 1, 103, 2, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 352 + 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 353 + 2, 13, 2, 0, 2, 13, 5, 0, 5, 13, 1, 104, 2, 13, 1, 70, 354 + 2, 0, 1, 13, 11, 0, 2, 13, 36, 0, 1, 105, 57, 0, 1, 106, 355 + 53, 0, 1, 107, 1, 108, 35, 0, 1, 109, 16, 0, 1, 110, 35, 0, 356 + 1, 111, 15, 0, 1, 112, 1, 0, 1, 113, 56, 0, 1, 114, 4, 0, 357 + 8, 48, 1, 0, 1, 48, 2, 0, 1, 48, 2, 0, 38, 48, 8, 0, 358 + 1, 115, 4, 0, 1, 116, 1, 52, 2, 0, 1, 117, 10, 0, 1, 118, 359 + 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 0, 1, 124, 5, 0, 360 + 1, 125, 9, 0, 1, 126, 1, 127, 8, 53, 1, 0, 1, 53, 2, 0, 361 + 1, 53, 2, 0, 38, 53, 8, 0, 1, 128, 4, 0, 1, 129, 1, 130, 362 + 2, 0, 1, 131, 10, 0, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 363 + 1, 137, 1, 0, 1, 138, 5, 0, 1, 139, 9, 0, 1, 140, 1, 141, 364 + 2, 0, 1, 142, 1, 0, 1, 142, 2, 0, 2, 142, 5, 0, 1, 142, 365 + 2, 0, 2, 142, 2, 0, 2, 142, 1, 0, 1, 143, 4, 0, 7, 142, 366 + 3, 0, 1, 142, 11, 0, 2, 142, 13, 0, 1, 144, 52, 0, 1, 145, 367 + 41, 0, 1, 146, 1, 0, 1, 146, 2, 0, 2, 146, 5, 0, 1, 146, 368 + 2, 0, 2, 146, 2, 0, 2, 146, 1, 0, 1, 147, 4, 0, 7, 146, 369 + 3, 0, 1, 146, 11, 0, 2, 146, 1, 0, 4, 13, 2, 0, 3, 13, 352 370 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 353 - 5, 0, 5, 13, 1, 104, 2, 13, 1, 70, 2, 0, 1, 13, 11, 0, 354 - 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 355 - 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 5, 13, 1, 105, 356 - 2, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 36, 0, 1, 106, 357 - 57, 0, 1, 107, 53, 0, 1, 108, 1, 109, 35, 0, 1, 110, 16, 0, 358 - 1, 111, 35, 0, 1, 112, 15, 0, 1, 113, 1, 0, 1, 114, 56, 0, 359 - 1, 115, 4, 0, 8, 48, 1, 0, 1, 48, 2, 0, 1, 48, 2, 0, 360 - 38, 48, 8, 0, 1, 116, 4, 0, 1, 117, 1, 52, 2, 0, 1, 118, 361 - 10, 0, 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 0, 362 - 1, 125, 5, 0, 1, 126, 9, 0, 1, 127, 1, 128, 8, 53, 1, 0, 363 - 1, 53, 2, 0, 1, 53, 2, 0, 38, 53, 8, 0, 1, 129, 4, 0, 364 - 1, 130, 1, 131, 2, 0, 1, 132, 10, 0, 1, 133, 1, 134, 1, 135, 365 - 1, 136, 1, 137, 1, 138, 1, 0, 1, 139, 5, 0, 1, 140, 9, 0, 366 - 1, 141, 1, 142, 2, 0, 1, 143, 1, 0, 1, 143, 2, 0, 2, 143, 367 - 5, 0, 1, 143, 2, 0, 2, 143, 2, 0, 2, 143, 1, 0, 1, 144, 368 - 4, 0, 7, 143, 3, 0, 1, 143, 11, 0, 2, 143, 13, 0, 1, 145, 369 - 52, 0, 1, 146, 41, 0, 1, 147, 1, 0, 1, 147, 2, 0, 2, 147, 370 - 5, 0, 1, 147, 2, 0, 2, 147, 2, 0, 2, 147, 1, 0, 1, 148, 371 - 4, 0, 7, 147, 3, 0, 1, 147, 11, 0, 2, 147, 1, 0, 4, 13, 371 + 5, 0, 2, 13, 1, 80, 5, 13, 1, 70, 2, 0, 1, 13, 11, 0, 372 + 2, 13, 13, 0, 1, 148, 40, 0, 2, 149, 1, 0, 1, 149, 1, 0, 373 + 1, 150, 1, 149, 1, 0, 1, 149, 1, 0, 1, 149, 2, 0, 1, 149, 374 + 2, 0, 2, 149, 2, 0, 2, 149, 5, 0, 8, 149, 3, 0, 1, 149, 375 + 3, 0, 1, 73, 7, 0, 2, 149, 5, 0, 1, 85, 1, 86, 8, 0, 376 + 1, 87, 1, 151, 3, 0, 1, 89, 5, 0, 1, 90, 1, 91, 1, 0, 377 + 1, 92, 9, 0, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 378 + 9, 0, 1, 152, 26, 0, 1, 152, 60, 0, 1, 153, 17, 0, 4, 74, 379 + 2, 0, 3, 74, 1, 0, 1, 74, 2, 0, 1, 74, 2, 0, 2, 74, 380 + 2, 0, 2, 74, 5, 0, 8, 74, 1, 154, 2, 0, 1, 74, 11, 0, 381 + 2, 74, 10, 77, 2, 0, 41, 77, 16, 78, 1, 155, 36, 78, 1, 0, 382 + 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 383 + 2, 13, 2, 0, 2, 13, 5, 0, 3, 13, 1, 156, 4, 13, 1, 70, 384 + 2, 0, 1, 13, 11, 0, 2, 13, 10, 81, 2, 0, 41, 81, 1, 0, 385 + 3, 13, 1, 157, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 386 + 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 1, 70, 2, 0, 387 + 1, 13, 11, 0, 2, 13, 5, 0, 1, 158, 19, 0, 1, 159, 33, 0, 388 + 1, 160, 18, 0, 1, 161, 1, 0, 1, 162, 50, 0, 1, 163, 52, 0, 389 + 1, 164, 53, 0, 1, 165, 52, 0, 1, 166, 68, 0, 1, 167, 1, 0, 390 + 1, 168, 26, 0, 1, 169, 52, 0, 1, 170, 59, 0, 1, 171, 52, 0, 391 + 1, 172, 52, 0, 1, 173, 17, 0, 1, 174, 34, 0, 1, 175, 1, 176, 392 + 51, 0, 1, 177, 1, 178, 15, 0, 1, 179, 11, 0, 2, 180, 1, 0, 393 + 1, 180, 16, 0, 1, 180, 6, 0, 1, 180, 3, 0, 2, 180, 17, 0, 394 + 1, 180, 2, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 395 + 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 4, 13, 1, 181, 396 + 3, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 4, 13, 372 397 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 373 - 2, 0, 2, 13, 5, 0, 2, 13, 1, 80, 5, 13, 1, 70, 2, 0, 374 - 1, 13, 11, 0, 2, 13, 13, 0, 1, 149, 40, 0, 2, 150, 1, 0, 375 - 1, 150, 1, 0, 1, 151, 1, 150, 1, 0, 1, 150, 1, 0, 1, 150, 376 - 2, 0, 1, 150, 2, 0, 2, 150, 2, 0, 2, 150, 5, 0, 8, 150, 377 - 3, 0, 1, 150, 3, 0, 1, 73, 7, 0, 2, 150, 5, 0, 1, 85, 378 - 1, 86, 8, 0, 1, 87, 1, 152, 3, 0, 1, 89, 5, 0, 1, 90, 379 - 1, 91, 1, 0, 1, 92, 9, 0, 1, 93, 1, 94, 1, 95, 1, 96, 380 - 1, 97, 1, 98, 9, 0, 1, 153, 26, 0, 1, 153, 60, 0, 1, 154, 381 - 17, 0, 4, 74, 2, 0, 3, 74, 1, 0, 1, 74, 2, 0, 1, 74, 382 - 2, 0, 2, 74, 2, 0, 2, 74, 5, 0, 8, 74, 1, 155, 2, 0, 383 - 1, 74, 11, 0, 2, 74, 10, 77, 2, 0, 41, 77, 16, 78, 1, 156, 384 - 36, 78, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 385 - 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 3, 13, 1, 157, 386 - 4, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 10, 81, 2, 0, 387 - 41, 81, 1, 0, 3, 13, 1, 158, 2, 0, 3, 13, 1, 0, 1, 13, 388 - 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 389 - 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 5, 0, 1, 159, 19, 0, 390 - 1, 160, 33, 0, 1, 161, 18, 0, 1, 162, 1, 0, 1, 163, 50, 0, 391 - 1, 164, 52, 0, 1, 165, 53, 0, 1, 166, 52, 0, 1, 167, 68, 0, 392 - 1, 168, 1, 0, 1, 169, 26, 0, 1, 170, 52, 0, 1, 171, 59, 0, 393 - 1, 172, 52, 0, 1, 173, 52, 0, 1, 174, 17, 0, 1, 175, 34, 0, 394 - 1, 176, 1, 177, 51, 0, 1, 178, 1, 179, 15, 0, 1, 180, 11, 0, 395 - 4, 101, 2, 0, 3, 101, 1, 0, 1, 101, 2, 0, 1, 101, 2, 0, 396 - 2, 101, 2, 0, 2, 101, 5, 0, 8, 101, 3, 0, 1, 101, 11, 0, 397 - 2, 101, 1, 0, 2, 181, 1, 0, 1, 181, 16, 0, 1, 181, 6, 0, 398 - 1, 181, 3, 0, 2, 181, 17, 0, 1, 181, 2, 0, 4, 13, 2, 0, 399 - 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 400 - 2, 13, 5, 0, 4, 13, 1, 182, 3, 13, 1, 70, 2, 0, 1, 13, 401 - 11, 0, 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 402 - 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 6, 13, 403 - 1, 183, 1, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 404 - 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 405 - 2, 13, 2, 0, 2, 13, 5, 0, 2, 13, 1, 184, 5, 13, 1, 70, 406 - 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 2, 185, 1, 0, 1, 185, 398 + 2, 0, 2, 13, 5, 0, 6, 13, 1, 182, 1, 13, 1, 70, 2, 0, 399 + 1, 13, 11, 0, 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 400 + 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 401 + 2, 13, 1, 183, 5, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 402 + 1, 0, 2, 184, 1, 0, 1, 184, 16, 0, 1, 184, 6, 0, 1, 184, 403 + 3, 0, 2, 184, 17, 0, 1, 184, 2, 0, 2, 185, 1, 0, 1, 185, 407 404 16, 0, 1, 185, 6, 0, 1, 185, 3, 0, 2, 185, 17, 0, 1, 185, 408 405 2, 0, 2, 186, 1, 0, 1, 186, 16, 0, 1, 186, 6, 0, 1, 186, 409 406 3, 0, 2, 186, 17, 0, 1, 186, 2, 0, 2, 187, 1, 0, 1, 187, 410 407 16, 0, 1, 187, 6, 0, 1, 187, 3, 0, 2, 187, 17, 0, 1, 187, 411 - 2, 0, 2, 188, 1, 0, 1, 188, 16, 0, 1, 188, 6, 0, 1, 188, 412 - 3, 0, 2, 188, 17, 0, 1, 188, 2, 0, 4, 143, 2, 0, 3, 143, 413 - 1, 0, 1, 143, 2, 0, 1, 143, 2, 0, 2, 143, 2, 0, 2, 143, 414 - 5, 0, 8, 143, 3, 0, 1, 143, 1, 0, 1, 189, 9, 0, 2, 143, 415 - 1, 0, 4, 147, 2, 0, 3, 147, 1, 0, 1, 147, 2, 0, 1, 147, 416 - 2, 0, 2, 147, 2, 0, 2, 147, 5, 0, 8, 147, 3, 0, 1, 147, 417 - 1, 0, 1, 190, 9, 0, 2, 147, 1, 0, 2, 150, 1, 0, 1, 150, 418 - 1, 0, 2, 150, 1, 0, 1, 150, 1, 0, 1, 150, 2, 0, 1, 150, 419 - 2, 0, 2, 150, 2, 0, 2, 150, 3, 0, 1, 191, 1, 0, 8, 150, 420 - 3, 0, 1, 150, 11, 0, 2, 150, 1, 0, 2, 150, 1, 0, 1, 150, 421 - 2, 0, 1, 150, 1, 0, 1, 150, 1, 0, 1, 150, 2, 0, 1, 150, 422 - 2, 0, 2, 150, 2, 0, 2, 150, 5, 0, 8, 150, 3, 0, 1, 150, 423 - 11, 0, 2, 150, 25, 0, 1, 192, 28, 0, 1, 153, 1, 0, 1, 153, 424 - 1, 193, 22, 0, 1, 194, 1, 153, 60, 0, 1, 195, 16, 0, 15, 78, 425 - 1, 196, 1, 156, 36, 78, 1, 0, 3, 13, 1, 197, 2, 0, 3, 13, 426 - 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 427 - 5, 0, 8, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 428 - 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 429 - 2, 13, 2, 0, 1, 13, 1, 198, 5, 0, 8, 13, 1, 70, 2, 0, 430 - 1, 13, 11, 0, 2, 13, 25, 0, 1, 199, 52, 0, 1, 200, 52, 0, 431 - 1, 201, 52, 0, 1, 202, 52, 0, 1, 203, 70, 0, 1, 204, 51, 0, 432 - 1, 205, 40, 0, 1, 206, 43, 0, 1, 207, 56, 0, 1, 208, 1, 0, 433 - 1, 209, 50, 0, 1, 210, 52, 0, 1, 211, 52, 0, 1, 212, 1, 0, 434 - 1, 213, 26, 0, 4, 13, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 435 - 1, 13, 2, 0, 2, 13, 2, 0, 1, 13, 1, 214, 5, 0, 8, 13, 436 - 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 2, 215, 1, 0, 408 + 2, 0, 4, 142, 2, 0, 3, 142, 1, 0, 1, 142, 2, 0, 1, 142, 409 + 2, 0, 2, 142, 2, 0, 2, 142, 5, 0, 8, 142, 3, 0, 1, 142, 410 + 1, 0, 1, 188, 9, 0, 2, 142, 1, 0, 4, 146, 2, 0, 3, 146, 411 + 1, 0, 1, 146, 2, 0, 1, 146, 2, 0, 2, 146, 2, 0, 2, 146, 412 + 5, 0, 8, 146, 3, 0, 1, 146, 1, 0, 1, 189, 9, 0, 2, 146, 413 + 1, 0, 2, 149, 1, 0, 1, 149, 1, 0, 2, 149, 1, 0, 1, 149, 414 + 1, 0, 1, 149, 2, 0, 1, 149, 2, 0, 2, 149, 2, 0, 2, 149, 415 + 3, 0, 1, 190, 1, 0, 8, 149, 3, 0, 1, 149, 11, 0, 2, 149, 416 + 1, 0, 2, 149, 1, 0, 1, 149, 2, 0, 1, 149, 1, 0, 1, 149, 417 + 1, 0, 1, 149, 2, 0, 1, 149, 2, 0, 2, 149, 2, 0, 2, 149, 418 + 5, 0, 8, 149, 3, 0, 1, 149, 11, 0, 2, 149, 25, 0, 1, 191, 419 + 28, 0, 1, 152, 1, 0, 1, 152, 1, 192, 22, 0, 1, 193, 1, 152, 420 + 60, 0, 1, 194, 16, 0, 15, 78, 1, 195, 1, 155, 36, 78, 1, 0, 421 + 3, 13, 1, 196, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 422 + 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 1, 70, 2, 0, 423 + 1, 13, 11, 0, 2, 13, 1, 0, 4, 13, 2, 0, 3, 13, 1, 0, 424 + 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 1, 13, 1, 197, 425 + 5, 0, 8, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 25, 0, 426 + 1, 198, 52, 0, 1, 199, 52, 0, 1, 200, 52, 0, 1, 201, 52, 0, 427 + 1, 202, 70, 0, 1, 203, 51, 0, 1, 204, 40, 0, 1, 205, 43, 0, 428 + 1, 206, 56, 0, 1, 207, 1, 0, 1, 208, 50, 0, 1, 209, 52, 0, 429 + 1, 210, 52, 0, 1, 211, 1, 0, 1, 212, 26, 0, 4, 13, 2, 0, 430 + 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 431 + 1, 13, 1, 213, 5, 0, 8, 13, 1, 70, 2, 0, 1, 13, 11, 0, 432 + 2, 13, 1, 0, 2, 214, 1, 0, 1, 214, 16, 0, 1, 214, 6, 0, 433 + 1, 214, 3, 0, 2, 214, 17, 0, 1, 214, 2, 0, 2, 215, 1, 0, 437 434 1, 215, 16, 0, 1, 215, 6, 0, 1, 215, 3, 0, 2, 215, 17, 0, 438 435 1, 215, 2, 0, 2, 216, 1, 0, 1, 216, 16, 0, 1, 216, 6, 0, 439 436 1, 216, 3, 0, 2, 216, 17, 0, 1, 216, 2, 0, 2, 217, 1, 0, 440 437 1, 217, 16, 0, 1, 217, 6, 0, 1, 217, 3, 0, 2, 217, 17, 0, 441 - 1, 217, 2, 0, 2, 218, 1, 0, 1, 218, 16, 0, 1, 218, 6, 0, 442 - 1, 218, 3, 0, 2, 218, 17, 0, 1, 218, 2, 0, 1, 219, 3, 0, 443 - 2, 220, 21, 0, 1, 219, 25, 0, 1, 221, 26, 0, 1, 221, 49, 0, 444 - 1, 222, 52, 0, 1, 223, 52, 0, 1, 224, 52, 0, 1, 225, 52, 0, 445 - 1, 226, 52, 0, 1, 227, 28, 0, 3, 13, 1, 228, 2, 0, 3, 13, 446 - 1, 0, 1, 13, 2, 0, 1, 13, 2, 0, 2, 13, 2, 0, 2, 13, 447 - 5, 0, 8, 13, 1, 70, 2, 0, 1, 13, 11, 0, 2, 13, 1, 0, 438 + 1, 217, 2, 0, 1, 218, 3, 0, 2, 219, 21, 0, 1, 218, 25, 0, 439 + 1, 220, 26, 0, 1, 220, 49, 0, 1, 221, 52, 0, 1, 222, 52, 0, 440 + 1, 223, 52, 0, 1, 224, 52, 0, 1, 225, 52, 0, 1, 226, 28, 0, 441 + 3, 13, 1, 227, 2, 0, 3, 13, 1, 0, 1, 13, 2, 0, 1, 13, 442 + 2, 0, 2, 13, 2, 0, 2, 13, 5, 0, 8, 13, 1, 70, 2, 0, 443 + 1, 13, 11, 0, 2, 13, 1, 0, 2, 228, 1, 0, 1, 228, 16, 0, 444 + 1, 228, 6, 0, 1, 228, 3, 0, 2, 228, 17, 0, 1, 228, 2, 0, 448 445 2, 229, 1, 0, 1, 229, 16, 0, 1, 229, 6, 0, 1, 229, 3, 0, 449 446 2, 229, 17, 0, 1, 229, 2, 0, 2, 230, 1, 0, 1, 230, 16, 0, 450 447 1, 230, 6, 0, 1, 230, 3, 0, 2, 230, 17, 0, 1, 230, 2, 0, 451 448 2, 231, 1, 0, 1, 231, 16, 0, 1, 231, 6, 0, 1, 231, 3, 0, 452 - 2, 231, 17, 0, 1, 231, 2, 0, 2, 232, 1, 0, 1, 232, 16, 0, 453 - 1, 232, 6, 0, 1, 232, 3, 0, 2, 232, 17, 0, 1, 232, 2, 0, 454 - 1, 219, 1, 0, 1, 219, 24, 0, 1, 219, 25, 0, 1, 219, 26, 0, 455 - 1, 219, 25, 0, 1, 221, 1, 0, 1, 221, 23, 0, 1, 233, 1, 221, 456 - 25, 0, 2, 234, 1, 0, 1, 234, 16, 0, 1, 234, 6, 0, 1, 234, 449 + 2, 231, 17, 0, 1, 231, 2, 0, 1, 218, 1, 0, 1, 218, 24, 0, 450 + 1, 218, 25, 0, 1, 218, 26, 0, 1, 218, 25, 0, 1, 220, 1, 0, 451 + 1, 220, 23, 0, 1, 232, 1, 220, 25, 0, 2, 233, 1, 0, 1, 233, 452 + 16, 0, 1, 233, 6, 0, 1, 233, 3, 0, 2, 233, 17, 0, 1, 233, 453 + 2, 0, 2, 234, 1, 0, 1, 234, 16, 0, 1, 234, 6, 0, 1, 234, 457 454 3, 0, 2, 234, 17, 0, 1, 234, 2, 0, 2, 235, 1, 0, 1, 235, 458 455 16, 0, 1, 235, 6, 0, 1, 235, 3, 0, 2, 235, 17, 0, 1, 235, 459 456 2, 0, 2, 236, 1, 0, 1, 236, 16, 0, 1, 236, 6, 0, 1, 236, 460 - 3, 0, 2, 236, 17, 0, 1, 236, 2, 0, 2, 237, 1, 0, 1, 237, 461 - 16, 0, 1, 237, 6, 0, 1, 237, 3, 0, 2, 237, 17, 0, 1, 237, 462 - 2, 0, 1, 238, 26, 0, 1, 238, 25, 0, 2, 239, 1, 0, 1, 239, 457 + 3, 0, 2, 236, 17, 0, 1, 236, 2, 0, 1, 237, 26, 0, 1, 237, 458 + 25, 0, 2, 238, 1, 0, 1, 238, 16, 0, 1, 238, 6, 0, 1, 238, 459 + 3, 0, 2, 238, 17, 0, 1, 238, 2, 0, 2, 239, 1, 0, 1, 239, 463 460 16, 0, 1, 239, 6, 0, 1, 239, 3, 0, 2, 239, 17, 0, 1, 239, 464 - 2, 0, 2, 240, 1, 0, 1, 240, 16, 0, 1, 240, 6, 0, 1, 240, 465 - 3, 0, 2, 240, 17, 0, 1, 240, 2, 0, 1, 238, 1, 0, 1, 238, 466 - 24, 0, 1, 238, 25, 0, 2, 241, 1, 0, 1, 241, 16, 0, 1, 241, 461 + 2, 0, 1, 237, 1, 0, 1, 237, 24, 0, 1, 237, 25, 0, 2, 240, 462 + 1, 0, 1, 240, 16, 0, 1, 240, 6, 0, 1, 240, 3, 0, 2, 240, 463 + 17, 0, 1, 240, 2, 0, 2, 241, 1, 0, 1, 241, 16, 0, 1, 241, 467 464 6, 0, 1, 241, 3, 0, 2, 241, 17, 0, 1, 241, 2, 0, 2, 242, 468 465 1, 0, 1, 242, 16, 0, 1, 242, 6, 0, 1, 242, 3, 0, 2, 242, 469 466 17, 0, 1, 242, 2, 0, 2, 243, 1, 0, 1, 243, 16, 0, 1, 243, 470 - 6, 0, 1, 243, 3, 0, 2, 243, 17, 0, 1, 243, 2, 0, 2, 244, 471 - 1, 0, 1, 244, 16, 0, 1, 244, 6, 0, 1, 244, 3, 0, 2, 244, 472 - 17, 0, 1, 244, 1, 0, 0 }; 467 + 6, 0, 1, 243, 3, 0, 2, 243, 17, 0, 1, 243, 1, 0, 0 }; 473 468 474 469 private static int [] zzUnpackTrans() { 475 - int [] result = new int[7155]; 470 + int [] result = new int[7049]; 476 471 int offset = 0; 477 472 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 478 473 return result; ··· 511 506 512 507 private static readonly ushort[] ZZ_ATTRIBUTE_PACKED_0 = new ushort[] { 513 508 10, 0, 1, 9, 5, 1, 1, 9, 2, 1, 1, 9, 6, 1, 1, 9, 514 - 7, 1, 3, 9, 4, 1, 3, 9, 1, 1, 2, 9, 2, 1, 3, 9, 515 - 2, 1, 2, 9, 1, 1, 1, 9, 1, 1, 2, 9, 2, 1, 1, 9, 516 - 4, 1, 2, 0, 3, 9, 1, 1, 2, 9, 1, 1, 1, 0, 3, 1, 517 - 1, 9, 1, 1, 1, 9, 14, 0, 2, 9, 1, 1, 1, 0, 3, 1, 518 - 14, 9, 1, 0, 1, 9, 1, 0, 11, 9, 1, 0, 1, 9, 1, 0, 519 - 6, 9, 1, 1, 3, 9, 1, 1, 2, 9, 2, 1, 1, 0, 1, 1, 520 - 1, 9, 2, 0, 2, 1, 1, 0, 1, 9, 1, 0, 1, 9, 1, 0, 521 - 2, 9, 6, 0, 3, 9, 1, 0, 1, 9, 1, 0, 1, 9, 2, 0, 522 - 5, 1, 1, 0, 1, 1, 1, 0, 4, 9, 2, 0, 2, 9, 2, 1, 523 - 5, 9, 4, 0, 1, 9, 1, 0, 3, 9, 1, 0, 2, 1, 1, 0, 524 - 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 6, 9, 2, 1, 1, 0, 525 - 1, 1, 2, 0, 1, 9, 1, 1, 1, 9, 2, 1, 6, 0, 0 }; 509 + 1, 1, 1, 9, 5, 1, 3, 9, 4, 1, 3, 9, 1, 1, 2, 9, 510 + 2, 1, 3, 9, 2, 1, 2, 9, 1, 1, 1, 9, 1, 1, 2, 9, 511 + 2, 1, 1, 9, 4, 1, 2, 0, 3, 9, 1, 1, 2, 9, 1, 1, 512 + 1, 0, 3, 1, 1, 9, 1, 1, 1, 9, 14, 0, 2, 9, 1, 0, 513 + 3, 1, 14, 9, 1, 0, 1, 9, 1, 0, 11, 9, 1, 0, 1, 9, 514 + 1, 0, 6, 9, 1, 1, 3, 9, 1, 1, 2, 9, 2, 1, 1, 0, 515 + 1, 1, 1, 9, 2, 0, 2, 1, 1, 0, 1, 9, 1, 0, 1, 9, 516 + 1, 0, 2, 9, 6, 0, 3, 9, 1, 0, 1, 9, 1, 0, 1, 9, 517 + 2, 0, 5, 1, 1, 0, 1, 1, 1, 0, 4, 9, 2, 0, 2, 9, 518 + 2, 1, 5, 9, 4, 0, 1, 9, 1, 0, 3, 9, 1, 0, 2, 1, 519 + 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 6, 9, 2, 1, 520 + 1, 0, 1, 1, 2, 0, 1, 9, 1, 1, 1, 9, 2, 1, 6, 0, 0 }; 526 521 527 522 private static int [] zzUnpackAttribute() { 528 - int [] result = new int[244]; 523 + int [] result = new int[243]; 529 524 int offset = 0; 530 525 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 531 526 return result; ··· 1040 1035 case 93: 1041 1036 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1042 1037 { 1043 - #line 341 "Prexonite.lex" 1038 + #line 336 "Prexonite.lex" 1044 1039 string fragment = buffer.ToString(); 1045 1040 buffer.Length = 0; 1046 1041 PushState(_surroundingLocalState); ··· 1082 1077 case 109: 1083 1078 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1084 1079 { 1085 - #line 255 "Prexonite.lex" 1080 + #line 250 "Prexonite.lex" 1086 1081 buffer.Append(_unescapeChar(yytext())); 1087 1082 #line default 1088 1083 } ··· 1090 1085 case 89: 1091 1086 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1092 1087 { 1093 - #line 295 "Prexonite.lex" 1088 + #line 290 "Prexonite.lex" 1094 1089 string fragment = buffer.ToString(); 1095 1090 buffer.Length = 0; 1096 1091 PushState(_surroundingLocalState); ··· 1108 1103 case 84: 1109 1104 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1110 1105 { 1111 - #line 275 "Prexonite.lex" 1106 + #line 270 "Prexonite.lex" 1112 1107 buffer.Append("\v"); 1113 1108 #line default 1114 1109 } ··· 1124 1119 case 32: 1125 1120 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1126 1121 { 1127 - #line 237 "Prexonite.lex" 1122 + #line 232 "Prexonite.lex" 1128 1123 PopState(); 1129 1124 ret(tok(Parser._string, buffer.ToString())); 1130 1125 buffer.Length = 0; ··· 1143 1138 case 30: 1144 1139 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1145 1140 { 1146 - #line 241 "Prexonite.lex" 1141 + #line 236 "Prexonite.lex" 1147 1142 buffer.Append(yytext()); 1148 1143 #line default 1149 1144 } ··· 1156 1151 #line default 1157 1152 } 1158 1153 break; 1159 - case 114: 1160 - if (ZZ_SPURIOUS_WARNINGS_SUCK) 1161 - { 1162 - #line 87 "Prexonite.lex" 1163 - return tok(Parser._does); 1164 - #line default 1165 - } 1166 - break; 1167 1154 case 31: 1168 1155 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1169 1156 { 1170 - #line 356 "Prexonite.lex" 1157 + #line 351 "Prexonite.lex" 1171 1158 throw new PrexoniteException(System.String.Format("Invalid character \"{0}\" detected on line {1} in {2}.", yytext(), yyline, File)); 1172 1159 #line default 1173 1160 } ··· 1191 1178 case 81: 1192 1179 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1193 1180 { 1194 - #line 274 "Prexonite.lex" 1181 + #line 269 "Prexonite.lex" 1195 1182 buffer.Append("\r"); 1196 1183 #line default 1197 1184 } ··· 1199 1186 case 90: 1200 1187 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1201 1188 { 1202 - #line 315 "Prexonite.lex" 1189 + #line 310 "Prexonite.lex" 1203 1190 buffer.Append("\""); 1204 1191 #line default 1205 1192 } ··· 1223 1210 case 79: 1224 1211 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1225 1212 { 1226 - #line 276 "Prexonite.lex" 1213 + #line 271 "Prexonite.lex" 1227 1214 buffer.Append("\t"); 1228 1215 #line default 1229 1216 } ··· 1244 1231 #line default 1245 1232 } 1246 1233 break; 1247 - case 102: 1234 + case 114: 1248 1235 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1249 1236 { 1250 - #line 170 "Prexonite.lex" 1251 - return tok(Parser._id,OperatorNames.Prexonite.Power); 1237 + #line 87 "Prexonite.lex" 1238 + return tok(Parser._does); 1252 1239 #line default 1253 1240 } 1254 1241 break; ··· 1280 1267 case 86: 1281 1268 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1282 1269 { 1283 - #line 271 "Prexonite.lex" 1270 + #line 266 "Prexonite.lex" 1284 1271 buffer.Append("\b"); 1285 1272 #line default 1286 1273 } ··· 1288 1275 case 83: 1289 1276 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1290 1277 { 1291 - #line 270 "Prexonite.lex" 1278 + #line 265 "Prexonite.lex" 1292 1279 buffer.Append("\a"); 1293 1280 #line default 1294 1281 } ··· 1296 1283 case 82: 1297 1284 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1298 1285 { 1299 - #line 272 "Prexonite.lex" 1286 + #line 267 "Prexonite.lex" 1300 1287 buffer.Append("\f"); 1301 1288 #line default 1302 1289 } ··· 1304 1291 case 73: 1305 1292 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1306 1293 { 1307 - #line 244 "Prexonite.lex" 1294 + #line 239 "Prexonite.lex" 1308 1295 /* nothing to do */ 1309 1296 #line default 1310 1297 } ··· 1336 1323 case 87: 1337 1324 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1338 1325 { 1339 - #line 273 "Prexonite.lex" 1326 + #line 268 "Prexonite.lex" 1340 1327 buffer.Append("\n"); 1341 1328 #line default 1342 1329 } ··· 1400 1387 case 1: 1401 1388 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1402 1389 { 1403 - #line 233 "Prexonite.lex" 1390 + #line 228 "Prexonite.lex" 1404 1391 throw new PrexoniteException(System.String.Format("Invalid character \"{0}\" detected on line {1} in {2}.", yytext(), yyline, File)); 1405 1392 #line default 1406 1393 } ··· 1435 1422 case 65: 1436 1423 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1437 1424 { 1438 - #line 242 "Prexonite.lex" 1425 + #line 237 "Prexonite.lex" 1439 1426 buffer.Append("\\"); 1440 1427 #line default 1441 1428 } ··· 1467 1454 case 88: 1468 1455 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1469 1456 { 1470 - #line 282 "Prexonite.lex" 1457 + #line 277 "Prexonite.lex" 1471 1458 string clipped; 1472 1459 string id = _pruneSmartStringIdentifier(yytext(), out clipped); 1473 1460 string fragment = buffer.ToString(); ··· 1492 1479 #line default 1493 1480 } 1494 1481 break; 1495 - case 40: 1482 + case 34: 1496 1483 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1497 1484 { 1498 - #line 325 "Prexonite.lex" 1499 - buffer.Append(yytext()); 1485 + #line 260 "Prexonite.lex" 1486 + buffer.Append(yytext()); 1500 1487 #line default 1501 1488 } 1502 1489 break; 1503 1490 case 41: 1504 1491 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1505 1492 { 1506 - #line 321 "Prexonite.lex" 1493 + #line 316 "Prexonite.lex" 1507 1494 PopState(); 1508 1495 ret(tok(Parser._string, buffer.ToString())); 1509 1496 buffer.Length = 0; ··· 1514 1501 case 60: 1515 1502 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1516 1503 { 1517 - #line 229 "Prexonite.lex" 1504 + #line 224 "Prexonite.lex" 1518 1505 return tok(Parser._appendright); 1519 1506 #line default 1520 1507 } ··· 1522 1509 case 68: 1523 1510 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1524 1511 { 1525 - #line 245 "Prexonite.lex" 1512 + #line 240 "Prexonite.lex" 1526 1513 buffer.Append("\0"); 1527 1514 #line default 1528 1515 } ··· 1570 1557 case 63: 1571 1558 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1572 1559 { 1573 - #line 230 "Prexonite.lex" 1560 + #line 225 "Prexonite.lex" 1574 1561 return tok(Parser._appendleft); 1575 1562 #line default 1576 1563 } ··· 1594 1581 case 91: 1595 1582 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1596 1583 { 1597 - #line 326 "Prexonite.lex" 1584 + #line 321 "Prexonite.lex" 1598 1585 buffer.Append("\""); 1599 1586 #line default 1600 1587 } ··· 1602 1589 case 66: 1603 1590 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1604 1591 { 1605 - #line 243 "Prexonite.lex" 1592 + #line 238 "Prexonite.lex" 1606 1593 buffer.Append("\""); 1607 1594 #line default 1608 1595 } ··· 1640 1627 #line default 1641 1628 } 1642 1629 break; 1643 - case 34: 1630 + case 37: 1644 1631 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1645 1632 { 1646 - #line 265 "Prexonite.lex" 1647 - buffer.Append(yytext()); 1633 + #line 309 "Prexonite.lex" 1634 + buffer.Append(yytext()); 1648 1635 #line default 1649 1636 } 1650 1637 break; ··· 1664 1651 #line default 1665 1652 } 1666 1653 break; 1667 - case 33: 1654 + case 78: 1668 1655 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1669 1656 { 1670 - #line 257 "Prexonite.lex" 1671 - buffer.Append("$"); 1657 + #line 275 "Prexonite.lex" 1658 + buffer.Append("$"); 1672 1659 #line default 1673 1660 } 1674 1661 break; 1675 - case 15: 1662 + case 99: 1676 1663 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1677 1664 { 1678 - #line 222 "Prexonite.lex" 1679 - Token dot = tok(Parser._dot); 1680 - string memberId = yytext(); 1681 - if(memberId.Length > 1) 1682 - return multiple(dot,tok(Parser._id,memberId.Substring(memberId.StartsWith(".$") ? 2 : 1))); 1683 - else 1684 - return dot; 1665 + #line 166 "Prexonite.lex" 1666 + return tok(Parser._id,OperatorNames.Prexonite.Subtraction); 1685 1667 #line default 1686 1668 } 1687 1669 break; 1688 1670 case 35: 1689 1671 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1690 1672 { 1691 - #line 306 "Prexonite.lex" 1673 + #line 301 "Prexonite.lex" 1692 1674 throw new PrexoniteException("Invalid smart string character '" + yytext() + "' (ASCII " + ((int)yytext()[0]) + ") in input on line " + yyline + "."); 1693 1675 #line default 1694 1676 } ··· 1760 1742 case 38: 1761 1743 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1762 1744 { 1763 - #line 310 "Prexonite.lex" 1745 + #line 305 "Prexonite.lex" 1764 1746 PopState(); 1765 1747 ret(tok(Parser._string, buffer.ToString())); 1766 1748 buffer.Length = 0; ··· 1779 1761 case 110: 1780 1762 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1781 1763 { 1782 - #line 279 "Prexonite.lex" 1764 + #line 274 "Prexonite.lex" 1783 1765 buffer.Append(_unescapeChar(yytext())); 1784 1766 #line default 1785 1767 } 1786 1768 break; 1787 - case 37: 1769 + case 39: 1788 1770 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1789 1771 { 1790 - #line 314 "Prexonite.lex" 1791 - buffer.Append(yytext()); 1772 + #line 311 "Prexonite.lex" 1773 + buffer.Append("$"); 1792 1774 #line default 1793 1775 } 1794 1776 break; ··· 1811 1793 case 69: 1812 1794 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1813 1795 { 1814 - #line 250 "Prexonite.lex" 1796 + #line 245 "Prexonite.lex" 1815 1797 buffer.Append("\r"); 1816 1798 #line default 1817 1799 } ··· 1835 1817 case 72: 1836 1818 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1837 1819 { 1838 - #line 251 "Prexonite.lex" 1820 + #line 246 "Prexonite.lex" 1839 1821 buffer.Append("\v"); 1840 1822 #line default 1841 1823 } ··· 1851 1833 case 67: 1852 1834 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1853 1835 { 1854 - #line 252 "Prexonite.lex" 1836 + #line 247 "Prexonite.lex" 1855 1837 buffer.Append("\t"); 1856 1838 #line default 1857 1839 } ··· 1875 1857 case 85: 1876 1858 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1877 1859 { 1878 - #line 268 "Prexonite.lex" 1860 + #line 263 "Prexonite.lex" 1879 1861 /* nothing to do */ 1880 1862 #line default 1881 1863 } ··· 1899 1881 case 74: 1900 1882 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1901 1883 { 1902 - #line 247 "Prexonite.lex" 1884 + #line 242 "Prexonite.lex" 1903 1885 buffer.Append("\b"); 1904 1886 #line default 1905 1887 } ··· 1923 1905 case 71: 1924 1906 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1925 1907 { 1926 - #line 246 "Prexonite.lex" 1908 + #line 241 "Prexonite.lex" 1927 1909 buffer.Append("\a"); 1928 1910 #line default 1929 1911 } ··· 1931 1913 case 70: 1932 1914 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1933 1915 { 1934 - #line 248 "Prexonite.lex" 1916 + #line 243 "Prexonite.lex" 1935 1917 buffer.Append("\f"); 1936 1918 #line default 1937 1919 } ··· 1944 1926 #line default 1945 1927 } 1946 1928 break; 1947 - case 99: 1929 + case 5: 1948 1930 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1949 1931 { 1950 - #line 166 "Prexonite.lex" 1951 - return tok(Parser._id,OperatorNames.Prexonite.Subtraction); 1932 + #line 194 "Prexonite.lex" 1933 + return tok(Parser._minus); 1952 1934 #line default 1953 1935 } 1954 1936 break; ··· 1960 1942 #line default 1961 1943 } 1962 1944 break; 1963 - case 120: 1945 + case 40: 1964 1946 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1965 1947 { 1966 - #line 188 "Prexonite.lex" 1967 - return tok(Parser._id,OperatorNames.Prexonite.BinaryDeltaRight); 1948 + #line 320 "Prexonite.lex" 1949 + buffer.Append(yytext()); 1968 1950 #line default 1969 1951 } 1970 1952 break; 1971 1953 case 75: 1972 1954 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1973 1955 { 1974 - #line 249 "Prexonite.lex" 1956 + #line 244 "Prexonite.lex" 1975 1957 buffer.Append("\n"); 1976 1958 #line default 1977 1959 } ··· 1995 1977 case 10: 1996 1978 if (ZZ_SPURIOUS_WARNINGS_SUCK) 1997 1979 { 1998 - #line 231 "Prexonite.lex" 1980 + #line 226 "Prexonite.lex" 1999 1981 return tok(Parser._not); 2000 1982 #line default 2001 1983 } ··· 2008 1990 #line default 2009 1991 } 2010 1992 break; 2011 - case 5: 1993 + case 15: 2012 1994 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2013 1995 { 2014 - #line 194 "Prexonite.lex" 2015 - return tok(Parser._minus); 1996 + #line 222 "Prexonite.lex" 1997 + return tok(Parser._dot); 2016 1998 #line default 2017 1999 } 2018 2000 break; ··· 2024 2006 #line default 2025 2007 } 2026 2008 break; 2027 - case 78: 2009 + case 102: 2028 2010 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2029 2011 { 2030 - #line 280 "Prexonite.lex" 2031 - buffer.Append("$"); 2012 + #line 170 "Prexonite.lex" 2013 + return tok(Parser._id,OperatorNames.Prexonite.Power); 2032 2014 #line default 2033 2015 } 2034 2016 break; ··· 2043 2025 case 36: 2044 2026 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2045 2027 { 2046 - #line 261 "Prexonite.lex" 2028 + #line 256 "Prexonite.lex" 2047 2029 PopState(); 2048 2030 ret(tok(Parser._string, buffer.ToString())); 2049 2031 buffer.Length = 0; ··· 2062 2044 case 80: 2063 2045 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2064 2046 { 2065 - #line 269 "Prexonite.lex" 2047 + #line 264 "Prexonite.lex" 2066 2048 buffer.Append("\0"); 2067 2049 #line default 2068 2050 } ··· 2070 2052 case 76: 2071 2053 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2072 2054 { 2073 - #line 266 "Prexonite.lex" 2055 + #line 261 "Prexonite.lex" 2074 2056 buffer.Append("\\"); 2075 2057 #line default 2076 2058 } ··· 2078 2060 case 92: 2079 2061 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2080 2062 { 2081 - #line 328 "Prexonite.lex" 2063 + #line 323 "Prexonite.lex" 2082 2064 string clipped; 2083 2065 string id = _pruneSmartStringIdentifier(yytext(), out clipped); 2084 2066 string fragment = buffer.ToString(); ··· 2106 2088 case 11: 2107 2089 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2108 2090 { 2109 - #line 228 "Prexonite.lex" 2091 + #line 223 "Prexonite.lex" 2110 2092 return tok(Parser._at); 2111 2093 #line default 2112 2094 } ··· 2114 2096 case 77: 2115 2097 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2116 2098 { 2117 - #line 267 "Prexonite.lex" 2099 + #line 262 "Prexonite.lex" 2118 2100 buffer.Append("\""); 2119 2101 #line default 2120 2102 } ··· 2135 2117 #line default 2136 2118 } 2137 2119 break; 2138 - case 39: 2120 + case 33: 2139 2121 if (ZZ_SPURIOUS_WARNINGS_SUCK) 2140 2122 { 2141 - #line 316 "Prexonite.lex" 2142 - buffer.Append("$"); 2123 + #line 252 "Prexonite.lex" 2124 + buffer.Append("$"); 2143 2125 #line default 2144 2126 } 2145 2127 break; ··· 2156 2138 { 2157 2139 #line 168 "Prexonite.lex" 2158 2140 return tok(Parser._id,OperatorNames.Prexonite.Division); 2141 + #line default 2142 + } 2143 + break; 2144 + case 120: 2145 + if (ZZ_SPURIOUS_WARNINGS_SUCK) 2146 + { 2147 + #line 188 "Prexonite.lex" 2148 + return tok(Parser._id,OperatorNames.Prexonite.BinaryDeltaRight); 2159 2149 #line default 2160 2150 } 2161 2151 break;
+1 -6
Prexonite/Compiler/Prexonite.lex
··· 219 219 ":" { return tok(Parser._colon); } 220 220 ";" { return tok(Parser._semicolon); } 221 221 "," { return tok(Parser._comma); } 222 - "." ({Identifier})? { Token dot = tok(Parser._dot); 223 - string memberId = yytext(); 224 - if(memberId.Length > 1) 225 - return multiple(dot,tok(Parser._id,memberId.Substring(memberId.StartsWith(".$") ? 2 : 1))); 226 - else 227 - return dot; } 222 + "." { return tok(Parser._dot); } 228 223 "@" { return tok(Parser._at); } 229 224 ">>" { return tok(Parser._appendright); } 230 225 "<<" { return tok(Parser._appendleft); }
+53 -11
Prexonite/Helper/MetaEntry.cs
··· 6 6 using System.Linq; 7 7 using System.Text; 8 8 using JetBrains.Annotations; 9 + using Prexonite.Properties; 9 10 using Prexonite.Types; 10 11 11 12 namespace Prexonite ··· 404 405 buffer.Append("{}"); 405 406 break; 406 407 case Type.List: 407 - buffer.Append("{"); 408 + buffer.Append('{'); 408 409 foreach (var entry in _list) 409 410 { 410 411 if (entry == null) 411 412 continue; 412 413 entry.ToString(buffer); 413 - buffer.Append(","); 414 + buffer.Append(','); 414 415 } 415 416 if (_list.Length > 0) 416 417 buffer.Remove(buffer.Length - 1, 1); 417 - buffer.Append("}"); 418 + buffer.Append('}'); 418 419 break; 419 420 case Type.Switch: 420 - buffer.Append(_switch.ToString()); 421 + buffer.Append(_switch.ToString(CultureInfo.InvariantCulture)); 421 422 break; 422 423 case Type.Text when _text == null: 423 424 buffer.Append("\"\""); 424 425 break; 425 426 case Type.Text: 426 427 //Special case: allow integer numbers 427 - if (_text.Length <= LengthOfInt32MaxValue && _looksLikeNumber(_text) && 428 - long.TryParse(_text, out var num)) 428 + if (_text.Length <= LengthOfInt32MaxValue && _looksLikeNumberOrVersion(_text)) 429 429 { 430 - var format = NumberFormatInfo.InvariantInfo; 431 - var numStr = num.ToString(format); 432 - Debug.Assert(_looksLikeNumber(numStr)); 433 - buffer.Append(numStr); 430 + if (long.TryParse(_text, out var num)) 431 + { 432 + var format = NumberFormatInfo.InvariantInfo; 433 + var numStr = num.ToString(format); 434 + Debug.Assert(_looksLikeNumberOrVersion(numStr)); 435 + buffer.Append(numStr); 436 + break; 437 + } 438 + else if (Version.TryParse(_text, out var version)) 439 + { 440 + buffer.Append(version); 441 + break; 442 + } 443 + } 444 + 445 + if (_text.Contains('.')) 446 + { 447 + var first = true; 448 + foreach (var part in _text.Split('.')) 449 + { 450 + if (!first) 451 + { 452 + buffer.Append('.'); 453 + } 454 + first = false; 455 + 456 + var idOrLiteral = StringPType.ToIdOrLiteral(part); 457 + if (idOrLiteral.StartsWith("\"")) 458 + { 459 + buffer.Append('$'); 460 + } 461 + 462 + buffer.Append(idOrLiteral); 463 + } 434 464 } 435 465 else 436 466 { 437 467 buffer.Append(StringPType.ToIdOrLiteral(_text)); 438 468 } 439 469 break; 470 + default: 471 + throw new ArgumentOutOfRangeException( 472 + string.Format(Resources.MetaEntry_EntryTypeUnknownToString, EntryType)); 440 473 } 441 474 } 442 475 443 476 private const int LengthOfInt32MaxValue = 10 + 1; //sign allowed 444 477 445 - private static bool _looksLikeNumber(string text) 478 + private static bool _looksLikeNumberOrVersion(string text) 446 479 { 447 480 var end = Math.Min(text.Length, LengthOfInt32MaxValue); 481 + var remainingDotsAllowed = 4; 448 482 for (var i = 0; i < end; i++) 483 + { 484 + if (remainingDotsAllowed > 0 && text[i] == '.') 485 + { 486 + remainingDotsAllowed -= 1; 487 + continue; 488 + } 449 489 if (!char.IsDigit(text[i])) 450 490 return false; 491 + } 492 + 451 493 return true; 452 494 } 453 495
+11
Prexonite/Prexonite.csproj
··· 146 146 <!-- On Windows, deletion will fail because some build process retains a handle to this file. --> 147 147 <!-- <Delete Files="$(PrexoniteGrammarDefinition)" /> --> 148 148 </Target> 149 + 150 + <ItemGroup> 151 + <!-- Generate the Properties/Resources.Designer.cs file from the default translations in Resources.resx --> 152 + <EmbeddedResource Update="Properties/Resources.resx"> 153 + <Generator>ResXFileCodeGenerator</Generator> 154 + <StronglyTypedFileName>Properties/Resources.Designer.cs</StronglyTypedFileName> 155 + <StronglyTypedLanguage>CSharp</StronglyTypedLanguage> 156 + <StronglyTypedNamespace>Prexonite.Properties</StronglyTypedNamespace> 157 + <StronglyTypedClassName>Resources</StronglyTypedClassName> 158 + </EmbeddedResource> 159 + </ItemGroup> 149 160 150 161 <!-- NUGET References --> 151 162 <ItemGroup>
+5
Prexonite/Properties/AssemblyInfo.cs
··· 57 57 + "06020000002400005253413100040000010001005def07f2a41140759af9fb2bbc95134590" 58 58 + "655b13d80802066631489fe40f030ef270d151f62ff968e715f08e3df0e22f8f8f587b3e90" 59 59 + "28903c2ca2bd2b7b779ed0de24679aa3463cde1f484464f0af527a7443941f83ef4272e468" 60 + + "a3e8ae7f05ff7fef7b3d0f99f4f6d42a3811d0d02350d074209283f95dccd26bbb5f7d2ebc")] 61 + [assembly: InternalsVisibleTo("Prx, PublicKey=002400000480000094000000" 62 + + "06020000002400005253413100040000010001005def07f2a41140759af9fb2bbc95134590" 63 + + "655b13d80802066631489fe40f030ef270d151f62ff968e715f08e3df0e22f8f8f587b3e90" 64 + + "28903c2ca2bd2b7b779ed0de24679aa3463cde1f484464f0af527a7443941f83ef4272e468" 60 65 + "a3e8ae7f05ff7fef7b3d0f99f4f6d42a3811d0d02350d074209283f95dccd26bbb5f7d2ebc")]
-1001
Prexonite/Properties/Resources.Designer.cs
··· 1 - //------------------------------------------------------------------------------ 2 - // <auto-generated> 3 - // This code was generated by a tool. 4 - // Runtime Version:4.0.30319.42000 5 - // 6 - // Changes to this file may cause incorrect behavior and will be lost if 7 - // the code is regenerated. 8 - // </auto-generated> 9 - //------------------------------------------------------------------------------ 10 - 11 - namespace Prexonite.Properties { 12 - using System; 13 - 14 - 15 - /// <summary> 16 - /// A strongly-typed resource class, for looking up localized strings, etc. 17 - /// </summary> 18 - // This class was auto-generated by the StronglyTypedResourceBuilder 19 - // class via a tool like ResGen or Visual Studio. 20 - // To add or remove a member, edit your .ResX file then rerun ResGen 21 - // with the /str option, or rebuild your VS project. 22 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 - public class Resources { 26 - 27 - private static global::System.Resources.ResourceManager resourceMan; 28 - 29 - private static global::System.Globalization.CultureInfo resourceCulture; 30 - 31 - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 - internal Resources() { 33 - } 34 - 35 - /// <summary> 36 - /// Returns the cached ResourceManager instance used by this class. 37 - /// </summary> 38 - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 - public static global::System.Resources.ResourceManager ResourceManager { 40 - get { 41 - if (object.ReferenceEquals(resourceMan, null)) { 42 - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Prexonite.Properties.Resources", typeof(Resources).Assembly); 43 - resourceMan = temp; 44 - } 45 - return resourceMan; 46 - } 47 - } 48 - 49 - /// <summary> 50 - /// Overrides the current thread's CurrentUICulture property for all 51 - /// resource lookups using this strongly typed resource class. 52 - /// </summary> 53 - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 - public static global::System.Globalization.CultureInfo Culture { 55 - get { 56 - return resourceCulture; 57 - } 58 - set { 59 - resourceCulture = value; 60 - } 61 - } 62 - 63 - /// <summary> 64 - /// Looks up a localized string similar to In partial applications of lazy coalescence expressions, only one placeholder at the end of a sequence is allowed. Consider using a lambda expression instead.. 65 - /// </summary> 66 - public static string AstCoalescence__reportInvalidPlaceholders { 67 - get { 68 - return ResourceManager.GetString("AstCoalescence__reportInvalidPlaceholders", resourceCulture); 69 - } 70 - } 71 - 72 - /// <summary> 73 - /// Looks up a localized string similar to Entity must be a macro to be expanded.. 74 - /// </summary> 75 - public static string AstExpand_EntityMustBeMacro { 76 - get { 77 - return ResourceManager.GetString("AstExpand_EntityMustBeMacro", resourceCulture); 78 - } 79 - } 80 - 81 - /// <summary> 82 - /// Looks up a localized string similar to Expected {0} to be implemented as an LValue.. 83 - /// </summary> 84 - public static string AstFactoryBase__resolveImplementation_LValueExpected { 85 - get { 86 - return ResourceManager.GetString("AstFactoryBase__resolveImplementation_LValueExpected", resourceCulture); 87 - } 88 - } 89 - 90 - /// <summary> 91 - /// Looks up a localized string similar to Type expression expected on the right-hand side of a type cast.. 92 - /// </summary> 93 - public static string AstFactoryBase_BinaryOperation_TypeExprExpected { 94 - get { 95 - return ResourceManager.GetString("AstFactoryBase_BinaryOperation_TypeExprExpected", resourceCulture); 96 - } 97 - } 98 - 99 - /// <summary> 100 - /// Looks up a localized string similar to Right hand side of a cast operation must be a type expression.. 101 - /// </summary> 102 - public static string AstFactoryBase_ModifyingAssignment_TypeExpressionExpected { 103 - get { 104 - return ResourceManager.GetString("AstFactoryBase_ModifyingAssignment_TypeExpressionExpected", resourceCulture); 105 - } 106 - } 107 - 108 - /// <summary> 109 - /// Looks up a localized string similar to The not operator must produce an LValue to be used in a negative typecheck.. 110 - /// </summary> 111 - public static string AstFactoryBase_UnaryOperation_NotOperatorForTypecheckRequiresLValue { 112 - get { 113 - return ResourceManager.GetString("AstFactoryBase_UnaryOperation_NotOperatorForTypecheckRequiresLValue", resourceCulture); 114 - } 115 - } 116 - 117 - /// <summary> 118 - /// Looks up a localized string similar to Target of an increment or decrement operations must be an LValue and a get-call.. 119 - /// </summary> 120 - public static string AstFactoryBase_UnaryOperation_Target_must_be_LValue { 121 - get { 122 - return ResourceManager.GetString("AstFactoryBase_UnaryOperation_Target_must_be_LValue", resourceCulture); 123 - } 124 - } 125 - 126 - /// <summary> 127 - /// Looks up a localized string similar to Optimization of the element expression in the foreach head resulted in a non-GetSet expression. Try to use a simpler expression.. 128 - /// </summary> 129 - public static string AstForeachLoop_DoEmitCode_ElementTooComplicated { 130 - get { 131 - return ResourceManager.GetString("AstForeachLoop_DoEmitCode_ElementTooComplicated", resourceCulture); 132 - } 133 - } 134 - 135 - /// <summary> 136 - /// Looks up a localized string similar to Cannot assign to a reference to a {0}.. 137 - /// </summary> 138 - public static string AstGetSetReference_CannotAssignReference { 139 - get { 140 - return ResourceManager.GetString("AstGetSetReference_CannotAssignReference", resourceCulture); 141 - } 142 - } 143 - 144 - /// <summary> 145 - /// Looks up a localized string similar to Cannot create a reference to {0} {1}.. 146 - /// </summary> 147 - public static string AstGetSetReference_CannotCreateReference { 148 - get { 149 - return ResourceManager.GetString("AstGetSetReference_CannotCreateReference", resourceCulture); 150 - } 151 - } 152 - 153 - /// <summary> 154 - /// Looks up a localized string similar to Reference to macro command {0} detected. Prexonite version {1} treats this as a partial application. This behavior might change in the future. Use partial application syntax explicitly {0}(?) or use the {2} command to obtain a reference to the macro.. 155 - /// </summary> 156 - public static string AstGetSetReference_ReferenceToMacroTreatedAsPartialApplication { 157 - get { 158 - return ResourceManager.GetString("AstGetSetReference_ReferenceToMacroTreatedAsPartialApplication", resourceCulture); 159 - } 160 - } 161 - 162 - /// <summary> 163 - /// Looks up a localized string similar to Cannot translate slice.. 164 - /// </summary> 165 - public static string AstIndirectCall_DoEmitPartialApplicationCode_Cannot_translate_slice { 166 - get { 167 - return ResourceManager.GetString("AstIndirectCall_DoEmitPartialApplicationCode_Cannot_translate_slice", resourceCulture); 168 - } 169 - } 170 - 171 - /// <summary> 172 - /// Looks up a localized string similar to Condition must not be null.. 173 - /// </summary> 174 - public static string AstLazyLogical__Condition_must_not_be_null { 175 - get { 176 - return ResourceManager.GetString("AstLazyLogical__Condition_must_not_be_null", resourceCulture); 177 - } 178 - } 179 - 180 - /// <summary> 181 - /// Looks up a localized string similar to targetLabel must neither be null nor empty.. 182 - /// </summary> 183 - public static string AstLazyLogical__targetLabel_must_neither_be_null_nor_empty { 184 - get { 185 - return ResourceManager.GetString("AstLazyLogical__targetLabel_must_neither_be_null_nor_empty", resourceCulture); 186 - } 187 - } 188 - 189 - /// <summary> 190 - /// Looks up a localized string similar to alternativeLabel may neither be null nor empty.. 191 - /// </summary> 192 - public static string AstLazyLogical_alternativeLabel_may_neither_be_null_nor_empty { 193 - get { 194 - return ResourceManager.GetString("AstLazyLogical_alternativeLabel_may_neither_be_null_nor_empty", resourceCulture); 195 - } 196 - } 197 - 198 - /// <summary> 199 - /// Looks up a localized string similar to The lazy logical expression {0} must implement this method/property to support partial application.. 200 - /// </summary> 201 - public static string AstLazyLogical_CreatePrefixMustBeImplementedForPartialApplication { 202 - get { 203 - return ResourceManager.GetString("AstLazyLogical_CreatePrefixMustBeImplementedForPartialApplication", resourceCulture); 204 - } 205 - } 206 - 207 - /// <summary> 208 - /// Looks up a localized string similar to Partial applications of logical statements must be either pure and-chains or pure or-chains.. 209 - /// </summary> 210 - public static string AstLazyLogical_EmitCode_PureChainsExpected { 211 - get { 212 - return ResourceManager.GetString("AstLazyLogical_EmitCode_PureChainsExpected", resourceCulture); 213 - } 214 - } 215 - 216 - /// <summary> 217 - /// Looks up a localized string similar to In partial applications of lazy expressions, only one placeholder at the end of a sequence is allowed. Consider using a lambda expression instead.. 218 - /// </summary> 219 - public static string AstLazyLogical_placeholderOnlyAtTheEnd { 220 - get { 221 - return ResourceManager.GetString("AstLazyLogical_placeholderOnlyAtTheEnd", resourceCulture); 222 - } 223 - } 224 - 225 - /// <summary> 226 - /// Looks up a localized string similar to The assignment modifier {0} is not supported.. 227 - /// </summary> 228 - public static string AstModifyingAssignment_AssignmentModifierNotSupported { 229 - get { 230 - return ResourceManager.GetString("AstModifyingAssignment_AssignmentModifierNotSupported", resourceCulture); 231 - } 232 - } 233 - 234 - /// <summary> 235 - /// Looks up a localized string similar to Invalid modifying assignment: No RHS.. 236 - /// </summary> 237 - public static string AstModifyingAssignment_No_RHS { 238 - get { 239 - return ResourceManager.GetString("AstModifyingAssignment_No_RHS", resourceCulture); 240 - } 241 - } 242 - 243 - /// <summary> 244 - /// Looks up a localized string similar to Argument splice not supported in this position.. 245 - /// </summary> 246 - public static string AstNode__argumentSpliceNotSupportedInThisPosition { 247 - get { 248 - return ResourceManager.GetString("AstNode__argumentSpliceNotSupportedInThisPosition", resourceCulture); 249 - } 250 - } 251 - 252 - /// <summary> 253 - /// Looks up a localized string similar to Compiler target cannot be null.. 254 - /// </summary> 255 - public static string AstNode__GetOptimizedNode_CompilerTarget_null { 256 - get { 257 - return ResourceManager.GetString("AstNode__GetOptimizedNode_CompilerTarget_null", resourceCulture); 258 - } 259 - } 260 - 261 - /// <summary> 262 - /// Looks up a localized string similar to Expression to be optimized can not be null.. 263 - /// </summary> 264 - public static string AstNode__GetOptimizedNode_Expression_null { 265 - get { 266 - return ResourceManager.GetString("AstNode__GetOptimizedNode_Expression_null", resourceCulture); 267 - } 268 - } 269 - 270 - /// <summary> 271 - /// Looks up a localized string similar to Compiler target must not be null.. 272 - /// </summary> 273 - public static string AstNode_Compiler_target_must_not_be_null { 274 - get { 275 - return ResourceManager.GetString("AstNode_Compiler_target_must_not_be_null", resourceCulture); 276 - } 277 - } 278 - 279 - /// <summary> 280 - /// Looks up a localized string similar to No implementation defined for operator `{0}`. 281 - /// </summary> 282 - public static string AstNode_NoImplementationForOperator { 283 - get { 284 - return ResourceManager.GetString("AstNode_NoImplementationForOperator", resourceCulture); 285 - } 286 - } 287 - 288 - /// <summary> 289 - /// Looks up a localized string similar to A placeholder index cannot be negtive. 290 - /// </summary> 291 - public static string AstPlaceholder_PlaceholdeIndexNegative { 292 - get { 293 - return ResourceManager.GetString("AstPlaceholder_PlaceholdeIndexNegative", resourceCulture); 294 - } 295 - } 296 - 297 - /// <summary> 298 - /// Looks up a localized string similar to Cannot load a reference to a macro command. Partial application might be possible, depending on the macro command in question.. 299 - /// </summary> 300 - public static string AstReference_MacroCommandReferenceNotPossible { 301 - get { 302 - return ResourceManager.GetString("AstReference_MacroCommandReferenceNotPossible", resourceCulture); 303 - } 304 - } 305 - 306 - /// <summary> 307 - /// Looks up a localized string similar to Detected possible return (yield) from within a protected block (try-catch-finally, using, foreach). This Prexonite implementation cannot guarantee that cleanup code is executed. . 308 - /// </summary> 309 - public static string AstReturn_Warn_YieldInProtectedBlock { 310 - get { 311 - return ResourceManager.GetString("AstReturn_Warn_YieldInProtectedBlock", resourceCulture); 312 - } 313 - } 314 - 315 - /// <summary> 316 - /// Looks up a localized string similar to Unary operator nodes for non-increment/decrement should not exist. This error indicates an error in the compiler.. 317 - /// </summary> 318 - public static string AstUnaryOperator__NonIncrementDecrement { 319 - get { 320 - return ResourceManager.GetString("AstUnaryOperator__NonIncrementDecrement", resourceCulture); 321 - } 322 - } 323 - 324 - /// <summary> 325 - /// Looks up a localized string similar to The symbol {0} has not been resolved.. 326 - /// </summary> 327 - public static string AstUnresolved_The_symbol__0__has_not_been_resolved_ { 328 - get { 329 - return ResourceManager.GetString("AstUnresolved_The_symbol__0__has_not_been_resolved_", resourceCulture); 330 - } 331 - } 332 - 333 - /// <summary> 334 - /// Looks up a localized string similar to call\macro must be supplied a macro reference.. 335 - /// </summary> 336 - public static string CallMacro_call_macro_must_be_supplied_a_macro_reference { 337 - get { 338 - return ResourceManager.GetString("CallMacro_call_macro_must_be_supplied_a_macro_reference", resourceCulture); 339 - } 340 - } 341 - 342 - /// <summary> 343 - /// Looks up a localized string similar to call\macro called from {0}. call\macro can only be called from a macro context, i.e., from a macro function or an inner function of a macro.. 344 - /// </summary> 345 - public static string CallMacro_CalledFromNonMacro { 346 - get { 347 - return ResourceManager.GetString("CallMacro_CalledFromNonMacro", resourceCulture); 348 - } 349 - } 350 - 351 - /// <summary> 352 - /// Looks up a localized string similar to Used in this way, {0} has the form {0}([],macroRef,[justEffect?,call?],...).. 353 - /// </summary> 354 - public static string CallMacro_errorUsageFullRef { 355 - get { 356 - return ResourceManager.GetString("CallMacro_errorUsageFullRef", resourceCulture); 357 - } 358 - } 359 - 360 - /// <summary> 361 - /// Looks up a localized string similar to Used in this way, {0} has the form {0}([macroPrototype(...),justEffect?,call?],...).. 362 - /// </summary> 363 - public static string CallMacro_errorUsagePrototype { 364 - get { 365 - return ResourceManager.GetString("CallMacro_errorUsagePrototype", resourceCulture); 366 - } 367 - } 368 - 369 - /// <summary> 370 - /// Looks up a localized string similar to The macro prototype must be known at compile-time, it must not be a placeholder.. 371 - /// </summary> 372 - public static string CallMacro_notOnPlaceholder { 373 - get { 374 - return ResourceManager.GetString("CallMacro_notOnPlaceholder", resourceCulture); 375 - } 376 - } 377 - 378 - /// <summary> 379 - /// Looks up a localized string similar to Due to an internal limitation, the index of a placeholder in the macro prototype&apos;s argument list inside {0} cannot be inferred. Specify the placeholders index explicitly (e.g., ?0, ?1, etc.).. 380 - /// </summary> 381 - public static string CallMacro_SpecifyPlaceholderIndexExplicitly { 382 - get { 383 - return ResourceManager.GetString("CallMacro_SpecifyPlaceholderIndexExplicitly", resourceCulture); 384 - } 385 - } 386 - 387 - /// <summary> 388 - /// Looks up a localized string similar to call\star must at least pass through one argument (the call target). It has been instructed to pass through {0} arguments.. 389 - /// </summary> 390 - public static string CallStar__invalid_PassThrough { 391 - get { 392 - return ResourceManager.GetString("CallStar__invalid_PassThrough", resourceCulture); 393 - } 394 - } 395 - 396 - /// <summary> 397 - /// Looks up a localized string similar to {0} requires at least one argument, the call\* command/function to invoke.. 398 - /// </summary> 399 - public static string CallStar_usage { 400 - get { 401 - return ResourceManager.GetString("CallStar_usage", resourceCulture); 402 - } 403 - } 404 - 405 - /// <summary> 406 - /// Looks up a localized string similar to Due to an internal limitation, {0} and {1} cannot be used in an expression inside a loop, only as a statement.. 407 - /// </summary> 408 - public static string CallSubInterpret_asExpressionInLoop { 409 - get { 410 - return ResourceManager.GetString("CallSubInterpret_asExpressionInLoop", resourceCulture); 411 - } 412 - } 413 - 414 - /// <summary> 415 - /// Looks up a localized string similar to {0} requires one argument.. 416 - /// </summary> 417 - public static string CallSubInterpret_OneArgument { 418 - get { 419 - return ResourceManager.GetString("CallSubInterpret_OneArgument", resourceCulture); 420 - } 421 - } 422 - 423 - /// <summary> 424 - /// Looks up a localized string similar to Legacy part of parser cannot deal with symbol {0}. A call symbol was expected.. 425 - /// </summary> 426 - public static string CompilerTarget__CreateIncompatibleSymbolError_IncompatibleSymbol { 427 - get { 428 - return ResourceManager.GetString("CompilerTarget__CreateIncompatibleSymbolError_IncompatibleSymbol", resourceCulture); 429 - } 430 - } 431 - 432 - /// <summary> 433 - /// Looks up a localized string similar to When creating a compiler target, the supplied function must match the application targetted by the loader.. 434 - /// </summary> 435 - public static string CompilerTarget_Cannot_create_for_foreign_function { 436 - get { 437 - return ResourceManager.GetString("CompilerTarget_Cannot_create_for_foreign_function", resourceCulture); 438 - } 439 - } 440 - 441 - /// <summary> 442 - /// Looks up a localized string similar to Parameter list of function {0} contains {1} at position {2}. The name {1} is reserved for the local variable holding the argument list.. 443 - /// </summary> 444 - public static string CompilerTarget_ParameterNameReserved { 445 - get { 446 - return ResourceManager.GetString("CompilerTarget_ParameterNameReserved", resourceCulture); 447 - } 448 - } 449 - 450 - /// <summary> 451 - /// Looks up a localized string similar to Invalid key in source for symbol store.. 452 - /// </summary> 453 - public static string ConflictUnionFallbackStore__unifySymbols_Invalid_key_in_source_for_symbol_store_ { 454 - get { 455 - return ResourceManager.GetString("ConflictUnionFallbackStore__unifySymbols_Invalid_key_in_source_for_symbol_store_", resourceCulture); 456 - } 457 - } 458 - 459 - /// <summary> 460 - /// Looks up a localized string similar to A stream that is not readable cannot be used as a source.. 461 - /// </summary> 462 - public static string Exception_StreamSource_CannotUseWriteOnlyStream { 463 - get { 464 - return ResourceManager.GetString("Exception_StreamSource_CannotUseWriteOnlyStream", resourceCulture); 465 - } 466 - } 467 - 468 - /// <summary> 469 - /// Looks up a localized string similar to Capacity must be strictly positive.. 470 - /// </summary> 471 - public static string LastAccessCache_CapacityMustBePositive { 472 - get { 473 - return ResourceManager.GetString("LastAccessCache_CapacityMustBePositive", resourceCulture); 474 - } 475 - } 476 - 477 - /// <summary> 478 - /// Looks up a localized string similar to {1}begin compiling {0} [Path: {2} ]. 479 - /// </summary> 480 - public static string Loader__begin_compiling { 481 - get { 482 - return ResourceManager.GetString("Loader__begin_compiling", resourceCulture); 483 - } 484 - } 485 - 486 - /// <summary> 487 - /// Looks up a localized string similar to {1}end compiling {0}. 488 - /// </summary> 489 - public static string Loader__end_compiling { 490 - get { 491 - return ResourceManager.GetString("Loader__end_compiling", resourceCulture); 492 - } 493 - } 494 - 495 - /// <summary> 496 - /// Looks up a localized string similar to Cannot find macro command named `{0}`. 497 - /// </summary> 498 - public static string MacroCommandExpander_CannotFindMacro { 499 - get { 500 - return ResourceManager.GetString("MacroCommandExpander_CannotFindMacro", resourceCulture); 501 - } 502 - } 503 - 504 - /// <summary> 505 - /// Looks up a localized string similar to MacroCommandExpander expected macro command entity. Got {0} instead.. 506 - /// </summary> 507 - public static string MacroCommandExpander_MacroCommandExpected { 508 - get { 509 - return ResourceManager.GetString("MacroCommandExpander_MacroCommandExpected", resourceCulture); 510 - } 511 - } 512 - 513 - /// <summary> 514 - /// Looks up a localized string similar to Cannot establish macro context outside of macro.. 515 - /// </summary> 516 - public static string MacroContextExtensions_EstablishMacroContext_OutsideOfMacro { 517 - get { 518 - return ResourceManager.GetString("MacroContextExtensions_EstablishMacroContext_OutsideOfMacro", resourceCulture); 519 - } 520 - } 521 - 522 - /// <summary> 523 - /// Looks up a localized string similar to Macro {0} uses temporary variable to ensure that expression from `context.Block` is evaluated before statements from macro return value.. 524 - /// </summary> 525 - public static string MacroFunctionExpander__UsedTemporaryVariable { 526 - get { 527 - return ResourceManager.GetString("MacroFunctionExpander__UsedTemporaryVariable", resourceCulture); 528 - } 529 - } 530 - 531 - /// <summary> 532 - /// Looks up a localized string similar to MacroFunctionExpander expected reference to function, got {0} instead.. 533 - /// </summary> 534 - public static string MacroFunctionExpander_ExpectedFunctionReference { 535 - get { 536 - return ResourceManager.GetString("MacroFunctionExpander_ExpectedFunctionReference", resourceCulture); 537 - } 538 - } 539 - 540 - /// <summary> 541 - /// Looks up a localized string similar to The macro function {0} was called from function {1} but is not available at compile time (from module {2}).. 542 - /// </summary> 543 - public static string MacroFunctionExpander_MacroFunctionNotAvailable { 544 - get { 545 - return ResourceManager.GetString("MacroFunctionExpander_MacroFunctionNotAvailable", resourceCulture); 546 - } 547 - } 548 - 549 - /// <summary> 550 - /// Looks up a localized string similar to Partial macro must return a boolean value, indicating whether it can handle the partial application. Assuming it cannot.. 551 - /// </summary> 552 - public static string MacroFunctionExpander_PartialMacroMustIndicateSuccessWithBoolean { 553 - get { 554 - return ResourceManager.GetString("MacroFunctionExpander_PartialMacroMustIndicateSuccessWithBoolean", resourceCulture); 555 - } 556 - } 557 - 558 - /// <summary> 559 - /// Looks up a localized string similar to Exception during expansion of macro {0} in function {1}: {2}. 560 - /// </summary> 561 - public static string MacroSession_ExceptionDuringExpansionOfMacro { 562 - get { 563 - return ResourceManager.GetString("MacroSession_ExceptionDuringExpansionOfMacro", resourceCulture); 564 - } 565 - } 566 - 567 - /// <summary> 568 - /// Looks up a localized string similar to The macro {0} cannot be applied partially.. 569 - /// </summary> 570 - public static string MacroSession_MacroCannotBeAppliedPartially { 571 - get { 572 - return ResourceManager.GetString("MacroSession_MacroCannotBeAppliedPartially", resourceCulture); 573 - } 574 - } 575 - 576 - /// <summary> 577 - /// Looks up a localized string similar to AstMacroInvocation.EmitCode is not reentrant. The invocation node for the macro {0} has been expanded already. Use GetCopy() to operate on a copy of this macro invocation.. 578 - /// </summary> 579 - public static string MacroSession_MacroNotReentrant { 580 - get { 581 - return ResourceManager.GetString("MacroSession_MacroNotReentrant", resourceCulture); 582 - } 583 - } 584 - 585 - /// <summary> 586 - /// Looks up a localized string similar to Cannot apply {0} as a macro at compile time.. 587 - /// </summary> 588 - public static string MacroSession_NotAMacro { 589 - get { 590 - return ResourceManager.GetString("MacroSession_NotAMacro", resourceCulture); 591 - } 592 - } 593 - 594 - /// <summary> 595 - /// Looks up a localized string similar to A MetaEntry list must not contain null references.. 596 - /// </summary> 597 - public static string MetaEntry_NullReferenceInList { 598 - get { 599 - return ResourceManager.GetString("MetaEntry_NullReferenceInList", resourceCulture); 600 - } 601 - } 602 - 603 - /// <summary> 604 - /// Looks up a localized string similar to Module id cannot be null or empty.. 605 - /// </summary> 606 - public static string ModuleName_Module_id_cannot_be_null_or_empty_ { 607 - get { 608 - return ResourceManager.GetString("ModuleName_Module_id_cannot_be_null_or_empty_", resourceCulture); 609 - } 610 - } 611 - 612 - /// <summary> 613 - /// Looks up a localized string similar to Must supply an object to be transported to {0}.. 614 - /// </summary> 615 - public static string Pack_Usage_obj_missing { 616 - get { 617 - return ResourceManager.GetString("Pack_Usage_obj_missing", resourceCulture); 618 - } 619 - } 620 - 621 - /// <summary> 622 - /// Looks up a localized string similar to Cannot create a reference to a {0}.. 623 - /// </summary> 624 - public static string Parser__assembleReference_CannotCreateReferenceToSymbol { 625 - get { 626 - return ResourceManager.GetString("Parser__assembleReference_CannotCreateReferenceToSymbol", resourceCulture); 627 - } 628 - } 629 - 630 - /// <summary> 631 - /// Looks up a localized string similar to Macro definition is not an LValue (necessary for it to be converted to a partial application). 632 - /// </summary> 633 - public static string Parser__assembleReference_MacroDefinitionNotLValue { 634 - get { 635 - return ResourceManager.GetString("Parser__assembleReference_MacroDefinitionNotLValue", resourceCulture); 636 - } 637 - } 638 - 639 - /// <summary> 640 - /// Looks up a localized string similar to The symbol {0} is not defined.. 641 - /// </summary> 642 - public static string Parser__assembleReference_SymbolNotDefined { 643 - get { 644 - return ResourceManager.GetString("Parser__assembleReference_SymbolNotDefined", resourceCulture); 645 - } 646 - } 647 - 648 - /// <summary> 649 - /// Looks up a localized string similar to Cannot use {0} like a constructor.. 650 - /// </summary> 651 - public static string Parser__CannotUseExpressionAsAConstructor { 652 - get { 653 - return ResourceManager.GetString("Parser__CannotUseExpressionAsAConstructor", resourceCulture); 654 - } 655 - } 656 - 657 - /// <summary> 658 - /// Looks up a localized string similar to Failed to transform object creation expression.. 659 - /// </summary> 660 - public static string Parser__fallbackObjectCreation_Failed { 661 - get { 662 - return ResourceManager.GetString("Parser__fallbackObjectCreation_Failed", resourceCulture); 663 - } 664 - } 665 - 666 - /// <summary> 667 - /// Looks up a localized string similar to Unknown operator alias in assembler code: {0}.{1}. 668 - /// </summary> 669 - public static string Parser_addOpAlias_Unknown { 670 - get { 671 - return ResourceManager.GetString("Parser_addOpAlias_Unknown", resourceCulture); 672 - } 673 - } 674 - 675 - /// <summary> 676 - /// Looks up a localized string similar to Cannot parse message symbol from {0}.. 677 - /// </summary> 678 - public static string Parser_Cannot_parse_message_symbol { 679 - get { 680 - return ResourceManager.GetString("Parser_Cannot_parse_message_symbol", resourceCulture); 681 - } 682 - } 683 - 684 - /// <summary> 685 - /// Looks up a localized string similar to Cannot parse source position from {0}.. 686 - /// </summary> 687 - public static string Parser_Cannot_parse_source_position { 688 - get { 689 - return ResourceManager.GetString("Parser_Cannot_parse_source_position", resourceCulture); 690 - } 691 - } 692 - 693 - /// <summary> 694 - /// Looks up a localized string similar to Cannot parse symbol from {0}.. 695 - /// </summary> 696 - public static string Parser_Cannot_parse_symbol_from { 697 - get { 698 - return ResourceManager.GetString("Parser_Cannot_parse_symbol_from", resourceCulture); 699 - } 700 - } 701 - 702 - /// <summary> 703 - /// Looks up a localized string similar to Cannot expand {0} at compile time.. 704 - /// </summary> 705 - public static string Parser_CannotExpandAtCompileTime { 706 - get { 707 - return ResourceManager.GetString("Parser_CannotExpandAtCompileTime", resourceCulture); 708 - } 709 - } 710 - 711 - /// <summary> 712 - /// Looks up a localized string similar to Namespace {0} cannot be extended because it is a merged view of two originally distinct namespaces.. 713 - /// </summary> 714 - public static string Parser_CannotExtendMergedNamespace { 715 - get { 716 - return ResourceManager.GetString("Parser_CannotExtendMergedNamespace", resourceCulture); 717 - } 718 - } 719 - 720 - /// <summary> 721 - /// Looks up a localized string similar to Could not find previous declaration for symbol {0}.. 722 - /// </summary> 723 - public static string Parser_Could_not_find_previous_declaration { 724 - get { 725 - return ResourceManager.GetString("Parser_Could_not_find_previous_declaration", resourceCulture); 726 - } 727 - } 728 - 729 - /// <summary> 730 - /// Looks up a localized string similar to The declaration type should be followed by a colon (e.g., `declare ref var: x;`). 731 - /// </summary> 732 - public static string Parser_DeclarationTypeShouldBeFollowedByColon { 733 - get { 734 - return ResourceManager.GetString("Parser_DeclarationTypeShouldBeFollowedByColon", resourceCulture); 735 - } 736 - } 737 - 738 - /// <summary> 739 - /// Looks up a localized string similar to Cannot execute build block. Errors detected. 740 - /// </summary> 741 - public static string Parser_ErrorsInBuildBlock { 742 - get { 743 - return ResourceManager.GetString("Parser_ErrorsInBuildBlock", resourceCulture); 744 - } 745 - } 746 - 747 - /// <summary> 748 - /// Looks up a localized string similar to Exception during compilation and execution of build block. 749 - ///{0}. 750 - /// </summary> 751 - public static string Parser_exception_in_build_block { 752 - get { 753 - return ResourceManager.GetString("Parser_exception_in_build_block", resourceCulture); 754 - } 755 - } 756 - 757 - /// <summary> 758 - /// Looks up a localized string similar to Found namespace, expected actual entity.. 759 - /// </summary> 760 - public static string Parser_ExpectedEntityFoundNamespace { 761 - get { 762 - return ResourceManager.GetString("Parser_ExpectedEntityFoundNamespace", resourceCulture); 763 - } 764 - } 765 - 766 - /// <summary> 767 - /// Looks up a localized string similar to Expected {0} to be a namespace. Was {1}.. 768 - /// </summary> 769 - public static string Parser_NamespaceExpected { 770 - get { 771 - return ResourceManager.GetString("Parser_NamespaceExpected", resourceCulture); 772 - } 773 - } 774 - 775 - /// <summary> 776 - /// Looks up a localized string similar to relativeNsId cannot be empty. 777 - /// </summary> 778 - public static string Parser_relativeNsId_empty { 779 - get { 780 - return ResourceManager.GetString("Parser_relativeNsId_empty", resourceCulture); 781 - } 782 - } 783 - 784 - /// <summary> 785 - /// Looks up a localized string similar to Expected symbolic usage to be represented as an LValue.. 786 - /// </summary> 787 - public static string Parser_SymbolicUsageAsLValue { 788 - get { 789 - return ResourceManager.GetString("Parser_SymbolicUsageAsLValue", resourceCulture); 790 - } 791 - } 792 - 793 - /// <summary> 794 - /// Looks up a localized string similar to Cannot require outer variable to be included outside of a function. This error indicates an internal compiler error.. 795 - /// </summary> 796 - public static string ParserAstFactory_RequireOuterVariable_Outside_function { 797 - get { 798 - return ResourceManager.GetString("ParserAstFactory_RequireOuterVariable_Outside_function", resourceCulture); 799 - } 800 - } 801 - 802 - /// <summary> 803 - /// Looks up a localized string similar to Exiting Prx.Main normally. Press Enter to exit.. 804 - /// </summary> 805 - public static string Program_DebugExit { 806 - get { 807 - return ResourceManager.GetString("Program_DebugExit", resourceCulture); 808 - } 809 - } 810 - 811 - /// <summary> 812 - /// Looks up a localized string similar to {0} can only be used in a macro context.. 813 - /// </summary> 814 - public static string Reference_can_only_be_used_in_a_macro_context { 815 - get { 816 - return ResourceManager.GetString("Reference_can_only_be_used_in_a_macro_context", resourceCulture); 817 - } 818 - } 819 - 820 - /// <summary> 821 - /// Looks up a localized string similar to {0} requires argument to be a prototype of a macro invocation.. 822 - /// </summary> 823 - public static string Reference_requires_argument_to_be_a_prototype_of_a_macro_invocation { 824 - get { 825 - return ResourceManager.GetString("Reference_requires_argument_to_be_a_prototype_of_a_macro_invocation", resourceCulture); 826 - } 827 - } 828 - 829 - /// <summary> 830 - /// Looks up a localized string similar to {0} requires at least one argument.. 831 - /// </summary> 832 - public static string Reference_requires_at_least_one_argument { 833 - get { 834 - return ResourceManager.GetString("Reference_requires_at_least_one_argument", resourceCulture); 835 - } 836 - } 837 - 838 - /// <summary> 839 - /// Looks up a localized string similar to Cannot create reference to a value (references are values too). 840 - /// </summary> 841 - public static string ReferenceTransformer_CannotCreateReferenceToValue { 842 - get { 843 - return ResourceManager.GetString("ReferenceTransformer_CannotCreateReferenceToValue", resourceCulture); 844 - } 845 - } 846 - 847 - /// <summary> 848 - /// Looks up a localized string similar to Cannot create a reference to the definition of a macro or partial application.. 849 - /// </summary> 850 - public static string ReferenceTransformer_HandleExpand_CannotCreateReferenceToDefinitionOfMacroOrPartialApplication { 851 - get { 852 - return ResourceManager.GetString("ReferenceTransformer_HandleExpand_CannotCreateReferenceToDefinitionOfMacroOrParti" + 853 - "alApplication", resourceCulture); 854 - } 855 - } 856 - 857 - /// <summary> 858 - /// Looks up a localized string similar to File path reference not allowed when just registering a module. Consider using ISelfAssemblingPlan.AssembleAsync instead.. 859 - /// </summary> 860 - public static string SelfAssemblingPlan__forbidFileRefSpec_notallowed { 861 - get { 862 - return ResourceManager.GetString("SelfAssemblingPlan__forbidFileRefSpec_notallowed", resourceCulture); 863 - } 864 - } 865 - 866 - /// <summary> 867 - /// Looks up a localized string similar to Must be one of RecurseIntoFileSystem or RegisterOnly.. 868 - /// </summary> 869 - public static string SelfAssemblingPlan_performCreateTargetDescription_mode { 870 - get { 871 - return ResourceManager.GetString("SelfAssemblingPlan_performCreateTargetDescription_mode", resourceCulture); 872 - } 873 - } 874 - 875 - /// <summary> 876 - /// Looks up a localized string similar to A preflight parse request must come with a resolved path.. 877 - /// </summary> 878 - public static string SelfAssemblingPlan_RefSepcMustHaveResolvedPathForPreflightOrder { 879 - get { 880 - return ResourceManager.GetString("SelfAssemblingPlan_RefSepcMustHaveResolvedPathForPreflightOrder", resourceCulture); 881 - } 882 - } 883 - 884 - /// <summary> 885 - /// Looks up a localized string similar to The Source field of the refSpec parameter must not be null.. 886 - /// </summary> 887 - public static string SelfAssemblingPlan_RefSpecMustHaveSource { 888 - get { 889 - return ResourceManager.GetString("SelfAssemblingPlan_RefSpecMustHaveSource", resourceCulture); 890 - } 891 - } 892 - 893 - /// <summary> 894 - /// Looks up a localized string similar to Cannot take a reference to a reference. Too many arrows (&quot;-&gt;&quot;).. 895 - /// </summary> 896 - public static string SymbolBuilder_TooManyArrows { 897 - get { 898 - return ResourceManager.GetString("SymbolBuilder_TooManyArrows", resourceCulture); 899 - } 900 - } 901 - 902 - /// <summary> 903 - /// Looks up a localized string similar to Cannot convert bare reference to symbol entry.. 904 - /// </summary> 905 - public static string SymbolEntryConversion_BareReference { 906 - get { 907 - return ResourceManager.GetString("SymbolEntryConversion_BareReference", resourceCulture); 908 - } 909 - } 910 - 911 - /// <summary> 912 - /// Looks up a localized string similar to Only expansion symbols wrapping simple references can be converted to a SymbolEntry.. 913 - /// </summary> 914 - public static string SymbolEntryConversion_ExpansionSymbolTooComplex { 915 - get { 916 - return ResourceManager.GetString("SymbolEntryConversion_ExpansionSymbolTooComplex", resourceCulture); 917 - } 918 - } 919 - 920 - /// <summary> 921 - /// Looks up a localized string similar to Cannot convert a macro instance symbol to a legacy SymbolEntry.. 922 - /// </summary> 923 - public static string SymbolEntryConversion_MacroInstance_not_supported { 924 - get { 925 - return ResourceManager.GetString("SymbolEntryConversion_MacroInstance_not_supported", resourceCulture); 926 - } 927 - } 928 - 929 - /// <summary> 930 - /// Looks up a localized string similar to Message symbol was not handled before conversion to a legacy SymbolEntry. 931 - /// </summary> 932 - public static string SymbolEntryConversion_MessageSymbol_cannot_be_converted_to_SymbolEntry { 933 - get { 934 - return ResourceManager.GetString("SymbolEntryConversion_MessageSymbol_cannot_be_converted_to_SymbolEntry", resourceCulture); 935 - } 936 - } 937 - 938 - /// <summary> 939 - /// Looks up a localized string similar to Cannot convert namespace to symbol entry.. 940 - /// </summary> 941 - public static string SymbolEntryConversion_Namespace { 942 - get { 943 - return ResourceManager.GetString("SymbolEntryConversion_Namespace", resourceCulture); 944 - } 945 - } 946 - 947 - /// <summary> 948 - /// Looks up a localized string similar to Cannot convert nil symbol to symbol entry.. 949 - /// </summary> 950 - public static string SymbolEntryConversion_Nil { 951 - get { 952 - return ResourceManager.GetString("SymbolEntryConversion_Nil", resourceCulture); 953 - } 954 - } 955 - 956 - /// <summary> 957 - /// Looks up a localized string similar to Legacy symbol entry cannot express arbitrary dereference symbol modifiers.. 958 - /// </summary> 959 - public static string SymbolEntryConversion_No_arbirtrary_dereference { 960 - get { 961 - return ResourceManager.GetString("SymbolEntryConversion_No_arbirtrary_dereference", resourceCulture); 962 - } 963 - } 964 - 965 - /// <summary> 966 - /// Looks up a localized string similar to The symbol handler {0} cannot handle symbols of type {1}.. 967 - /// </summary> 968 - public static string SymbolHandler_CannotHandleSymbolOfType { 969 - get { 970 - return ResourceManager.GetString("SymbolHandler_CannotHandleSymbolOfType", resourceCulture); 971 - } 972 - } 973 - 974 - /// <summary> 975 - /// Looks up a localized string similar to Symbolic reference must consist of at least one symbol name.. 976 - /// </summary> 977 - public static string SymbolMExprParser_EmptySymbolicReference { 978 - get { 979 - return ResourceManager.GetString("SymbolMExprParser_EmptySymbolicReference", resourceCulture); 980 - } 981 - } 982 - 983 - /// <summary> 984 - /// Looks up a localized string similar to Cannot resolve symbol in unscoped AST factory. This error message indicates a misuse of the Prexonite compile-time API.. 985 - /// </summary> 986 - public static string UnscopedFactory_API_Misuse_symbol_resolve { 987 - get { 988 - return ResourceManager.GetString("UnscopedFactory_API_Misuse_symbol_resolve", resourceCulture); 989 - } 990 - } 991 - 992 - /// <summary> 993 - /// Looks up a localized string similar to Variable id must not be empty.. 994 - /// </summary> 995 - public static string VariableDeclaration_Variable_id_must_not_be_empty { 996 - get { 997 - return ResourceManager.GetString("VariableDeclaration_Variable_id_must_not_be_empty", resourceCulture); 998 - } 999 - } 1000 - } 1001 - }
+6
Prexonite/Properties/Resources.resx
··· 409 409 <data name="Parser_NamespaceExpected" xml:space="preserve"> 410 410 <value>Expected {0} to be a namespace. Was {1}.</value> 411 411 </data> 412 + <data name="Parser_MissingMetaExprInList" xml:space="preserve"> 413 + <value>Missing meta expression in list (two consecutive commas).</value> 414 + </data> 412 415 <data name="Parser_CannotExtendMergedNamespace" xml:space="preserve"> 413 416 <value>Namespace {0} cannot be extended because it is a merged view of two originally distinct namespaces.</value> 414 417 </data> ··· 429 432 </data> 430 433 <data name="AstIndirectCall_DoEmitPartialApplicationCode_Cannot_translate_slice" xml:space="preserve"> 431 434 <value>Cannot translate slice.</value> 435 + </data> 436 + <data name="MetaEntry_EntryTypeUnknownToString" xml:space="preserve"> 437 + <value>MetaEntry type {0} does not have a string representation.</value> 432 438 </data> 433 439 </root>
+6 -12
Prexonite/Types/StringPType.cs
··· 302 302 303 303 #region IdOrLiteral 304 304 305 - private static readonly Regex idLetters = 306 - new( 307 - @"^[\w\\][\w\d\\']{0,}$", RegexOptions.Compiled); 305 + private static readonly Regex IdLetters = new( @"^[\w\\][\w\d\\']{0,}$"); 308 306 309 - private const int anArbitraryIdLengthLimit = 255; 307 + private const int AnArbitraryIdLengthLimit = 255; 310 308 311 309 public static string ToIdOrLiteral(string raw) 312 310 { 313 - if (raw == null) 314 - raw = ""; 311 + raw ??= ""; 315 312 if ( 316 313 //Empty strings cannot be represented as Ids 317 314 raw.Length == 0) 318 315 return "\"\""; 319 316 if ( 320 - raw.Length > anArbitraryIdLengthLimit || 321 - !idLetters.IsMatch(raw) || 317 + raw.Length > AnArbitraryIdLengthLimit || 318 + !IdLetters.IsMatch(raw) || 322 319 IsReservedWord(raw) || 323 320 char.IsDigit(raw, 0) 324 321 ) ··· 328 325 329 326 public static string ToIdLiteral(string physicalId) 330 327 { 331 - if (OperatorCommands.TryGetLiteral(physicalId, out var literal)) 332 - return literal; 333 - else 334 - return physicalId; 328 + return OperatorCommands.TryGetLiteral(physicalId, out var literal) ? literal : physicalId; 335 329 } 336 330 337 331 #endregion
+11 -1
PrexoniteTests/Tests/Compiler.Global.cs
··· 369 369 } 370 370 371 371 [Test] 372 + public void DotSeparatedMetaWithAnyIdElements() 373 + { 374 + var ldr = _compile(@" 375 + key1 $""0"".$""0""; 376 + "); 377 + Assert.That(target.Meta, Does.ContainKey("key1")); 378 + Assert.That(target.Meta["key1"], Is.EqualTo(new MetaEntry("0.0"))); 379 + } 380 + 381 + [Test] 372 382 public void InterpreterLineAfterNoise() 373 383 { 374 384 ··· 1189 1199 [Test] 1190 1200 public void ManyDecls() 1191 1201 { 1192 - var ldr = _compile(@" 1202 + _compile(@" 1193 1203 declare function main/testApplication/0.0; 1194 1204 declare command print,println,meta,boxed,concat,map,select,foldl,foldr,dispose,call\perform,thunk,asthunk,force,toseq,call\member\perform,caller,pair,unbind,sort,orderby,LoadAssembly,debug,setcenter,setleft,setright,all,where,skip,limit,take,abs,ceiling,exp,floor,log,max,min,pi,round,sin,cos,sqrt,tan,char,count,distinct,union,unique,frequency,groupby,intersect,call\tail\perform,list,each,exists,forall,CompileToCil,takewhile,except,range,reverse,headtail,append,sum,contains,chan,call\async\perform,async_seq,call\sub\perform,pa\ind,pa\mem,pa\ctor,pa\check,pa\cast,pa\smem,pa\fun\call,pa\flip\call,pa\call\star,then,id,const,(+),(-),(*),(/),$mod,(^),(&),(|),$xor,(==),(!=),(>),(>=),(<),(<=),(-.),$complement,$not,create_enumerator,create_module_name,seqconcat; 1195 1205 declare macro command call,call\member,call\tail,call\async,call\sub,call\sub\interpret,macro\pack,macro\unpack,macro\reference,call\star,call\macro,call\macro\impl;
+42
PrexoniteTests/Tests/MetaEntryTests.cs
··· 1 + using System.IO; 2 + using NUnit.Framework; 3 + using Prexonite; 4 + 5 + namespace PrexoniteTests.Tests 6 + { 7 + [TestFixture] 8 + public class MetaEntryTests 9 + { 10 + [Test] 11 + public void DotSeparatedStoreWithoutQuotes() 12 + { 13 + Assert.That(new MetaEntry("a.b.c").ToString(), Is.EqualTo("a.b.c")); 14 + } 15 + 16 + [Test] 17 + public void DotSeparatedStoreInteriorNonId() 18 + { 19 + Assert.That(new MetaEntry("a.%^.c").ToString(), Is.EqualTo("a.$\"%^\".c")); 20 + } 21 + 22 + [Test] 23 + public void SingleIdStore() 24 + { 25 + Assert.That(new MetaEntry("c").ToString(), Is.EqualTo("c")); 26 + } 27 + 28 + [Test] 29 + public void NonIdStore() 30 + { 31 + Assert.That(new MetaEntry("%^").ToString(), Is.EqualTo("\"%^\"")); 32 + } 33 + 34 + [Test] 35 + public void VersionStore() 36 + { 37 + Assert.That(new MetaEntry("0.0").ToString(), Is.EqualTo("0.0")); 38 + Assert.That(new MetaEntry("0.0.1").ToString(), Is.EqualTo("0.0.1")); 39 + Assert.That(new MetaEntry("0.0.1.2").ToString(), Is.EqualTo("0.0.1.2")); 40 + } 41 + } 42 + }
+40
PrexoniteTests/Tests/Translation.cs
··· 1349 1349 Assert.That(pointedToFunction.LogicalId, Does.EndWith("fox")); 1350 1350 } 1351 1351 1352 + [Test] 1353 + public void DotSeparatedMetaValues() 1354 + { 1355 + var ldr = Compile(@" 1356 + name some.module.test; 1357 + references { 1358 + some.module 1359 + }; 1360 + 1361 + function main[key1 dot.separated.value; key2 value2;key3{a.b,c}] = true; 1362 + "); 1363 + 1364 + var meta = target.Meta; 1365 + Assert.That(meta, Does.ContainKey("name")); 1366 + Assert.That(meta, Does.ContainKey("references")); 1367 + Assert.That(meta["name"], Is.EqualTo(new MetaEntry("some.module.test"))); 1368 + Assert.That(meta["references"], Is.EqualTo(new MetaEntry(new[]{new MetaEntry("some.module")}))); 1369 + 1370 + var f = target.Functions["main"]; 1371 + Assert.That(f.Meta, Does.ContainKey("key1")); 1372 + Assert.That(f.Meta, Does.ContainKey("key2")); 1373 + Assert.That(f.Meta, Does.ContainKey("key3")); 1374 + Assert.That(f.Meta["key1"], Is.EqualTo(new MetaEntry("dot.separated.value"))); 1375 + Assert.That(f.Meta["key2"], Is.EqualTo(new MetaEntry("value2"))); 1376 + Assert.That(f.Meta["key3"], Is.EqualTo(new MetaEntry(new[]{new MetaEntry("a.b"), new MetaEntry("c")}))); 1377 + } 1378 + 1379 + [Test] 1380 + public void DotNetStaticPropertyAccess() 1381 + { 1382 + Compile(@" 1383 + add Prexonite::Compiler to Imports; 1384 + function main { 1385 + var x = ::SymbolInterpretations.Function; 1386 + return x; 1387 + } 1388 + "); 1389 + Expect(SymbolInterpretations.Function); 1390 + } 1391 + 1352 1392 [ContractAnnotation("value:null=>halt")] 1353 1393 private static void _assumeNotNull(object value) 1354 1394 {
+2 -2
Prx/psr/_2/psr/ast.pxs
··· 1 - name psr::ast; 1 + name psr.ast; 2 2 references { prx/1.0 }; 3 3 4 4 namespace psr.ast.v1 import prx.v1(*) ··· 72 72 else 73 73 throw "Supplied symbol entry ($func) is not a function, but was used in SI.func." 74 74 else if(var args.Count >= 3 and id is String) 75 - new Prexontie::Compiler::SymbolEntry(cache, func, m) 75 + new Prexonite::Compiler::SymbolEntry(cache, func, m) 76 76 else 77 77 cache; 78 78 }
+2 -2
Prx/psr/_2/psr/macro.pxs
··· 1 - name psr::$macro; 1 + name psr.macro; 2 2 references { 3 3 prx/1.0, 4 - psr::ast 4 + psr.ast 5 5 }; 6 6 7 7 namespace psr.macro.v1
+4 -4
Prx/psr/_2/psr/misc.pxs
··· 1 - name psr::ast; 1 + name psr.ast; 2 2 references { 3 3 prx/1.0 4 - psr::struct, 5 - psr::ast, 6 - psr::$macro 4 + psr.struct, 5 + psr.ast, 6 + psr.macro 7 7 }; 8 8 9 9 namespace psr.misc.v1
+5 -5
Prx/psr/_2/psr/pattern.pxs
··· 1 - name psr::pattern; 1 + name psr.pattern; 2 2 references { 3 3 prx/1.0, 4 - psr::ast, 5 - psr::$macro, 6 - psr::struct, 7 - psr::prop 4 + psr.ast, 5 + psr.$macro, 6 + psr.struct, 7 + psr.prop 8 8 }; 9 9 10 10 namespace psr.pattern.v1
+3 -3
Prx/psr/_2/psr/prop.pxs
··· 1 - name psr::prop; 1 + name psr.prop; 2 2 references { 3 3 prx/1.0, 4 - psr::ast, 5 - psr::$macro 4 + psr.ast, 5 + psr.$macro 6 6 }; 7 7 8 8 namespace psr.prop.v1
+3 -3
Prx/psr/_2/psr/struct.pxs
··· 1 - name psr::struct; 1 + name psr.struct; 2 2 references { 3 3 prx/1.0, 4 - psr::ast, 5 - psr::$macro 4 + psr.ast, 5 + psr.$macro 6 6 }; 7 7 8 8 namespace psr.struct.v1
+1 -1
Prx/psr/_2/psr/test.pxs
··· 1 - name psr::test; 1 + name psr.test; 2 2 references { 3 3 prx/1.0 4 4 };
+2 -2
Prx/psr/_2/psr/test/meta_macro.pxs
··· 1 - name psr::test::meta_macro; 1 + name psr.test.meta_macro; 2 2 references { 3 - psr::test, 3 + psr.test, 4 4 prx/1.0 5 5 }; 6 6