GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

เพรทเซล - ออนไลน์ในคลาวด์

เรียกใช้เพรทเซลในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่งเพรทเซลที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


เพรทเซล - เครื่องกำเนิด Prettyprinter สากล

เรื่องย่อ


เพรทเซล [-qtgdh] [-o outfile] fileprefix

เพรทเซล [-qtgdh] [-o outfile] file1 file2

DESCRIPTION


Pretzel เป็นโปรแกรมที่สร้างโมดูลเครื่องพิมพ์สวยจากคำอธิบายอย่างเป็นทางการของ
วิธีที่ภาษาบางภาษาควรสวยพิมพ์ NS เครื่องพิมพ์ดีด เป็นฟังก์ชันหรือ
โปรแกรมที่จัดเรียงซอร์สโค้ดใหม่เพื่อเพิ่มความสามารถในการอ่าน Prettyprinters สร้างขึ้น
โดย pretzel output LaTeX source code ที่สามารถใช้ได้ภายในเอกสารของคุณเอง โปรดทราบว่า
เพรทเซลผลิต โมดูลไม่ใช่โปรแกรม!

คุณต้องจัดเตรียมไฟล์อินพุตสองไฟล์ให้กับเพรทเซลซึ่งระบุวิธีที่กำหนดซอร์สโค้ด
ควรจะสวยพิมพ์ สองไฟล์นี้เรียกว่า จัดรูปแบบ โทเค็น ไฟล์ (คำต่อท้าย .ฟุต)
และ จัดรูปแบบ ไวยากรณ์ ไฟล์ (คำต่อท้าย .fg).

จากอินพุตนี้ เพรทเซลจะสร้างสองสิ่ง: a valid ดิ้น(1) ไฟล์ที่ประกอบเป็น
พิมพ์สวย สแกนเนอร์ และถูกต้อง วัวกระทิง(1) ไฟล์อินพุตที่สามารถใช้สร้าง
พิมพ์สวย parser (ซึ่งเป็นพริตตี้ปริ้นเตอร์ตัวจริง) มีเชลล์สคริปต์
เพรทเซลมัน ที่อำนวยความสะดวกโดยใช้เพรทเซล (ดู เพรทเซลมัน(1)). man page นี้มีความหมายเท่านั้น
เป็นข้อมูลอ้างอิงอย่างรวดเร็วเกี่ยวกับการใช้เพรทเซล ดูเอกสารหลักของเพรทเซลถ้าคุณ
ยังใหม่ต่อทั้งหมดนี้

กล่าวอ้าง ขนมปังเค็ม
การเรียกเพรทเซลสามารถทำได้สองรูปแบบ: เรียกโดยระบุเฉพาะคำนำหน้าทั่วไปของ
ไฟล์อินพุตสองไฟล์ หรือระบุไฟล์ทั้งสองแยกกันบนบรรทัดคำสั่ง หากคุณระบุ
ทั้งสองไฟล์ ไฟล์โทเค็นที่จัดรูปแบบมาก่อน

ตัวอย่าง
สมมติว่าไฟล์อินพุตของคุณเรียกว่า ฟูฟุต และ ฟู.เอฟจี. แล้วพูดได้

ขนมปังเค็ม foo

เพื่อเรียกเพรทเซลอย่างถูกต้อง หากไฟล์ของคุณถูกเรียกว่า ฟูฟุต และ บาร์.fg แล้วคุณจะมี
เพื่อพูด

ขนมปังเค็ม ฟูฟุต บาร์.fg

เพื่อทำงาน

OPTIONS


Pretzel รู้จักตัวเลือกต่อไปนี้:

-q วิ่งอย่างเงียบ ๆ

-t ประมวลผลไฟล์โทเค็นที่จัดรูปแบบเท่านั้น

-g ประมวลผลไฟล์ไวยากรณ์ที่จัดรูปแบบเท่านั้น (ตัวเลือก -t และ -g เป็นของกันและกัน
พิเศษ).

-d พิมพ์ข้อมูลการดีบักไปที่หน้าจอ

-h พิมพ์ข้อความการใช้งานแบบเต็ม

-o พร้อมชื่อ
ใช้ พร้อมชื่อ เป็นคำนำหน้าของไฟล์เอาต์พุตที่สร้างขึ้น

DIE INPUT ไฟล์


ส่วนนี้สรุปรูปแบบของไฟล์อินพุตและ รูป คำสั่ง วิทยาการ
ที่เพรทเซลรองรับ

การขอ จัดรูปแบบ โทเค็น ไฟล์
ไฟล์โทเค็นที่จัดรูปแบบมีรายการคำจำกัดความโทเค็นที่มีความสอดคล้อง
แบบฟอร์ม "พิมพ์สวย" รูปแบบการพิมพ์ที่สวยงามของโทเค็นจะเรียกว่า an คุณลักษณะ หรือ
การแปล.

โครงร่างทั่วไปของไฟล์โทเค็นที่จัดรูปแบบคือ

ประกาศ

%%

โทเค็น คำจำกัดความ

โดยปกติไฟล์ ประกาศ ส่วนหนึ่งว่างเปล่า คุณสามารถใส่คำอธิบายทั่วไปของไฟล์ได้
ที่นี่ (เป็นความคิดเห็น C) และคำจำกัดความใหม่ของอินเทอร์เฟซเริ่มต้นอยู่ที่นี่เช่นกัน

การขอ โทเค็น คำจำกัดความ ส่วนของไฟล์โทเค็นที่จัดรูปแบบมีชุดของโทเค็น
คำจำกัดความของแบบฟอร์ม:

Belt hold โทเค็น คุณลักษณะ

การขอ Belt hold ต้องเป็นนิพจน์ทั่วไปที่ถูกต้อง (ในแง่ของ ดิ้น(1)) และต้องเป็น
ไม่ได้เยื้อง NS โทเค็น ระบุชื่อสัญลักษณ์ของโทเค็นสำหรับรูปแบบและเริ่มต้น
ที่อักขระที่ไม่ใช่ช่องว่างแรกหลังรูปแบบ ชื่อโทเค็นจะต้องถูกกฎหมาย
ชื่อสำหรับตัวระบุในรูปแบบ Pascal และ ต้อง be ทั้งหมด in บน กรณี. (ขีดเส้นใต้คือ
อนุญาตแต่ไม่ขึ้นต้นคำ)

การขอ คุณลักษณะ สำหรับโทเค็นนี้ นั้นมันสวย แบบฟอร์มพิมพ์ประกอบด้วยข้อความทั้งหมด
ระหว่างวงเล็บดัดผมทั้งสองอัน { และ }. แอตทริบิวต์สามารถเป็นสตริงธรรมดาก็ได้
(ล้อมรอบด้วยเครื่องหมายคำพูดคู่) คำสั่งรูปแบบ (ดูด้านล่าง) โค้ด C++ ของคุณเอง (อยู่ใน
วงเล็บเหลี่ยม [ และ ], ดูด้านล่าง) หรือการรวมกันของทั้งสองเข้าด้วยกันโดย an
ไม่จำเป็น + เข้าสู่ระบบ. นิยามแอตทริบิวต์สามารถครอบคลุมหลายบรรทัดและจุดเริ่มต้น { ไม่จำเป็นต้อง
ยืนอยู่บนบรรทัดเดียวกับคำจำกัดความของโทเค็น อย่างไรก็ตามต้องเยื้องบรรทัดต่อมา
ที่มีอย่างน้อยหนึ่งช่องว่างหรือหนึ่งแท็บ

หากคุณกำหนดสตริงเป็นส่วนหนึ่งของนิยามแอตทริบิวต์ คุณต้องระบุสตริงใน C
ประเภทของแฟชั่น เช่น คุณสามารถแทรกบรรทัดใหม่และแท็บด้วย \n และ \t. แต่ถ้าคุณต้องการที่จะ
ใส่แบ็กสแลชลงในสตริง คุณต้องไม่ลืมใส่แบ็กสแลชสองตัว \\ เข้าไปใน
ไฟล์อินพุต สิ่งนี้มีความสำคัญอย่างยิ่งหากคุณใช้ TeX เป็นตัวเรียงพิมพ์

หากละเว้นคำจำกัดความของแอตทริบิวต์เพรทเซลจะสร้างแอตทริบิวต์สำหรับสิ่งนี้
รูปแบบโดยค่าเริ่มต้น แอตทริบิวต์เริ่มต้นประกอบด้วยสตริงที่มีข้อความ
ตรงกับรูปแบบที่สอดคล้องกัน

ผู้ใช้เองอาจอ้างถึงข้อความที่ตรงกันโดยใช้ลำดับ **. ดังนั้น

"ฟู" BAR

"ฟู" BAR { ** }

"ฟู" BAR { "ฟู" }

ล้วนมีความหมายเดียวกัน

คุณสามารถใช้ | ลงชื่อเป็นชื่อโทเค็น นี่เป็นสัญญาณว่านิพจน์ทั่วไปในปัจจุบันมี
ชื่อโทเค็นเดียวกัน (และแอตทริบิวต์เดียวกัน) เป็นโทเค็นที่ระบุในสิ่งต่อไปนี้
บรรทัด (บรรทัดว่างจะถูกละเว้น) นิยามแอตทริบิวต์ที่อยู่เบื้องหลังa | เป็นสิ่งผิดกฎหมาย อย่างไรก็ตาม
คุณอาจระบุนิพจน์ทั่วไปที่ไม่มีชื่อโทเค็นหรือแอตทริบิวต์ที่จะให้
กฎเริ่มต้นหรือกินช่องว่าง

การประกาศและคำจำกัดความของโทเค็นต้องคั่นด้วยบรรทัดที่มีเพียง
ตัวละครสองตัว %%.

ตัวอย่าง
ตัวอย่างต่อไปนี้เป็นคำจำกัดความของโทเค็นทางกฎหมายทั้งหมด:

[0 9-] ตัวเลข

"{" เปิด { "\\{" เยื้อง บังคับให้ }

[az][a-z0-9]* ID { "{\\มัน " ** "}" }

"การทำงาน" |

"ขั้นตอน" PROC_INTRO { ใหญ่_แรง + ** }

[\NS\ \NS] |

.

การขอ จัดรูปแบบ ไวยากรณ์ ไฟล์
ในไฟล์ไวยากรณ์ที่จัดรูปแบบ ผู้ใช้จะเข้ารหัสไวยากรณ์การพิมพ์สวยทั่วไปสำหรับ
ภาษาโปรแกรม ทำได้โดยการระบุบริบทฟรีไวยากรณ์ของภาษา
และโดยการเพิ่มข้อมูลเกี่ยวกับการสร้างคุณลักษณะใหม่ในทุกกฎ ทั่วไป
เค้าร่างมีลักษณะดังนี้:

โทเค็น ประกาศ

%%

ไวยากรณ์ กฎระเบียบ

การขอ โทเค็น ประกาศ ส่วนจะว่างเปล่าและตัวคั่นระหว่างสองส่วนของ
ไฟล์ %% ต้องปรากฏไม่มีเยื้องในบรรทัดเดียวด้วยตัวเอง

การขอ ไวยากรณ์ กฎระเบียบ ส่วนมีการรวบรวมกฎของบริบท ไวยากรณ์ฟรี
ที่สามารถมาพร้อมกับนิยามแอตทริบิวต์ กฎถูกกำหนดโดยการระบุ
โทเค็นผลลัพธ์ เครื่องหมายทวิภาค และชุดของโทเค็น ซึ่งจะลดลงตามกฎนี้
กฎจบลงด้วยเครื่องหมายอัฒภาค คำจำกัดความของบล็อกในภาษาปาสกาลอาจมีลักษณะดังนี้
นี้:

ปิดกั้น : เริ่ม stmt_list END ;

การติดตามรายการโทเค็นทางด้านขวาของโคลอนสามารถกำหนดแอตทริบิวต์ได้
คำจำกัดความนี้ระบุว่าการแปลสัญลักษณ์ที่ผลิตได้มาจาก
โทเค็นทางด้านขวาของกฎ

นิยามแอตทริบิวต์ถูกใส่วงเล็บไว้ท่ามกลางวงเล็บปีกกา { และ } และสามารถอีกครั้งประกอบด้วย
ของสตริง (ในเครื่องหมายคำพูดคู่) คำสั่งรูปแบบหรือโค้ด C (อยู่ในวงเล็บเหลี่ยม [
และ ], ดูด้านล่าง) รวมเข้าด้วยกันโดยตัวเลือก +. แต่ที่นี่คุณยังสามารถอ้างถึง
คุณลักษณะของโทเค็นทางด้านขวาของกฎ นี้จะทำในที่อึดอัดเล็กน้อย
สัญกรณ์ที่มีตัวเลขนำหน้าด้วย a $ เครื่องหมายดอลลาร์ ตัวเลขหมายถึง
ลำดับการแสดงสัญลักษณ์ทางด้านขวาของกฎ ดังนั้น $1 หมายถึง
โทเค็นแรกของกฎ $2 ครั้งที่สอง เป็นต้น

อีกครั้ง นิยามแอตทริบิวต์สามารถขยายได้หลายบรรทัด และสตริงต้องเป็น
ระบุไว้ในลักษณะ C

คำจำกัดความแอตทริบิวต์อาจถูกละเว้น ในกรณีนี้ เพรทเซลจะสร้างเป็น
คุณลักษณะของสัญลักษณ์ที่สร้างขึ้นจากการต่อกันอย่างง่ายของคุณลักษณะบน
ด้านขวาของกฎ แน่นอน คุณอาจมีด้านขวาว่างของกฎด้วย (to
สร้างสิ่งต่าง ๆ จากความว่างเปล่า) หรือเพียงแค่เชื่อมกฎสองข้อหรือมากกว่าเข้าด้วยกันซึ่งส่งผลให้
สัญลักษณ์เดียวกันกับ a |.

สำหรับทุกโทเค็นของเทอร์มินัลที่ปรากฏในกฎไวยากรณ์ บรรทัดพิเศษจะต้องเป็น
เขียนลงในส่วนการประกาศของไฟล์ คำจำกัดความเหล่านี้อยู่ในรูปแบบ

โทเค็น% ชื่อโทเค็น

มันสำคัญมากที่จะไม่ลืมสิ่งนี้

ตัวอย่าง
ตัวอย่างเช่น นี่คือคำจำกัดความที่เป็นไปได้ของบล็อกในภาษาปาสกาล ซึ่งตอนนี้ใช้ an
ตัวอย่างนิยามแอตทริบิวต์:

ปิดกั้น : เริ่ม stmt_list END { $1 $2 บังคับให้ $3 } ;

คุณลักษณะของ ปิดกั้น จะประกอบด้วยคุณลักษณะของ เริ่ม และ
stmt_list โทเค็นร่วมกับ a บังคับให้ คำสั่งและคำแปลของ END
เหรียญ

สองบรรทัดนี้มีความหมายเหมือนกัน:

สตม : ปิดกั้น กึ่ง ;

สตม : ปิดกั้น กึ่ง { $1 $2 } ;

นี่เป็นกฎทางกฎหมายเช่นกัน:

stmt_list : { บังคับให้ }
| stmt_list สตม กึ่ง { $1 $2 $3 บังคับให้ };

ความคิดเห็น และ รหัส
มีวิธีง่ายๆ ในการใส่ความคิดเห็นลงในโทเค็นที่จัดรูปแบบและจัดรูปแบบแล้ว
ไฟล์ไวยากรณ์ สิ่งนี้ทำในลักษณะ C ++ โดยนำหน้าความคิดเห็นด้วย double
เฉือน //. อักขระทั้งหมดระหว่างเครื่องหมายนี้และจุดสิ้นสุดของบรรทัดจะถูกละเว้นโดย
เพรทเซล

ในทั้งสองไฟล์ คุณสามารถใส่โค้ด C/C++ เพิ่มเติมก่อนและหลัง definitions/grammar
ส่วนต่างๆ หากคุณต้องการแทรกโค้ดที่ท้ายไฟล์ คุณต้องใส่วินาที %%
บนบรรทัดด้วยตัวเองและใส่รหัสไว้ข้างหลัง รหัส C/C++ ก่อนคำจำกัดความ/กฎ
ส่วนจะต้องผูกกับ %{, %} คู่. การใส่โค้ดพิเศษนั้นน่าสนใจสำหรับ
ผู้ที่ต้องการเข้าถึงจากภายในนิยามแอตทริบิวต์

รหัส ภายใน คุณลักษณะ คำจำกัดความ
ตั้งแต่เวอร์ชัน 2.0 เป็นต้นไป เพรทเซลอนุญาตให้แทรกโค้ด C++ ลงในคำจำกัดความแอตทริบิวต์
นี่คือวิธีที่เพรทเซลคาดหวังให้คุณเขียนโค้ดในไฟล์อินพุตเพรทเซลของคุณ:

โค้ดแฟรกเมนต์อยู่ในวงเล็บเหลี่ยม วงเล็บเหลี่ยมใด ๆ ที่ปรากฏ
ภายในรหัส C จะต้องหนีด้วยแบ็กสแลช มีบล็อกของรหัสก่อนและ
เบื้องหลังนิยามแอตทริบิวต์ที่เรียกว่า ที่เริ่มต้น รหัส และ สิ้นสุดรหัส. เพียงคนเดียว
อนุญาตให้บล็อกรหัสเริ่มต้นหรือสิ้นสุด ทั้งสองอย่างเป็นทางเลือก แต่ถ้าคุณต้องการ
ระบุอย่างใดอย่างหนึ่ง หรือ คุณต้องกำหนดแอตทริบิวต์ รหัสเริ่มต้นจะถูกดำเนินการก่อน
แอตทริบิวต์ของโทเค็นใหม่ถูกสร้างขึ้น รหัสสิ้นสุดจะถูกดำเนินการหลังจากสร้างแอตทริบิวต์
และก่อนกลับเข้าสู่ฟังก์ชันการโทร (ในเครื่องสแกน)

ส่วนรหัสภายในคำจำกัดความแอตทริบิวต์ต้องส่งคืนตัวชี้ไปที่ คุณลักษณะ คลาสอ็อบเจ็กต์
(ดูไฟล์ attr/attr.nw ในการแจกแจงรายละเอียด) ภายในรูปแบบ
ไฟล์โทเค็น ข้อความที่ตรงกันจะปรากฏให้คุณเห็นในรูปแบบ a ถ่าน* ข้อความ ตัวแปร. NS
ชื่อสัญลักษณ์ของโทเค็นนั้นมีอยู่ในชื่อเดียวกับที่เพรทเซลตั้งให้
รหัสเริ่มต้น รหัสภายในข้อกำหนดแอตทริบิวต์และรหัสสิ้นสุดเป็นทางเลือกทั้งหมด แต่
ในสถานที่ใด ๆ ที่อนุญาตให้วางโค้ดบิตในวงเล็บได้เพียงบิตเดียวเท่านั้น นี่มัน
ตัวอย่างจากไฟล์ไวยากรณ์ที่จัดรูปแบบ:

id : ID { [ค้นหา($1) ? สร้าง ("{\\bf ") :

สร้าง ("{\\it ")] $1 "}" };

ตัวอย่างนี้แสดงวิธีการจัดรูปแบบตัวระบุขึ้นอยู่กับว่าอยู่ในการค้นหา
ตารางหรือไม่ ตัวระบุสามารถติดตั้งในตารางได้เช่น:

พิมพ์ดีฟ : TYPEDEF_LIKE INT_LIKE ID

[ ติดตั้ง ($ 3); ]

{ $1 $2 "{\\bf " $3 "}" };

ตัวอย่างเพิ่มเติมสามารถพบได้ใน Pretzelbook รูทีนทั่วไปเพื่อหลีกเลี่ยงตัวระบุ to
สร้างและจัดการตารางค้นหาเพื่อแปลงเป็นและจาก คุณลักษณะ* หรือเพื่อเอาท์พุต debug
ข้อมูลสามารถพบได้ในไฟล์ที่เป็นของ C prettyprinter ในไดเร็กทอรี
ภาษา/cee ของการกระจายเพรทเซล

การขอ เซ็ต of รูป คำสั่ง
ต่อไปนี้คือรายการของคำสั่งรูปแบบที่รองรับโดยเพรทเซลและความหมาย:
โมฆะ คำสั่งที่ว่างเปล่า
เยื้อง เยื้องบรรทัดถัดไปอีกเล็กน้อย
ด้านนอก
นำกลับการเยื้องสุดท้าย (de-indent)
บังคับให้ บังคับให้แบ่งบรรทัด
แบ่ง_พื้นที่
หมายถึงพื้นที่ที่เป็นไปได้สำหรับการขึ้นบรรทัดใหม่
ตัวเลือกที่ 1...ตัวเลือกที่ 9
หมายถึงตัวแบ่งบรรทัดที่เป็นตัวเลือกโดยมีบรรทัดต่อเนื่องเยื้อง litte with
เทียบกับตำแหน่งเริ่มต้นปกติ
การสำรองข้อมูล หมายถึง backspace ขนาดเล็ก
ใหญ่_แรง
บังคับให้แบ่งบรรทัดและแทรกพื้นที่พิเศษเล็กน้อย
no_indent
ทำให้บรรทัดปัจจุบันเป็นเอาต์พุต flushleft
ยกเลิก ลบล้างใดๆ แบ่ง_พื้นที่, เลือก, บังคับให้ or ใหญ่_แรง คำสั่งนั้นทันที
นำหน้าหรือตามหลังและยังยกเลิกใดๆ การสำรองข้อมูล คำสั่งที่ตามมา

สำหรับข้อมูลอ้างอิงที่สมบูรณ์เกี่ยวกับวิธีการเขียนอินพุตเพรทเซล โปรดดูที่ Pretzelbook
ซึ่งรวมอยู่ในการกระจายเพรทเซล

รูปแบบ คำสั่ง การประมวลผลล่วงหน้า
คำสั่งรูปแบบจะได้รับการประมวลผลล่วงหน้าตามกฎสองข้อต่อไปนี้:

1. ลำดับที่ต่อเนื่องกัน
แบ่ง_พื้นที่, บังคับให้และ / หรือ ใหญ่_แรง คำสั่งถูกแทนที่ด้วยคำสั่งเดียว (the
สูงสุดที่กำหนด)

2. ยกเลิก คำสั่งยกเลิกใดๆ แบ่ง_พื้นที่, เลือก, บังคับให้ or ใหญ่_แรง สั่งว่า
นำหน้าหรือปฏิบัติตามทันทีและยกเลิกใด ๆ การสำรองข้อมูล คำสั่งที่ตามมา
มัน

DIE เอาท์พุท ไฟล์


หาก Pretzel ทำงานโดยไม่มีข้อผิดพลาด คุณจะได้รับคำจำกัดความของคลาส Prettyprinter C++
ในรูปแบบสองไฟล์ ไฟล์แรกเป็น valid วัวกระทิง(1) ไฟล์จากที่จริง
สามารถรับคลาส parser การพิมพ์สวยได้ ไฟล์ที่สอง (สร้างจากการจัดรูปแบบ
ไฟล์โทเค็น) สามารถประมวลผลด้วย ดิ้น(1) เครื่องกำเนิดสแกนเนอร์เพื่อสร้างสวยการพิมพ์
คลาสสแกนเนอร์ที่ใช้โดย parser

การขอ วัวกระทิง ไฟล์
ไฟล์ bison ที่สร้างขึ้นมีคำจำกัดความสำหรับคลาส parser การพิมพ์ที่สวยงามซึ่ง
เป็นคลาสย่อยของคลาสพื้นฐานที่เป็นนามธรรมต่อไปนี้ (มีอยู่ในไฟล์ Pparse.h ภายใน
เพรทเซลรวมไดเร็กทอรี):

#รวม

#รวม"attr.h"

#include"output.h"

ชั้น พาร์ส {

ส่วนกลาง:
แพร์ส() -

~ พาร์ส () -

เสมือน int สวยพิมพ์(istream*, โอสตรีม*) = 0;

เสมือน int สวยพิมพ์(istream*, เอาท์พุต*) = 0;
};

Prettyprinter ที่สร้างโดย pretzel จะเป็นคลาสย่อยของรูปแบบต่อไปนี้:

#include Pparse.h // ประกอบด้วย นามธรรม ฐาน ชั้น

ชั้น PPARSE_NAME : สาธารณะ พาร์ส {

ส่วนกลาง:
PPARSE_NAME(); ~PPARSE_NAME();

int สวยพิมพ์(istream*, กระแสน้ำ*);

int สวยพิมพ์(istream*, เอาท์พุต*);

ถือเป็นโมฆะ debug_on(); ถือเป็นโมฆะ debug_off();
};

ชื่อของคลาสอาจเปลี่ยนแปลงได้โดยการกำหนดแมโครตัวประมวลผลล่วงหน้าใหม่ PPARSE_NAME
ภายในไฟล์ไวยากรณ์ที่จัดรูปแบบ ฟังก์ชัน Prettyprinting ที่แท้จริงคือ สวยพิมพ์ ที่
อ่านข้อความจากสตรีมอินพุต (เช่น C++ ไอสตรีม วัตถุ) และส่งออกผลลัพธ์ไปยัง an
กระแสข้อมูลขาออก (เช่น C++ สตรีม วัตถุ ดู ไอโอเอส(3C++)). เวอร์ชั่นโอเวอร์โหลดที่สอง
of สวยพิมพ์ ใช้เวลาและ เอาท์พุต วัตถุ (ดูไฟล์ เอาท์พุท/output.nw และเพรทเซลบุ๊ก
ในรายละเอียดการแจกแจงเพรทเซล) และใช้สิ่งนี้เพื่อส่งออกโค้ดที่พิมพ์สวย
การขอ การแก้ปัญหา สามารถใช้ฟังก์ชันเพื่อเปลี่ยนเอาต์พุตการดีบักเป็น เซอร์ เปิดและปิด.

การขอ ดิ้น ไฟล์
คลาส parser การพิมพ์สวยอาศัยบริการของเครื่องสแกนพริตตี้พริ้นติ้งที่สามารถ
ผลิตโดยใช้ไฟล์เพรทเซลที่สอง มันมีคำจำกัดความที่สมบูรณ์ของสแกนเนอร์
คลาสย่อยของคลาสพื้นฐานที่เป็นนามธรรมนี้ (ดูไฟล์ Pscan.h ในไดเรกทอรีรวมเพรทเซล):

#รวม #รวม"attr.h"

ชั้น สแกน {

ส่วนกลาง:
สแกน(istream*) - ~พีสแกน() -

เสมือน int สแกน(แอตทริบิวต์**) = 0;
};

เครื่องสแกนจะต้องเริ่มต้นด้วย C++ ไอสตรีม ตัวชี้ที่จะรับข้อมูลเข้า
โทรไปจริง การสแกน ฟังก์ชั่นส่งคืนจำนวนเต็ม (รหัสโทเค็นของโทเค็น just
สแกนหรือ 0 เมื่อสิ้นสุดไฟล์) บวกการโทรด้วยแอตทริบิวต์อ้างอิงที่มีเนื้อหาของ
โทเค็น (ดูไฟล์ attr/attr.nw จากการกระจายเพรทเซล)

คลาสเครื่องสแกนพริตตี้พริ้นติ้งที่ผลิตออกมานั้นเป็นคลาสย่อยและมีลักษณะดังนี้:

#include Pscan.h // ประกอบด้วย นามธรรม ฐาน ชั้น

ชั้น PSCAN_NAME : สาธารณะ สแกน {

ส่วนกลาง:
PSCAN_NAME(ไอสตรีม*);

~PSCAN_NAME();

int สแกน(แอตทริบิวต์**);

ชื่อของสแกนเนอร์สามารถเปลี่ยนแปลงได้ภายในไฟล์โทเค็นที่จัดรูปแบบโดยกำหนดใหม่
PSCAN_NAME มาโครภายในส่วนการประกาศ คลาสสแกนเนอร์คาดว่าจะพบโทเค็น
คำจำกัดความทั่วไปของสแกนเนอร์และ parser ในไฟล์ชื่อ ptokdefs.h และจะพยายาม
เพื่อรวมไฟล์นี้ คุณต้องจัดเตรียมไฟล์นี้ด้วยตัวเองหรือใช้ -d ตัวเลือก
ของ Bison เพื่อสร้างรูปแบบที่เหมาะสมกับไวยากรณ์ (ดู วัวกระทิง(1)). คุณสามารถเปลี่ยน
ชื่อของไฟล์ที่เครื่องสแกนคาดหวังโดยนิยามใหม่ PTOKDEFS_NAME มาโครใน
ส่วนการประกาศของไฟล์โทเค็นที่จัดรูปแบบ ไฟล์ส่วนหัวสำหรับบทคัดย่อ
คลาสพื้นฐานและคลาสย่อยเริ่มต้นอยู่ในไดเร็กทอรีรวมเพรทเซล

ใช้เพรทเซลออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี