gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r12784 - gnunet/src/monkey


From: gnunet
Subject: [GNUnet-SVN] r12784 - gnunet/src/monkey
Date: Wed, 1 Sep 2010 01:26:41 +0200

Author: grothoff
Date: 2010-09-01 01:26:41 +0200 (Wed, 01 Sep 2010)
New Revision: 12784

Modified:
   gnunet/src/monkey/C.jj
   gnunet/src/monkey/gnunet-monkey.c
Log:
C grammar

Modified: gnunet/src/monkey/C.jj
===================================================================
--- gnunet/src/monkey/C.jj      2010-08-31 23:26:18 UTC (rev 12783)
+++ gnunet/src/monkey/C.jj      2010-08-31 23:26:41 UTC (rev 12784)
@@ -40,7 +40,12 @@
 - Works with JavaCC 4.0
 - Preprocessor directives are now simply SKIP'd, so no need to run C files 
through GCC first
 
-  */
+31/8/10: Modified heavily by Christian Grothoff
+- No more tracking of type names (so we can run without preprocessing)
+- Support certain gcc-isms (unsigned long long, 33LL, etc.)
+- No support for certain older C constructs
+- Support for magic "GNUNET_PACKED" construct (extra "IDENTIFIER" in struct)
+*/
 
 PARSER_BEGIN(CParser)
 
@@ -52,7 +57,6 @@
     public static void main ( String args [ ] ) {
       CParser parser ;
 
-
       if(args.length == 0){
         System.out.println("C Parser Version 0.1Alpha:  Reading from standard 
input . . .");
         parser = new CParser(System.in);
@@ -113,14 +117,14 @@
 
 
 TOKEN : {
- <INTEGER_LITERAL: <DECIMAL_LITERAL> (["l","L"])? | <HEX_LITERAL> (["l","L"])? 
| <OCTAL_LITERAL> (["l","L"])?>
-|  <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])*>
+ <INTEGER_LITERAL: <DECIMAL_LITERAL> (["l","L"])? (["l","L"])? | <HEX_LITERAL> 
(["l","L"])? (["l","L"])? | <OCTAL_LITERAL> (["l","L"])? (["l","L"])?>
+|  <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
 |  <#HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+>
 |  <#OCTAL_LITERAL: "0" (["0"-"7"])*>
 |  <FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? 
(["f","F","d","D"])? | "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])? | 
(["0"-"9"])+ <EXPONENT> (["f","F","d","D"])? | (["0"-"9"])+ (<EXPONENT>)? 
["f","F","d","D"]>
 |  <#EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+>
 |  <CHARACTER_LITERAL: "\'" (~["\'","\\","\n","\r"] | "\\" 
(["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] 
["0"-"7"] ["0"-"7"])) "\'">
-|  <STRING_LITERAL: "\"" ( ~["\"","\\","\n","\r"] | "\\" ( 
["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])?  | ["0"-"3"] 
["0"-"7"] ["0"-"7"] | ( ["\n","\r"] | "\r\n")))* "\"">
+|  <STRING_LITERAL: "\"" ( ~["\"","\\","\n","\r"] | "\\" ( 
["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])?  | ["0"-"3"] 
["0"-"7"] ["0"-"7"] | ( ["\n","\r"] | "\r\n")))* "\"" ( ( ["\r","\n"," "] )* 
"\"" ( ~["\"","\\","\n","\r"] | "\\" ( ["n","t","b","r","f","\\","\'","\""] | 
["0"-"7"] (["0"-"7"])?  | ["0"-"3"] ["0"-"7"] ["0"-"7"] | ( ["\n","\r"] | 
"\r\n")))* "\"" )* >
 }
 
 TOKEN : {
@@ -171,101 +175,148 @@
 
 void ExternalDeclaration() : {}
 {
-       ( LOOKAHEAD( FunctionDefinition() ) FunctionDefinition() | 
Declaration())
+       (StorageClassSpecifier())*
+       (
+            LOOKAHEAD (FunctionDeclaration()) FunctionDeclaration() | 
+           LOOKAHEAD (StructOrUnionSpecifier()) StructOrUnionSpecifier() |
+           LOOKAHEAD (VariableDeclaration()) VariableDeclaration() |
+           LOOKAHEAD (TypeDeclaration()) TypeDeclaration () 
+        ) 
 }
 
-void FunctionDefinition() : {}
+void FunctionDeclaration() : {}
 {
-       [LOOKAHEAD(DeclarationSpecifiers()) DeclarationSpecifiers()] 
Declarator() [ DeclarationList() ]
-       CompoundStatement()
+        TypeSpecifier () 
+        <IDENTIFIER>
+        "(" [ ParameterList () ] ")"
+        ( ";" | CompoundStatement() )
 }
 
-void Declaration() : {}
+void StorageClassSpecifier() : {}
 {
-       DeclarationSpecifiers() [ InitDeclaratorList() ] ";"
+       ( <STATIC> | <EXTERN> )
 }
 
-void DeclarationList() : {}
+void TypeDeclaration() : {}
 {
-       ( LOOKAHEAD(Declaration()) Declaration() )+
+        <TYPEDEF> 
+        ( LOOKAHEAD (DataType() ";") DataType () | FunctionType() ) ";"
 }
 
-void DeclarationSpecifiers() : {}
+void DataType() : {}
 {
-         StorageClassSpecifier() [ LOOKAHEAD(DeclarationSpecifiers())
-               DeclarationSpecifiers() ] |
-         TypeSpecifier()  [ LOOKAHEAD(DeclarationSpecifiers())
-               DeclarationSpecifiers() ] |
-         TypeQualifier() [ LOOKAHEAD(DeclarationSpecifiers())
-               DeclarationSpecifiers() ]
+        StructOrUnionSpecifier () <IDENTIFIER>
 }
 
-void StorageClassSpecifier() : {}
+void FunctionType() : {}
 {
-       ( <AUTO> | <REGISTER> | <STATIC> | <EXTERN> | <TYPEDEF>
-        )
+        TypeSpecifier () "(" "*" <IDENTIFIER> ")" "(" [ ParameterList() ] ")"
 }
 
-void TypeSpecifier() : {}
+void ParameterList() : {}
 {
-       ( <VOID> | <CHAR> | <SHORT> | <INT> | <LONG> | <FLOAT> | <DOUBLE> | 
<SIGNED> |
-         <UNSIGNED> | StructOrUnionSpecifier() | EnumSpecifier() | 
TypedefName() )
+       ParameterDeclaration() ( LOOKAHEAD (2) "," ParameterDeclaration() )* [ 
"," "..." ]
 }
 
-void TypeQualifier() : {}
+void ParameterDeclaration() : {}
 {
-       ( <CONST> | <VOLATILE> )
+       TypeSpecifier() <IDENTIFIER> [ Array () ]
 }
 
-void StructOrUnionSpecifier() : {}
+void VariableDeclaration() : {}
 {
-       StructOrUnion() ( LOOKAHEAD(3) [ <IDENTIFIER> ] "{" 
StructDeclarationList() "}" | <IDENTIFIER> )
+       VariableClassSpecifier () 
+        TypeSpecifier () 
+        InitDeclaratorList() ";"
+}
 
+void LocalVariableDeclaration() : {}
+{
+       [ <STATIC> ] VariableDeclaration () 
 }
 
-void StructOrUnion() : {}
+void VariableClassSpecifier() : {}
 {
-       ( <STRUCT> | <UNION> )
+       ( <AUTO> | <REGISTER> )*
 }
 
-void StructDeclarationList() : {}
+void TypeSpecifier() : {}
 {
-       (StructDeclaration())+
+       [ <CONST> ]
+       ( <VOID> 
+          | <CHAR> 
+          | <SHORT> [ <INT> ]
+          | <INT> 
+          | <LONG> [ <LONG> ]  
+          | <FLOAT> | <DOUBLE> 
+          | (<SIGNED> | <UNSIGNED>) [ <CHAR> 
+                                    | <SHORT> [ <INT> ]
+                                    | <INT> 
+                                    | <LONG> [ <LONG> ] ]
+          | StructOrUnionSpecifier() 
+          | EnumSpecifier() 
+          | <IDENTIFIER> 
+        )
+        [ Pointer () ]
+        [ Array () ]
 }
 
-void InitDeclaratorList() : {}
+/* this is needed for 'va_arg' where a type is an argument
+   -- and we cannot disambiguate the use of 'FOO' 
+   after a 'typedef int FOO' from the variable 'FOO'; 
+   hence this hack */
+void NoIdentifierTypeSpecifier() : {}
 {
-       InitDeclarator() ("," InitDeclarator())*
+       [ <CONST> ]
+       ( <VOID> 
+          | <CHAR> 
+          | <SHORT> [ <INT> ]
+          | <INT> 
+          | <LONG> [ <LONG> ]  
+          | <FLOAT> | <DOUBLE> 
+          | (<SIGNED> | <UNSIGNED>) [ <CHAR> 
+                                    | <SHORT> [ <INT> ]
+                                    | <INT> 
+                                    | <LONG> [ <LONG> ] ]
+          | StructOrUnionSpecifier() 
+          | EnumSpecifier() 
+        )
+        [ Pointer () ]
+        [ Array () ]
 }
 
-void InitDeclarator() : {}
+void StructOrUnionSpecifier() : {}
 {
-       Declarator() [ "=" Initializer() ]
+        LOOKAHEAD (3)
+       StructOrUnion() [ <IDENTIFIER> ] "{" StructDeclarationList() "}" |
+       StructOrUnion() <IDENTIFIER> 
 }
 
-void StructDeclaration() : {}
+void StructOrUnion() : {}
 {
-       SpecifierQualifierList() StructDeclaratorList() ";"
+       ( <STRUCT> | <UNION> )
 }
 
-void SpecifierQualifierList() : {}
+void StructDeclarationList() : {}
 {
-         TypeSpecifier() [ LOOKAHEAD(SpecifierQualifierList())
-               SpecifierQualifierList() ]|
-         TypeQualifier() [ LOOKAHEAD(SpecifierQualifierList())
-               SpecifierQualifierList() ]
+       (StructDeclaration())+
 }
 
-void StructDeclaratorList() : {}
+void InitDeclaratorList() : {}
 {
-       StructDeclarator() ( "," StructDeclarator() )*
+       InitDeclarator() ("," InitDeclarator())*
 }
 
-void StructDeclarator() : {}
+void InitDeclarator() : {}
 {
-       ( LOOKAHEAD(3) Declarator() | [ Declarator() ] ":" ConstantExpression() 
)
+       <IDENTIFIER> [ Array () ] [ "=" Initializer() ]
 }
 
+void StructDeclaration() : {}
+{
+       TypeSpecifier() <IDENTIFIER> [ Array() | ":" ConstantExpression() ] [ 
<IDENTIFIER> ] ";"
+}
+
 void EnumSpecifier() : {}
 {
        <ENUM> ( LOOKAHEAD(3) [ <IDENTIFIER> ] "{" EnumeratorList() "}" | 
<IDENTIFIER> )
@@ -281,46 +332,11 @@
        <IDENTIFIER> [ "=" ConstantExpression() ]
 }
 
-void Declarator() : {}
-{
-       [ Pointer() ] DirectDeclarator()
-}
-
-void DirectDeclarator() : {}
-{
-       ( <IDENTIFIER>
-        | "(" Declarator() ")" )
-  
-       ( "[" [ ConstantExpression() ] "]" |
-           LOOKAHEAD(3) "(" ParameterTypeList() ")" |
-           "(" [ IdentifierList() ] ")" )*
-}
-
 void Pointer() : {}
 {
-       "*" [ TypeQualifierList() ] [ Pointer() ]
+       "*" [ <CONST> ] [ Pointer() ]
 }
 
-void TypeQualifierList() : {}
-{
-       (TypeQualifier())+
-}
-
-void ParameterTypeList() : {}
-{
-       ParameterList() ["," "..." ]
-}
-
-void ParameterList() : {}
-{
-       ParameterDeclaration() (LOOKAHEAD(2) "," ParameterDeclaration())*
-}
-
-void ParameterDeclaration() : {}
-{
-       DeclarationSpecifiers() ( LOOKAHEAD(Declarator()) Declarator() | [ 
AbstractDeclarator() ] )
-}
-
 void IdentifierList() : {}
 {
        <IDENTIFIER> ("," <IDENTIFIER>)*
@@ -337,32 +353,12 @@
        Initializer() (LOOKAHEAD(2) "," Initializer())*
 }
 
-void TypeName() : {}
-{
-       SpecifierQualifierList() [ AbstractDeclarator() ]
 
-}
-
-void AbstractDeclarator() : {}
+void Array() : {}
 {
-       ( LOOKAHEAD(3) Pointer() |
-         [Pointer()] DirectAbstractDeclarator() )
+   "[" [ConstantExpression()] "]" 
 }
 
-void DirectAbstractDeclarator() : {}
-{
-       ( LOOKAHEAD(2) "(" AbstractDeclarator() ")" |
-                      "[" [ConstantExpression()] "]" |
-                      "(" [ParameterTypeList()] ")" )
-
-         ( "[" [ ConstantExpression() ] "]" | "(" [ ParameterTypeList() ] ")" 
)*
-}
-
-void TypedefName() : {}
-{
-       <IDENTIFIER>
-}
-
 void Statement() : {}
 {
        ( LOOKAHEAD(2) LabeledStatement() |
@@ -387,16 +383,11 @@
 
 void CompoundStatement() : {}
 {
-       "{" [ LOOKAHEAD(DeclarationList()) DeclarationList() ]
-           [ StatementList() ]
+       "{"   ( LOOKAHEAD (LocalVariableDeclaration()) LocalVariableDeclaration 
() |
+               Statement() )*
        "}"
 }
 
-void StatementList() : {}
-{
-       (Statement())+
-}
-
 void SelectionStatement() : {}
 {
        ( <IF> "(" Expression() ")" Statement() [ LOOKAHEAD(2) <ELSE> 
Statement() ] |
@@ -420,7 +411,7 @@
 
 void Expression() : {}
 {
-       AssignmentExpression() ( "," AssignmentExpression() )*
+        AssignmentExpression() ( "," AssignmentExpression() )*
 }
 
 void AssignmentExpression() : {}
@@ -496,7 +487,7 @@
 
 void CastExpression() : {}
 {
-       ( LOOKAHEAD("(" TypeName() ")" CastExpression() ) "(" TypeName() ")" 
CastExpression() |
+       ( LOOKAHEAD("(" TypeSpecifier() ")" CastExpression() ) "(" 
TypeSpecifier() ")" CastExpression() |
          UnaryExpression() )
 }
 
@@ -506,7 +497,7 @@
          "++" UnaryExpression() |
          "--" UnaryExpression() |
          UnaryOperator() CastExpression() |
-         <SIZEOF> ( LOOKAHEAD(UnaryExpression() ) UnaryExpression() | "(" 
TypeName() ")" ) )
+         <SIZEOF> ( LOOKAHEAD(UnaryExpression() ) UnaryExpression() | "(" 
TypeSpecifier() ")" ) )
 }
 
 void UnaryOperator() : {}
@@ -526,16 +517,23 @@
 
 void PrimaryExpression() : {}
 {
-       ( <IDENTIFIER> |
+        <IDENTIFIER> |
          Constant() |
-         "(" Expression() ")" )
+         "(" Expression() ")" 
 }
 
 void ArgumentExpressionList() : {}
 {
-       AssignmentExpression() ( "," AssignmentExpression() )*
+       AssignmentOrTypeExpression() ( "," AssignmentOrTypeExpression() )*
 }
 
+
+void AssignmentOrTypeExpression() : {}
+{
+       NoIdentifierTypeSpecifier() |
+       AssignmentExpression() 
+}
+
 void Constant() : {}
 {
  <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <CHARACTER_LITERAL> | 
<STRING_LITERAL>

Modified: gnunet/src/monkey/gnunet-monkey.c
===================================================================
--- gnunet/src/monkey/gnunet-monkey.c   2010-08-31 23:26:18 UTC (rev 12783)
+++ gnunet/src/monkey/gnunet-monkey.c   2010-08-31 23:26:41 UTC (rev 12784)
@@ -16,8 +16,9 @@
 #include "platform.h"
 #include "gnunet_common.h"
 
-extern void sendMail(const char *messageContents);
 
+extern void sendMail (const char *messageContents);
+
 void cb_console(const char *str, void *data)
 {
  printf("CONSOLE> %s\n",str);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]