[antlr-interest] 2. Attempt: ANTLR code generation target: modifying the C-Runtime I
Udo Weik
WeikEngOff at aol.com
Wed Nov 9 14:12:36 PST 2011
Hello Jim,
I know/have read you are very busy at the moment, so a special thank
for your answer.
> These are all questions about stringtemplate, so you should post them
> there.
O. k.!
> Note that<\n?> forces a newline.
O. k.!
> You created new templates, but did you create a new java class to process
> it? Did you change the group names of the templates and so on?
I'm using your template, just renamed it (\Cmod). No, no new java class
(I think/hope I don't need one at the moment). But where/how is the header-
file created? All is working well, but I don't get a header-file.
> Sorry, but to create a target, you basically just have to work it out as
> you go along by trial and error, but you might find it easier to change
> the embedded code than to remove blank lines. Also don't change more than
> a single line of template at once.
Yep, I change only one line at once. In summary, I have already found the
places where I must add my code. So my main problem at the moment is only
the missing header-file.
Greetings
Udo
>> -----Original Message-----
>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>> bounces at antlr.org] On Behalf Of Udo Weik
>> Sent: Wednesday, November 09, 2011 1:40 PM
>> To: Antlr-Interest Antlr.Org
>> Subject: [antlr-interest] 2. Attempt: ANTLR code generation target:
>> modifying the C-Runtime I
>>
>> I would be really happy to get an answer...
>>
>>
>> Hello,
>>
>> yep, I startet to modify the C-Runtime and have a first bunch of
>> questions. Be sure, more will follow - "Eeek, what a pain!"...
>>
>> 1. Header-file not created
>> I just added a new directory \Cmod to \org\antlr\codegen\templates
>> and copied the entire content of \C in that directory. Then I
>> renamed C.stg in Cmod.stg. The *Lexer.c/*Parser.c-files are
>> created,
>> but no header (*.h)-files. Why?
>>
>> 2.<token> in<action>
>> I need the token of an rule in the<action>-section
>> /** How to execute an action (when not backtracking) */
>> execAction(action) ::=<<
>> <if(backtracking)>
>> <if(actions.(actionScope).synpredgate)>
>> if (<actions.(actionScope).synpredgate> )
>> ...
>> <ruleDescriptor.name> and<ruleName> are replaced (what is the
>> difference?) but<token> not. Why?
>>
>> 3. Blank lines
>> The C-Parser-file of my grammar consits of ~150.000 lines, ~20.000
>> lines are blank. As mentioned in another email from me, I can't
>> debug
>> more than 65535 lines. The only solution is to reorder the (parser)
>> rules.
>> But apart from that severe problem, I looked for a solution to get
>> a much more compact code. Some examples, section...
>> 1. // Forward declare the locally static matching functions we have
>> generated.
>> //
>> static
>> XYZParser_RULE_return
>> RULE (pXYZParser ctx);
>>
>> 3 lines - the result of
>> <rules:{r | static
>> <headerReturnType(ruleDescriptor=r.ruleDescriptor)>
>> <r.ruleDescriptor.name> (p<name>
>> ctx<if(r.ruleDescriptor.parameterScope)>,<endif>
>> <r.ruleDescriptor.parameterScope:parameterScope()>);};
>> separator="\n">
>> How can I avoid 2 lines?
>> 2. /* ==============================================
>> * Parsing rules
>> */
>> ...
>> static XYZParser_RULE_return
>> port_RULE(pXYZParser ctx)
>>
>> 2 lines - the result of
>> <rules; separator="\n\n">
>> How can I avoid 1 line?
>>
>> 4. I added a comment to section
>> ruleReturnValue() ::=<%
>> //! UW Test ruleReturnValue
>>
>> <if(!ruleDescriptor.isSynPred)>
>> <if(ruleDescriptor.hasReturnValue)>
>> <if(ruleDescriptor.hasSingleReturnValue)>
>> <ruleDescriptor.singleValueReturnName>
>> <else>
>> retval
>> <endif>
>> <endif>
>> <endif>
>> %>
>>
>> The result looks like
>> return //! UW Test ruleReturnValueretval;
>> 1. The problem of the missing blank between "ruleReturnValue" and
>> "retval"
>> can be solved by adding a blank after the comment "//! UW Test
>> ruleReturnValue ".
>> 2. But how can I add an additional line before the "retval"? I
>> tried
>> <else>
>>
>> retval
>> <endif>
>> without success.
>>
>>
>> Many thanks and greetings
>> Udo
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
>> email-address
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list