we in era3 boys; overhauled expression system, and variables are now in maps
This commit is contained in:
parent
bf29e6c3dd
commit
43e450c207
14 changed files with 945 additions and 452 deletions
|
|
@ -63,7 +63,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"_",
|
||||
&ReferenceNode{"_", 0, 0},
|
||||
&BinaryNode{
|
||||
BinaryAddition,
|
||||
&FloatNode{
|
||||
|
|
@ -93,7 +93,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"hello",
|
||||
&ReferenceNode{"hello", 0, 0},
|
||||
&StringNode{
|
||||
"Hello world!",
|
||||
"\"Hello world!\"",
|
||||
|
|
@ -118,7 +118,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"a",
|
||||
&ReferenceNode{"a", 0, 0},
|
||||
&BinaryNode{
|
||||
BinaryAddition,
|
||||
&FloatNode{
|
||||
|
|
@ -173,7 +173,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"_",
|
||||
&ReferenceNode{"_", 0, 0},
|
||||
&BinaryNode{
|
||||
BinarySubtraction,
|
||||
&BinaryNode{
|
||||
|
|
@ -253,7 +253,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"_",
|
||||
&ReferenceNode{"_", 0, 0},
|
||||
&BinaryNode{
|
||||
BinaryEquality,
|
||||
&FloatNode{
|
||||
|
|
@ -304,7 +304,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
do: &BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"b",
|
||||
&ReferenceNode{"b", 0, 0},
|
||||
&FloatNode{
|
||||
1,
|
||||
0, 0,
|
||||
|
|
@ -357,7 +357,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
do: &BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"b",
|
||||
&ReferenceNode{"b", 0, 0},
|
||||
&FloatNode{
|
||||
1,
|
||||
0, 0,
|
||||
|
|
@ -371,7 +371,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
otherwise: &BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"b",
|
||||
&ReferenceNode{"b", 0, 0},
|
||||
&FloatNode{
|
||||
0,
|
||||
0, 0,
|
||||
|
|
@ -432,7 +432,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"a",
|
||||
&ReferenceNode{"a", 0, 0},
|
||||
&FunctionNode{
|
||||
"*",
|
||||
[]FunctionParameter{
|
||||
|
|
@ -503,7 +503,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"a",
|
||||
&ReferenceNode{"a", 0, 0},
|
||||
&FunctionNode{
|
||||
"a",
|
||||
[]FunctionParameter{
|
||||
|
|
@ -559,7 +559,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"p",
|
||||
&ReferenceNode{"p", 0, 0},
|
||||
&AccessNode{
|
||||
&ReferenceNode{
|
||||
"a",
|
||||
|
|
@ -607,7 +607,7 @@ func GetTokenTestData() map[string]TokenTestData {
|
|||
&BlockNode{
|
||||
[]Node{
|
||||
&AssignNode{
|
||||
"data",
|
||||
&ReferenceNode{"data", 0, 0},
|
||||
&ListNode{
|
||||
[]Node{
|
||||
&ReferenceNode{
|
||||
|
|
@ -749,11 +749,8 @@ func NodeEquality(t *testing.T, n1 Node, n2 Node) {
|
|||
NodeEquality(t, n1.(*LoopNode).do, n2.(*LoopNode).do)
|
||||
|
||||
case AssignNodeType:
|
||||
if n1.(*AssignNode).name != n2.(*AssignNode).name {
|
||||
t.Errorf("Assigned value name is not the same (%s and %s)", n1.(*AssignNode).name, n2.(*AssignNode).name)
|
||||
} else {
|
||||
t.Logf("Assigned value name matches (%s)", n1.(*AssignNode).name)
|
||||
}
|
||||
t.Logf("Checking if value destination matches")
|
||||
NodeEquality(t, n1.(*AssignNode).dest, n2.(*AssignNode).dest)
|
||||
|
||||
if n1.(*AssignNode).declare != n2.(*AssignNode).declare {
|
||||
t.Errorf("Not same type of assigning (1: %v; 2: %v)", n1.(*AssignNode).declare, n2.(*AssignNode).declare)
|
||||
|
|
@ -762,22 +759,18 @@ func NodeEquality(t *testing.T, n1 Node, n2 Node) {
|
|||
t.Logf("Checking equality of assignment values")
|
||||
NodeEquality(t, n1.(*AssignNode).value, n2.(*AssignNode).value)
|
||||
|
||||
case CallNodeType:
|
||||
n := n1.(*CallNode)
|
||||
m := n2.(*CallNode)
|
||||
case InvokeNodeType:
|
||||
n := n1.(*InvokeNode)
|
||||
m := n2.(*InvokeNode)
|
||||
|
||||
NodeEquality(t, n.source, m.source)
|
||||
|
||||
if n.keep == m.keep {
|
||||
t.Logf("Call node keep modifier doesn't match (%v and %v)", n.keep, m.keep)
|
||||
}
|
||||
|
||||
if len(n.args) != len(m.args) {
|
||||
t.Fatalf("Call node arguments count does not match (%d and %d)", len(n.args), m.args)
|
||||
}
|
||||
|
||||
for i, arg := range m.args {
|
||||
NodeEquality(t, n1.(*CallNode).args[i], arg)
|
||||
NodeEquality(t, n1.(*InvokeNode).args[i], arg)
|
||||
}
|
||||
|
||||
case FunctionNodeType:
|
||||
|
|
@ -958,7 +951,7 @@ func TestParser_Parse(t *testing.T) {
|
|||
tree, err := p.Parse("")
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error(s): %s", err.(ParsingError).Description)
|
||||
t.Fatalf("Unexpected error(s): %s", err.(ParsingError).Format())
|
||||
}
|
||||
|
||||
t.Logf("Checking parsed tree")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue