在哪里可以找到 MATLAB 的形式语法?

2024-02-21

我想编写一个词法分析器生成器,将 MATLAB 语言的基本子集转换为 C#、C++ 等。为了帮助我做到这一点,我想找到一个包含 MATLAB 形式语法的文档。花了一些时间调查这一点,Mathworks 似乎没有提供这一点。

有谁知道我在哪里可以找到这样的文档?


这不是完整的语法,但是用于 matlab 的 yacc-keable http://www.angelfire.com/ar/CompiladoresUCSE/images/MATLAB.zip为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
        ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在哪里可以找到 MATLAB 的形式语法? 的相关文章

  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • 在matlab中不使用for循环检查数组中的成员资格

    我想简化这段代码 使其无需 for 循环即可工作 for i 1 N for j 1 N if ismember j A PID i i TFP i j PID i i end end end 其中A是一个包含一些标签的矩阵 我之前存储的T
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 使用简单矩阵乘法时出错

    我在一次简单的乘法运算中偶然发现了一个错误 这让我感到非常惊讶 我一直以为这里发生了什么 只为矩阵乘法 http www mathworks nl help matlab matlab prog operators html x 2 y z
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • Deploytool for MATLAB R2013b 不起作用,发生了什么变化?

    多年来我一直在使用集成deploytool为我的同事创建易于分发的 exe 文件 我几天前安装了R2013b 但无法使用deploytool不再了 尝试打包时的日志文件给出了以下内容 ant
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到

随机推荐

  • 计算该月的最后一天

    如果您提供0 as the dayValue in Date setFullYear你得到上个月的最后一天 d new Date d setFullYear 2008 11 0 Sun Nov 30 2008 参考此行为mozilla ht
  • C++17 多参数包扩展

    我正在尝试映射函数f元组之上t0 t1等返回元组std tuple
  • 如何在R中绘制图形?

    我可以使用以下代码获取 photo11 如何修复我的代码以将 photo1 更改为 photo2 x seq 0 5 0 9 length 200 y dnorm x 0 7 0 0458 plot x y type l xlab my x
  • 如果 python 脚本中包含 Monkeyrunner,则无法使用 raw_input

    我想在我的 python 脚本中输入一些值 我的部分代码是 import os sys subprocess shlex time from com android monkeyrunner import MonkeyRunner impo
  • Laravel 中的 VUE2 组件注册

    Laravel 5 8 和 VUE 一起工作得非常好 但是我的 app js 变得很大 例如 我有以下 app js window Vue require vue window Vue component Comp1 require com
  • 带有 Bluebeam 的 JavaScript 库

    我正在寻找一些信息 参考 示例以及如何在 Bluebeam 中使用 javascript Bluebeam表示可以参考以下AcroForm文档 https www adobe com content dam acom en devnet a
  • 使用 Angular-ui Bootstrap 设置预输入选项

    使用 typeahead 我尝试设置几个选项 这些选项可作为标准 Bootstrap 使用预输入选项 http twitter github io bootstrap javascript html typeahead 使用以下代码 我可以
  • Nasm - 按值和地址访问结构元素

    我最近开始在 NASM 程序集中编码 我的问题是我不知道如何以正确的方式访问结构元素 我已经在这个网站和谷歌上搜索了解决方案 但我看到的每个地方人们都有不同的说法 我的程序崩溃了 我感觉问题出在访问结构上 查看示例代码时 STRUC Tes
  • CoreBluetooth 无法读取固件修订字符串

    我正在尝试检索外围设备的固件修订字符串 当通过应用程序 LightBlue 询问我的外围设备时 我可以查看设备信息 其中包括 制造商名称字符串 固件修订字符串 但是 在我的代码中 我无法发现固件修订字符串的特征 我已经尝试过以下 UUID
  • 不要使用 Proguard 优化特定的类路径

    我尝试在我的 Android 应用程序中实现亚马逊应用内购买 亚马逊人文档 https developer amazon com public apis earn in app purchasing docs code obfuscatio
  • 帮助 Kohana 3 ORM 加快一点速度

    我注意到 当我开始使用它们时 Kohana 3 ORM 会为每个模型运行 显示完整列 SHOW FULL COLUMNS FROM mytable 此查询可能需要几个时钟周期才能执行 在 Kohana 分析器中 它实际上是我当前应用程序中运
  • 避免时间序列一维图中的项目标签重叠 (JFreeChart)

    我正在尝试找到生成带有标签的一维时间图的最佳策略 目前看起来是这样的 问题是 有些时间跨度几乎没有发生什么 而另一些时间跨度则密度很高 我想要实现的是扭曲时间轴以便在密集区域中标签间隔开以避免重叠 或者 我可以想象显示没有轴扭曲的实际数据点
  • JavaScript 时间戳到 Python 日期时间转换

    为了在 JavaScript 中获取时间戳 我们使用 var ts new Date getTime 将其转换为Python的正确方法是什么datetime到目前为止我使用以下代码 gt gt gt jsts 1335205804950 g
  • D 项目的 CMake 或 Waf

    我们正在寻找足够的构建工具 用于用 D 语言 使用 Qt 工具包 编写桌面 GUI 应用程序 由多个本机库组成 使用第 3 方 C lib 它必须在 Linux 本机开发 和 Mac 以及 Windows 上构建 我们可能会采用代码 块 h
  • 按照约定使用接口拦截器进行 Unity 注册会导致“[type] 不可拦截”异常

    我想将所有实现特定接口的类注册到 Unity 中WithMappings FromMatchingInterface习俗 此外 我希望使用接口拦截行为来拦截所有已注册的对象 问题是 Unity 还会注册具体类之间的映射 当解析这些类时 会抛
  • e(fx)clipse javafx的导入无法解析

    嘿 我刚刚为 eclipse 安装了 e fx clipse 插件并创建了一个新的 JavaFX 项目 问题是所有 javafx 导入都无法解析 即使库似乎位于构建路径中 以下是一些屏幕截图 可以向您展示我的意思 有人知道我做错了什么吗 通
  • 如何使用“godoc”生成 HTML 文档?

    我编写了一个小型 go 程序 我想从源代码生成独立的 HTML 文档 无需 godoc 服务器即可查看 但我找不到任何方法来实现它 如果有人可以帮助我 我将不胜感激 可以通过以下方式生成更好的形式 godoc url http localh
  • Travis-CI 跳过部署,尽管已标记“提交”

    我对 Travis CI 还很陌生 但我使用他们的文档找到了解决方法 然而 部署到 GitHub 版本对我来说不起作用 我的 travis yml文件看起来像这样 language java branches only master not
  • 窗口关闭时停止模式(Cocoa)

    我当前正在使用以下代码显示模式窗口 NSApplication sharedApplication runModalForWindow mainWindow 但是 当我关闭此窗口时 其他窗口仍然处于非活动状态 我如何运行stopModal使
  • 在哪里可以找到 MATLAB 的形式语法?

    我想编写一个词法分析器生成器 将 MATLAB 语言的基本子集转换为 C C 等 为了帮助我做到这一点 我想找到一个包含 MATLAB 形式语法的文档 花了一些时间调查这一点 Mathworks 似乎没有提供这一点 有谁知道我在哪里可以找到