shader: Remove stmt

This commit is contained in:
Hajime Hoshi 2020-05-31 02:23:51 +09:00
parent 1ede103ce6
commit 5ea5dfccfc
2 changed files with 26 additions and 60 deletions

View File

@ -1,45 +0,0 @@
// Copyright 2020 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package shader
import (
"go/ast"
"go/token"
)
type block struct {
types []typ
vars []variable
consts []constant
funcs []function
stmts []stmt
pos token.Pos
outer *block
}
type stmtType int
const (
stmtNone stmtType = iota
stmtAssign
stmtBlock
stmtReturn
)
type stmt struct {
stmtType stmtType
exprs []ast.Expr
block *block
}

View File

@ -40,7 +40,9 @@ type function struct {
name string
args []variable
rets []variable
body *block
block *block
ir shaderir.Func
}
type compileState struct {
@ -56,6 +58,15 @@ type compileState struct {
errs []string
}
type block struct {
types []typ
vars []variable
consts []constant
funcs []function
pos token.Pos
outer *block
}
type ParseError struct {
errs []string
}
@ -232,7 +243,7 @@ func (cs *compileState) parseFunc(d *ast.FuncDecl, block *block) function {
name: d.Name.Name,
args: args,
rets: rets,
body: cs.parseBlock(block, d.Body),
//body: cs.parseBlock(block, d.Body),
}
}
@ -255,26 +266,26 @@ func (cs *compileState) parseBlock(outer *block, b *ast.BlockStmt) *block {
}
block.vars = append(block.vars, v)
}
for i := range l.Rhs {
block.stmts = append(block.stmts, stmt{
for range l.Rhs {
/*block.stmts = append(block.stmts, stmt{
stmtType: stmtAssign,
exprs: []ast.Expr{l.Lhs[i], l.Rhs[i]},
})
})*/
}
case token.ASSIGN:
// TODO: What about the statement `a,b = b,a?`
for i := range l.Rhs {
block.stmts = append(block.stmts, stmt{
for range l.Rhs {
/*block.stmts = append(block.stmts, stmt{
stmtType: stmtAssign,
exprs: []ast.Expr{l.Lhs[i], l.Rhs[i]},
})
})*/
}
}
case *ast.BlockStmt:
block.stmts = append(block.stmts, stmt{
/*block.stmts = append(block.stmts, stmt{
stmtType: stmtBlock,
block: cs.parseBlock(block, l),
})
})*/
case *ast.DeclStmt:
cs.parseDecl(block, l.Decl, false)
case *ast.ReturnStmt:
@ -282,10 +293,10 @@ func (cs *compileState) parseBlock(outer *block, b *ast.BlockStmt) *block {
for _, r := range l.Results {
exprs = append(exprs, r)
}
block.stmts = append(block.stmts, stmt{
/*block.stmts = append(block.stmts, stmt{
stmtType: stmtReturn,
exprs: exprs,
})
})*/
}
}