मैं एक lexer जनरेटर मुझे ऐसा करने में मदद करने के सी #, सी ++, आदि के लिए Matlab भाषा का एक बुनियादी सबसेट कन्वर्ट करने के लिए लिखने के लिए चाहते हैं, मैं matlab के लिए औपचारिक व्याकरण युक्त एक दस्तावेज प्राप्त करना चाहते हैं। इसकी जांच करने में थोड़ी देर बिताई, ऐसा लगता है कि गणित एक प्रदान नहीं करते हैं। क्या कोई जानता है कि मुझे ऐसा दस्तावेज़ कहां मिल सकता है?मैटलैब के लिए औपचारिक व्याकरण कहां मिल सकता है?
उत्तर
बहुत बढ़िया अवसर अपनी खुद की औपचारिक व्याकरण :)
आप व्याकरण अपने आप को लिखने के लिए चुनना चाहिए, तो मैं BNFC सिफारिश कर सकते हैं जो एक औपचारिक BNF व्याकरण लेने के लिए और एक के लिए डाटा संरचनाओं और lexers/पारसर्स निर्माण कर सकते हैं लिखने के लिए लक्षित भाषाओं में से कुछ (सी/सी ++, सी #, जावा, हास्केल इत्यादि)। यह आपको बहुत समय बचाएगा और आपको व्याकरण तैयार करने पर ध्यान केंद्रित करेगा, और उसके बाद वरीयता की अपनी भाषा में कनवर्टर को लागू करने का अधिकार प्राप्त करें।
और कुछ नहीं करते हैं, तो BNFC के लिए लिंक कुछ मदद और कैसे एक BNF व्याकरण तैयार करने के लिए संकेतों के शामिल हैं। शुभकामनाएँ!
सलाह के लिए धन्यवाद, मैं एक नज़र रखूंगा। मैं fslex और fsyacc का उपयोग करने के बारे में सोच रहा था। –
यह पूरा व्याकरण लेकिन yacc-keable for matlab इस से वर्ष 2000 में एक संकलक पाठ्यक्रम के लिए प्रदान नहीं की है, तो आप आसानी BNF और EBNF बना सकते हैं।
primary_expression
: IDENTIFIER
| CONSTANT
| STRING_LITERAL
| '(' expression ')'
| '[' ']'
| '[' array_list ']'
;
postfix_expression
: primary_expression
| array_expression
| postfix_expression TRANSPOSE
| postfix_expression NCTRANSPOSE
;
index_expression
: ':'
| expression
;
index_expression_list
: index_expression
| index_expression_list ',' index_expression
;
array_expression
: IDENTIFIER '(' index_expression_list ')'
;
unary_expression
: postfix_expression
| unary_operator postfix_expression
;
unary_operator
: '+'
| '-'
| '~'
;
multiplicative_expression
: unary_expression
| multiplicative_expression '*' unary_expression
| multiplicative_expression '/' unary_expression
| multiplicative_expression '\\' unary_expression
| multiplicative_expression '^' unary_expression
| multiplicative_expression ARRAYMUL unary_expression
| multiplicative_expression ARRAYDIV unary_expression
| multiplicative_expression ARRAYRDIV unary_expression
| multiplicative_expression ARRAYPOW unary_expression
;
additive_expression
: multiplicative_expression
| additive_expression '+' multiplicative_expression
| additive_expression '-' multiplicative_expression
;
relational_expression
: additive_expression
| relational_expression '<' additive_expression
| relational_expression '>' additive_expression
| relational_expression LE_OP additive_expression
| relational_expression GE_OP additive_expression
;
equality_expression
: relational_expression
| equality_expression EQ_OP relational_expression
| equality_expression NE_OP relational_expression
;
and_expression
: equality_expression
| and_expression '&' equality_expression
;
or_expression
: and_expression
| or_expression '|' and_expression
;
expression
: or_expression
| expression ':' or_expression
;
assignment_expression
: postfix_expression '=' expression
eostmt
: ','
| ';'
| CR
;
statement
: global_statement
| clear_statement
| assignment_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
;
statement_list
: statement
| statement_list statement
;
identifier_list
: IDENTIFIER
| identifier_list IDENTIFIER
;
global_statement
: GLOBAL identifier_list eostmt
;
clear_statement
: CLEAR identifier_list eostmt
;
expression_statement
: eostmt
| expression eostmt
;
assignment_statement
: assignment_expression eostmt
;
array_element
: expression
| expression_statement
;
array_list
: array_element
| array_list array_element
;
selection_statement
: IF expression statement_list END eostmt
| IF expression statement_list ELSE statement_list END eostmt
| IF expression statement_list elseif_clause END eostmt
| IF expression statement_list elseif_clause
ELSE statement_list END eostmt
;
elseif_clause
: ELSEIF expression statement_list
| elseif_clause ELSEIF expression statement_list
;
iteration_statement
: WHILE expression statement_list END eostmt
| FOR IDENTIFIER '=' expression statement_list END eostmt
| FOR '(' IDENTIFIER '=' expression ')' statement_list END eostmt
;
jump_statement
: BREAK eostmt
| RETURN eostmt
;
translation_unit
: statement_list
| FUNCTION function_declare eostmt statement_list
;
func_ident_list
: IDENTIFIER
| func_ident_list ',' IDENTIFIER
;
func_return_list
: IDENTIFIER
| '[' func_ident_list ']'
;
function_declare_lhs
: IDENTIFIER
| IDENTIFIER '(' ')'
| IDENTIFIER '(' func_ident_list ')'
;
function_declare
: function_declare_lhs
| func_return_list '=' function_declare_lhs
;
डेव विनगेट कुछ Antler संसाधन है कि एक शानदार जगह शुरू करने के लिए की तरह लग रहे प्रदान करता है। जैसा कि उसकी रीडमे फ़ाइल में उल्लेख किया गया है, इसमें ट्रांज़ेप ऑपरेटर और कुछ अन्य मुश्किल पार्स शामिल नहीं हैं।
http://web.mit.edu/~wingated/www/resources.html
मैटलैब (1999) के पिछले संस्करणों की मुश्किल बिट्स से कुछ भी नॉर्थवेस्टर्न से एक समूह द्वारा एक दस्तावेज में वर्णित हैं: mparser लिंक यहाँ देखें। इसमें ईबीएनएफ-जैसे विवरण शामिल हैं। यह कुछ फुटनोट्स में कुछ गंदे बिट्स को भी रेखांकित करता है।
http://www.ece.northwestern.edu/cpdc/pjoisha/MAGICA/CPDC-TR-9909-017.pdf
मैं अन्य कम प्रासंगिक स्रोतों में से एक जोड़े को एकत्र किया है, लेकिन stackoverflow के संपादक बॉट मुझसे कहता है मैं काफी प्रतिष्ठा बिंदु दो से अधिक लिंक पोस्ट करने की जरूरत नहीं है।
आप MATLAB अनुकूल शुरू कर सकते हैं -> अजगर कनवर्टर smop
है जो अपने आप पायथन में लिखा है। यह PLY (पायथन lex
- yacc
) का उपयोग करता है। lexer.py और parse.py से शुरू होने वाली फ़ाइलों में आप रुचि रखते हैं।
MATLAB से अजगर को कन्वर्टर्स की सूची के लिए भी this answer देखें।
- 1. पर्ल प्रोग्रामिंग भाषा के लिए मुझे औपचारिक व्याकरण कहां मिल सकता है?
- 2. मुझे सी # 3.0 व्याकरण कहां मिल सकता है?
- 3. मुझे सी 0 9 0 और सी 99 के लिए स्पष्ट व्याकरण कहां मिल सकता है?
- 4. ईबीएनएफ सीखने के लिए मुझे सामग्री कहां मिल सकती है?
- 5. मुझे अजगर के लिए ओपनसीवी कहां मिल सकता है?
- 6. क्लैंग के लिए मुझे ट्यूटोरियल कहां मिल सकता है?
- 7. मुझे पाइथन के लिए vtk दस्तावेज़ कहां मिल सकता है?
- 8. मुझे विंडोज़ के लिए libsmi 64bit कहां मिल सकता है?
- 9. मुझे रिशेर्पर के लिए प्लग-इन कहां मिल सकता है?
- 10. वेबड्राइवर के लिए फ़ायरफ़ॉक्स ड्राइवर कहां मिल सकता है?
- 11. मुझे System.Numerics.BigInteger के लिए स्रोत कोड कहां मिल सकता है?
- 12. मीडियाविकी के लिए टेम्पलेट्स कहां मिल सकता है?
- 13. मुझे हास्केल के लिए पूर्ण पेरेंटिज़र कहां मिल सकता है?
- 14. मुझे डेल्फी के लिए मानचित्र नियंत्रण कहां मिल सकता है?
- 15. ब्लूज़ के लिए मुझे कुछ दस्तावेज कहां मिल सकता है?
- 16. मुझे NHibernate ISession.Persist() के लिए दस्तावेज़ कहां मिल सकता है?
- 17. मुझे System.Web.Optimization के लिए स्रोत कहां मिल सकता है?
- 18. मुझे नवीनतम माइक्रोसॉफ्ट.एक्सचेंज.WebServices.DLL कहां मिल सकता है?
- 19. मुझे TableDiff.exe कहां मिल सकता है?
- 20. ज़ोटोनिक- एक क्विकस्टार्ट कहां मिल सकता है
- 21. मुझे libpq स्रोत कहां मिल सकता है?
- 22. मुझे jsdom दस्तावेज़ीकरण कहां मिल सकता है?
- 23. मुझे diff एल्गोरिदम कहां मिल सकता है?
- 24. मुझे System.Linq.Dynamic dll कहां मिल सकता है?
- 25. मुझे MysqlDumpSlow कमांड कहां मिल सकता है?
- 26. मुझे पैकेज javax.media.opengl कहां मिल सकता है?
- 27. मुझे WSDL.exe कहां मिल सकता है?
- 28. मुझे SilverlightUIAutomationHelper.dll कहां मिल सकता है?
- 29. मुझे एमडीबीजी कहां मिल सकता है?
- 30. मुझे GACUtil कहां मिल सकता है?
मुझे दृढ़ता से संदेह है कि गणित Matlab के लिए औपचारिक व्याकरण परिभाषित नहीं करता है। मैं इसके जवाब के लिए देखता हूँ। –
ऑक्टवे Matlab के व्याकरण parses। हो सकता है कि वे पहले से ही क्या कर रहे हैं। –
ऑक्टेव स्रोत में [lex फ़ाइल] (http://hg.savannah.gnu.org/hgweb/octave/file/c1f9b54350f9/src/lex.ll) सहायक है। मुझे एक [एंटील पार्सर] भी मिला है (http://www.antlr.org/pipermail/antlr-interest/2011- सितंबर 0445151.html) जो मैटलैब को सी और जावा में परिवर्तित करता है। –