简体   繁体   中英

Variable and executable in a shell interpreter

Do you know, how make the difference between variable and executable in a shell interpretor? Because i don't know how i can do that in my lexer. If anyone have an idea ^^

Thanks, Have a nice day

Mathieu

In a normal Posix-style shell, the first "word" in a statement which is not a variable assignment is the command to execute. Variable assignments have the form name=value where there cannot be any whitespace around the = and the name is a valid variable name.

Other than that, and in arithmetic evaluation context (which is not required for basic shells), any use of a variable must be preceded by a $ .

Identifying assignments is contextual, but it is easy to do since the = is mandatory. In a flex-style lexer you could enable and disable assignment recognition with appropriate start conditions, for example.

Without knowing anything more about your strategy for lexical analysis, it's hard to provide a more detailed answer.

If you care about compatibility with Posix shell syntax, the description can be found here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM