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