ANTLR3_DEBUG_EVENT_LISTENER_struct - Online Linux Manual PageSection : 3
Updated : Tue Jan 26 2021
Source : Version 3.3.1
Note : ANTLR3C

NAMEANTLR3_DEBUG_EVENT_LISTENER_struct − The ANTLR3 debugging interface for communicating with ANLTR Works​.

SYNOPSIS
#include <antlr3debugeventlistener​.h>

Data Fieldsvoid(* ack )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Retrieve acknowledge response from the debugger​.
pANTLR3_BASE_TREE_ADAPTOR adaptor
Allows the debug event system to access the adapter in use by the recognizer, if this is a tree parser of some sort​.
void(* addChild )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE root, pANTLR3_BASE_TREE child)
Make childID a child of rootID​.
void(* becomeRoot )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE newRoot, pANTLR3_BASE_TREE oldRoot)
Make a node the new root of an existing root​.
void(* beginBacktrack )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int level)
void(* beginResync )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Indicates the recognizer is about to consume tokens to resynchronize the parser​.
void(* commence )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Announce that parsing has begun​.
void(* consumeHiddenToken )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_COMMON_TOKEN t)
An off-channel input token was consumed​.
void(* consumeNode )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)
Input for a tree parser is an AST, but we know nothing for sure about a node except its type and text (obtained from the adaptor)​.
void(* consumeToken )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_COMMON_TOKEN t)
An input token was consumed; matched by any kind of element​.
void(* createNode )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)
Announce a new node built from token elements such as type etc​.​.​.
void(* createNodeTok )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE node, pANTLR3_COMMON_TOKEN token)
Announce a new node built from an existing token​.
void(* endBacktrack )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int level, ANTLR3_BOOLEAN successful)
void(* endResync )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Indicates that the recognizer has finished consuming tokens in order to resynchronize​.
void(* enterAlt )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int alt)
Because rules can have lots of alternatives, it is very useful to know which alt you are entering​.
void(* enterDecision )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)
Every decision, fixed k or arbitrary, has an enter/exit event so that a GUI can easily track what LT/consume events are associated with prediction​.
void(* enterRule )(pANTLR3_DEBUG_EVENT_LISTENER delboy, const char *grammarFileName, const char *ruleName)
The parser has just entered a rule​.
void(* enterSubRule )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)
Track entry into any (​.​.​.) subrule other EBNF construct​.
void(* errorNode )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)
If a syntax error occurs, recognizers bracket the error with an error node if they are building ASTs​.
void(* exitDecision )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)
void(* exitRule )(pANTLR3_DEBUG_EVENT_LISTENER delboy, const char *grammarFileName, const char *ruleName)
This is the last thing executed before leaving a rule​.
void(* exitSubRule )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)
void(* free )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Free up the resources allocated to this structure​.
pANTLR3_STRING grammarFileName
The name of the grammar file that we are debugging​.
ANTLR3_BOOLEAN(* handshake )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Wait for a connection from the debugger and initiate the debugging session​.
ANTLR3_BOOLEAN initialized
Indicates whether we have already connected or not​.
void(* location )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int line, int pos)
To watch a parser move through the grammar, the parser needs to inform the debugger what line/charPos it is passing in the grammar​.
void(* LT )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int i, pANTLR3_COMMON_TOKEN t)
Somebody (anybody) looked ahead​.
void(* LTT )(pANTLR3_DEBUG_EVENT_LISTENER delboy, int i, pANTLR3_BASE_TREE t)
The tree parser looked ahead​.
void(* mark )(pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_MARKER marker)
The parser is going to look arbitrarily ahead; mark this location, the token stream's marker is sent in case you need it​.
void(* nilNode )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)
A nil was created (even nil nodes have a unique ID​.​.​.
ANTLR3_UINT32 port
The port number which the debug listener should listen on for a connection​.
int protocol_version
The version of the debugging protocol supported by the providing instance of the debug event listener​.
void(* recognitionException )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_EXCEPTION e)
A recognition exception occurred such as NoViableAltException​.
void(* rewind )(pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_MARKER marker)
After an arbitrarily long lookahead as with a cyclic DFA (or with any backtrack), this informs the debugger that stream should be rewound to the position associated with marker​.
void(* rewindLast )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Rewind to the input position of the last marker​.
void(* semanticPredicate )(pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_BOOLEAN result, const char *predicate)
A semantic predicate was evaluate with this result and action text​.
void(* setTokenBoundaries )(pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t, ANTLR3_MARKER tokenStartIndex, ANTLR3_MARKER tokenStopIndex)
Set the token start/stop token index for a subtree root or node​.
SOCKET socket
The socket structure we receive after a successful accept on the serverSocket​.
void(* terminate )(pANTLR3_DEBUG_EVENT_LISTENER delboy)
Parsing is over; successfully or not​.
pANTLR3_STRING tokenString
Used to serialize the values of any particular token we need to send back to the debugger​.

Detailed DescriptionThe ANTLR3 debugging interface for communicating with ANLTR Works​. Function comments mostly taken from the Java version​.

Field Documentation

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::ack) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Retrieve acknowledge response from the debugger​. in fact this response is never used at the moment​. So we just read whatever is in the socket buffer and throw it away​.

pANTLR3_BASE_TREE_ADAPTOR ANTLR3_DEBUG_EVENT_LISTENER_struct::adaptorAllows the debug event system to access the adapter in use by the recognizer, if this is a tree parser of some sort​. Referenced by addChild(), antlr3BaseTreeAdaptorInit(), becomeRoot(), createNode(), createNodeTok(), errorNode(), nilNode(), serializeNode(), and setTokenBoundaries()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::addChild) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE root, pANTLR3_BASE_TREE child)Make childID a child of rootID​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only IDs are set​. See also org​.antlr​.runtime​.tree​.TreeAdaptor​.addChild() Referenced by antlr3DebugListenerNew(), dbgAddChild(), dbgAddChildToken(), and simulateTreeConstruction()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::becomeRoot) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE newRoot, pANTLR3_BASE_TREE oldRoot)Make a node the new root of an existing root​. See Note: the newRootID parameter is possibly different than the TreeAdaptor​.becomeRoot() newRoot parameter​. In our case, it will always be the result of calling TreeAdaptor​.becomeRoot() and not root_n or whatever​. The listener should assume that this event occurs only when the current subrule (or rule) subtree is being reset to newRootID​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only IDs are set​. See also org​.antlr​.runtime​.tree​.TreeAdaptor​.becomeRoot() Referenced by antlr3DebugListenerNew(), dbgBecomeRoot(), and dbgBecomeRootToken()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::beginBacktrack) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int level)Referenced by antlr3DebugListenerNew(), and beginBacktrack()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::beginResync) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Indicates the recognizer is about to consume tokens to resynchronize the parser​. Any consume events from here until the recovered event are not part of the parse--they are dead tokens​. Referenced by antlr3DebugListenerNew(), beginResync(), and recoverFromMismatchedToken()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::commence) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Announce that parsing has begun​. Not technically useful except for sending events over a socket​. A GUI for example will launch a thread to connect and communicate with a remote parser​. The thread will want to notify the GUI when a connection is made​. ANTLR parsers trigger this upon entry to the first rule (the ruleLevel is used to figure this out)​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::consumeHiddenToken) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_COMMON_TOKEN t)An off-channel input token was consumed​. Trigger after the token was matched by things like match(), matchAny()​. (unless of course the hidden token is first stuff in the input stream)​. Referenced by antlr3DebugListenerNew(), consumeInitialHiddenTokens(), and dbgConsume()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::consumeNode) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)Input for a tree parser is an AST, but we know nothing for sure about a node except its type and text (obtained from the adaptor)​. This is the analog of the consumeToken method​. The ID is usually the memory address of the node​. If the type is UP or DOWN, then the ID is not really meaningful as it's fixed--there is just one UP node and one DOWN navigation node​. Note that unlike the Java version, the node type of the C parsers is always fixed as pANTLR3_BASE_TREE because all such structures contain a super pointer to their parent, which is generally COMMON_TREE and within that there is a super pointer that can point to a user type that encapsulates it​. Almost akin to saying that it is an interface pointer except we don't need to know what the interface is in full, just those bits that are the base​. Parameters t Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::consumeToken) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_COMMON_TOKEN t)An input token was consumed; matched by any kind of element​. Trigger after the token was matched by things like match(), matchAny()​. Referenced by antlr3DebugListenerNew(), and dbgConsume()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)Announce a new node built from token elements such as type etc​.​.​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only t​.ID, type, text are set​. Referenced by antlr3DebugListenerNew(), dbgCreate(), dbgCreateTypeText(), dbgCreateTypeToken(), dbgCreateTypeTokenText(), dbgNil(), and simulateTreeConstruction()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::createNodeTok) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE node, pANTLR3_COMMON_TOKEN token)Announce a new node built from an existing token​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only node​.ID and token​.tokenIndex are set​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::endBacktrack) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int level, ANTLR3_BOOLEAN successful)Referenced by antlr3DebugListenerNew(), and endBacktrack()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::endResync) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Indicates that the recognizer has finished consuming tokens in order to resynchronize​. There may be multiple beginResync/endResync pairs before the recognizer comes out of errorRecovery mode (in which multiple errors are suppressed)​. This will be useful in a gui where you want to probably grey out tokens that are consumed but not matched to anything in grammar​. Anything between a beginResync/endResync pair was tossed out by the parser​. Referenced by antlr3DebugListenerNew(), endResync(), and recoverFromMismatchedToken()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::enterAlt) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int alt)Because rules can have lots of alternatives, it is very useful to know which alt you are entering​. This is 1​.​.n for n alts​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::enterDecision) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)Every decision, fixed k or arbitrary, has an enter/exit event so that a GUI can easily track what LT/consume events are associated with prediction​. You will see a single enter/exit subrule but multiple enter/exit decision events, one for each loop iteration​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::enterRule) (pANTLR3_DEBUG_EVENT_LISTENER delboy, const char *grammarFileName, const char *ruleName)The parser has just entered a rule​. No decision has been made about which alt is predicted​. This is fired AFTER init actions have been executed​. Attributes are defined and available etc​.​.​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::enterSubRule) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)Track entry into any (​.​.​.) subrule other EBNF construct​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::errorNode) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)If a syntax error occurs, recognizers bracket the error with an error node if they are building ASTs​. This event notifies the listener that this is the case Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::exitDecision) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::exitRule) (pANTLR3_DEBUG_EVENT_LISTENER delboy, const char *grammarFileName, const char *ruleName)This is the last thing executed before leaving a rule​. It is executed even if an exception is thrown​. This is triggered after error reporting and recovery have occurred (unless the exception is not caught in this rule)​. This implies an 'exitAlt' event​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::exitSubRule) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int decisionNumber)Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::free) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Free up the resources allocated to this structure​.

pANTLR3_STRING ANTLR3_DEBUG_EVENT_LISTENER_struct::grammarFileNameThe name of the grammar file that we are debugging​. Referenced by createNode(), errorNode(), handshake(), serializeNode(), and serializeToken()​.

ANTLR3_BOOLEAN(* ANTLR3_DEBUG_EVENT_LISTENER_struct::handshake) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Wait for a connection from the debugger and initiate the debugging session​. Referenced by antlr3DebugListenerNew()​.

ANTLR3_BOOLEAN ANTLR3_DEBUG_EVENT_LISTENER_struct::initializedIndicates whether we have already connected or not​. Referenced by handshake()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::location) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int line, int pos)To watch a parser move through the grammar, the parser needs to inform the debugger what line/charPos it is passing in the grammar​. For now, this does not know how to switch from one grammar to the other and back for island grammars etc​.​.​. This should also allow breakpoints because the debugger can stop the parser whenever it hits this line/pos​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::LT) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int i, pANTLR3_COMMON_TOKEN t)Somebody (anybody) looked ahead​. Note that this actually gets triggered by both LA and LT calls​. The debugger will want to know which Token object was examined​. Like consumeToken, this indicates what token was seen at that depth​. A remote debugger cannot look ahead into a file it doesn't have so LT events must pass the token even if the info is redundant​. Referenced by antlr3DebugListenerNew(), and dbgLA()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::LTT) (pANTLR3_DEBUG_EVENT_LISTENER delboy, int i, pANTLR3_BASE_TREE t)The tree parser looked ahead​. If the type is UP or DOWN, then the ID is not really meaningful as it's fixed--there is just one UP node and one DOWN navigation node​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::mark) (pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_MARKER marker)The parser is going to look arbitrarily ahead; mark this location, the token stream's marker is sent in case you need it​. Referenced by antlr3DebugListenerNew(), and dbgMark()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::nilNode) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t)A nil was created (even nil nodes have a unique ID​.​.​. they are not 'null' per se)​. As of 4/28/2006, this seems to be uniquely triggered when starting a new subtree such as when entering a subrule in automatic mode and when building a tree in rewrite mode​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only t​.ID is set​. Referenced by antlr3DebugListenerNew()​.

ANTLR3_UINT32 ANTLR3_DEBUG_EVENT_LISTENER_struct::portThe port number which the debug listener should listen on for a connection​. Referenced by antlr3DebugListenerNew(), antlr3DebugListenerNewPort(), and handshake()​.

int ANTLR3_DEBUG_EVENT_LISTENER_struct::protocol_versionThe version of the debugging protocol supported by the providing instance of the debug event listener​. Referenced by antlr3DebugListenerNew(), and handshake()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::recognitionException) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_EXCEPTION e)A recognition exception occurred such as NoViableAltException​. I made this a generic event so that I can alter the exception hierarchy later without having to alter all the debug objects​. Upon error, the stack of enter rule/subrule must be properly unwound​. If no viable alt occurs it is within an enter/exit decision, which also must be rewound​. Even the rewind for each mark must be unwound​. In the Java target this is pretty easy using try/finally, if a bit ugly in the generated code​. The rewind is generated in DFA​.predict() actually so no code needs to be generated for that​. For languages w/o this 'finally' feature (C++?), the target implementor will have to build an event stack or something​. Across a socket for remote debugging, only the RecognitionException data fields are transmitted​. The token object or whatever that caused the problem was the last object referenced by LT​. The immediately preceding LT event should hold the unexpected Token or char​. Here is a sample event trace for grammar: b : C ({;}A|B) // {;} is there to prevent A|B becoming a set | D ; The sequence for this rule (with no viable alt in the subrule) for input 'c c' (there are 3 tokens) is: commence LT(1) enterRule b location 7 1 enter decision 3 LT(1) exit decision 3 enterAlt1 location 7 5 LT(1) consumeToken [c/<4>,1:0] location 7 7 enterSubRule 2 enter decision 2 LT(1) LT(1) recognitionException NoViableAltException 2 1 2 exit decision 2 exitSubRule 2 beginResync LT(1) consumeToken [c/<4>,1:1] LT(1) endResync LT(-1) exitRule b terminate Referenced by antlr3DebugListenerNew(), and reportError()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::rewind) (pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_MARKER marker)After an arbitrarily long lookahead as with a cyclic DFA (or with any backtrack), this informs the debugger that stream should be rewound to the position associated with marker​. Referenced by antlr3DebugListenerNew(), and dbgRewindStream()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::rewindLast) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Rewind to the input position of the last marker​. Used currently only after a cyclic DFA and just before starting a sem/syn predicate to get the input position back to the start of the decision​. Do not 'pop' the marker off the state​. mark(i) and rewind(i) should balance still​. Referenced by antlr3DebugListenerNew(), and dbgRewindLast()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::semanticPredicate) (pANTLR3_DEBUG_EVENT_LISTENER delboy, ANTLR3_BOOLEAN result, const char *predicate)A semantic predicate was evaluate with this result and action text​. Referenced by antlr3DebugListenerNew()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::setTokenBoundaries) (pANTLR3_DEBUG_EVENT_LISTENER delboy, pANTLR3_BASE_TREE t, ANTLR3_MARKER tokenStartIndex, ANTLR3_MARKER tokenStopIndex)Set the token start/stop token index for a subtree root or node​. If you are receiving this event over a socket via RemoteDebugEventSocketListener then only t​.ID is set​. Referenced by antlr3DebugListenerNew(), and dbgSetTokenBoundaries()​.

SOCKET ANTLR3_DEBUG_EVENT_LISTENER_struct::socketThe socket structure we receive after a successful accept on the serverSocket​. Referenced by ack(), handshake(), terminate(), and transmit()​.

void(* ANTLR3_DEBUG_EVENT_LISTENER_struct::terminate) (pANTLR3_DEBUG_EVENT_LISTENER delboy)Parsing is over; successfully or not​. Mostly useful for telling remote debugging listeners that it's time to quit​. When the rule invocation level goes to zero at the end of a rule, we are done parsing​. Referenced by antlr3DebugListenerNew()​.

pANTLR3_STRING ANTLR3_DEBUG_EVENT_LISTENER_struct::tokenStringUsed to serialize the values of any particular token we need to send back to the debugger​. Referenced by consumeNode(), createNode(), errorNode(), LTT(), serializeNode(), and serializeToken()​.

AuthorGenerated automatically by Doxygen for ANTLR3C from the source code​.
0
Johanes Gumabo
Data Size   :   80,993 byte
man-antlr3-protocol_version.3Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   3 / 236,796
Visitor ID   :     :  
Visitor IP   :   18.224.38.176   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.