Changeset 3253 for proto


Ignore:
Timestamp:
Jun 2, 2013, 10:50:48 PM (6 years ago)
Author:
shermer
Message:

small changes to correct naming, concepts, and warnings.
Filled out methods in visitor for semantic analyzer / typechecker.

Location:
proto/pabloj/trunk/src/toolchain/pabloS
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/toolchain/pabloS/ast/Accessors.java

    r3210 r3253  
    197197        }
    198198        public static String funcName(FuncDefNode node) {
    199                 return Accessors.name(node.child(1));
     199                return lexeme(funcIdentifier(node));
    200200        }       
    201201        public static boolean hasParameters(FuncDefNode node) {
  • proto/pabloj/trunk/src/toolchain/pabloS/semanticAnalyzer/SemanticAnalyzer.java

    r3010 r3253  
    11package toolchain.pabloS.semanticAnalyzer;
     2import pabloS.ast.*;
     3import toolchain.pabloS.lang.type.PrimitiveType;
     4import toolchain.pabloS.lang.type.StreamType;
     5import toolchain.pabloS.lang.type.Type;
    26
    37public class SemanticAnalyzer {
    48
     9        public class SemanticAnalysisVisitor extends VoidVisitor.Default {
     10
     11                @Override
     12                public void visitLeave(ASTNode node) {
     13                        throw new IllegalStateException("unimplemented node type " + node.getClass().getName() + " in SemanticAnalysisVisitor");
     14                }
     15
     16                //
     17                // p r o g r a m 
     18                //
     19                @Override
     20                public void visitLeave(ProgramNode node) {
     21                        // TODO Auto-generated method stub     
     22                }
     23               
     24                //
     25                // s t r e a m   s t r u c t   d e c l a r a t i o n s 
     26                //
     27                @Override
     28                public void visitLeave(StructDeclBodyNode node) {
     29                        // TODO Auto-generated method stub     
     30                }
     31                @Override
     32                public void visitLeave(StructDeclNode node) {
     33                        // TODO Auto-generated method stub     
     34                }
     35                @Override
     36                public void visitLeave(StructMemberNode node) {
     37                        // TODO Auto-generated method stub     
     38                }
     39               
     40            //
     41                // s t r e a m   f u n c t i o n   d e c l a r a t i o n s                                                     
     42                //
     43                @Override
     44                public void visitLeave(FuncDefNode node) {
     45                        // TODO Auto-generated method stub
     46                }
     47                @Override
     48                public void visitLeave(ParameterListNode node) {
     49                        // TODO Auto-generated method stub
     50                }
     51                @Override
     52                public void visitLeave(ParameterNode node) {
     53                        // TODO Auto-generated method stub
     54                }
     55               
     56                //
     57                // b l o c k   s t a t e m e n t s
     58                //
     59                @Override
     60                public void visitLeave(BlockStmtNode node) {
     61                        // TODO Check that each child that is an expression
     62                        //      is a function call.
     63                }
     64               
     65                //
     66                // s t a t e m e n t s
     67                //
     68                @Override
     69                public void visitLeave(LocalVarDeclNode node) {
     70                        // TODO Check initialization type vs. declared type;
     71                        //      then enter into symbol table
     72                }
     73                @Override
     74                public void visitLeave(AssignNode node) {
     75                        // TODO typecheck left = right
     76                }
     77                @Override
     78                public void visitLeave(IfStmtNode node) {
     79                        // TODO check condition node is type STREAM(1)?
     80                }
     81                @Override
     82                public void visitLeave(WhileStmtNode node) {
     83                        // TODO check condition node is type STREAM(1)?
     84                }
     85                @Override
     86                public void visitLeave(ReturnStmtNode node) {
     87                        // TODO Verify child is same type as declared return type of
     88                        //      enclosing stream function declaration
     89                }
     90
     91                //
     92                // e x p r e s s i o n s
     93                //     
     94                @Override
     95                public void visitLeave(BinaryOperatorNode node) {
     96                        // TODO typecheck against operator signatures
     97                }
     98                @Override
     99                public void visitLeave(UnaryOperatorNode node) {
     100                        // TODO Auto-generated method stub                     
     101                }
     102               
     103            //   
     104                // f u n c t i o n   c a l l s
     105                //
     106                @Override
     107                public void visitLeave(FuncCallNode node) {
     108                        // TODO look up name, check signature
     109                }
     110                @Override
     111                public void visitLeave(FuncCallArgListNode node) {
     112                        // TODO Auto-generated method stub
     113                }
     114               
     115            //   
     116                // i d e n t i f i e r s
     117                //
     118                @Override
     119                public void visitLeave(CompoundIdentifierNode node) {
     120                        // TODO Auto-generated method stub
     121                }
     122                @Override
     123                public void visitLeave(IdentifierNode node) {
     124                        // TODO lookup type     
     125                }
     126
     127            //   
     128                // c o n s t a n t s
     129                //
     130                @Override
     131                public void visitLeave(IntegerConstantNode node) {
     132                        node.setType(PrimitiveType.INTEGER);
     133                }
     134                @Override
     135                public void visitLeave(StringConstantNode node) {
     136                        node.setType(PrimitiveType.STRING);
     137                }
     138               
     139            //   
     140                // t y p e s
     141                //
     142                @Override
     143                public void visitLeave(IntTypeNode node) {
     144                        node.setType(PrimitiveType.INTEGER);
     145                }
     146                @Override
     147                public void visitLeave(VoidTypeNode node) {
     148                        node.setType(PrimitiveType.VOID);
     149                }
     150                @Override
     151                public void visitLeave(StreamTypeNode node) {
     152                        Type type = StreamType.STREAM(node.getFieldWidth());
     153                        node.setType(type);
     154                }
     155                @Override
     156                public void visitLeave(StructTypeNode node) {
     157                        // TODO Auto-generated method stub                     
     158                }
     159               
     160            //   
     161                // s h o u l d   n e v e r   s e e
     162                //
     163
     164                @Override
     165                public void visitLeave(FuncCallOrAssignStmtNode node) {
     166                        // really a functionCallStatement.  Check that expr
     167                        // in statement position is a function call.
     168                        // I don't think this node ever occurs.
     169                }
     170                @Override
     171                public void visitLeave(ErrorNode node) {
     172                        node.setType(PrimitiveType.ERROR);
     173                }
     174                @Override
     175                public void visitLeave(EpsilonNode node) {
     176                        node.setType(PrimitiveType.ERROR);
     177                }
     178
     179        }
    5180}
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/CombineAdvances.java

    r3249 r3253  
    2020public class CombineAdvances {
    2121       
    22         static public ASTNode apply(ASTNode ASTTree) {
     22        static public ASTNode apply(ASTNode ASTree) {
    2323                AdvanceCombinerVisitor combiner = new AdvanceCombinerVisitor();
    24                 ASTTree.accept(combiner);
    25                 return ASTTree;                         // root ASTree does not change
     24                ASTree.accept(combiner);
     25                return ASTree;                          // root ASTree does not change
    2626        }   
    2727   
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/PabloS2PabloBXFormer.java

    r3249 r3253  
    235235                                bNode = new pabloB.ast.IdisaFuncCallNode(Generators.makePabloBToken(lAngleToken)); //
    236236                               
     237                                @SuppressWarnings("unused")
    237238                                pabloS.tokens.LextantToken dotToken
    238239                                        = toolchain.pabloS.ast.Generators.makeLextantToken(Lextant.DOT, node.getToken());
Note: See TracChangeset for help on using the changeset viewer.