"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विज़िटर्स का उपयोग करके ANTLR 4 में यदि/अन्यथा विवरण कैसे लागू करें?

विज़िटर्स का उपयोग करके ANTLR 4 में यदि/अन्यथा विवरण कैसे लागू करें?

2024-11-09 को प्रकाशित
ब्राउज़ करें:514

How to Implement If/Else Statements in ANTLR 4 using Visitors?

If/else स्टेटमेंट्स विद एएनटीएलआर 4

एएनटीएलआर 4 डिफ़ॉल्ट रूप से श्रोताओं का उपयोग करता है, लेकिन यह आगंतुकों का भी समर्थन करता है। विज़िटर पार्स ट्री के ट्रैवर्सल पर अधिक नियंत्रण प्रदान करते हैं, जिससे वे यदि/अन्यथा कथनों को लागू करने के लिए अधिक उपयुक्त हो जाते हैं। विज़िटर को सक्षम करने के लिए, निम्न कमांड चलाएँ:

java -cp antlr-4.0-complete.jar org.antlr.v4.Tool Mu.g4 -visitor

यह MuBaseVisitor नामक एक क्लास उत्पन्न करेगा , जिसे आप अपनी वांछित कार्यक्षमता को लागू करने के लिए बढ़ा सकते हैं। नीचे EvalVisitor क्लास का एक उदाहरण दिया गया है:

public class EvalVisitor extends MuBaseVisitor {

    // Override visit methods for each rule that needs to be implemented

    // Example: visitIf_stat for handling if/else statements
    @Override
    public Value visitIf_stat(MuParser.If_statContext ctx) {
        List conditions = ctx.condition_block();
        boolean evaluatedBlock = false;

        for (MuParser.Condition_blockContext condition : conditions) {
            Value evaluated = this.visit(condition.expr());
            if (evaluated.asBoolean()) {
                evaluatedBlock = true;
                this.visit(condition.stat_block()); // Evaluate the true block
                break;
            }
        }

        if (!evaluatedBlock && ctx.stat_block() != null) {
            this.visit(ctx.stat_block()); // Evaluate the else block
        }

        return Value.VOID;
    }
}

यहां, हम शर्तों को दोहराते हैं और पहली सच्ची स्थिति का मूल्यांकन करते हैं। यदि कोई शर्त सत्य नहीं है और कोई अन्य ब्लॉक मौजूद है, तो हम इसके बजाय उसका मूल्यांकन करते हैं। मुख्य { सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता है { MuLexer लेक्सर = नया MuLexer(नया ANTLRFileStream("test.mu")); MuParser पार्सर = नया MuParser(नया CommonTokenStream(lexer)); ParseTree पेड़ = parser.parse(); EvalVisitor विज़िटर = नया EvalVisitor(); विज़िटर.विज़िट(पेड़); // मूल्यांकन प्रक्रिया प्रारंभ करें } }

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3