For SourceCoder 3, I had identified 211 token bigrams that introduce ambiguities, listed at the end of this post.
1) Many involve implicit multiplication, such as Tmax vs. ^^Tmax(, where the former is a Window variable, and the latter is the transposition function multiplied by the max() function (for example, in [A]^^Tmax(Q,R)).
2) Many involve the |> and <| solid arrowhead characters. One among this set of ambiguities prompted me to make this examination in the first place, namely <|LMINE. Intended to be "less than custom list MINE", it gets interpreted as "left arrowhead followed by five-character sequence LMINE".
3) The final ~30 ambiguities in the list are made obvious by SourceCoder 3's syntax highlighting, for example Xmax in ∆Xmax(. SourceCoder 3 will color the ∆X as one color and the max( as another.
4) Most if not all of these ambiguities, with the exception specifically of <|, involve sequences not seen outside of hyper-optimized TI-BASIC.
Recommendation: Make <| and |> into different symbols. |<| and ||>? lblockarr and rblockarr? Something else?
Code: rref( in ^^rref(
Tmax in ^^Tmax(
Tmin in ^^Tmin(
Tmax in Tmax(
Tmin in Tmin(
Un/d in Un/d
Un⁄d in Un⁄d
Xmax in Xmax(
Xmin in Xmin(
Ymax in Ymax(
Ymin in Ymin(
ZBox in ZBoxplot
ZXscl in ZXscl
ZYscl in ZYscl
ZXmin in ZXmin
ZXmax in ZXmax
ZYmin in ZYmin
ZYmax in ZYmax
ZTmin in ZTmin
ZTmax in ZTmax
ẋ2 in ẋ2
ẋ2 in ẋ2-SampZTest(
ẋ1 in ẋ1-PropZTest(
ẋ2 in ẋ2-PropZTest(
ẋ2 in ẋ2-SampZInt(
ẋ1 in ẋ1-PropZInt(
ẋ2 in ẋ2-PropZInt(
ẋ2 in ẋ2-SampTTest
ẋ2 in ẋ2-SampFTest
ẋ2 in ẋ2-SampTInt
xyLine in ΣxyLine(
<| in <|E
<| in <|u
<| in <|v
<| in <|w
<| in <|N
<| in <|P/Y
<| in <|C/Y
<= in <=
<| in <|-
<| in <|'
<| in <|`
<| in <|:
<| in <|?
<| in <|!
<| in <|π
<| in <|F
<| in <|~
<| in <|
<| in <|<
<| in <|>
<| in <|L
>Polar in >Polar
>Polar in >PolarGC
>Rect in >RectGC
*row+( in *row+(
-> in |->DMS
-> in |->Dec
-> in |->Frac
-> in |->
!= in |!=
|> in |>DMS
|> in |>Dec
|> in |>Frac
|< in |<|
<| in |<|E
<| in |<|u
<| in |<|v
<| in |<|w
<| in |<|N
<| in |<|P/Y
<| in |<|C/Y
<= in |<=
<| in |<|-
<| in |<|'
<| in |<|`
<| in |<|:
<| in |<|?
<| in |<|!
<| in |<|π
<| in |<|F
<| in |<|~
<| in |<|
<| in |<|>
<| in |<|L
|> in <|>DMS
|> in <|>Dec
|> in <|>Frac
|- in <|->
|! in <|!
|: in <|:
|E in <|E
|F in <|F
|L in <|L
|N in <|N
|L in <|L1
|L in <|L₁
|L in <|L2
|L in <|L₂
|L in <|L3
|L in <|L₃
|L in <|L4
|L in <|L₄
|L in <|L5
|L in <|L₅
|L in <|L6
|L in <|L₆
|u in <|u(nMin)
|v in <|v(nMin)
|F in <|FV
|w in <|w(nMin)
|N in <|Normal
|E in <|Eng
|F in <|Float
|< in <|<
|> in <|>
|< in <|<=
|> in <|>=
|! in <|!=
|- in <|-
|F in <|Fix
|F in <|Full
|F in <|Func
|L in <|LabelOn
|L in <|LabelOff
|u in <|uvAxes
|v in <|vwAxes
|u in <|uwAxes
|F in <|FnOn
|F in <|FnOff
|L in <|Line(
|π in <|π
|' in <|'
|? in <|?
|~ in <|~
|> in <|>Nom(
|> in <|>Eff(
|v in <|variance(
|F in <|Fcdf(
|F in <|Fpdf(
|> in <|>Rect
|> in <|>Polar
|L in <|Logistic
|L in <|LinRegTTest
|L in <|List>matr(
|L in <|List►matr(
|E in <|ExprOn
|E in <|ExprOff
|E in <|Equ>String(
|E in <|Equ►String(
|N in <|NormProbPlot
|u in <|u
|v in <|v
|w in <|w
|` in <|`
|u in <|uparrow
|E in <|Else
|F in <|For(
|E in <|End
|L in <|Lbl
|F in <|Fill(
|E in <|ExecLib
|L in <|LinRegTInt
|> in <|>n/d<>Un/d
|> in <|>n⁄d<>Un⁄d
|> in <|>F<>D
|N in <|Navy
|N in <|NAVY
|L in <|LtBlue
|L in <|LTBLUE
|L in <|LtGray
|L in <|LtGrey
|L in <|LTGRAY
|L in <|LTGREY
|L in <|LinReg(a+bx)
|E in <|ExpReg
|L in <|LnReg
|L in <|LinReg(ax+b)
>Polar in |>Polar
>Polar in |>PolarGC
>Rect in |>RectGC
►Polar in ►Polar
►Polar in ►PolarGC
>= in |>=
L2 in L2-SampZTest(
L1 in L1-PropZTest(
L2 in L2-PropZTest(
L2 in L2-SampZInt(
L1 in L1-PropZInt(
L2 in L2-PropZInt(
L2 in L2-SampTTest
L2 in L2-SampFTest
L2 in L2-SampTInt
L1 in L10^(
L1 in L1-Var Stats
L2 in L2-Var Stats
min( in Xmin(
Xmax in DeltaXmax(
Xmin in DeltaXmin(
Xmax in ∆Xmax(
Xmin in ∆Xmin(
Ymax in DeltaYmax(
Ymin in DeltaYmin(
Ymax in ∆Ymax(
Ymin in ∆Ymin(
DeltaX in DeltaXmin(
DeltaX in DeltaXmax(
DeltaY in DeltaYmin(
DeltaY in DeltaYmax(
Edit: For the curious, the following PHP code is the heart of the analyzer for this determination. I manually culled an additional 1187 ambiguities that could never appear in well-formed TI-BASIC. Code: public function collisions() {
if ($this->loaded !== TRUE) {
return Array("","Tokenizer not initialized", 1);
}
foreach($this->tokens_r as $k1 => $v1) {
foreach($this->tokens_r as $k2 => $v2) {
foreach($this->tokens_r as $k3 => $v3) {
if ($k1 != $k2 && (FALSE === @strpos($k1, $k3)) && (FALSE === @strpos($k2, $k3)) &&
strlen($k3) > 1 && FALSE !== @strpos($k1.$k2,$k3)) {
echo "$k3 in $k1$k2\n";
}
}
}
}
}