-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
After adding _Complex``to the list of reserved words in TameParse/Compiler/OutputStages/cplusplus.cpp` and trying to build the C99 parser from C99.tp we get this error:
c99.cpp: In constructor ‘C99::Direct_Declarator_n::Direct_Declarator_n(const util::syntax_ptr<C99::Direct_Declarator_n>&, const util::syntax_ptr<C99::_opensquare__n>&, const util::syntax_ptr<C99::list_of_Type_Qualifier_2_n>&, const util::syntax_ptr<C99::static_n>&, const util::syntax_ptr<C99::Assignment_Expression_n>&, const util::syntax_ptr<C99::_closesquare__n>&)’:
c99.cpp:9158:32: error: no matching function for call to ‘util::syntax_ptr<C99::list_of_Type_Qualifier_n>::syntax_ptr(const util::syntax_ptr<C99::list_of_Type_Qualifier_2_n>&)’
9158 | , _closesquare_(_closesquare__5) {
| ^
In file included from c99.h:9,
from c99.cpp:6:
../TameParse/Util/syntax_ptr.h:94:16: note: candidate: ‘util::syntax_ptr<ptr_type>::syntax_ptr(const util::syntax_ptr<ptr_type>&) [with ptr_type = C99::list_of_Type_Qualifier_n]’
94 | inline syntax_ptr(const syntax_ptr<ptr_type>& copyFrom)
| ^~~~~~~~~~
../TameParse/Util/syntax_ptr.h:94:55: note: no known conversion for argument 1 from ‘const util::syntax_ptr<C99::list_of_Type_Qualifier_2_n>’ to ‘const util::syntax_ptr<C99::list_of_Type_Qualifier_n>&’
94 | inline syntax_ptr(const syntax_ptr<ptr_type>& copyFrom)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../TameParse/Util/syntax_ptr.h:89:25: note: candidate: ‘util::syntax_ptr<ptr_type>::syntax_ptr(const ptr_type*) [with ptr_type = C99::list_of_Type_Qualifier_n]’
89 | explicit inline syntax_ptr(const ptr_type* value)
| ^~~~~~~~~~
../TameParse/Util/syntax_ptr.h:89:52: note: no known conversion for argument 1 from ‘const util::syntax_ptr<C99::list_of_Type_Qualifier_2_n>’ to ‘const C99::list_of_Type_Qualifier_n*’
89 | explicit inline syntax_ptr(const ptr_type* value)
| ~~~~~~~~~~~~~~~~^~~~~
../TameParse/Util/syntax_ptr.h:81:16: note: candidate: ‘util::syntax_ptr<ptr_type>::syntax_ptr() [with ptr_type = C99::list_of_Type_Qualifier_n]’
81 | inline syntax_ptr()
| ^~~~~~~~~~
../TameParse/Util/syntax_ptr.h:81:16: note: candidate expects 0 arguments, 1 provided
../TameParse/Util/syntax_ptr.h:74:25: note: candidate: ‘util::syntax_ptr<ptr_type>::syntax_ptr(util::syntax_ptr_reference*) [with ptr_type = C99::list_of_Type_Qualifier_n]’
74 | inline explicit syntax_ptr(syntax_ptr_reference* ref)
| ^~~~~~~~~~
../TameParse/Util/syntax_ptr.h:74:58: note: no known conversion for argument 1 from ‘const util::syntax_ptr<C99::list_of_Type_Qualifier_2_n>’ to ‘util::syntax_ptr_reference*’
74 | inline explicit syntax_ptr(syntax_ptr_reference* ref)
| ~~~~~~~~~~~~~~~~~~~~~~^~~
Build script:
../parsetool/tameparse --enable-lr1-resolver -o c99 -S '<Translation-Unit>' C99.tp
g++ -DHAVE_CONFIG_H -I. -I.. -O2 -g -o c99_tp c99_main.cpp c99.cpp ../TameParse/.libs/libTameParse.so -Wl,-rpath -Wl,/home/mingo/local/tameparse/lib
c99_main.cpp:
//
// Simple JSON formatter, reads from stdin and writes a pretty-printed version
// to stdout
//
#include <iostream>
#include <string>
#include "c99.h"
using namespace std;
//
// Parses stdin as C99
//
int main(int argc, const char** argv) {
// Create the parser - unicode from wcin
C99::state* parser = C99::create_Translation_Unit<wchar_t>(wcin);
// Generate the AST
bool success = parser->parse();
if (!success) {
// Report syntax error
if (parser->look().item()) {
// The lookahead contains the symbol that generated the error
cerr << "Syntax error on line " << parser->look()->pos().line() << ", column " << parser->look()->pos().column() << endl;
} else {
// No lookahead: file is incomplete
cerr << "Syntax error: unexpected end of file" << endl;
}
// Abort if there's an error
return 1;
}
// Exit success
return 0;
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels