1 // =================================
 2 // Copyright (c) 2020 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 [hpp]#include <soulng/cppcode/Literal.hpp>
 7 [cpp]#include <sng2html/sng2html/LexerFileLexer.hpp>
 8 [cpp]#include <sng2html/sng2html/LexerFileTokens.hpp>
 9 
10 using namespace soulng::lexer;
11 using namespace LexerFileTokens;
12 
13 parser LexerLiteralParser
14 {
15     uselexer LexerFileLexer;
16 
17     CppLiteral : soulng::cppcode::Literal*
18         ::= INTLIT{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
19         |   FLOATINGLIT{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
20         |   CHARLIT{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
21         |   STRINGLIT{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
22         |   TRUE{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
23         |   FALSE{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
24         |   NULLPTR{ return new soulng::cppcode::Literal(lexer.GetMatch(span)); }
25         ;
26 
27     ruleinfo
28     {
29         (CppLiteral, "C++ literal")
30     }
31 }