זהו תגי הפקודה שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
otags - יצירת קבצי תגים עבור emacs ו-vi/vim ממקורות OCaml
תַקצִיר
אוטאגים [STATIC-OPTION] ... [קובץ] ... [DYNAMIC-OPTION] ... [קובץ]...
תיאור
אוטאגים מייצר תגיות קבצים עבור Emacs ו תיוגים קבצים עבור vi/מֶרֶץ לתת לעורכים האלה את
היכולת לקפוץ ישירות להגדרות פונקציות וערכים (שימוש M-. ב-Emacs ו ^] in
vi[m] עם הסמן על הסמל).
אוטאגים שימושים camlp4 לניתוח. זה מדויק יותר מתיוג מבוסס ביטוי רגיל.
על החיסרון, אוטאגים יכול לתייג רק קבצים נכונים תחבירית. יתר על כן, אוטאגים is
Ocaml גרסה ספציפית: מקורות שיש להידור איתם Ocaml גרסה שי יכול, באופן כללי,
להיות מתויג רק עם אוטאגים גרסה שי.
אוטאגים יכול לתייג את כל הקבצים ש camlp4 יכול לנתח. כְּלַפֵּי פְּנִים אוטאגים שומר א נוֹכְחִי מנתח
רשימה שניתן לשנות עם האפשרויות -מחשב (נקה רשימה), -אבא (הוסף לרשימה), ו -יחסי ציבור
(איפוס לברירת המחדל). ערך ברירת המחדל של נוֹכְחִי מנתח רשימה תואם לתקן
Ocaml תחביר (המכיל את המנתחים r ו o, ראה הרחבות ניתוח סטנדרטיות של CAMLP4
לְהַלָן). כל קובץ מקור מנותח עם a camlp4 מנתח שלתוכו כל תוספות הניתוח
מ נוֹכְחִי מנתח רשימה הועלו. ה camlp4 מנתחים סטנדרטיים מקושרים לתוך
אוטאגים ואם ה נוֹכְחִי מנתח רשימה מכיל רק מנתחים כאלה ואז מודול הניתוח הוא
לבנות פנימית. אחרת חיצונית camlp4 תהליך מתחיל.
אוטאגים מתייג את כל הפריטים ברמה העליונה במבנים ובחתימות, כולל אופרטורים של אינפיקס ו
מודולים וחתימות מקוננות. זה גם מתייג משתני מופע ושיטות במחלקות ו
סוגי כיתה. שמות קבצים קובץ בשורת הפקודה מנותחים כממשקים אם יש להם א
.mli סיומת וכמימושים אם יש להם א .ml סִיוֹמֶת. (ראה גם את הדינמיקה
אפשרויות -intf ו -impl.)
אוטאגים יכול לתייג את כל הקבצים בעץ ספריות (אם אפשרות -r נתון). קבצים שכן
נוצר באמצעות ocamllex or ocamlyacc או שדורשים עיבוד מקדים עם camlp4 מאקרו
עם זאת, על מנתח להיות מתויג באותה ספרייה שבה הפעלו הכלים הללו.
זה בגלל שהקו מנחה את זה ocamllex ו ocamlyacc להכניס לקבצים שנוצרו
הם יחסית לספריית העבודה הנוכחית של תהליך היצירה. בשביל ה camlp4
מאקרו מנתח א לִכלוֹל ההנחיה עשויה להיפתר ביחס לעבודה הנוכחית
ספרייה של camlp4 תהליך. לכן, אם אתה מתייג קבצים כאלה מתוך אחר
ספרייה תקבל הודעת שגיאה.
כאשר מתייגים עצי ספרייה שלמים באופן רקורסיבי, ניתן לציין חריגים מה-
נוֹכְחִי מנתח רשימה בקובץ רמז מנתח או עץ ספריות, ראה אפשרות -מנתח-רמזים ו
ניתוח קבצי רמזים למטה.
קובצי תג יכולים להכיל שמות קבצים מוחלטים ו/או יחסיים. Otags משתמש בשמות הקבצים מ
שורת הפקודה עבור קובץ התגים. ציון שמות קבצים יחסיים בשורת הפקודה
לכן ייתן לך קובץ תג עם שמות קבצים יחסיים. ברור, קובץ תג עם
שמות קבצים יחסיים יפעלו רק אם הם נמצאים בספרייה שבה אוטאגים היה
התחיל. Otags תומך בכתיבת קובץ תגים עם שמות קבצים יחסיים בהורה
ספרייה באמצעות אפשרות -הוסף-נתיב, ראה דוגמאות למטה.
סטטיסטי אפשרויות
אפשרויות סטטיות משפיעות על כל הפעלת התוכנית, ללא קשר למיקומן ב-
שורת הפקודה.
-r ירידה לתוך ספריות. עם אפשרות זו, אם אחד מה קובץ טיעונים הוא א
בספרייה אוטאגים יתייג באופן רקורסיבי את כל הקבצים בכל עץ הספריות הזה.
קובץ -o
כתוב תגים ל פילה. ברירת המחדל היא תגיות (ל Emacs) ו תיוגים ל vi (אם -vi
ניתנת אפשרות) בספרייה הנוכחית. אם פילה הוא מקף ( - ) התגים הם
כתוב לפלט סטנדרטי.
-a הוסף לקובץ TAGS קיים (עובד רק עבור קבצי TAGS של emacs).
-vi צור תגים עבור vi ושנה את קובץ הפלט המוגדר כברירת מחדל ל תיוגים.
-I dir הוסף ספריית dir ל- camlp4 נתיב חיפוש עבור קבצי אובייקט עבור חיצוני camlp4
ניתוח שיחות.
נתיב -add-path
להוסיף נתיב בחלק הקדמי של כל שם קובץ יחסי בקובץ התגים. שימושי מתי
אתה רוצה לשים את קובץ התגים בספריית אב.
קובץ -parser-hints
החל את רמזי המנתח בעץ הקובץ או הספריות שצוין. בְּכָל פַּעַם אוטאגים תיוגים
קובץ שמופיע בקובץ רמזים למנתח, הוא משתמש במנתחים שצוינו שם
במקום ה נוֹכְחִי מנתח רשימה, ראה קובצי רמז לניתוח להלן. אפשרות זו יכולה
ניתן מספר פעמים לעיבוד מספר קבצי רמז. אם פילה הוא מדריך אז
כל הקבצים בעץ זה מעובדים כקבצי רמזים למנתח.
-הפך
גרסת הדפסה ויציאה.
-v מילולית. הדפס את שמות הקבצים כפי שהם מנותחים ואת שורות הפקודה עבור חיצוני
החל camlp4 תהליכי ניתוח (אם יש). אם -v הוא ארגומנט שורת הפקודה הראשון
עקיבות אחוריות עבור חריגים מופעלות ומודפסות אם יוצא חריג ו
מסתיים אוטאגים (שנחשב לבאג שעליו אני אשמח לבאג
להגיש תלונה).
-ש תהיה בשקט.
-עזרה הדפס את רשימת האפשרויות.
--עזור כינוי עבור עזרה
דינמי אפשרויות
אפשרויות דינמיות משפיעות רק על ארגומנטים שעוקבים אחריהם בשורת הפקודה.
-intf FILE
נתח ותייג קובץ כממשק.
-impl FILE
נתח ותייג קובץ כיישום.
-pc נקה את נוֹכְחִי מנתח רשימה.
-פא מנתח
להוסיף מנתח אל ה נוֹכְחִי מנתח רשימה. אם מנתח אינו אחד מהסטנדרטים
מנתחים שמופצים עם camlp4 לאחר מכן מנותחים את הקבצים הבאים
נפרד camlp4 תהליך(ים). מנתח חייב להתקבל על ידי camlp4 -מנתח, כלומר,
זה חייב להיות שם מנתח camlp4 רגיל או קובץ קוד בתים (.cmo) או ספריה
(.cma).
-p אפס את נוֹכְחִי מנתח רשימה לערך ברירת המחדל שלו (נתח תקן Ocaml לְלֹא
הרחבות).
-pp הדפס את נוֹכְחִי מנתח רשימה.
-חיצוני
להכריח אוטאגים כדי לנתח את כל הקבצים הבאים עם חיצוני camlp4 התהליך.
-מתמחה
עבור חזרה לניתוח פנימי (ברירת מחדל).
ניתוח הצבעים קבצים
קבצי רמזים לניתוח הם קבצי טקסט פשוטים המציינים מנתחים עבור קבצים מסוימים. זה
שימושי בעת תיוג רקורסיבי עם אפשרות -r. הנה דוגמה לכמה קבצים מ
מה היא Ocaml הפצה:
oq:
camlp4/examples/parse_files.ml
o rq g:
camlp4/examples/macros.ml
camlp4/examples/arith.ml
rf ניפוי באגים:
camlp4/Camlp4Bin.ml
camlp4/mkcamlp4.ml
camlp4/camlp4prof.ml
camlp4/camlp4prof.mli
הפורמט של קבצי רמז מנתח הוא כדלקמן. שורות ריקות ושורות המתחילות ב-``#''
מתעלמים. קובץ רמזים למנתח מורכב ממספר שרירותי של מקטעים. כל סעיף
מתחיל עם קו נקודתיים המסתיים המציין את המנתח לשימוש עם רווח
רשימה מופרדת של שמות מנתח (כמו אלה שמקובלים באופציה -אבא). שאר ה-
החלק מכיל שמות קבצים, אחד בכל שורה. מתעלמים מהמרחב הלבן המוביל והנגרר.
דוגמאות
תג כמה קבצים in מה היא מְקוֹרִי ו כמה in מה היא מתוקן תחביר:
אוטאגים original.ml -מחשב -אבא r revised.ml -יחסי ציבור original.ml
השמיים -מחשב נחוץ כי, עבור camlp4, המקורי Ocaml תחביר הוא הרחבה של
תחביר מתוקן. לכן, ברירת המחדל נוֹכְחִי מנתח רשימה מכיל את המנתח r כְּבָר
והוספה r לא ישנה את נוֹכְחִי מנתח רשימה.
תג קבצים עם ציטוטים (תחביר מארח מקורי ותחביר ציטוט מתוקן):
אוטאגים -אבא rq qotation.ml
תג קבצים זֶה להשתמש מה היא sexplib סיומת:
אוטאגים -I /usr/lib/ocaml/type-conv -I /usr/lib/ocaml/sexplib -אבא pa_type_conv.cmo
-אבא pa_sexp_conv.cmo use_sexp.ml
השמיים -I אפשרויות מציינים את המדריכים שבהם pa_type_conv.cmo ו pa_sexp_conv.cmo יש לו
ממוקם על המערכת.
תג קבצים in a ספריית משנה שמירה מה היא תיוגים פילה in הורה בספרייה
cd subdir; אוטאגים -o ../TAGS -הוסף-נתיב subdir ...
הליך מסובך זה נחוץ רק אם יש בפנים קבצים subdir עם קו
הנחיות המכילות שמות קבצים יחסיים (לדוגמה, שנוצרו על ידי ocamllex or
ocamlyacc רץ פנימה subdir) וכאשר יש ספריות משנה אחרות שהחומר שלהן
צריך להוסיף ל ../TAGS. אם אין קבצים עם הנחיות קו יחסי אפשר
פשוט השתמש ב"אוטאגים -r" בספרייה המכילה subdir. אם אין אחרים
ספריות משנה שאפשר להכניס אליהן את קובץ התגים subdir מבלי להשתמש ב-o או ב-add-path.
תקן CAMLP4 ניתוח הרחבות
כרגע אין תיעוד על השמות והכינויים המתייחסים לתקן camlp4
ניתוח מודולים. כמו כן התלות בין אותם מודולים היא לרוב לא מתועדת. ה
המקור היחיד למידע הוא הקובץ camlp4/Camlp4Bin.ml ב Ocaml הפצה.
הרשימה הבאה מתארת את המזהים ש camlp4 -מנתח מטפל באופן ספציפי. זֶה
לכן היא רשימת הסטנדרטים camlp4 מנתחים. עבור מזהים אלה המקרה אינו
משמעותי (הם עוברים דרך צינור מחרוזת. אותיות קטנות לפני ההתאמה). התלות
המפורטים כאן מטופלים באופן אוטומטי על ידי camlp4 ו אוטאגים.
r, ocamlr, מתוקן, pa_r.cmo, camlp4ocamlrevisedparser.cmo
תחביר מתוקן ללא מנתחי זרמים.
rr, מחדש, ocaml נטען מחדש, camlp4ocamlreloadedparser.cmo
וריאנט של התחביר המתוקן (שימוש לא ידוע).
o, ocaml, pa_o.cmo, camlp4ocamlparser.cmo
תחביר מקורי ללא מנתחי זרמים. תלוי במנתח r.
rp, rparser, pa_rp.cmo, camlp4ocamlrevisedparserparser.cmo
תחביר מתוקן עם מנתחי זרמים. (ראה באג מס' 5134 עבור OKaml 3.12.0 ומעלה.)
תלוי במנתח r.
op, מנתח, pa_op.cmo, camlp4ocamlparserparser.cmo
תחביר מקורי עם מנתחי זרמים. תלוי במנתח r, o, rp
g, דקדוק, pa_extend.cmo, pa_extend_m.cmo, camlp4grammarparser.cmo
הרחבות דקדוק.
m, מאקרו, pa_macro.cmo, camlp4macroparser.cmo
מאקרו ותנאים.
q, camlp4quotationexpander.cmo
ציטוטים רפלקטיביים. תוסף ניתוח זה לוקח את תחביר המארח הנוכחי ו
מוסיף מרחיבי ציטוטים תוך שימוש בתחביר הנוכחי כך שהדקדוק המתקבל
הוא משקף: שינוי תחביר המארח לאחר מכן משפיע גם על הציטוט
תחביר. תלוי במודול Camlp4QuotationCommon (תשתית הצעות מחיר נפוצה).
rq, q_mlast.cmo, camlp4ocamlrevisedquotationexpander.cmo
ציטוטים מתוקנים. מוסיף ציטוטים בתחביר המתוקן. מארח והצעת מחיר
הניתוח נשאר עצמאי. תלוי במודול Camlp4QuotationCommon (מְשׁוּתָף
תשתית הצעת מחיר).
oq, camlp4ocamloriginalquotationexpander.cmo
OCAml מקורי עם ציטוטים מקוריים. טוען Ocaml מקורי (ללא זרם
מנתחים) כתחביר מארח וכתחביר ציטוטים. תחביר מארח והצעות מחיר הם
עצמאי (לא רפלקטיבי). תלוי במנתח ocamlr, ocaml ומודול
Camlp4QuotationCommon
rf מתוקן מלא. מגדיר תחביר מתוקן עם מנתחי זרם, הרחבות דקדוק, רשימה
הבנה ופקודות מאקרו ומוסיף ציטוטים רפלקטיביים. תלוי ב
מנתחים/מודולים r, rp, Camlp4QuotationCommon, q, g, comp, m.
of מקורי מלא. מגדיר את ה-OCaml המקורי עם מנתחי זרם, הרחבות דקדוק, רשימה
הבנה ופקודות מאקרו ומוסיף ציטוטים רפלקטיביים (כלומר, ציטוטים מופיעים
תחביר מקורי). (ראה באג מס' 5129 עבור OKaml 3.12.0 ומעלה.) תלוי ב
מנתחים/מודולים r, o, rp, op, Camlp4QuotationCommon, q, g, comp ו m.
comp, camlp4listcomprehension.cmo
רשימת הבנת הנקרא.
באגים, camlp4debugparser, camlp4debugparser.cmo
איתור באגים בהצהרות באגים ו camlp4_debug. הרחבת ההצהרות הללו
תלוי בערך של משתנה הסביבה STATIC_CAMLP4_DEBUG כזה שגם
ערכי התג שנוצרו עשויים להיות תלויים במשתנה זה.
דיאגנוסטיקה
שגיאות ניתוח מדווחות עם רגיל camlp4 הודעות שגיאה. לא נוצרות תגים עבור
קבצים שמייצרים שגיאות. התיוג ממשיך עם הקובץ הבא, במקרה זה.
השגיאה "מקורי לא זמין" מדווחת אם הקובץ שאליו שורה
לא ניתן למצוא הפניות להנחיה. זה עלול לקרות אם אוטאגים מתחיל אחרת
ספרייה מאשר התוכנית שיצרה את הקובץ הפגום.
Otags קיים עם "רשימת מנתח ריקה עבור ..." כאשר מנסים לעבד קובץ עם an
ריק נוֹכְחִי מנתח רשימה. זה קורה כאשר לא -אבא האופציה הבאה -מחשב.
Otags מדפיס "הנחיה ברמה העליונה נמצאה ב... דלג על קובץ." עבור קבצים המכילים רמה גבוהה
הנחיות. הבעיה היא שמידע המיקום בעץ התחביר המופשט הוא
שגוי לאחר הנחיות ברמה העליונה, ראה באג מס' 5127.
בריחה חריגים וקביעות שמסתיימות אוטאגים נחשבים כבאגים. אם הם
להתרחש, אנא השתמש באפשרות -v as ראשון מתג שורת הפקודה כדי לקבל מעקב חריג לאחור
ושלח את זה עם כל המידע הרלוונטי כדוח באג.
יְצִיאָה סטָטוּס
0 הכל הלך כשורה
1 אירעה שגיאת ניתוח או שגיאה אחרת ו אוטאגים דילג על הקובץ המושפע
2 נגרמה שגיאה קטלנית אוטאגים להפיל
3 באג כלשהו גרם להתרסקות, שממנו אוטאגים יכול היה להתאושש רק באופן שולי
ידוע בעיות
השמיים camlp4 ו Ocaml מנתחים נבדלו תמיד בדרכים עדינות. הֲכָנָה camlp4 בלתי תלוי ב
Ocaml החמיר את הבעיה. camlp4 גרסה 4.02.3 מקבלת רק מעט מאוד תכונות. זה
לא מקבל חסימה או תכונות עצמאיות (אלה עם [@@ ו [@@@) או צמתי הרחבה (
[% or [%%). Otags לכן נכשל בכשלים רבים מה Ocaml ספרייה סטנדרטית.
MISSING מאפיינים
הוספה לקובצי vi tags מחייבת לקרוא מחדש את קובץ התגים הקיים, כי תגי vi
הקבצים ממוינים.
שאינו עולה בקנה אחד camlp4 עצי תחביר (מחוץ camlp4 תהליכי ניתוח) מזוהים
עם מספרי קסם. עם זאת, לא תואם camlp4 ככל הנראה ימות כאשר הוא ינסה לטעון
מה היא אוטאגים ספציפי camlp4 מדפסת. שגיאות מטעין דינמיות קטלניות כאלה מטופלות כמו
שגיאות ניתוח, כי camlp4 מייצר את אותו סטטוס יציאה בשני המקרים.
קרדיטים
Cuihtlauac Alvarado וז'אן-פרנסואה מונין היו הראשונים לנצל camlp4 לתיוג
Ocaml קבצים. גרסה זו היא שכתוב מלא, המבוסס על הגרסה החדשה camlp4 החל מ- Ocaml
גרסה 3.10 ואילך.
השתמש ב-otags באופן מקוון באמצעות שירותי onworks.net