diff --git a/.idea/.idea.Sprache/.idea/.gitignore b/.idea/.idea.Sprache/.idea/.gitignore
new file mode 100644
index 0000000..d8ebb05
--- /dev/null
+++ b/.idea/.idea.Sprache/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/contentModel.xml
+/modules.xml
+/projectSettingsUpdater.xml
+/.idea.Sprache.iml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/.idea.Sprache/.idea/.name b/.idea/.idea.Sprache/.idea/.name
new file mode 100644
index 0000000..bc4fb0d
--- /dev/null
+++ b/.idea/.idea.Sprache/.idea/.name
@@ -0,0 +1 @@
+Sprache
\ No newline at end of file
diff --git a/.idea/.idea.Sprache/.idea/encodings.xml b/.idea/.idea.Sprache/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.Sprache/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Sprache/.idea/indexLayout.xml b/.idea/.idea.Sprache/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.Sprache/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Sprache/.idea/vcs.xml b/.idea/.idea.Sprache/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/.idea.Sprache/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 06e433f..18059b1 100755
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ The best place to start is [this introductory article](http://nblumhardt.com/201
* [Parsing comma-separated values (CSV) into lists of strings](https://github.com/sprache/Sprache/blob/master/test/Sprache.Tests/Scenarios/CsvTests.cs)
**Tutorials** explaining Sprache:
-
+ * Overview of Sprache methods, [long guide by Justing Pealing](https://justinpealing.me.uk/post/2020-03-11-sprache1-chars/)
* A great [CodeProject article by Alexey Yakovlev ](http://www.codeproject.com/Articles/795056/Sprache-Calc-building-yet-another-expression-evalu) (and [in Russian](http://habrahabr.ru/post/228037/))
* Mike Hadlow's example of [parsing connection strings](http://mikehadlow.blogspot.com.au/2012/09/parsing-connection-string-with-sprache.html)
* Alexey Golub's article on [monadic parser combinators](https://tyrrrz.me/blog/monadic-parser-combinators) that shows how to build a JSON parser using Sprache
diff --git a/appveyor.yml b/appveyor.yml
index fe7180a..bf4d6fa 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -3,7 +3,7 @@ image: Visual Studio 2019
branches:
only:
- - master
+ - main
- develop
pull_requests:
@@ -18,8 +18,8 @@ artifacts:
deploy:
- provider: NuGet
api_key:
- secure: tCEhrNs1q8bhXiGwKejajsjSyF+/66LwnPge1ntZKrI3mvfDf1Ab8iOrz1IuVRH2
+ secure: LOSaZSy3ZL836xUIcCovdIt5kbL/aahbQPl2CvLCWxWaS+YSpKMB/OUAlbgLGp8Z
skip_symbols: true
artifact: /.*\.nupkg/
on:
- branch: /^(master|develop)$/
+ branch: /^(main|develop)$/
diff --git a/build.ps1 b/build.ps1
index 8239bff..705aa27 100644
--- a/build.ps1
+++ b/build.ps1
@@ -1,6 +1,6 @@
$branch = @{ $true = $env:APPVEYOR_REPO_BRANCH; $false = $(git symbolic-ref --short -q HEAD) }[$env:APPVEYOR_REPO_BRANCH -ne $NULL];
$revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:APPVEYOR_BUILD_NUMBER, 10); $false = "local" }[$env:APPVEYOR_BUILD_NUMBER -ne $NULL];
-$suffix = @{ $true = ""; $false = "$($branch.Substring(0, [math]::Min(10,$branch.Length)))-$revision"}[$branch -eq "master" -and $revision -ne "local"]
+$suffix = @{ $true = ""; $false = "$($branch.Substring(0, [math]::Min(10,$branch.Length)))-$revision"}[$branch -eq "main" -and $revision -ne "local"]
echo "build: Version suffix is $suffix"
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000..d7febe8
Binary files /dev/null and b/icon.png differ
diff --git a/samples/LinqyCalculator/LinqyCalculator.csproj b/samples/LinqyCalculator/LinqyCalculator.csproj
index 80895db..1035b4e 100644
--- a/samples/LinqyCalculator/LinqyCalculator.csproj
+++ b/samples/LinqyCalculator/LinqyCalculator.csproj
@@ -1,22 +1,12 @@
- net45;netcoreapp3.1
- LinqyCalculator
+ net5.0Exe
- LinqyCalculator
- false
- false
- false
-
-
-
-
-
diff --git a/samples/LinqyCalculator/Program.cs b/samples/LinqyCalculator/Program.cs
index af6f289..32aade2 100644
--- a/samples/LinqyCalculator/Program.cs
+++ b/samples/LinqyCalculator/Program.cs
@@ -1,7 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using Sprache;
namespace LinqyCalculator
diff --git a/samples/LinqyCalculator/Properties/AssemblyInfo.cs b/samples/LinqyCalculator/Properties/AssemblyInfo.cs
deleted file mode 100644
index 5a037ad..0000000
--- a/samples/LinqyCalculator/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("LinqyCalculator")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("d7a17f71-dd1e-4cd9-9cc8-66322fd8698e")]
diff --git a/samples/TinyTemplates.Tests/Properties/AssemblyInfo.cs b/samples/TinyTemplates.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index b873fb0..0000000
--- a/samples/TinyTemplates.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("TinyTemplates.Tests")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("cb505fe2-4188-49d9-9bfd-1d1e213b4423")]
diff --git a/samples/TinyTemplates.Tests/TinyTemplates.Tests.csproj b/samples/TinyTemplates.Tests/TinyTemplates.Tests.csproj
index f4322a2..6ce32c5 100644
--- a/samples/TinyTemplates.Tests/TinyTemplates.Tests.csproj
+++ b/samples/TinyTemplates.Tests/TinyTemplates.Tests.csproj
@@ -1,13 +1,7 @@
- net461;netcoreapp3.1
- TinyTemplates.Tests
- TinyTemplates.Tests
- true
- false
- false
- false
+ net5.0
@@ -16,9 +10,12 @@
-
-
-
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
diff --git a/samples/TinyTemplates/Properties/AssemblyInfo.cs b/samples/TinyTemplates/Properties/AssemblyInfo.cs
deleted file mode 100644
index 93d6bfd..0000000
--- a/samples/TinyTemplates/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("TinyTemplates")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("a0410d8d-2d98-4ee4-a177-db31ca493d19")]
diff --git a/samples/TinyTemplates/TinyTemplates.csproj b/samples/TinyTemplates/TinyTemplates.csproj
index 5b3f4ae..ca86a18 100644
--- a/samples/TinyTemplates/TinyTemplates.csproj
+++ b/samples/TinyTemplates/TinyTemplates.csproj
@@ -1,25 +1,11 @@
- Copyright Sprache Contributors 2013
- TinyTemplates
- 2.0.0
- Nicholas Blumhardt and Contributors
- net45;netstandard2.1
- TinyTemplates
- TinyTemplates
- false
- false
- false
+ net5.0
-
-
-
-
-
diff --git a/samples/XmlExample/Program.cs b/samples/XmlExample/Program.cs
index c8e949e..4d2916a 100644
--- a/samples/XmlExample/Program.cs
+++ b/samples/XmlExample/Program.cs
@@ -4,7 +4,6 @@
using System.Text;
using Sprache;
using System.IO;
-using System.Xml;
namespace XmlExample
{
diff --git a/samples/XmlExample/Properties/AssemblyInfo.cs b/samples/XmlExample/Properties/AssemblyInfo.cs
deleted file mode 100644
index 6782e9d..0000000
--- a/samples/XmlExample/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("XmlExample")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("42f99bdf-5f43-40a6-a713-e84ee845f022")]
diff --git a/samples/XmlExample/XmlExample.csproj b/samples/XmlExample/XmlExample.csproj
index 81408cd..1035b4e 100644
--- a/samples/XmlExample/XmlExample.csproj
+++ b/samples/XmlExample/XmlExample.csproj
@@ -1,19 +1,10 @@
- netcoreapp3.1
- XmlExample
+ net5.0Exe
- XmlExample
- false
- false
- false
-
-
-
-
diff --git a/samples/XmlExample/app.config b/samples/XmlExample/app.config
deleted file mode 100644
index 2f7cce7..0000000
--- a/samples/XmlExample/app.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/Sprache/CommentParser.cs b/src/Sprache/CommentParser.cs
index 72bb8d3..2c003b3 100644
--- a/src/Sprache/CommentParser.cs
+++ b/src/Sprache/CommentParser.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Sprache
+namespace Sprache
{
///
/// Constructs customizable comment parsers.
diff --git a/src/Sprache/IComment.cs b/src/Sprache/IComment.cs
index f2491c1..039cb47 100644
--- a/src/Sprache/IComment.cs
+++ b/src/Sprache/IComment.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Sprache
+namespace Sprache
{
///
/// Represents a customizable comment parser.
diff --git a/src/Sprache/IInput.cs b/src/Sprache/IInput.cs
index ce57d5e..b6c77c5 100644
--- a/src/Sprache/IInput.cs
+++ b/src/Sprache/IInput.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
namespace Sprache
{
diff --git a/src/Sprache/Input.cs b/src/Sprache/Input.cs
index 75d8ae9..05e642f 100644
--- a/src/Sprache/Input.cs
+++ b/src/Sprache/Input.cs
@@ -16,7 +16,7 @@ public class Input : IInput
///
/// Gets the list of memos assigned to the instance.
///
- public IDictionary