Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,15 +334,18 @@ func NewVariable(curr_type, id, dim1, dim2, rows Attrib) ([]*tables.VarRow, erro
if !tok_ok {
return nil, errors.New("Problem in casting id token")
}
new_dim1, _ := dim1.(int)
new_dim2, _ := dim1.(int)
new_dim1 := 1
if dim1 != nil {
curr_dim, _ := dim1.(*token.Token).Int32Value()
new_dim1 = int(curr_dim)
}
// create variable row
row := &tables.VarRow{} // TODO Constructor for VarRow
if curr_type != nil {
row.SetType(curr_type.(types.CoreType))
}
row.SetDim1(new_dim1)
row.SetDim2(new_dim2)
row.SetDim1(int(new_dim1))
// row.SetDim2(new_dim2)
// set values to varibale row
row.SetId(string(tok.Lit))
row.SetToken(tok)
Expand All @@ -360,7 +363,8 @@ func NewVariable(curr_type, id, dim1, dim2, rows Attrib) ([]*tables.VarRow, erro
}
} else {
// choose global context
current_address, err_addr = vmemory.NextGlobalTemp(row.Type())
fmt.Println("New global temp var");
current_address, err_addr = vmemory.NextGlobalTemp(row.Type(),new_dim1)
if err_addr != nil {
fmt.Println("Error in new global temp: ", err_addr)
}
Expand Down Expand Up @@ -656,7 +660,7 @@ func createBinaryQuadruple(new_op semantic.Operation) []quadruples.Cuadruplo {
} else {
// choose global context
fmt.Println("No global current scope")
current_address, err_addr = vmemory.NextGlobalTemp(cube_type)
current_address, err_addr = vmemory.NextGlobalTemp(cube_type,1)
if err_addr != nil {
fmt.Println("Error in new global temp: ", err_addr)
}
Expand Down Expand Up @@ -844,7 +848,7 @@ func GetIdDimConst(id, dim1, dim2 Attrib) (*Constant, error) {
// TODO (Access id address from vartable scope instead of curr address)
// TODO (Check dimensions)
// calculate current address occuppied in context
current_address, _ := vmemory.NextGlobalTemp(types.Ids) // TODO Check Types (Validate type with semantic cube)
current_address, _ := vmemory.NextGlobalTemp(types.Ids,1) // TODO Check Types (Validate type with semantic cube)
return &Constant{string(val.Lit), val, types.Ids, current_address}, nil
}

Expand Down
10 changes: 5 additions & 5 deletions bar.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ ATR_SIMP1 : empty | ATR_SIMP ATR_SIMP1 ;
DV : "variables" "{" DV1 "}" << $2, nil >>;
DV1 : empty | DV2 ";" DV1 << ast.NewBlockVariables($0,$2) >> ;
DV2 : TIP_COMP id DV4 | DV6 DV5 << ast.NewTypeVariables($0,$1) >>;
DV3 : "[" cte_i "]" << ast.NewIntConst($1) >> ;
DV3 : "[" cte_i "]" << $1,nil >> ;
DV4 : empty | "," id DV4 ;
DV5 : empty
| "," id DV5<< ast.NewVariable(nil,$1,0,0, $2) >>
| "," id DV3 DV5<< ast.NewVariable(nil,$1,$2,0, $3) >>
| "," id DV5<< ast.NewVariable(nil,$1,nil,nil, $2) >>
| "," id DV3 DV5<< ast.NewVariable(nil,$1,$2,nil, $3) >>
| "," id DV3 DV3 DV5<< ast.NewVariable(nil,$1,$2,$3, $4) >> ;
DV6 : TIP_SIMP id << ast.NewVariable($0,$1,0,0, nil) >>
| TIP_SIMP id DV3 << ast.NewVariable($0,$1,$2,0, nil) >>
DV6 : TIP_SIMP id << ast.NewVariable($0,$1,nil,nil, nil) >>
| TIP_SIMP id DV3 << ast.NewVariable($0,$1,$2,nil, nil) >>
| TIP_SIMP id DV3 DV3 << ast.NewVariable($0,$1,$2,$3, nil) >> ;

TIP_SIMP : "int" << types.Integer, nil >>
Expand Down
14 changes: 7 additions & 7 deletions gocc/LR1_conflicts.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(20)
symbol: char
Shift(21)
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(21)
symbol: float
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(22)
S687
symbol: int
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(20)
Reduce(20:ATR_SIMP1 : empty << >>)
symbol: char
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(21)
Expand All @@ -45,25 +45,25 @@
Shift(22)
S693
symbol: int
Shift(20)
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(20)
symbol: char
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(21)
symbol: float
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(22)
S695
symbol: int
Shift(20)
Reduce(20:ATR_SIMP1 : empty << >>)
symbol: char
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(21)
symbol: float
Shift(22)
Reduce(20:ATR_SIMP1 : empty << >>)
symbol: int
Reduce(20:ATR_SIMP1 : empty << >>)
Shift(20)
S697
symbol: function
Reduce(48:F4 : empty << >>)
Shift(344)
Reduce(48:F4 : empty << >>)
78 changes: 13 additions & 65 deletions gocc/errors/errors.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 10 additions & 26 deletions gocc/lexer/lexer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions gocc/parser/parser.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading