redefinition of 'init' actions on introducing import - antlr4

My parser consists of several rules, most of them starting with #init action. Now as my file had become extremely large I decided to make a separate file LexerRules.g4 for lexer rules and used
grammar TermParser;
import LexerRules;
Now if I use my alias ANTLR4; I would encounter the following error(s).
error(94): TermParser.g4:163:1: redefinition of 'init' action
error(94): TermParser.g4:189:1: redefinition of 'init' action
error(94): TermParser.g4:200:1: redefinition of 'init' action
error(94): TermParser.g4:212:1: redefinition of 'init' action
error(94): TermParser.g4:230:1: redefinition of 'init' action
error(94): TermParser.g4:296:1: redefinition of 'init' action
error(94): TermParser.g4:315:1: redefinition of 'init' action
error(94): TermParser.g4:359:1: redefinition of 'init' action
error(94): TermParser.g4:381:1: redefinition of 'init' action
error(94): TermParser.g4:440:1: redefinition of 'init' action
How does my separating the parser and lexer rules have anything to do with the using of #init action in multiple parser rules ?
I encountered no problem when I had one big file for everything: lexer as well as parser rules.
Also, the import is not making the main grammar file in ANTLRWORKS 2 to get rid of the implicit definition warning.

Related

I am building customize openssl 1.0.2f for RHEL 5 from Fedora source rpm but it gives me error

Source rpm used:- openssl-1.0.2f-1.fc23.src.rpm
For RHEL 6 , I can build openssl1.0.2f without any issues
But for RHEL 5, When I am running:-
rpmbuild -bb openssl.spec
Initially it ask for lksctp dependency which I have installed
lksctp-tools-1.0.6-3.el5.x86_64.rpm
lksctp-tools-devel-1.0.6-3.el5.x86_64.rpm
It gives me below error:-
_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -c -o bss_dgram.o bss_dgram.c
bss_dgram.c: In function 'BIO_new_dgram_sctp':
bss_dgram.c:973: error: storage size of 'auth' isn't known
bss_dgram.c:992: error: 'SCTP_AUTH_CHUNK' undeclared (first use in this function)
bss_dgram.c:992: error: (Each undeclared identifier is reported only once
bss_dgram.c:992: error: for each function it appears in.)
bss_dgram.c:993: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authchunk'
bss_dgram.c:1001: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authchunk'
bss_dgram.c:1020: error: 'SCTP_LOCAL_AUTH_CHUNKS' undeclared (first use in this function)
bss_dgram.c:1029: error: dereferencing pointer to incomplete type
bss_dgram.c:1081: error: 'SCTP_PARTIAL_DELIVERY_POINT' undeclared (first use in this function)
bss_dgram.c:973: warning: unused variable 'auth'
bss_dgram.c: In function 'dgram_sctp_read':
bss_dgram.c:1225: error: 'SCTP_SENDER_DRY_EVENT' undeclared (first use in this function)
bss_dgram.c:1266: error: 'struct sctp_event_subscribe' has no member named 'sctp_sender_dry_event'
bss_dgram.c:1317: error: 'SCTP_PARTIAL_DELIVERY_POINT' undeclared (first use in this function)
bss_dgram.c:1358: error: 'SCTP_PEER_AUTH_CHUNKS' undeclared (first use in this function)
bss_dgram.c:1362: error: dereferencing pointer to incomplete type
bss_dgram.c: In function 'dgram_sctp_ctrl':
bss_dgram.c:1504: error: storage size of 'authkeyid' isn't known
bss_dgram.c:1558: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1560: error: 'SCTP_AUTH_ACTIVE_KEY' undeclared (first use in this function)
bss_dgram.c:1566: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkey'
bss_dgram.c:1573: error: dereferencing pointer to incomplete type
bss_dgram.c:1579: error: dereferencing pointer to incomplete type
bss_dgram.c:1581: error: dereferencing pointer to incomplete type
bss_dgram.c:1581: error: dereferencing pointer to incomplete type
bss_dgram.c:1581: error: dereferencing pointer to incomplete type
bss_dgram.c:1581: error: dereferencing pointer to incomplete type
bss_dgram.c:1584: error: 'SCTP_AUTH_KEY' undeclared (first use in this function)
bss_dgram.c:1593: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1602: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1612: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1637: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1659: error: 'SCTP_AUTH_DELETE_KEY' undeclared (first use in this function)
bss_dgram.c:1660: error: invalid application of 'sizeof' to incomplete type 'struct sctp_authkeyid'
bss_dgram.c:1504: warning: unused variable 'authkeyid'
bss_dgram.c: In function 'BIO_dgram_sctp_wait_for_dry':
bss_dgram.c:1782: error: 'struct sctp_event_subscribe' has no member named 'sctp_sender_dry_event'
bss_dgram.c:1834: error: 'SCTP_SENDER_DRY_EVENT' undeclared (first use in this function)
bss_dgram.c:1854: error: 'struct sctp_event_subscribe' has no member named 'sctp_sender_dry_event'
make[2]: *** [bss_dgram.o] Error 1
make[2]: Leaving directory `/root/openssl_102f_parashar/BUILD/openssl-1.0.2f/crypto/bio'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/root/openssl_102f_parashar/BUILD/openssl-1.0.2f/crypto'
make: *** [build_crypto] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.44794 (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.44794 (%build)
Is this issue with code?
Any pointer on this area will be appreciated.
Thanks,
You almost answered it for yourself, I had the same problem and upgrading lksctp-tools (I used 1.0.16) solved the build issue.

Use of static_assert forbidden in Android project

I am porting some C++ code to Android. One of the source files includes a webrtc header file that causes error during compilation. I have reduced the problem to this simple code:
template <class T, int n>
struct DefaultDeleter<T[n]> {
// Never allow someone to declare something like scoped_ptr<int[10]>.
static_assert(sizeof(T) == -1, "do not use array with size as type");
};
The error I get is:
[armeabi-v7a] Compile++ thumb: dummyclient <= dummy.cpp
dummy.cpp:7:3: warning: identifier 'static_assert' will become a keyword in C++0x [-Wc++0x-compat]
dummy.cpp:5:8: error: 'DefaultDeleter' is not a template
dummy.cpp:7:17: error: expected identifier before 'sizeof'
dummy.cpp:7:17: error: expected ',' or '...' before 'sizeof'
dummy.cpp:7:70: error: ISO C++ forbids declaration of 'static_assert' with no type [-fpermissive]
The same code compiles fine on Windows and Linux. Is there some compiler settings that are required for Android? Regards.
You need to pass the CPPFLAG -std=c++11.

BusyBox: Error during make

I try to install BusyBox 1.20.2 on a embedded system with PowerPc. At first I want to try it with the default config.
So this are the commands
make defconfig
make
And this is the result:
ma-bash-3.2# make
CC miscutils/ubi_tools.o
miscutils/ubi_tools.c: In function 'ubi_tools_main':
miscutils/ubi_tools.c:137: error: 'UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:137: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:137: error: for each function it appears in.)
miscutils/ubi_tools.c:157: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:165: error: 'UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:157: warning: unused variable 'req'
miscutils/ubi_tools.c:171: error: 'UBI_IOCDET' undeclared (first use in this function)
make[1]: *** [miscutils/ubi_tools.o] Error 1
make: *** [miscutils] Error 2
How is it possible to solve that Error?
Can I disable this ubi_tool ? What effects will that have and how to do that?
Remove these lines in .config:
CONFIG_UBIATTACH=y
CONFIG_UBIDETACH=y
CONFIG_UBIMKVOL=y
CONFIG_UBIRMVOL=y
CONFIG_UBIRSVOL=y
CONFIG_UBIUPDATEVOL=y
you won't have support for ubifs.

C++ syntax error: missing ';' before 'constant'

I have the following line of code in my program -
typedef GROUP ACE_SOCK_GROUP;
That gives the following warnings and errors -
Warning 181 warning C4091: 'typedef ' : ignored on left of 'int' when no variable is declared
Error 182 error C2143: syntax error : missing ';' before 'constant'
Error 183 error C2059: syntax error : 'constant'
The definition of GROUP is given in another file that is included by my program as -
typedef unsigned int GROUP;
What does 'constant' here refer to?
What could be causing the error?
What is the warning indicating
I am using Visual Studio 2008 and found the definition of GROUP using the F12 function
The code is correct.
You're forgetting to include the file where GROUP is defined.
You can try a simple test to confirm this is the issue:
typedef unsigned int GROUP;
typedef GROUP ACE_SOCK_GROUP;
If this compiles, and it will, that means that the previous definition of GROUP is not seen. You need to include the file with the definition before defining ACE_SOCK_GROUP.

when I include atomic.h, GCC says No such file, why?

I want to use atomic API, and I include . I don't know how to use it! Thank you!
I have it in /usr/src/linux-headers-2.6.28-11/arch/x86/include/asm/atomic.h.
I also add -I/usr/src/linux-headers-2.6.28-11/arch/x86/include/ and -I/usr/src/linux-headers-2.6.28-11/include.
Some other errors is produced because of -DCONFIG_X86_32 and -D__KERNEL__ macro undefined.
Then I define the two macros,
some errors occurred:
/usr/src/linux-headers-2.6.28-11/include/linux/cpumask.h:600:37: error: "and" may not appear in macro parameter list
/usr/src/linux-headers-2.6.28-11/arch/x86/include/asm/processor.h:159:1: warning: "cache_line_size" redefined
/usr/src/linux-headers-2.6.28-11/include/linux/cache.h:64:1: warning: this is the location of the previous definition
/usr/src/linux-headers-2.6.28-11/include/linux/stddef.h:16: error: expected identifier before ‘false’
/usr/src/linux-headers-2.6.28-11/include/linux/stddef.h:16: error: expected `}' before ‘false’
/usr/src/linux-headers-2.6.28-11/include/linux/stddef.h:16: error: expected unqualified-id before ‘false’
/usr/src/linux-headers-2.6.28-11/include/linux/stddef.h:18: error: expected declaration before ‘}’ token
My system is ubuntu 9.04 running on Virtualbox3.0.
If you know where the file is on your HD, then you say gcc mySource.c -I/path/to/atomic
note that this assumes you include "atomic" directly. and not "some/path/atmomic.h"

Resources