亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javacc的實例分析

發布時間:2022-01-10 18:39:23 來源:億速云 閱讀:195 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關Javacc的實例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

PARSER_BEGIN(Simple1)
public class Simple1 {
   public static void main(String args[]) throws ParseException {
       Simple1 parser = new Simple1(System.in);
       parser.Input();
   }
}
PARSER_END(Simple1)

void Input() :
{}
{
   MatchedBraces() (" "|"")*
}
void MatchedBraces() :
{}
{
   "{" [ MatchedBraces() ] "}"
}

   設置好javacc的bin目錄后,在命令提示符下輸入javacc Simple1.jj    然后javacc就會為你生成下面幾個java源代碼文件
Simple1.java
Simple1TokenManager.java
Simple1Constants.java
SimpleCharStream.java
Token.java
TokenMgrError.java

   其中Simple1就是你的語法分析器的對象,它的構造函數參數就是要分析的輸入流,這里的是System.in。 class Simple1就定義在標記PARSER_BEGIN(Simple1)和PARSER_END(Simple1)之間。但是必須清楚的是,PARSER_BEGIN和PARSER_END中的名字必須是詞法分析器的名字(這里是Simple1)。
   PARSER_END下面的定義就是文法非終結符號的定義了。
   Simple1的文法基本就是:

       Input -> MatchedBraces (" "|"")*
       MatchedBraces -> “{“ MatchedBraces “}”

   從它的定義我們可以看到,每個非終結符號對于一個過程。比如Input的過程

void Input() :
{}
{
   MatchedBraces() (" "|"")*
}

   在定義void Input后面記住需要加上一個冒號“:”,然后接下來是兩個塊{}的定義。
   第一個{}中的代碼是定義數據,初試化數據的代碼。第二個{}中的部分就是真正定義Input的產生式了。
   每個產生式之間用”|”符號連接。
   注意:這里的產生式并非需要嚴格BNF范式文法,它的文法既可以是BNF,同時還可以是混合了正則表達式中的定義方法。比如上面的 Input -> MatchedBraces (" "|"")*
中(“ ”|””)* 就是個正則表達式,表示的是 或者的0個到無限個的重復的記號。而是javacc系統定義的記號(TOKEN),表示文件結束符號。
   除了,無論是系統定義的TOKEN,還是自定義的TOKEN, 里面的TOKEN都是以的方式表示。

   每個非終結符號(Input和MatchedBraces)都會在javacc生成的Simple1.java中形成Class Simple1的成員函數。當你在外部調用Simple1的Input,那么語法分析器就會開始進行語法分析了。

關于Javacc的實例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 赣州市| 格尔木市| 漠河县| 海口市| 蕲春县| 建始县| 固安县| 保亭| 桃园市| 高青县| 汤原县| 会理县| 尉氏县| 兴海县| 卢湾区| 芦山县| 安泽县| 商丘市| 黄龙县| 余姚市| 泰和县| 陆川县| 渝北区| 福泉市| 资阳市| 炎陵县| 潜江市| 巴林左旗| 永和县| 调兵山市| 鸡东县| 河北区| 道孚县| 青冈县| 喀喇沁旗| 阿拉善左旗| 大庆市| 贡觉县| 白玉县| 定兴县|