1 #include "quickfileparser.hpp"
2
3 #include "skipparser.hpp"
4 #include "scanner.hpp"
5
QuickFileParser(ErrorHandler & errorHandler,const Context & context,Locals & locals)6 Compiler::QuickFileParser::QuickFileParser (ErrorHandler& errorHandler, const Context& context,
7 Locals& locals)
8 : Parser (errorHandler, context), mDeclarationParser (errorHandler, context, locals)
9 {}
10
parseName(const std::string & name,const TokenLoc & loc,Scanner & scanner)11 bool Compiler::QuickFileParser::parseName (const std::string& name, const TokenLoc& loc,
12 Scanner& scanner)
13 {
14 SkipParser skip (getErrorHandler(), getContext());
15 scanner.scan (skip);
16 return true;
17 }
18
parseKeyword(int keyword,const TokenLoc & loc,Scanner & scanner)19 bool Compiler::QuickFileParser::parseKeyword (int keyword, const TokenLoc& loc, Scanner& scanner)
20 {
21 if (keyword==Scanner::K_end)
22 return false;
23
24 if (keyword==Scanner::K_short || keyword==Scanner::K_long || keyword==Scanner::K_float)
25 {
26 mDeclarationParser.reset();
27 scanner.putbackKeyword (keyword, loc);
28 scanner.scan (mDeclarationParser);
29 return true;
30 }
31
32 SkipParser skip (getErrorHandler(), getContext());
33 scanner.scan (skip);
34 return true;
35 }
36
parseSpecial(int code,const TokenLoc & loc,Scanner & scanner)37 bool Compiler::QuickFileParser::parseSpecial (int code, const TokenLoc& loc, Scanner& scanner)
38 {
39 if (code!=Scanner::S_newline)
40 {
41 SkipParser skip (getErrorHandler(), getContext());
42 scanner.scan (skip);
43 }
44
45 return true;
46 }
47
parseEOF(Scanner & scanner)48 void Compiler::QuickFileParser::parseEOF (Scanner& scanner)
49 {
50
51 }
52