این دستور flexml است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
flexml - پردازشگر و برنامه های کاربردی XML اعتبارسنجی را از DTD تولید می کند
خلاصه
flexml [-ASHDvdnLXV] [-sچاقو] [-pشایع] [-iinit_header] [-uURI] [-rریشه ها] [-aاقدامات]
نام[dtd]
شرح
Flexml می خواند name.dtd که باید یک DTD (تعریف نوع سند) باشد که فرمت را توصیف می کند
XML (زبان نشانه گذاری توسعه پذیر) اسناد، و یک XML "تأیید کننده" تولید می کند پردازنده
با یک رابط برای پشتیبانی از XML استفادهس می توان برنامه های کاربردی مناسب تولید کرد
به صورت اختیاری از "فایل های اکشن" ویژه، یا برای پیوند دادن یا ترکیب متنی با
پردازنده
پردازنده تولید شده فقط اسنادی را تأیید می کند که کاملاً با DTD مطابقت دارند.
بدون گسترش itبه طور دقیق تر، ما در عمل قانون XML [28] را به آن محدود می کنیم
[28r] doctypedecl ::= ' '
که در آن "ExternalId" نشان دهنده DTD استفاده شده است. (در واقع می توان گفت که flexml
نشانه گذاری "غیر قابل توسعه" را پیاده سازی می کند. :)
پردازنده تولید شده یک است خم کردن(1) اسکنر، به طور پیش فرض نامگذاری شده است نام.ل با متناظر
فایل هدر C نام.ح برای کامپایل جداگانه برنامه های کاربردی تولید شده به صورت اختیاری
flexml یک را می گیرد اقدامات فایل با اعمال هر عنصر و یک فایل C با عنصر تولید می کند
توابع یک برنامه XML با نقاط ورودی فراخوانی شده از پردازنده XML (می تواند
همچنین برنامه XML را در پردازنده XML تا کنید تا برنامه های XML مستقل بسازید
اما این مانع از اشتراک پردازنده بین برنامه ها می شود).
در "OPTIONS" گزینه های ممکن را لیست می کنیم، در "ACTION FILE FORMAT" نحوه نوشتن را توضیح می دهیم.
برنامه های کاربردی، در "COMPILATION" نحوه کامپایل پردازنده های تولید شده و
برنامهها را در فایلهای اجرایی، و در «BUGS» محدودیتهای فعلی سیستم را فهرست میکنیم
قبل از ارائه مراجع استاندارد
OPTIONS
Flexml گزینه های زیر را می گیرد.
-- مستقل, -A
تولید الف مستقل برنامه اسکنر اگر با -aاقدامات سپس
برنامه به عنوان نامگذاری خواهد شد اقدامات با پسوند جایگزین شده است .l، در غیر این صورت آن را
در خواهد بود نام.ل. درگیری با -S, -Hو -D.
--اقدامات اقدامات, -a اقدامات
استفاده می کند اقدامات فایل برای تولید یک برنامه XML در فایلی با همان نام
اقدامات پس از جایگزینی پسوند با .c. اگر با -A سپس به جای آن
برنامه مستقل شامل توابع عمل خواهد بود.
-- ساختگی [نام برنامه], -D [نام برنامه]
یک برنامه ساختگی با توابع خالی ایجاد کنید تا توسط XML فراخوانی شود
پردازنده اگر نام برنامه در خط فرمان مشخص نشده است، به طور پیش فرض به
name-dummy.c. اگر با -a اقدامات سپس برنامه درج خواهد کرد
اقدامات مشخص شده و به عنوان نامگذاری شود اقدامات با پسوند جایگزین شده است .c.
درگیری با -A; ضمنی توسط -a مگر اینکه یکی از -SHD مشخص شده است.
- رفع اشکال, -d
حالت اشکال زدایی را در اسکنر فلکس روشن می کند و همچنین جزئیات DTD را چاپ می کند
تجزیه و تحلیل انجام شده توسط flexml.
--سرتیتر [header_name], -H [header_name]
فایل هدر را ایجاد کنید. اگر header_name در خط فرمان مشخص نشده است،
پیش فرض به نام.ح. درگیری با -A; اگر هیچ کدام از آنها به طور پیش فرض روشن نیست -SHD مشخص شده.
--lineno, -L
پردازنده XML را می سازد (همانطور که توسط خم کردن(1)) خطوط را در ورودی بشمارید و نگه دارید
برای اقدامات برنامه XML در عدد صحیح "yylineno" در دسترس است. (این خاموش است
به طور پیش فرض به عنوان سربار عملکرد قابل توجه است.)
--ساکت, -q
از پردازشگر XML (همانطور که توسط خم کردن(1)) از گزارش خطای اجرا شده
در stderr. درعوض، کاربران باید برای پیام های خطا با هم جمع شوند
parse_err_msg() عملکرد. به طور پیش فرض، پیام های خطا در stderr نوشته می شود.
-- خشک اجرا شود, -n
"Dry-run": هیچ یک از فایل های خروجی را تولید نکنید.
-- پوبید شایع, -p شایع
نوع سند را با شناسه "PUBLIC" تنظیم می کند شایع به جای "SYSTEM"،
پیشفرض.
--init_header init_header, -i init_header
یک خط حاوی "#include "init_header"" در بخش "%{...%}" در بالای صفحه قرار می دهد.
فایل .l تولید شده این ممکن است برای ساختن «#define» های مختلف انعطاف پذیر، برای
به عنوان مثال "YY_INPUT" یا "YY_DECL".
--سیسید=sysid
شناسه "SYSTEM" DTD پذیرفته شده را لغو می کند. گاهی اوقات وقتی dtd شما مفید است
در یک زیر شاخه قرار داده شده است.
---تگ های ریشه ریشه تگ ها, -r ریشه تگ ها
پردازنده XML را محدود می کند تا فقط اسنادی را با یکی از عناصر ریشه تأیید کند
لیست شده در کاما جدا شده است ریشه تگ ها.
--اسکنر [scanner_name], -S [scanner_name]
اسکنر را تولید کنید. اگر scanner_name در خط فرمان داده نمی شود، پیش فرض آن است
نام.ل. درگیری با -A; اگر هیچ کدام از آنها به طور پیش فرض روشن نیست -SHD مشخص شده.
--اسکل چاقو, -s چاقو
از اسکنر اسکلت استفاده کنید چاقو به جای پیش فرض
--act-bin flexml-act, -T flexml-act
این یک گزینه داخلی است که عمدتاً برای آزمایش نسخه هایی از flexml که هنوز نصب نشده اند استفاده می شود.
- افزایش پشته stack_increment, -b stack_increment
FLEXML_BUFFERSTACKSIZE را روی stack_increment (به طور پیش فرض 100000) تنظیم می کند. این کنترل می کند
پشته داده در هر کدام چقدر رشد می کند realloc().
---برچسب-پیشوند STRING, -O STRING
از STRING برای متمایز کردن چندین نسخه از flexml در یک کد C استفاده کنید، درست مانند
آرگومان انعطاف پذیر -P.
-- uri URI, -u URI
URI DTD مورد استفاده در هدر "DOCTYPE" را روی مقدار مشخص شده تنظیم می کند. URI (
پیش فرض نام DTD است).
-- پرحرف, -v
پرمخاطب باشید: هر اعلان DTD (بعد از گسترش پارامتر) را تکرار کنید.
- نسخه, -V
چاپ نسخه از flexml و خارج شوید.
اقدامات فایل FORMAT
فایلهای اقدام، به -a گزینه، اسناد XML مطابق با DTD هستند
flexml-act.dtd که به شرح زیر است:
عناصر باید به صورت زیر استفاده شوند:
"بالا"
برای کدهای سطح بالای C مانند اعلانات جهانی، توابع ابزار و غیره استفاده کنید.
"شروع"
کد را به عنوان یک عمل به عنصر با نام ""برچسب"" پیوست می کند.
صفت. مؤلفه "%C-code;"" باید کد C باشد که برای گنجاندن در C مناسب باشد
بلوک (یعنی در "{"...}" بنابراین ممکن است حاوی متغیرهای محلی باشد). به علاوه
پسوندهای زیر در دسترس هستند:
"{"صفت"}": می تواند برای دسترسی به مقدار استفاده شود صفت همانطور که با
صفت"="ارزش در تگ شروع در C، "{"صفت"}" تفسیر خواهد شد
بسته به اعلام صفت. اگر مشخصه به صورت an اعلام شود
نوع برشمرده شده مانند
سپس مقدار مشخصه C از نوع شماره گذاری شده با عناصر نوشته شده است
"{"صفت"="alt1"}"، "{"صفت"="alt2"}"، و غیره.؛ علاوه بر این یک تنظیم نشده صفت
دارای "مقدار" "{!"صفت"}". اگر صفت یک شمارش نیست پس
"{"صفت"}" یک رشته C با پایان تهی (از نوع "char*") و "{!"صفت"}"
"NULL" است.
"پایان"
به طور مشابه کد را به عنوان یک عمل به تگ پایان با نام مورد نیاز پیوست می کند
ویژگی ""برچسب""; همچنین در اینجا مولفه "%C-code;"" باید برای کد C مناسب باشد
گنجاندن در بلوک C در صورتی که عنصر دارای محتویات "مخلوط" باشد، یعنی اعلام شده باشد
برای اجازه "#PCDATA"، سپس متغیر زیر در دسترس است:
"{#PCDATA}": حاوی متن ("#PCDATA") عنصر بهعنوان یک C با انتهای تهی است.
رشته (از نوع "char*"). در صورتی که عنصر Mixed contents در واقع متن و
عناصر فرزند سپس "pcdata" شامل الحاق ساده قطعات متن به عنوان
یک رشته
"اصلی"
در نهایت، یک عنصر "اصلی" اختیاری می تواند تابع C "اصلی" XML باشد
کاربرد. معمولاً تابع "اصلی" باید شامل (حداقل) یک فراخوانی باشد
پردازنده XML:
"yylex()": پردازشگر XML تولید شده توسط خم کردن(1) در سند XML یافت شده در
ورودی استاندارد (در واقع دسته فایل "yyin": به دفترچه راهنما مراجعه کنید خم کردن(1) برای
اطلاعاتی در مورد نحوه تغییر این و همچنین نام "yylex").
اگر هیچ اقدام "اصلی" ارائه نشده باشد، از موارد زیر استفاده می شود:
int main() { exit(yylex()); }
توصیه می شود از بخش های XML <"![CDATA[" ... "]]"> برای کد C استفاده کنید تا مطمئن شوید که
همه کاراکترها به درستی به فایل خروجی ارسال می شوند.
در نهایت به این نکته توجه کنید Flexml عناصر خالی را کنترل می کندبرچسب"/"> به عنوان معادلبرچسب><"/"برچسب>.
تلفیقی
در زیر ساخت(1) قطعه فایل نشان می دهد که چگونه می توان کامپایل کرد flexml-برنامه های تولید شده:
# برنامه ها.
FLEXML = flexml -v
# پردازنده XML قابل پیوند با هدر برای برنامه تولید کنید.
%l %h: %dtd
$(FLEXML) $
# منبع C را از اسکنر فلکس تولید کنید.
%c: %l
$(FLEX) -Bs -o"$@" "$<"
# منبع C برنامه XML را برای پیوند با پردازنده ایجاد کنید.
# توجه: وابستگی باید به شکل "appl.c: appl.act proc.dtd" باشد.
%.c: %.
$(FLEXML) -D -a $^
# تولید مستقیم پردازنده + برنامه XML مستقل.
# توجه: وابستگی باید به شکل "appl.l: appl.act proc.dtd" باشد.
%.l: %.
$(FLEXML) -A -a $^
با استفاده از خدمات onworks.net از flexml به صورت آنلاین استفاده کنید