root/org.axdt.as3/src/org/axdt/as3/imp/parser/DiagnoseVisitor.java @ 25b5d220afcf17776b844086f439554f14dc63dc

Revision 25b5d220afcf17776b844086f439554f14dc63dc, 1.9 KB (checked in by mb0 <mb0@…>, 15 months ago)

moved symboltable related code from parser to parse controller
changed diagnose visitors
added indexing visitor. sources are now added to the index0r.
every source folder is added as axroot.
added hyperlinks for source indexes

  • Property mode set to 100644
Line 
1package org.axdt.as3.imp.parser;
2
3import lpg.runtime.ILexStream;
4import lpg.runtime.IMessageHandler;
5import lpg.runtime.IPrsStream;
6import lpg.runtime.IToken;
7import lpg.runtime.ParseErrorCodes;
8
9import org.axdt.as3.imp.parser.Ast.ASTNode;
10import org.axdt.as3.imp.parser.Ast.AbstractVisitor;
11import org.eclipse.core.resources.IFile;
12import org.eclipse.core.resources.IProject;
13
14public class DiagnoseVisitor extends AbstractVisitor {
15        protected static int[] NULL_LOCATION = new int[] {0,0};
16       
17        protected final IPrsStream prsStream;
18        protected final ILexStream lexStream;
19        protected AS3ParseController parseController;
20        protected int errorCount = 0;
21        protected boolean severeError = false;
22
23        public DiagnoseVisitor(AS3ParseController parseController) {
24                this.parseController = parseController;
25                this.prsStream = parseController.getParser().getIPrsStream();
26                this.lexStream = prsStream.getILexStream();
27        }
28
29        protected IProject getProject() {
30                return parseController.getProject().getRawProject();
31        }
32       
33        protected IFile getFile() {
34                return getProject().getFile(parseController.getPath());
35        }
36
37        public void emitError(IToken id, String message) {
38                emitError(id.getStartOffset(), id.getEndOffset(), message);
39        }
40
41        public void emitError(ASTNode node, String message) {
42                emitError(node.getLeftIToken().getStartOffset(), node.getRightIToken().getEndOffset(), message);
43        }
44
45        public void emitError(int startOffset, int endOffset, String message) {
46                emitError(ParseErrorCodes.NO_MESSAGE_CODE, startOffset, endOffset, message);
47        }
48        public void emitError(int code, int startOffset, int endOffset, String message) {
49                int[] loc = lexStream.getLocation(startOffset, endOffset);
50                String[] msgs = new String[] {message};
51                IMessageHandler handler = lexStream.getMessageHandler();
52                handler.handleMessage(code, loc, NULL_LOCATION, prsStream.getFileName(), msgs);
53                errorCount++;
54        }
55
56        @Override
57        public void unimplementedVisitor(String s) {
58        }
59}
Note: See TracBrowser for help on using the browser.