I believe I resolved a good majority of the issues you've seen - and they've been updated in my repository.
Let me comment on one, and inquire about another.
#3 - that is correct. There's a few parser modes for this language, as this is a dynamic DSL. That's where there's multiple start positions. I can definitely understand the confusion at this.
#7 - I would love to learn more about this, as I believe there's definitely something I could be doing better here. After all, I am still facing ambiguity around a few of my tests - and I believe this is the most relevant item. Most of the testing I am doing performance wise, is under 'startPlainString'. As that is the busiest parser mode.
The language is largely used to create custom strings, so it has an inherent string concatenation to it. To explain what the 'genericText' vs 'beginGenericText' and 'explicitEvaluationString' vs 'explicitEvaluationStringContentsConcatenated' is all about, when it is evaluating from startPlainString:
add(1,2)add(3,4) --> 3add(3,4)
add(1,2)[add(3,4)] --> 37
-----
v I believe this is one of the obvious signs that I have some ambiguity around the concatenation, which makes me narrow in on wanting to learn most about #7 - the closures of lists.
Add ("add(-1.5,5)","3.5")
Source: MathFunctionUnitTests.cs line 12
Duration: 1 ms
Standard Output:
Testing: add(-1.5,5)
[01:21:18 INF] VisitFunction: Fun: add, Args: ["-1.5", "5"]
Standard Error:
line 1:5 reportAttemptingFullContext d=24 (beginGenericText), input='1'
line 1:11 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='1.5,5)'
line 1:6 reportAttemptingFullContext d=24 (beginGenericText), input='.'
line 1:11 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='.5,5)'
line 1:7 reportAttemptingFullContext d=24 (beginGenericText), input='5'
line 1:11 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='5,5)'
line 1:1 reportAttemptingFullContext d=24 (beginGenericText), input='1'
line 1:4 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='1.5'
line 1:2 reportAttemptingFullContext d=24 (beginGenericText), input='.'
line 1:4 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='.5'
line 1:3 reportAttemptingFullContext d=24 (beginGenericText), input='5'
line 1:4 reportAmbiguity d=24 (beginGenericText): ambigAlts={1, 2}, input='5'