[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdevelop/buildtools/managers/qmake/parser
From: Andreas Pakulat <apaku () gmx ! de>
Date: 2007-07-19 22:01:06
Message-ID: 1184882466.663836.363.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 690040 by apaku:
Fix the two conflicts the parser had - one was a bug in a rule, the other is fixed by \
some refactoring of the grammar.
M +5 -5 generated/qmake_ast.h
M +2 -2 generated/qmake_default_visitor.cpp
M +1 -1 generated/qmake_default_visitor.h
M +59 -46 generated/qmake_parser.cpp
M +1 -1 generated/qmake_parser.h
M +1 -1 generated/qmake_visitor.cpp
M +1 -1 generated/qmake_visitor.h
M +6 -6 qmake.g
M +2 -2 qmakedebugvisitor.cpp
M +1 -1 qmakedebugvisitor.h
M +1 -0 qmakelexer.cpp
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_ast.h \
#690039:690040 @@ -24,7 +24,7 @@
struct argument_ast;
- struct funcref_ast;
+ struct func_var_ref_ast;
struct function_args_ast;
@@ -60,7 +60,7 @@
enum ast_node_kind_enum {
Kind_arg_list = 1000,
Kind_argument = 1001,
- Kind_funcref = 1002,
+ Kind_func_var_ref = 1002,
Kind_function_args = 1003,
Kind_function_scope = 1004,
Kind_id_or_value = 1005,
@@ -105,11 +105,11 @@
ref_ast *ref;
};
- struct funcref_ast: public ast_node
+ struct func_var_ref_ast: public ast_node
{
enum
{
- KIND = Kind_funcref
+ KIND = Kind_func_var_ref
};
std::size_t id;
@@ -196,8 +196,8 @@
KIND = Kind_ref
};
+ func_var_ref_ast *func_var_ref;
varref_ast *varref;
- funcref_ast *funcref;
std::size_t idref;
};
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_default_visitor.cpp \
#690039:690040 @@ -29,7 +29,7 @@
visit_node(node->ref);
}
- void default_visitor::visit_funcref(funcref_ast *node)
+ void default_visitor::visit_func_var_ref(func_var_ref_ast *node)
{
visit_node(node->args);
}
@@ -80,8 +80,8 @@
void default_visitor::visit_ref(ref_ast *node)
{
+ visit_node(node->func_var_ref);
visit_node(node->varref);
- visit_node(node->funcref);
}
void default_visitor::visit_scope_body(scope_body_ast *node)
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_default_visitor.h \
#690039:690040 @@ -15,7 +15,7 @@
public:
virtual void visit_arg_list(arg_list_ast *node);
virtual void visit_argument(argument_ast *node);
- virtual void visit_funcref(funcref_ast *node);
+ virtual void visit_func_var_ref(func_var_ref_ast *node);
virtual void visit_function_args(function_args_ast *node);
virtual void visit_function_scope(function_scope_ast *node);
virtual void visit_id_or_value(id_or_value_ast *node);
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.cpp \
#690039:690040 @@ -293,9 +293,9 @@
return true;
}
- bool parser::parse_funcref(funcref_ast **yynode)
+ bool parser::parse_func_var_ref(func_var_ref_ast **yynode)
{
- *yynode = create<funcref_ast>();
+ *yynode = create<func_var_ref_ast>();
(*yynode)->start_token = token_stream->index() - 1;
@@ -310,16 +310,26 @@
(*yynode)->id = token_stream->index() - 1;
yylex();
- function_args_ast *__node_5 = 0;
+ if (yytoken == Token_LPAREN)
+ {
+ function_args_ast *__node_5 = 0;
- if (!parse_function_args(&__node_5))
+ if (!parse_function_args(&__node_5))
+ {
+ yy_expected_symbol(ast_node::Kind_function_args, "function_args");
+ return false;
+ }
+
+ (*yynode)->args = __node_5;
+
+ }
+
+ else if (true /*epsilon*/)
+ {}
+ else
{
- yy_expected_symbol(ast_node::Kind_function_args, "function_args");
return false;
}
-
- (*yynode)->args = __node_5;
-
}
else
@@ -396,7 +406,7 @@
(*yynode)->args = __node_7;
- if (yytoken == Token_RBRACE
+ if (yytoken == Token_LBRACE
|| yytoken == Token_COLON)
{
scope_body_ast *__node_8 = 0;
@@ -760,8 +770,26 @@
}
- else if (true /*epsilon*/)
- {}
+ else if (yytoken == Token_CONT)
+ {
+ if (yytoken != Token_CONT)
+ {
+ yy_expected_token(yytoken, Token_CONT, "cont");
+ return false;
+ }
+
+ yylex();
+
+ if (yytoken != Token_NEWLINE)
+ {
+ yy_expected_token(yytoken, Token_NEWLINE, "newline");
+ return false;
+ }
+
+ yylex();
+
+ }
+
else
{
return false;
@@ -797,34 +825,33 @@
yylex();
- if (yytoken == Token_LBRACKET
- || yytoken == Token_LBRACE
- || yytoken == Token_LPAREN
- || yytoken == Token_IDENTIFIER)
+ if (yytoken == Token_IDENTIFIER)
{
- varref_ast *__node_13 = 0;
+ func_var_ref_ast *__node_13 = 0;
- if (!parse_varref(&__node_13))
+ if (!parse_func_var_ref(&__node_13))
{
- yy_expected_symbol(ast_node::Kind_varref, "varref");
+ yy_expected_symbol(ast_node::Kind_func_var_ref, \
"func_var_ref"); return false;
}
- (*yynode)->varref = __node_13;
+ (*yynode)->func_var_ref = __node_13;
}
- else if (yytoken == Token_IDENTIFIER)
+ else if (yytoken == Token_LBRACKET
+ || yytoken == Token_LBRACE
+ || yytoken == Token_LPAREN)
{
- funcref_ast *__node_14 = 0;
+ varref_ast *__node_14 = 0;
- if (!parse_funcref(&__node_14))
+ if (!parse_varref(&__node_14))
{
- yy_expected_symbol(ast_node::Kind_funcref, "funcref");
+ yy_expected_symbol(ast_node::Kind_varref, "varref");
return false;
}
- (*yynode)->funcref = __node_14;
+ (*yynode)->varref = __node_14;
}
@@ -893,14 +920,14 @@
(*yynode)->start_token = token_stream->index() - 1;
- if (yytoken == Token_RBRACE
+ if (yytoken == Token_LBRACE
|| yytoken == Token_COLON)
{
- if (yytoken == Token_RBRACE)
+ if (yytoken == Token_LBRACE)
{
- if (yytoken != Token_RBRACE)
+ if (yytoken != Token_LBRACE)
{
- yy_expected_token(yytoken, Token_RBRACE, "rbrace");
+ yy_expected_token(yytoken, Token_LBRACE, "lbrace");
return false;
}
@@ -940,9 +967,9 @@
}
- if (yytoken != Token_LBRACE)
+ if (yytoken != Token_RBRACE)
{
- yy_expected_token(yytoken, Token_LBRACE, "lbrace");
+ yy_expected_token(yytoken, Token_RBRACE, "rbrace");
return false;
}
@@ -1040,7 +1067,7 @@
}
- else if (yytoken == Token_RBRACE
+ else if (yytoken == Token_LBRACE
|| yytoken == Token_COLON)
{
scope_body_ast *__node_19 = 0;
@@ -1378,8 +1405,7 @@
if (yytoken == Token_LBRACKET
|| yytoken == Token_LBRACE
- || yytoken == Token_LPAREN
- || yytoken == Token_IDENTIFIER)
+ || yytoken == Token_LPAREN)
{
if (yytoken == Token_LPAREN)
{
@@ -1468,19 +1494,6 @@
}
- else if (yytoken == Token_IDENTIFIER)
- {
- if (yytoken != Token_IDENTIFIER)
- {
- yy_expected_token(yytoken, Token_IDENTIFIER, "identifier");
- return false;
- }
-
- (*yynode)->id = token_stream->index() - 1;
- yylex();
-
- }
-
else
{
return false;
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.h \
#690039:690040 @@ -140,7 +140,7 @@
bool parse_arg_list(arg_list_ast **yynode);
bool parse_argument(argument_ast **yynode);
- bool parse_funcref(funcref_ast **yynode);
+ bool parse_func_var_ref(func_var_ref_ast **yynode);
bool parse_function_args(function_args_ast **yynode);
bool parse_function_scope(function_scope_ast **yynode);
bool parse_id_or_value(id_or_value_ast **yynode);
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_visitor.cpp \
#690039:690040 @@ -9,7 +9,7 @@
visitor::parser_fun_t visitor::_S_parser_table[] = {
reinterpret_cast<parser_fun_t>(&visitor::visit_arg_list),
reinterpret_cast<parser_fun_t>(&visitor::visit_argument),
- reinterpret_cast<parser_fun_t>(&visitor::visit_funcref),
+ reinterpret_cast<parser_fun_t>(&visitor::visit_func_var_ref),
reinterpret_cast<parser_fun_t>(&visitor::visit_function_args),
reinterpret_cast<parser_fun_t>(&visitor::visit_function_scope),
reinterpret_cast<parser_fun_t>(&visitor::visit_id_or_value),
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/generated/qmake_visitor.h \
#690039:690040 @@ -30,7 +30,7 @@
virtual void visit_argument(argument_ast *)
{}
- virtual void visit_funcref(funcref_ast *)
+ virtual void visit_func_var_ref(func_var_ref_ast *)
{}
virtual void visit_function_args(function_args_ast *)
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/qmake.g #690039:690040
@@ -109,19 +109,19 @@
value_str=id_or_value | quote_val=quoted_value | ref=ref
-> value ;;
- DOUBLEDOLLAR ( varref=varref | funcref=funcref ) | SINGLEDOLLAR LPAREN \
idref=IDENTIFIER RPAREN + DOUBLEDOLLAR ( func_var_ref=func_var_ref | varref=varref \
) | SINGLEDOLLAR LPAREN idref=IDENTIFIER RPAREN
-> ref ;;
- LPAREN id=IDENTIFIER RPAREN | LBRACE id=IDENTIFIER RBRACE | LBRACKET \
id=IDENTIFIER RBRACKET | id=IDENTIFIER + LPAREN id=IDENTIFIER RPAREN | LBRACE \
id=IDENTIFIER RBRACE | LBRACKET id=IDENTIFIER RBRACKET
-> varref ;;
- id=IDENTIFIER args=function_args
--> funcref ;;
+ id=IDENTIFIER ( args=function_args | 0 )
+-> func_var_ref ;;
val=IDENTIFIER | val=VALUE
-> id_or_value ;;
- QUOTE ( value=quote_value )* ( QUOTE | 0 )
+ QUOTE ( value=quote_value )* ( QUOTE | CONT NEWLINE )
-> quoted_value ;;
value_str=id_or_value | ref=ref | token=QUOTEDSPACE | token=COLON | token=COMMA
@@ -139,7 +139,7 @@
value_str=id_or_value | quoted_val=quoted_value | ref=ref
-> argument ;;
- RBRACE ( NEWLINE | 0 ) ( #stmts=stmt )* LBRACE | COLON #stmts=stmt
+ LBRACE ( NEWLINE | 0 ) ( #stmts=stmt )* RBRACE | COLON #stmts=stmt
-> scope_body ;;
-----------------------------------------------------------------
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/qmakedebugvisitor.cpp \
#690039:690040 @@ -67,12 +67,12 @@
kDebug(9024) << getIndent() << "END(argument)( " << \
getTokenInfo(node->end_token) << " )" << endl; }
-void DebugVisitor::visit_funcref( funcref_ast *node )
+void DebugVisitor::visit_func_var_ref( func_var_ref_ast *node )
{
kDebug(9024) << getIndent() << "BEGIN(funcref)( " << \
getTokenInfo(node->start_token) << " )" << endl; indent++;
kDebug(9024) << getIndent() << "id=" << getTokenInfo(node->id) << endl;
- default_visitor::visit_funcref( node );
+ default_visitor::visit_func_var_ref( node );
indent--;
kDebug(9024) << getIndent() << "END(funcref)( " << getTokenInfo(node->end_token) \
<< " )" << endl; }
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/qmakedebugvisitor.h \
#690039:690040 @@ -35,7 +35,7 @@
DebugVisitor(QMake::parser* parser);
virtual void visit_arg_list( arg_list_ast *node );
virtual void visit_argument( argument_ast *node );
- virtual void visit_funcref( funcref_ast *node );
+ virtual void visit_func_var_ref( func_var_ref_ast *node );
virtual void visit_function_args( function_args_ast *node );
virtual void visit_function_scope( function_scope_ast *node );
virtual void visit_id_or_value( id_or_value_ast *node );
--- trunk/KDE/kdevelop/buildtools/managers/qmake/parser/qmakelexer.cpp #690039:690040
@@ -31,6 +31,7 @@
namespace QMake
{
+//@TODO: Lex and parse ! in default state
Lexer::Lexer( parser* _parser, const QString& content ):
mContent(content), mParser(_parser),
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic