Created basic test for parser
This commit is contained in:
@@ -11,18 +11,25 @@ type ParsingOperation struct {
|
||||
token lexer.Token
|
||||
tokens []lexer.Token
|
||||
tokenIndex int
|
||||
|
||||
tree *SyntaxTree
|
||||
}
|
||||
|
||||
// Parse reads the files located in the module specified by modulePath, and
|
||||
// converts them into an abstract syntax tree.
|
||||
func Parse (modulePath string) (tree *SyntaxTree, err error) {
|
||||
parser := ParsingOperation { modulePath: modulePath }
|
||||
tree, err = parser.parse()
|
||||
err = parser.parse()
|
||||
tree = parser.tree
|
||||
return
|
||||
}
|
||||
|
||||
// parse runs the parsing operation.
|
||||
func (parser *ParsingOperation) parse () (tree *SyntaxTree, err error) {
|
||||
func (parser *ParsingOperation) parse () (err error) {
|
||||
if parser.tree == nil {
|
||||
parser.tree = &SyntaxTree { }
|
||||
}
|
||||
|
||||
if parser.modulePath[len(parser.modulePath) - 1] != '/' {
|
||||
parser.modulePath += "/"
|
||||
}
|
||||
|
||||
33
parser/parser_test.go
Normal file
33
parser/parser_test.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package parser
|
||||
|
||||
import "reflect"
|
||||
import "testing"
|
||||
|
||||
func checkTree (modulePath string, correct *SyntaxTree, test *testing.T) {
|
||||
tree, err := Parse(modulePath)
|
||||
|
||||
if err != nil {
|
||||
test.Log("returned error:")
|
||||
test.Log(err.Error())
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(tree, correct) {
|
||||
test.Log("trees not equal")
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeta (test *testing.T) {
|
||||
checkTree("../tests/parser/meta",&SyntaxTree {
|
||||
license: "GPLv3",
|
||||
author: "Sasha Koshka",
|
||||
|
||||
requires: []string {
|
||||
"someModule",
|
||||
"otherModule",
|
||||
},
|
||||
}, test)
|
||||
}
|
||||
@@ -4,5 +4,8 @@ package parser
|
||||
// can be expected to be syntactically correct, but it might not be semantically
|
||||
// correct (because it has not been analyzed yet.)
|
||||
type SyntaxTree struct {
|
||||
|
||||
license string
|
||||
author string
|
||||
|
||||
requires []string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user