init
This commit is contained in:
171
syntax/dockerfile.jsf
Normal file
171
syntax/dockerfile.jsf
Normal file
@@ -0,0 +1,171 @@
|
||||
# Barebones Dockerfile syntax for JOE. Doesn't handle more sophisticated sh syntax.
|
||||
|
||||
=Idle
|
||||
=Command +Statement +Keyword
|
||||
=Comment
|
||||
=Constant
|
||||
=String +Constant
|
||||
=Ident
|
||||
=Escape
|
||||
=Brace
|
||||
=StringEscape +Escape
|
||||
=Variable +DefinedIdent
|
||||
|
||||
# Start of line is special
|
||||
:start Idle
|
||||
* idle
|
||||
" \t" start
|
||||
"#" comment noeat
|
||||
"A-Za-z" command buffer noeat
|
||||
"\n" start
|
||||
|
||||
# Comments between commands
|
||||
:comment Comment comment
|
||||
* comment
|
||||
"BFHNTX" comment noeat call=comment_todo.comment_todo()
|
||||
"\n" start
|
||||
|
||||
# Comments in the middle of a command
|
||||
:comment_idle Comment comment
|
||||
* comment_idle
|
||||
"\n" idle
|
||||
|
||||
# Start of line in the middle of "idle" mode (skips command recognition in case a comment
|
||||
# comes in the middle of a RUN)
|
||||
:start_idle Idle
|
||||
* idle noeat
|
||||
"#" comment_idle recolor=-1
|
||||
|
||||
# Generic middle-of-a-command
|
||||
:idle Idle
|
||||
* idle
|
||||
"$" idle recolor=-1 call=.variable()
|
||||
"\n" start
|
||||
"\\" escape recolor=-1
|
||||
|
||||
:escape Escape
|
||||
* idle recolor=-2 noeat
|
||||
"\\\"" idle
|
||||
"\r" escape
|
||||
"\n" start_idle
|
||||
|
||||
:command Idle
|
||||
* idle noeat istrings
|
||||
"FROM" from
|
||||
"MAINTAINER" string_command
|
||||
"RUN" list_command
|
||||
"CMD" list_command
|
||||
"LABEL" label
|
||||
"EXPOSE" generic_command
|
||||
"ENV" generic_command
|
||||
"ADD" list_command
|
||||
"COPY" list_command
|
||||
"ENTRYPOINT" list_command
|
||||
"VOLUME" list_command
|
||||
"USER" string_command
|
||||
"WORKDIR" string_command
|
||||
"ARG" generic_command
|
||||
"ONBUILD" generic_command
|
||||
"STOPSIGNAL" generic_command
|
||||
done
|
||||
"a-zA-Z" command
|
||||
|
||||
# EXPOSE, ENV, ARG, ONBUILD, STOPSIGNAL
|
||||
:generic_command Command
|
||||
* idle
|
||||
|
||||
# MAINTAINER, USER, WORKDIR
|
||||
:string_command Command
|
||||
* string_command_data
|
||||
|
||||
:string_command_data Constant
|
||||
* string_command_data
|
||||
"$" string_command_data recolor=-1 call=.variable()
|
||||
"\n" start
|
||||
|
||||
# FROM
|
||||
:from Command
|
||||
* from_image noeat
|
||||
|
||||
:from_image Constant
|
||||
* from_image
|
||||
":@" from_tag noeat
|
||||
"\n" start
|
||||
|
||||
:from_tag Idle
|
||||
* from_tag
|
||||
"\n" start
|
||||
|
||||
# RUN, CMD, ADD, COPY, ENTRYPOINT, VOLUME
|
||||
:list_command Command
|
||||
* idle noeat
|
||||
" \t" list_command
|
||||
"[" array noeat
|
||||
"\n" start
|
||||
|
||||
:array Idle
|
||||
* array
|
||||
"[]" bracket noeat
|
||||
"\"'" array recolor=-1 call=.string() save_c
|
||||
"\n" start
|
||||
|
||||
:comma Idle
|
||||
* array noeat
|
||||
|
||||
:bracket Brace
|
||||
"]" idle
|
||||
"[" array
|
||||
|
||||
# LABEL
|
||||
:label Command
|
||||
* label_key
|
||||
"\n" start
|
||||
|
||||
:label_key Variable
|
||||
* label_key
|
||||
"=" label_value noeat
|
||||
"\n" start
|
||||
|
||||
:label_value Constant
|
||||
* label_value
|
||||
"\"" label_value recolor=-1 call=.string() save_c
|
||||
"\n" start
|
||||
|
||||
.subr variable
|
||||
|
||||
:variable Variable
|
||||
* variable recolor=-2 return noeat
|
||||
"A-Za-z_" variable_name
|
||||
"{" variable_long
|
||||
|
||||
:variable_name Variable
|
||||
* variable_name return noeat
|
||||
"A-Za-z0-9_" variable_name
|
||||
|
||||
:variable_long Variable
|
||||
* variable_long
|
||||
& variable return noeat
|
||||
"\n" variable return noeat
|
||||
"}" variable return
|
||||
":" variable_after
|
||||
|
||||
:variable_after Idle
|
||||
* variable_after
|
||||
& variable_after return noeat
|
||||
"}" variable_long noeat
|
||||
|
||||
.end
|
||||
|
||||
.subr string
|
||||
|
||||
:string String string
|
||||
* string
|
||||
& string return
|
||||
"\n" string return noeat
|
||||
"\\" string_escape recolor=-1
|
||||
"$" string recolor=-1 call=.variable()
|
||||
|
||||
:string_escape StringEscape string
|
||||
* string
|
||||
|
||||
.end
|
||||
Reference in New Issue
Block a user