Parser has been updated to handle new syntax
This commit is contained in:
		
							parent
							
								
									0b71ab8787
								
							
						
					
					
						commit
						5127b80630
					
				@ -15,37 +15,37 @@ func (parser *ParsingOperation) parseBody () (err error) {
 | 
			
		||||
			section, parseErr := parser.parseDataSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		case "type":
 | 
			
		||||
			section, parseErr := parser.parseTypeSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		case "objt":
 | 
			
		||||
			section, parseErr := parser.parseObjtSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		case "face":
 | 
			
		||||
			section, parseErr := parser.parseFaceSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		case "enum":
 | 
			
		||||
			section, parseErr := parser.parseEnumSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		case "func":
 | 
			
		||||
			section, parseErr := parser.parseFuncSection()
 | 
			
		||||
			err = parser.tree.addSection(section)
 | 
			
		||||
			if err      != nil { return }
 | 
			
		||||
			if parseErr != nil { return }
 | 
			
		||||
			if parseErr != nil { return parseErr }
 | 
			
		||||
			
 | 
			
		||||
		default:
 | 
			
		||||
			err = parser.token.NewError (
 | 
			
		||||
 | 
			
		||||
@ -25,15 +25,15 @@ data ro gIntegerArrayInitialized:Int:16
 | 
			
		||||
	4785
 | 
			
		||||
	92
 | 
			
		||||
data ro jObject:thing.Thing.thing.thing
 | 
			
		||||
	.this 324
 | 
			
		||||
	.that 2139
 | 
			
		||||
	.this 324
 | 
			
		||||
data ro kNestedObject:Obj
 | 
			
		||||
	.this
 | 
			
		||||
		.bird0 324
 | 
			
		||||
		.bird1 "hello world"
 | 
			
		||||
	.that
 | 
			
		||||
		.bird2 123.8439
 | 
			
		||||
		.bird3 9328.21348239
 | 
			
		||||
	.this
 | 
			
		||||
		.bird0 324
 | 
			
		||||
		.bird1 "hello world"
 | 
			
		||||
data ro lMutIntegerArray16:Int:16:mut
 | 
			
		||||
data ro mIntegerArrayInitialized:Int:16:mut
 | 
			
		||||
	3948
 | 
			
		||||
 | 
			
		||||
@ -44,19 +44,11 @@ func (parser *ParsingOperation) parseType () (what Type, err error) {
 | 
			
		||||
		what.points = &points
 | 
			
		||||
 | 
			
		||||
		err = parser.expect (
 | 
			
		||||
			lexer.TokenKindUInt,
 | 
			
		||||
			lexer.TokenKindRBrace,
 | 
			
		||||
			lexer.TokenKindElipsis)
 | 
			
		||||
		if err != nil { return }
 | 
			
		||||
 | 
			
		||||
		if parser.token.Is(lexer.TokenKindUInt) {
 | 
			
		||||
			what.kind = TypeKindArray
 | 
			
		||||
		
 | 
			
		||||
			what.length = parser.token.Value().(uint64)
 | 
			
		||||
		
 | 
			
		||||
			err = parser.nextToken(lexer.TokenKindRBrace)
 | 
			
		||||
			if err != nil { return }
 | 
			
		||||
		} else if parser.token.Is(lexer.TokenKindElipsis) {
 | 
			
		||||
		if parser.token.Is(lexer.TokenKindElipsis) {
 | 
			
		||||
			what.kind = TypeKindVariableArray
 | 
			
		||||
		
 | 
			
		||||
			err = parser.nextToken(lexer.TokenKindRBrace)
 | 
			
		||||
@ -70,19 +62,28 @@ func (parser *ParsingOperation) parseType () (what Type, err error) {
 | 
			
		||||
		if err != nil { return }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if parser.token.Is(lexer.TokenKindColon) {
 | 
			
		||||
		err = parser.nextToken(lexer.TokenKindName)
 | 
			
		||||
	for {
 | 
			
		||||
		if !parser.token.Is(lexer.TokenKindColon) { break }
 | 
			
		||||
		
 | 
			
		||||
		err = parser.nextToken(lexer.TokenKindName, lexer.TokenKindUInt)
 | 
			
		||||
		if err != nil { return }
 | 
			
		||||
 | 
			
		||||
		qualifier := parser.token.Value().(string)
 | 
			
		||||
		switch qualifier {
 | 
			
		||||
		case "mut":
 | 
			
		||||
			what.mutable = true
 | 
			
		||||
		default:
 | 
			
		||||
			err = parser.token.NewError (
 | 
			
		||||
				"unknown type qualifier \"" + qualifier + "\"",
 | 
			
		||||
				infoerr.ErrorKindError)
 | 
			
		||||
			return
 | 
			
		||||
		if parser.token.Is(lexer.TokenKindName) {
 | 
			
		||||
			// parse type qualifier
 | 
			
		||||
			qualifier := parser.token.Value().(string)
 | 
			
		||||
			switch qualifier {
 | 
			
		||||
			case "mut":
 | 
			
		||||
				what.mutable = true
 | 
			
		||||
			default:
 | 
			
		||||
				err = parser.token.NewError (
 | 
			
		||||
					"unknown type qualifier \"" +
 | 
			
		||||
					qualifier + "\"",
 | 
			
		||||
					infoerr.ErrorKindError)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			// parse fixed array length
 | 
			
		||||
			what.length = parser.token.Value().(uint64)
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		err = parser.nextToken()
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user