我收到错误消息"权限被拒绝"当我运行此代码时。这个错误是由我的Mac上的权限引起的还是因为代码?我使用了与MSDN相同的示例。
static void Main(string[] args)
{
Process.Start("readme.txt");
};
答案 0 :(得分:2)
Process.Start("open", "readme.txt")
接受可执行文件或文档的名称。根据{{3}}:
文件名不需要表示可执行文件。它可以是扩展名与系统上安装的应用程序关联的任何文件类型。例如,如果您将文本文件与编辑器(如记事本)关联,则文件名可以具有.txt扩展名;如果您具有带有文字处理工具的关联.doc文件(如Microsoft Word),则文件名可以具有.doc。
此描述可能仅限于Windows平台。我猜想macOS上的实现仅限于运行docs个文件。
如果您想使用MacOS的默认编辑器,那么您应该可以按如下方式运行它:
open
请记住,%{
#include<stdio.h>
#include<stdlib.h>
int regs[30];
%}
%token NUMBER LETTER
%left PLUS MINUS
%left MULT DIV
%%
prog: prog st | ; //when I remove this line the error goes
st : E {printf("ans %d", $1);}| LETTER '=' E {regs[$1] = $3; printf("variable contains %d",regs[$1]);};
E : E PLUS E{$$ = $1 + $3;} //addition
| E MINUS E{$$ = $1 - $3 ;} //subtraction
| MINUS E{$$ = -$2;}
| E MULT E{$$ = $1 * $3 ;}
| E DIV E { if($3)$$= $1 / $3; else yyerror("Divide by 0");}
/*|LBRACE E RBRACE{$$= $2;}
| RBRACE E LBRACE{yyerror("Wrong expression");} */
| NUMBER {$$ = $1;}
| LETTER {$$ = regs[$1];}
;
%%
int main(void)
{
printf("Enter Expression: ");
yyparse();
return 0;
}
int yyerror(char *msg)
{
printf("%s", msg);// printing error
exit(0);
}
是一个特定于MacOS的实用程序,因此无法在其他操作系统上运行。